Robotics StackExchange | Archived questions

controller_manager (separate namespace)

Hi,

I am using MoveIt, and a new robot arm that doesn't have standard drivers. I've managed to load it into Gazebo, and I also see it in Rviz. Joints are published and the arm is not falling or anything. MoveIt also seems to be happy. However, when I try to send the arm to the random place with the MotionPlanning from rviz... I am getting the same message:

[ INFO] [1686153799.590738221, 7.354000000]: ParallelPlan::solve(): Solution found by one or more threads in 0.020340 seconds
[ INFO] [1686153799.593826859, 7.354000000]: SimpleSetup: Path simplification took 0.002771 seconds and changed from 3 to 2 states
[ WARN] [1686153799.596611693, 7.361000000]: Failed to read controllers from /controller_manager/list_controllers
[ERROR] [1686153799.596725294, 7.361000000]: Unable to identify any set of controllers that can actuate the specified joints: [ meca_axis_1_joint meca_axis_2_joint meca_axis_3_joint meca_axis_4_joint meca_axis_5_joint meca_axis_6_joint ]
[ERROR] [1686153799.596860796, 7.361000000]: Known controllers and their joints:

[ERROR] [1686153799.596939897, 7.361000000]: Apparently trajectory initialization failed
[ INFO] [1686153799.616585840, 7.381000000]: ABORTED: CONTROL_FAILED

So obviously, the controllermanager cannot be reached. In fact it is under /robot/controllermanager where it works fine. If I try to call rosservice call /robot/controller_manager/list_controllers I get a response. However "someone", I'm not sure who is looking for it controller_manager/list_controllers (without my namespace robot). Any help here? (Also, I'm running gazebo normally, no fancy namespaces)

Basically I need to tell someone to put a /robot in front /controller_manager ... who? :)

Asked by i-sv on 2023-06-07 11:12:40 UTC

Comments

Answers

Well... after painful session of wasting time, I managed to solve the problem. It seems that moveit doesn't care in which namespace it was started, and you need to tell it explicitly where the controller_manager is.

So... I just had to add remapping <MY_NAMESPACE>:

  <node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group"  type="move_group" respawn="false" output="screen" args="$(arg command_args)">

<remap from="/controller_manager/list_controllers" to="/<MY_NAMESPACE>/controller_manager/list_controllers"/>
<remap from="/arm_controller/follow_joint_trajectory" to="/<MY_NAMESPACE>/arm_controller/follow_joint_trajectory"/>

</node>

Hopefully this helps someone :)

Asked by i-sv on 2023-06-12 08:23:41 UTC

Comments