Skip to main content
一台 TurtleBot3 Burger 搭载 Qualcomm Dragonwing 单板计算机,顶部装有 360 度 LiDAR,放在工作台上,旁边是 AprilTag 标定垫
Dragonwing · Qualcomm
机器人
Rami Mouro·2026 年 6 月 26 日·← 所有文章

TurtleBot3 Burger 是 ROS 2 领域经典的”hello world”机器人:一款小型差速驱动平台,配备 360 度 LiDAR,恰好足以完成真正的自主导航。在本文中,我们将它安装到 Qualcomm Dragonwing SBC 上,从零安装 ROS 2 Jazzy,启动机器人,使用 Cartographer 为房间构建地图,然后让 Nav2 驱动机器人自主到达目标点。 这里的一切都直接运行在开发板上。Dragonwing SBC 就是机器人的计算单元,因此整个流程无需笔记本电脑参与——除非你想在 RViz 中观看地图逐步生成。
本教程面向配备预刷写 OpenCR 控制器和 LDS-02 LiDARTurtleBot3 Burger,运行 Ubuntu 上的 ROS 2 Jazzy。如果你的 LiDAR 或控制器版本不同,请在设置步骤中相应调整型号变量。

你将完成的内容

  1. 在 Dragonwing 设备上安装 ROS 2 Jazzy。
  2. 构建 TurtleBot3 工作区并连接串口设备。
  3. 启动机器人并用键盘驾驶它。
  4. 使用 Cartographer SLAM 为你的空间构建并保存地图。
  5. 将地图交给 Nav2,让机器人自主前往目标点。
  6. 在 RViz 中查看全部过程——在开发板自身的屏幕上或从另一台机器上。

前提条件

开始之前,请确保你具备:
  • 一台已完成首次设置的 Dragonwing 设备:
  • 通过 SSH 或直接连接的显示器、键盘和鼠标访问设备的能力。上述设置指南涵盖了联网、串口控制台、显示和 SSH 访问。
  • 一台 OpenCR 板已预刷写并配备 LDS-02 LiDAR 的 TurtleBot3 Burger。
  • SBC 上有两个空闲的 USB 端口:一个连接 OpenCR 控制器,一个连接 LiDAR。

安装 ROS 2 Jazzy

这是在全新开发板上的一次性步骤。它遵循 Ubuntu 上 ROS 2 Jazzy 的标准安装流程,因此如果设备上已经有 ROS 2 Jazzy,可以直接跳到设置 TurtleBot3。以下命令与 ROS 2 Jazzy 官方安装指南完全一致。 首先,添加 ROS 2 apt 软件源:
然后安装桌面套件及构建工具:
最后,将 ROS 追加到 ~/.bashrc 中,使每个新 shell 都自动加载:

设置 TurtleBot3

ROS 就绪后,接下来为机器人安装软件并告诉它自己的硬件配置。

插入并检查硬件

Burger 通过两条 USB 连接与 SBC 通信: 继续之前,先确认两台设备都已被枚举:

构建 TurtleBot3 工作区

克隆 Jazzy 版本的三个 TurtleBot3 软件包,并用 colcon 构建。完整的上游说明见 ROBOTIS TurtleBot3 文档

告诉 ROS 你的机器人信息

TurtleBot3 软件栈通过环境变量进行配置。将它们追加到 ~/.bashrc,使每个终端都能加载:
各变量的作用如下:

授予串口权限

你的用户需要具备串口访问权限,并且 ModemManager 不能干扰 OpenCR 的 CDC ACM 设备。将自己加入 dialout 组,禁用 ModemManager,并安装 TurtleBot3 udev 规则:
此步骤之后请注销并重新登录(或重启),使 dialout 组成员身份生效。如果在注销前需要继续在同一会话中工作,请参阅故障排查中的串口权限临时解决方案。

启动机器人

启动 bringup。这会启动 OpenCR 驱动、LiDAR 驱动和差速驱动控制器:
正常的 bringup 会输出类似如下日志:

用键盘驾驶

保持 bringup 运行,另开一个终端。TurtleBot3 teleop 节点是驾驶机器人的推荐方式,包括在建图过程中:
使用 W/A/S/D/X 键移动,关闭窗口前按 SX 停车。

