一键导入
motion-planning-ik
IK solver selection, MoveIt 2 integration, 7-DOF redundancy handling, and Cartesian goal execution for the OpenArm V10 robot.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
IK solver selection, MoveIt 2 integration, 7-DOF redundancy handling, and Cartesian goal execution for the OpenArm V10 robot.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Impedance control theory, implementation details, tuning guidelines, and teach mode operation for the OpenArm compliance controller. Covers the core control equation, gravity compensation, friction modeling, impedance profiles, and force estimation.
Core coding guidelines inspired by Andrej Karpathy's observations on LLM coding pitfalls, focusing on thinking before coding, simplicity, surgical changes, and goal-driven execution.
Hardware interface knowledge for the OpenArm V10 bimanual robot — DaMiao motor specs, CAN-FD configuration, motor offset calibration, safety floors, and common troubleshooting procedures.
Admittance control for xArm5 using ros2_control, UFACTORY F/T sensor, profile management, and VLA integration roadmap.
| name | motion-planning-ik |
| description | IK solver selection, MoveIt 2 integration, 7-DOF redundancy handling, and Cartesian goal execution for the OpenArm V10 robot. |
| version | 1.0.0 |
Read this before modifying the IK solver, changing planning parameters, or extending the motion pipeline.
OpenArm has 7 revolute joints for a 6-DOF task. The 7th joint creates kinematic redundancy — infinitely many valid joint configs per pose. Standard Newton-Raphson IK (KDL) gets stuck in local minima.
| Solver | Algorithm | Success (7-DOF) | Status |
|---|---|---|---|
| KDL | Newton-Raphson | ~60% | ❌ REJECTED |
| TRAC-IK | SQP + KDL dual | ~95%+ | ✅ OUR CHOICE |
| IKFast | Analytical | 100% | Not attempted |
TRAC-IK runs SQP and KDL in parallel — first to find a solution wins. Must build from source for Humble:
cd ~/ros2_ws/src && git clone -b rolling https://github.com/traclabs/trac_ik.git
sudo apt install -y libnlopt-dev libnlopt-cxx-dev
colcon build --packages-select trac_ik_lib trac_ik_kinematics_plugin --symlink-install
| solve_type | Behavior | Notes |
|---|---|---|
Speed | First valid solution | May produce twisted poses |
Distance | Minimize joint displacement | V-11 HW test showed twisted poses |
Manipulation1 | Maximize manipulability | ✅ OUR CHOICE — most natural posture |
Manipulation2 | Balance distance + manipulability | Good compromise |
History: Started with Distance → changed to Manipulation1 after V-11 real HW testing.
# kinematics.yaml
right_arm:
kinematics_solver: trac_ik_kinematics_plugin/TRAC_IKKinematicsPlugin
kinematics_solver_timeout: 0.05
solve_type: Manipulation1
/target_pose → cartesian_goal_executor.py → MoveItPy → OMPL (RRTConnect)
→ TRAC-IK → JointTrajectory → /{side}_joint_trajectory_controller
git clone -b humble moveit2)left_arm, right_arm (7 joints each)openarm_left_hand, openarm_right_hand/target_pose (PoseStamped)/impedance_phase: "transit"JTC Compliance Workaround: Compliance controller creates steady-state error exceeding JTC goal tolerance. Executor waits duration + 1s, then cancels and reports success.
Orientation tip: Gripper-down [0, 0.707, 0, 0.707] is most reliable. Identity quat is unreachable.
| Symptom | Cause | Fix |
|---|---|---|
| PLAN_FAILED always | KDL solver | Install TRAC-IK |
| Twisted arm poses | solve_type Distance | Use Manipulation1 |
| Planning >5s | Tight tolerance | Use ±30° |
| JTC goal rejected | Controllers not spawned | ros2 control list_controllers |
| File | Purpose |
|---|---|
scripts/cartesian_goal_executor.py | MoveIt plan → JTC execute |
openarm_bimanual_moveit_config/config/kinematics.yaml | IK solver config |
trac_ik/ | TRAC-IK source |
TASK_2.1_FIX_IK_SOLVER.md | KDL→TRAC-IK migration docs |
# Verify TRAC-IK installed
ros2 pkg list | grep trac_ik
# Test planning (sim)
# T1: ros2 launch openarm_bringup openarm.bimanual.launch.py use_fake_hardware:=true
# T2: python3 cartesian_goal_executor.py
# T3: ros2 topic pub --once /target_pose geometry_msgs/PoseStamped \
# '{header: {frame_id: "world"}, pose: {position: {x: 0.3, y: -0.2, z: 0.4},
# orientation: {x: 0, y: 0.707, z: 0, w: 0.707}}}'
# Expected: "Planning succeeded" in T2
Real-time Cartesian velocity tracking for VLA inference (3-10 Hz continuous waypoints). Alternative: NVIDIA cuRobo for GPU-accelerated planning.