rrbot例程ros_control配置问题的解决思路
本人刚入门ROS机器人开发,在学习rrbot例程出现了control_manager无法启动的bug。
在启动rrbot_control.launch的时候,出现下列warning:
[WARN] [1594362016.372059]: Controller Spawner couldn't find the
expected controller_manager ROS interface.
之后再按教程的步骤
rosservice call /rrbot/controller_manager/load_controller "name: 'joint1_position_controll
会提示joint1_position_controll 并不可用,用rqt_graph可以发现并没有control_manager 节点,
教程后续的rqt_gui发指令的操作就别想了。
教程链接:rrbot例程
如果你也是按照上面教程做而出现的bug可以直接跳到第二步检查自己的gazebo版本。
解决思路
1.首先肯定是直接复制错误信息去问度娘了
然后在优快云里面看到了简单粗暴的答案:
用命令:sudo apt-get install ros-kinetic-gazebo-ros-control
直接解决,如果是按照上面的例程做的应该不是没有安装ros_control插件的问题。
然后在ros社区里面看到有歪果仁发布了和我一模一样的问题;
问题链接
凭着百度翻译将这些帖子看完,发现没有一个发帖人说自己的问题得到解决了,再一看发帖时间,最近都是三年前的,当时心态都崩了。
看到有的人提到controller manager和.yaml文件设置的参数必须在同一个命名空间里面链接,按照里面的方法检查发现命名空间没有问题。
2.检查自己的gazebo版本
当时在看ros_control配置的时候无意中看到如下代码:
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/rrbot</robotNamespace>
<robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
</plugin>
</gazebo>
当时我就想lib文件夹里面到底有没有libgazebo_ros_control.so这个文件呢?
结果通过文件管理器发现并!没!有!
然后问同学发现应该是要有该文件的,我的gazebo是单独按照网上的配置教程安装的,后来我发现gazebo9好像不支持一代ROS?
将自己的gazebo重装为gazebo8加gazebo8_ros_control,再去跑上面的例程,可以实现最终机械臂的控制。
至于为什么不用gazebo7,是因为安装gazebo7的时候又遇上了新的bug,按照网上的解除硬件加速的方法也解决不了,看到有ros+gazebo8的搭配就直接按照教程安装了。