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
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