Skip to content

踩坑Robotics Stack Exchange2024-06-08

MoveIt轨迹关节顺序按字母排序且无法通过配置修改 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:Joint Order in MoveIt Trajectory(Robotics Stack Exchange #95667)

状态:有绕过办法

问题 ​

在ROS Kinetic下使用MoveIt规划轨迹时,发布的FollowJointTrajectory消息中关节顺序被强制按字母排序(如elbow, shoulder, waist),与controllers.yaml中定义的顺序不一致。尝试设置controller_joint_names参数无效,导致自定义机器人驱动因关节索引错位无法正确执行轨迹。

环境 ​

Ubuntu 16.04, ROS Kinetic, MoveIt, 自定义机器人驱动节点, FollowJointTrajectory接口

解决办法 ​

  1. 确认MoveIt不支持自定义JointTrajectory关节发布顺序,controller_joint_names参数仅适用于industrial_robot_client包,对MoveIt无效。
  2. 修改自定义机器人驱动节点逻辑,使其不再依赖固定的关节数组索引位置。
  3. 在驱动接收到JointTrajectory消息时,读取消息头部的joint_names字段获取当前实际关节顺序。
  4. 遍历JointTrajectoryPoint中的positions/velocities/effort数组,根据joint_names建立从消息顺序到硬件期望顺序的索引映射表。
  5. 依据映射表重组数据后再下发至底层硬件控制器,确保关节值与物理轴对应正确。

原问题作者:swiz23;采纳答案作者:gvdhoorn-rse。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。

来源

本页事实对应的公开页面,以原文为准。

  1. Robotics Stack Exchange #95667:Joint Order in MoveIt Trajectory访问 2026-10-27