您好,我也正在学习用moveit2控制机械臂。您的问题可能可以通过只启动一次controller_manager解决,自动生成的demo.launch.py并不直观,可以自己重新写一遍,在 https://www.bilibili.com/video/BV1mfhJzYEHn?spm_id_from=333.788.videopod.sections&vd_source=bffdb80b975508dc5f2dd69ec6999b3b
这个视频提到过重写的demo.launch.py,可以直观的看到启动了哪些节点。另外如果在urdf文件里使用这种写法:
<gazebo>
<plugin name="gazebo_ros2_control" filename="libgazebo_ros2_control.so">
<parameters>$(find arm_moveit_config)/config/ros2_controllers.yaml</parameters>
<use_sim_time>true</use_sim_time>
</plugin>
</gazebo>
那么controller_mananger节点应该是在运行这一部分的时候启动的,也就是说在launch里加载机器人模型的时候就会自动启动,不必再重新启动一遍。https://github.com/TTreeNew/robot2_arm_grasp/blob/master/src/arm_description/launch/sim_with_moveit.launch.py 这里是我参照上面提到的视频自己写的launch文件