第六章运行gazebo_sim.launch.py后报错Loader for controller 'fishbot_diff_drive_controller' (type 'diff_drive_controller/DiffDriveController') not found.
-
主要问题在于无法找到fishbot_joint_state_broadcaster和fishbot_diff_drive_controller,不知如何解决,如有回答,甚是感激。
以下为终端内容:
[INFO] [launch]: All log files can be found below /home/xhao/.ros/log/2024-10-31-23-12-36-254641-xhao-Legion-17124
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [17126]
[INFO] [gzserver-2]: process started with pid [17128]
[INFO] [gzclient-3]: process started with pid [17130]
[INFO] [spawn_entity.py-4]: process started with pid [17132]
[robot_state_publisher-1] [INFO] [1730387556.602858446] [robot_state_publisher]: got segment back_caster_link
[robot_state_publisher-1] [INFO] [1730387556.602926135] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1730387556.602931486] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1730387556.602934582] [robot_state_publisher]: got segment camera_link
[robot_state_publisher-1] [INFO] [1730387556.602937438] [robot_state_publisher]: got segment camera_optical_link
[robot_state_publisher-1] [INFO] [1730387556.602940576] [robot_state_publisher]: got segment front_caster_link
[robot_state_publisher-1] [INFO] [1730387556.602943433] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-1] [INFO] [1730387556.602946299] [robot_state_publisher]: got segment laser_cylinder_link
[robot_state_publisher-1] [INFO] [1730387556.602949210] [robot_state_publisher]: got segment laser_link
[robot_state_publisher-1] [INFO] [1730387556.602951956] [robot_state_publisher]: got segment left_wheel_link
[robot_state_publisher-1] [INFO] [1730387556.602954803] [robot_state_publisher]: got segment right_wheel_link
[gzclient-3] Gazebo multi-robot simulator, version 11.10.2
[gzclient-3] Copyright (C) 2012 Open Source Robotics Foundation.
[gzclient-3] Released under the Apache 2 License.
[gzclient-3] http://gazebosim.org
[gzclient-3]
[gzserver-2] Gazebo multi-robot simulator, version 11.10.2
[gzserver-2] Copyright (C) 2012 Open Source Robotics Foundation.
[gzserver-2] Released under the Apache 2 License.
[gzserver-2] http://gazebosim.org
[gzserver-2]
[spawn_entity.py-4] [INFO] [1730387556.845022973] [spawn_entity]: Spawn Entity started
[spawn_entity.py-4] [INFO] [1730387556.845224377] [spawn_entity]: Loading entity published on topic /robot_description
[spawn_entity.py-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: DurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL is deprecated. Use DurabilityPolicy.TRANSIENT_LOCAL instead.
[spawn_entity.py-4] warnings.warn(
[spawn_entity.py-4] [INFO] [1730387556.846304065] [spawn_entity]: Waiting for entity xml on /robot_description
[spawn_entity.py-4] [INFO] [1730387556.967766727] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
[spawn_entity.py-4] [INFO] [1730387556.967969263] [spawn_entity]: Waiting for service /spawn_entity
[spawn_entity.py-4] [INFO] [1730387557.721087094] [spawn_entity]: Calling service /spawn_entity
[gzserver-2] [Msg] Waiting for master.
[gzserver-2] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
[gzserver-2] [Msg] Publicized address: 192.168.1.5
[gzserver-2] [Msg] Loading world file [/home/xhao/ros2bookcode/chapt6/chapt6_ws/install/fishbot_description/share/fishbot_description/world/custom_room.world]
[gzserver-2] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call
[gzserver-2] [INFO] [1730387558.497030273] [depth_camera]: Publishing camera info to [/camera_sensor/camera_info]
[gzserver-2] [INFO] [1730387558.497554784] [depth_camera]: Publishing depth camera info to [/camera_sensor/depth/camera_info]
[gzserver-2] [INFO] [1730387558.497809911] [depth_camera]: Publishing pointcloud to [/camera_sensor/points]
[spawn_entity.py-4] [INFO] [1730387558.594011724] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [fishbot]
[gzclient-3] [Msg] Waiting for master.
[gzclient-3] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
[gzclient-3] [Msg] Publicized address: 192.168.1.5
[gzclient-3] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call
[gzserver-2] [INFO] [1730387558.704649324] [gazebo_ros2_control]: Loading gazebo_ros2_control plugin
[gzserver-2] [INFO] [1730387558.707038944] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in namespace: /
[gzserver-2] [INFO] [1730387558.707062800] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in ros 2 node: gazebo_ros2_control
[gzserver-2] [INFO] [1730387558.708770363] [gazebo_ros2_control]: connected to service!! robot_state_publisher
[gzserver-2] [INFO] [1730387558.709067436] [gazebo_ros2_control]: Received urdf from param server, parsing...
[gzserver-2] [INFO] [1730387558.709088651] [gazebo_ros2_control]: Loading parameter files /home/xhao/ros2bookcode/chapt6/chapt6_ws/install/fishbot_description/share/fishbot_description/config/fishbot_ros2_controller.yaml
[gzserver-2] [INFO] [1730387558.714439127] [gazebo_ros2_control]: Loading joint: left_wheel_joint
[gzserver-2] [INFO] [1730387558.714455599] [gazebo_ros2_control]: State:
[gzserver-2] [INFO] [1730387558.714461048] [gazebo_ros2_control]: position
[gzserver-2] [INFO] [1730387558.714466282] [gazebo_ros2_control]: velocity
[gzserver-2] [INFO] [1730387558.714470150] [gazebo_ros2_control]: effort
[gzserver-2] [INFO] [1730387558.714474048] [gazebo_ros2_control]: Command:
[gzserver-2] [INFO] [1730387558.714490343] [gazebo_ros2_control]: velocity
[gzserver-2] [INFO] [1730387558.714575817] [gazebo_ros2_control]: effort
[gzserver-2] [INFO] [1730387558.714583308] [gazebo_ros2_control]: Loading joint: right_wheel_joint
[gzserver-2] [INFO] [1730387558.714587588] [gazebo_ros2_control]: State:
[gzserver-2] [INFO] [1730387558.714591222] [gazebo_ros2_control]: position
[gzserver-2] [INFO] [1730387558.714594945] [gazebo_ros2_control]: velocity
[gzserver-2] [INFO] [1730387558.714598702] [gazebo_ros2_control]: effort
[gzserver-2] [INFO] [1730387558.714602282] [gazebo_ros2_control]: Command:
[gzserver-2] [INFO] [1730387558.714607508] [gazebo_ros2_control]: velocity
[gzserver-2] [INFO] [1730387558.714648820] [gazebo_ros2_control]: effort
[gzserver-2] [INFO] [1730387558.714671780] [resource_manager]: Initialize hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714743363] [resource_manager]: Successful initialization of hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714787549] [resource_manager]: 'configure' hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714792590] [resource_manager]: Successful 'configure' of hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714797043] [resource_manager]: 'activate' hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714800357] [resource_manager]: Successful 'activate' of hardware 'FishBotGazeboSystem'
[gzserver-2] [INFO] [1730387558.714838935] [gazebo_ros2_control]: Loading controller_manager
[INFO] [spawn_entity.py-4]: process has finished cleanly [pid 17132]
[INFO] [ros2-5]: process started with pid [17310]
[gzserver-2] [WARN] [1730387558.723910750] [gazebo_ros2_control]: Desired controller update period (0.01 s) is slower than the gazebo simulation period (0.001 s).
[gzserver-2] [INFO] [1730387558.724066250] [gazebo_ros2_control]: Loaded gazebo_ros2_control.
[gzserver-2] [INFO] [1730387559.468539488] [controller_manager]: Loading controller 'fishbot_joint_state_broadcaster'
[gzserver-2] [ERROR] [1730387559.468593087] [controller_manager]: Loader for controller 'fishbot_joint_state_broadcaster' (type 'joint_state_broadcaster/JointStateBroadcaster') not found.
[gzserver-2] [INFO] [1730387559.468600879] [controller_manager]: Available classes:
[gzserver-2] [INFO] [1730387559.468606815] [controller_manager]: controller_manager/test_controller
[gzserver-2] [INFO] [1730387559.468612175] [controller_manager]: controller_manager/test_controller_failed_init
[gzserver-2] [INFO] [1730387559.468617666] [controller_manager]: controller_manager/test_controller_with_interfaces
[gzserver-2] [INFO] [1730387559.468623115] [controller_manager]: controller_manager/test_chainable_controller
[ros2-5] Error loading controller, check controller_manager logs
[ERROR] [ros2-5]: process has died [pid 17310, exit code 1, cmd 'ros2 control load_controller --set-state active fishbot_joint_state_broadcaster'].
[INFO] [ros2-6]: process started with pid [17343]
[gzserver-2] [INFO] [1730387560.340407609] [controller_manager]: Loading controller 'fishbot_diff_drive_controller'
[gzserver-2] [ERROR] [1730387560.340449486] [controller_manager]: Loader for controller 'fishbot_diff_drive_controller' (type 'diff_drive_controller/DiffDriveController') not found.
[gzserver-2] [INFO] [1730387560.340457222] [controller_manager]: Available classes:
[gzserver-2] [INFO] [1730387560.340462738] [controller_manager]: controller_manager/test_controller
[gzserver-2] [INFO] [1730387560.340496151] [controller_manager]: controller_manager/test_controller_failed_init
[gzserver-2] [INFO] [1730387560.340502414] [controller_manager]: controller_manager/test_controller_with_interfaces
[gzserver-2] [INFO] [1730387560.340507625] [controller_manager]: controller_manager/test_chainable_controller
[ros2-6] Error loading controller, check controller_manager logs
[ERROR] [ros2-6]: process has died [pid 17343, exit code 1, cmd 'ros2 control load_controller --set-state active fishbot_diff_drive_controller'].
[gzclient-3] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call
[INFO] [gzclient-3]: process has finished cleanly [pid 17130]
[gzclient-3]
[gzclient-3] -
@1322972010 在 第六章运行gazebo_sim.launch.py后报错Loader for controller 'fishbot_diff_drive_controller' (type 'diff_drive_controller/DiffDriveController') not found. 中说:
'joint_state_broadcaster/JointStateBroadcaster')
前面的依赖安装环节是不是跳过了
-
从您提供的终端输出信息来看,主要问题是
controller_manager
无法找到名为fishbot_joint_state_broadcaster
和fishbot_diff_drive_controller
的控制器。这通常是因为以下几个原因:-
控制器类型未正确安装或配置:
- 确保您已经安装了所有必要的 ROS 2 控制器包,特别是
joint_state_broadcaster
和diff_drive_controller
。对于 ROS 2,这些通常通过 ROS 2 的包管理系统(例如ros2 pkg install
)或通过源代码编译来安装。 - 检查您的 ROS 2 工作空间是否已经包含了这些控制器对应的包,并且这些包已经被正确编译和安装。
- 确保您已经安装了所有必要的 ROS 2 控制器包,特别是
-
YAML 配置文件问题:
- 检查您的
fishbot_ros2_controller.yaml
配置文件,确保里面正确引用了joint_state_broadcaster/JointStateBroadcaster
和diff_drive_controller/DiffDriveController
。 - 确保配置文件中没有拼写错误或格式错误。
- 检查您的
-
环境变量问题:
- 确保您的
ROS_PACKAGE_PATH
环境变量包含了所有相关的 ROS 2 包路径。 - 确保在启动
gazebo_sim.launch.py
之前,您的 shell 环境已经 source 了 ROS 2 的安装目录和工作空间的setup.bash
文件。
- 确保您的
-
依赖关系问题:
diff_drive_controller
可能依赖于其他特定的库或包,例如robot_state_publisher
、sensor_msgs
等。确保这些依赖也都已经正确安装。
解决步骤
-
确认控制器包是否安装:
- 使用
ros2 pkg list
查看已安装的包列表,确认joint_state_broadcaster
和diff_drive_controller
(或相关包)是否存在。
- 使用
-
检查 YAML 配置文件:
- 打开
fishbot_ros2_controller.yaml
文件,检查控制器的类型名称和配置是否正确。
- 打开
-
检查环境变量:
- 使用
echo $ROS_PACKAGE_PATH
查看 ROS 包路径设置。 - 确保在启动前运行了
source /path/to/ros2_workspace/install/setup.bash
。
- 使用
-
重新编译和安装:
- 如果以上都确认无误,尝试重新编译您的 ROS 2 工作空间:
colcon build
,然后重新 source 安装目录。
- 如果以上都确认无误,尝试重新编译您的 ROS 2 工作空间:
-
重新启动 Gazebo 和 ROS 2 节点:
- 关闭所有正在运行的 Gazebo 和 ROS 2 节点,然后重新运行
gazebo_sim.launch.py
。
- 关闭所有正在运行的 Gazebo 和 ROS 2 节点,然后重新运行
如果问题依然存在,可能需要更详细地检查您的 ROS 2 配置和代码,或者查看是否有更具体的错误信息或日志可以帮助诊断问题。
以上为生成回答,仅供参考~
-
-
@1322972010 在 第六章运行gazebo_sim.launch.py后报错Loader for controller 'fishbot_diff_drive_controller' (type 'diff_drive_controller/DiffDriveController') not found. 中说:
'joint_state_broadcaster/JointStateBroadcaster')
前面的依赖安装环节是不是跳过了
-
@小鱼 谢谢大佬回复,我前面跳过了第四五章,因此可能是漏过了一些依赖的安装。在这之前我找到了可以安装所有控制器以解决这个问题。
-
-
@1322972010 大佬,我也遇到这个问题了,你装的哪个包解决的这个问题?