今天依照古月老师的教程视频,运行他的launch文件来控制Gazebo中的机械臂,结果运行下述语句时一直报错
roslaunch marm_gazebo arm_bringup_moveit.launch
错误如下
上网查了一堆相关的问题,都没有解决。最后终于找到问题根源了,估计我的问题不太可能有普遍性
我本人是没学明白ros,不敢有啥骚操作,之前的操作都是依照老师的视频来的。回想一下,应该是哪一步出了点问题,导致我在marm_moveit_config功能包下面的arm_moveit_controller_manager.launch文件变成了这个样子,但具体是啥时候整的这么一出我也想不起来,本来ros我就没学明白,又照着视频稀里糊涂地搞了一堆,脑子一片空白。。。
<launch>
<!-- loads moveit_controller_manager on the parameter server which is taken as argument
if no argument is passed, moveit_simple_controller_manager will be set -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- loads ros_controllers to the param server -->
<rosparam file="$(find marm_moveit_config)/config/ros_controllers.yaml"/>
</launch>
有博客提到了一种可能,链接如下
相关博客
里头提到不要注释掉controllers_gazeno那一行,但我的这个launch文件却压根没有这一行
然后我在古月老师的书里对照代码去看,发现书里写了controllers_gazebo,照着弄了一份,然后在arm_moveit_controller_manager.launch里补上了那行代码
<rosparam file="$(find marm_moveit_config)/config/controllers_gazebo.yaml"/>
但还是报错
最后仔细对照代码,发现自己的launch文件多了一行代码,就和之前写的一样,我压根不知道啥时候整得这么一句进去。。。
正确的arm_moveit_controller_manager.launch文件如下
<launch>
<!-- loads moveit_controller_manager on the parameter server which is taken as argument
if no argument is passed, moveit_simple_controller_manager will be set -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- load controller manager -->
<rosparam file="$(find marm_moveit_config)/config/controllers_gazebo.yaml"/>
</launch>
发现这个错误后,我才发现课件上也是正确的,压根没有带ros_launcher那行代码,自己也是实力眼瞎。。。
总结一下,自己对ros狗屁不通,然后又实力眼瞎,结果卡了自己好几个小时,从中午卡到现在。。。