Ubuntu20.04版本Gazebo11,运行gazebo.launch进行仿真时出现警告,Wanging如下:
[WARN] [1679382289.031635, 10.222000]: Controller Spawner couldn't find the expected controller_manager ROS interface.
百度尝试了几种解决方法,参考该博主https://blog.csdn.net/CCsLife/article/details/106086854,重新安装了依赖,在urdf文件中本来就写好了关于gazebo_ros_control插件,以及也确定命名空间没有问题。自己写的urdf部分,yaml文件和launch文件如下:
<gazebo>
<plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control"/>
<robotNamespace>/robot_onerobotNamespace>
gazebo>
```yaml
robot_one:
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
# Position Controllers ---------------------------------------
joint1_position_controller:
type: position_controllers/JointPositionController
joint: Joint1
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint2_position_controller:
type: position_controllers/JointPositionController
joint: Joint2
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint3_position_controller:
type: position_controllers/JointPositionController
joint: Joint3
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint4_position_controller:
type: position_controllers/JointPositionController
joint: Joint4
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint5_position_controller:
type: position_controllers/JointPositionController
joint: Joint5
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint6_position_controller:
type: position_controllers/JointPositionController
joint: Joint6
# pid: {p: 100.0, i: 0.01, d: 10.0}
joint7_position_controller:
type: position_controllers/JointPositionController
joint: Joint7
# pid: {p: 100.0, i: 0.01, d: 10.0}
gazebo_ros_control:
pid_gains:
Joint1: {p: 100.0, i: 0.01, d: 10.0}
Joint2: {p: 100.0, i: 0.01, d: 10.0}
Joint3: {p: 100.0, i: 0.01, d: 10.0}
Joint4: {p: 100.0, i: 0.01, d: 10.0}
Joint5: {p: 100.0, i: 0.01, d: 10.0}
Joint6: {p: 100.0, i: 0.01, d: 10.0}
Joint7: {p: 100.0, i: 0.01, d: 10.0}
```c
<launch>
<rosparam file="$(find robot_one_moveit_config)/config/ros_controllers.yaml" command="load"/>
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" ns="/robot_one"
args="joint_state_controller
joint1_position_controller
joint2_position_controller
joint3_position_controller
joint4_position_controller
joint5_position_controller
joint6_position_controller
joint7_position_controller"/>
launch>
上述文件执行之后,也通过终端的消息窗口输出证明了命名空间应该没问题,如下:
PARAMETERS
* /gazebo/enable_ros_network: True
* /gazebo_ros_control/pid_gains/Joint1/d: 10.0
* /gazebo_ros_control/pid_gains/Joint1/i: 0.01
* /gazebo_ros_control/pid_gains/Joint1/p: 100.0
* /gazebo_ros_control/pid_gains/Joint2/d: 10.0
* /gazebo_ros_control/pid_gains/Joint2/i: 0.01
* /gazebo_ros_control/pid_gains/Joint2/p: 100.0
* /gazebo_ros_control/pid_gains/Joint3/d: 10.0
* /gazebo_ros_control/pid_gains/Joint3/i: 0.01
* /gazebo_ros_control/pid_gains/Joint3/p: 100.0
* /gazebo_ros_control/pid_gains/Joint4/d: 10.0
* /gazebo_ros_control/pid_gains/Joint4/i: 0.01
* /gazebo_ros_control/pid_gains/Joint4/p: 100.0
* /gazebo_ros_control/pid_gains/Joint5/d: 10.0
* /gazebo_ros_control/pid_gains/Joint5/i: 0.01
* /gazebo_ros_control/pid_gains/Joint5/p: 100.0
* /gazebo_ros_control/pid_gains/Joint6/d: 10.0
* /gazebo_ros_control/pid_gains/Joint6/i: 0.01
* /gazebo_ros_control/pid_gains/Joint6/p: 100.0
* /gazebo_ros_control/pid_gains/Joint7/d: 10.0
* /gazebo_ros_control/pid_gains/Joint7/i: 0.01
* /gazebo_ros_control/pid_gains/Joint7/p: 100.0
* /robot_description:
* /robot_one/joint1_position_controller/joint: Joint1
* /robot_one/joint1_position_controller/type: position_controll...
* /robot_one/joint2_position_controller/joint: Joint2
* /robot_one/joint2_position_controller/type: position_controll...
* /robot_one/joint3_position_controller/joint: Joint3
* /robot_one/joint3_position_controller/type: position_controll...
* /robot_one/joint4_position_controller/joint: Joint4
* /robot_one/joint4_position_controller/type: position_controll...
* /robot_one/joint5_position_controller/joint: Joint5
* /robot_one/joint5_position_controller/type: position_controll...
* /robot_one/joint6_position_controller/joint: Joint6
* /robot_one/joint6_position_controller/type: position_controll...
* /robot_one/joint7_position_controller/joint: Joint7
* /robot_one/joint7_position_controller/type: position_controll...
* /robot_one/joint_state_controller/publish_rate: 50
* /robot_one/joint_state_controller/type: joint_state_contr...
* /rosdistro: noetic
* /rosversion: 1.16.0
* /use_sim_time: True
NODES
/
gazebo (gazebo_ros/gzserver)
gazebo_gui (gazebo_ros/gzclient)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
spawn_gazebo_model (gazebo_ros/spawn_model)
/robot_one/
controller_spawner (controller_manager/spawner)
之后参考了另外一位博主的看法https://blog.csdn.net/qq_40299650/article/details/107250872,他的问题是在/lib文件下,libgazebo_ros_control.so并未被找到,据此,我也去查看了我的/lib下是否存在,结果就是并不存在,该博主的解决方法是卸载当前gazebo,下载gazebo8,但是该博主为ros18.04molodic,我的为20.04,照该方法失败了。打算寻找20.04版本的libgazebo_ros_control.so插件复制到该目录下,但是也没找到。求各位指导!
不知道你这个问题是否已经解决, 如果还没有解决的话: