ROS+Gazebo 出现 WARN:Controller Spawner couldn't find the expected controller_manager ROS interface.
使用ros+gazebo进行仿真的时候,出现了如下图的问题
出现这个问题主要有以下三种原因:
- 没有安装好相应的依赖包 解决方法是:按照http://gazebosim.org/tutorials?tut=ros_installing安装相应的包
- 没有在机器人模型的urdf/xacro文件中添加gazebo_ros_control插件 解决方法:按http://gazebosim.org/tutorials?tut=ros_control&cat=connect_ros添加
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/MYROBOT</robotNamespace>
</plugin>
</gazebo>
- 最容易忽略的第三种原因:controller manager和MYROBOT_control.yaml设置的参数不在同一个命名空间里面,下面介绍来识别两者是否在同一个命名空间内。
不在一个命名空间内的:
在同一个命名空间下的:
可以看到第二张图上PARAMETERS和NODES都拥有了同样的前缀/panda也就是机器人的名字。
PARAMETERS上的前缀是通过修改MYROBOT_control.yaml文件,如图在文件的第一行加上机器人模型的名字panda
NODES的前缀也就是controller manager的命名空间是在MYROBOT_control.launch文件中修改,如图加上ns=‘panda’这个参数。