ROS2 Humble仿真环境下运行turtlebot3启动命令出现Error no -6错误的解决方法咨询
ROS2 Humble仿真环境下运行turtlebot3启动命令出现Error no -6错误的解决方法咨询
最近我在基于ROS2 Humble做SLAM项目,在VirtualBox的纯仿真环境下操作时,碰到了个头疼的问题——运行turtlebot3_bringup robot.launch.py启动命令时,弹出了Error no -6的报错。仔细看报错信息才发现,系统一直在尝试打开串口设备,但我的虚拟桌面根本没有这个硬件,具体的报错截图如下:

后来我琢磨清楚了,这个问题其实很好理解:默认的robot.launch.py启动文件是给实体TurtleBot3机器人准备的,它会自动尝试连接硬件串口来控制底盘,但咱们是纯仿真环境,完全不需要和真实硬件通信,自然就会因为找不到串口报错。
给大家分享几个亲测有效的解决办法:
- 第一步先确认TurtleBot3模型的环境变量是否设置正确,终端里执行
export TURTLEBOT3_MODEL=burger(如果你用的是waffle或waffle_pi就换成对应的模型名),嫌麻烦的话可以把这条命令加到~/.bashrc文件里,以后打开终端就会自动加载。 - 别再用实体机器人的启动文件了,换成仿真专用的!最稳妥的方式是直接启动Gazebo仿真环境,命令是:
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py,这个命令会自动在Gazebo里加载仿真世界和TurtleBot3模型,全程不需要任何硬件串口,完美适配纯仿真场景。 - 要是你只是想启动机器人的核心节点,不想加载Gazebo,也可以在启动命令里手动加参数禁用串口,比如:
ros2 launch turtlebot3_bringup robot.launch.py use_sim_time:=True serial_port:=/dev/null,不过还是更推荐用官方的仿真启动文件,能避免踩其他小坑。
按上面的方法操作后,你可以用ros2 node list和ros2 topic list命令检查节点和话题是否正常启动,一般就能解决这个Error no -6的问题啦。
备注:内容来源于stack exchange,提问作者Addanki Niranthak Krishna
相关产品推荐
相关产品推荐

