Gazebo11机械臂仿真警告“Controller Spawner couldn't find the expected controller_manager ROS interface.”

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插件复制到该目录下,但是也没找到。求各位指导!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^