You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 Foxy环境下TurtleBot3启动失败问题求助

TurtleBot3 ROS2 Foxy启动失败问题排查方案

环境信息

  • 系统:Ubuntu 20.04.2 LTS
  • ROS版本:ROS2 Foxy
  • 安装方式:官方SBC安装包

问题描述

执行ros2 launch turtlebot3_bringup robot.launch.py后,turtlebot3_ros进程崩溃,核心错误为设备连接失败,后续触发rclcpp::exceptions::RCLError导致进程退出。

错误日志

ros2 launch turtlebot3_bringup robot.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-04-27-11-02-20-355271-ubuntu-3669
[INFO] [launch]: Default logging verbosity is set to INFO
urdf_file_name : turtlebot3_burger.urdf
/opt/ros/foxy/share/hls_lfcd_lds_driver/launch/hlds_laser.launch.py:46: UserWarning: The parameter 'node_executable' is deprecated, use 'executable' instead
  Node(
/opt/ros/foxy/share/hls_lfcd_lds_driver/launch/hlds_laser.launch.py:46: UserWarning: The parameter 'node_name' is deprecated, use 'name' instead
  Node(
[INFO] [robot_state_publisher-1]: process started with pid [3671]
[INFO] [hlds_laser_publisher-2]: process started with pid [3673]
[INFO] [turtlebot3_ros-3]: process started with pid [3675]
[hlds_laser_publisher-2] [INFO] [1682593340.839127617] [hlds_laser_publisher]: Init hlds_laser_publisher Node Main
[hlds_laser_publisher-2] [INFO] [1682593340.840464111] [hlds_laser_publisher]: port : /dev/ttyUSB0 frame_id : base_scan
[robot_state_publisher-1] Parsing robot urdf xml string.
[robot_state_publisher-1] Link base_link had 5 children
[robot_state_publisher-1] Link caster_back_link had 0 children
[robot_state_publisher-1] Link imu_link had 0 children
[robot_state_publisher-1] Link base_scan had 0 children
[robot_state_publisher-1] Link wheel_left_link had 0 children
[robot_state_publisher-1] Link wheel_right_link had 0 children
[robot_state_publisher-1] [INFO] [1682593340.859633235] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1682593340.860069770] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1682593340.860150825] [robot_state_publisher]: got segment base_scan
[robot_state_publisher-1] [INFO] [1682593340.860185825] [robot_state_publisher]: got segment caster_back_link
[robot_state_publisher-1] [INFO] [1682593340.860215103] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-1] [INFO] [1682593340.860242362] [robot_state_publisher]: got segment wheel_left_link
[robot_state_publisher-1] [INFO] [1682593340.860271306] [robot_state_publisher]: got segment wheel_right_link
[turtlebot3_ros-3] [INFO] [1682593340.863684033] [turtlebot3_node]: Init TurtleBot3 Node Main
[turtlebot3_ros-3] [INFO] [1682593340.864748251] [turtlebot3_node]: Init DynamixelSDKWrapper
[turtlebot3_ros-3] [INFO] [1682593340.867532980] [DynamixelSDKWrapper]: Succeeded to open the port(/dev/ttyACM0)!
[turtlebot3_ros-3] [INFO] [1682593340.873247826] [DynamixelSDKWrapper]: Succeeded to change the baudrate!
[turtlebot3_ros-3] [ERROR] [1682593340.907558905] [turtlebot3_node]: Failed connection with Devices
[turtlebot3_ros-3] [INFO] [1682593340.909686230] [turtlebot3_node]: Add Motors
[turtlebot3_ros-3] [INFO] [1682593340.910015358] [turtlebot3_node]: Add Wheels
[turtlebot3_ros-3] [INFO] [1682593340.910190153] [turtlebot3_node]: Add Sensors
[turtlebot3_ros-3] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
[turtlebot3_ros-3]   what():  could not create publisher: rcl node's context is invalid, at /tmp/binarydeb/ros-foxy-rcl-1.1.11/src/rcl/node.c:441
[ERROR] [turtlebot3_ros-3]: process has died [pid 3675, exit code -6, cmd '/home/ubuntu/turtlebot3_ws/install/turtlebot3_node/lib/turtlebot3_node/turtlebot3_ros -i /dev/ttyACM0 --ros-args --params-file /home/ubuntu/turtlebot3_ws/install/turtlebot3_bringup/share/turtlebot3_bringup/param/burger.yaml'].

已尝试操作

  • 重置OpenCR
  • 删除burger.yaml文件

排查与解决步骤

日志显示核心问题是Dynamixel电机设备连接失败,后续的rcl节点错误是连接失败引发的连锁反应,按以下步骤处理:

1. 修复串口权限

当前用户可能无/dev/ttyACM0访问权限,执行以下命令添加权限:

sudo usermod -aG dialout $USER

执行后注销再重新登录,确保权限生效。

2. 刷入适配Foxy的OpenCR固件

OpenCR固件需与ROS2版本匹配,重新刷入对应固件:

  • 进入OpenCR刷机模式:按住RESET按钮,再按下POWER按钮,LED变为红色闪烁时松开
  • 运行官方刷机脚本:
cd ~/turtlebot3_ws/src/turtlebot3/turtlebot3_bringup/scripts
./update_opencr.sh burger opencr_update.tar.bz2

注:若为waffle/waffle_pi型号,将burger替换为对应型号。

3. 验证串口通信

用screen工具测试串口是否正常:

sudo screen /dev/ttyACM0 115200

若能看到OpenCR启动日志,说明串口硬件连接正常;若无法打开,检查USB线是否损坏、OpenCR供电是否正常。

4. 重新生成配置文件

修复可能损坏的burger.yaml:

cd ~/turtlebot3_ws
colcon build --packages-select turtlebot3_bringup
source install/setup.bash

5. 确认机器人型号环境变量

确保设置了正确的机器人型号:

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc

完成以上步骤后,重新执行启动命令,观察进程是否正常运行。


内容的提问来源于stack exchange,提问作者Nomercy777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:05:15