使用 Cartographer SLAM 构建地图

接下来是有趣的部分。让机器人边行驶边使用 Cartographer 构建空间的占据栅格地图。 bringup 在其自己的终端中保持运行,然后启动 Cartographer:
如果没有连接显示器,RViz 会启动失败,这没有关系。Cartographer 和 /map 话题会在你驾驶的同时以无头模式继续工作。 现在用键盘遥控或发布速度指令驾驶机器人四处移动。覆盖的空间越多,最终的地图效果越好。 对覆盖范围满意后,保存地图:
这会生成两个文件:
  • ~/my_map.pgm 是占据栅格图像。
  • ~/my_map.yaml 是地图元数据(分辨率、原点)。
地图保存后即可停止 Cartographer。

使用 Nav2 自主行驶

有了保存好的地图,把它交给 Nav2,让机器人自主导航。(bringup 仍需保持运行。)
在 RViz 中,先设置 2D Pose Estimate,让 Nav2 知道机器人在地图上的位置,然后发送导航目标,观察它规划路径并驶向目标。 没有显示器?也可以通过发送 ROS 2 action 目标以无头方式完成同样的操作:

在 RViz 中查看

RViz 是查看地图和机器人规划路径最简单的方式。有两种运行方式:在开发板自身的屏幕上,或从网络中的另一台机器上。

通过 SSH 在开发板屏幕上运行

GNOME 桌面使用 Wayland,但 RViz2 的 Ogre 渲染器需要 GLX(X11)。GNOME 会自动运行 XWayland,但认证文件(XAUTHORITY)带有随机后缀,且每次重启都会变化。最干净的解决办法是在 ~/.bashrc 中添加一个小的辅助函数来自动查找它:
在启动 RViz 之前,在任意 SSH 会话中运行 export-display
它会打印解析出的环境变量:
综合起来,在已连接的屏幕上使用 RViz 建图的流程如下:
如果你直接在 GNOME 桌面上打开终端而不是通过 SSH,DISPLAYXAUTHORITY 已经设置好了。无需 export-display,直接正常运行 RViz 即可。

从网络中的另一台机器运行

要在同一网络中的笔记本电脑或工作站上运行 RViz:
  1. 两台机器上设置相同的 domain ID:
  2. 在远程机器上安装 ROS 2 Jazzy。
  3. 在远程机器上打开 RViz:
    添加 Map 显示并将话题设置为 /map。ROS 2 会通过网络自动发现地图数据,无需额外配置。

故障排查

初次上手时有几个常见的坑。以下是最常见的问题及其解决方法。

/dev/ttyACM0 权限被拒绝

你在被加入 dialout 组后还没有注销。在注销之前,可以使用这个包装命令:
注销并重新登录一次后,就不再需要这个包装命令了。

LiDAR 扫描为空或 Cartographer 卡住

Queue waiting for data: (0, scan) 通常意味着设置了错误的 LDS 型号。
如果 LDS_MODEL=LDS-01,请修正:

package 'ld08_driver' not found

cmd_vel 指令无效

ROS 2 Jazzy 将 cmd_vel 话题的类型从 geometry_msgs/Twist 改为了 geometry_msgs/TwistStamped。如果你直接发布 Twist(例如来自自定义节点或旧版教程),需要添加 header 字段:
内置的 turtlebot3_teleop teleop_keyboard 节点已经正确处理了这一点,因此只有自定义发布者会受影响。

地图保存悄然失败

请始终显式传入 -t /map

apt 被后台进程锁定

后续步骤

现在你拥有了一台能够建图并自主行驶的机器人,全部运行在 Dragonwing 开发板上。接下来你可以:
  • 在机器人的摄像头上运行硬件加速的 AI。NPU 上的深度估计教程构建了一个在 Hexagon HTP NPU 上运行量化模型的 ROS 2 节点。
  • 探索 QRB ROS 生态系统,了解零拷贝传输、参考示例、Gazebo 仿真和基准测试。
  • 机器人工作流概览开始,全面了解在 Dragonwing 上进行机器人开发的完整图景。