装一台 ROS 2 轮式小车:SLAM 到导航的最小闭环
单位金钱学到东西最多的一台。目标 MVP 不是遥控跑圈,是自己建出一张地图、并在上面完成一次自主导航。
- 类型
- 差速轮式 + 2D 激光 SLAM + 自主导航
- 预算
- 约 250–400 美元
- 主控
- 树莓派 5 + ESP32/Pico(micro-ros 桥)
- 雷达
- RPLIDAR A1 量级(约 100 美元,二手更低)
- 软件
- ROS 2 Jazzy + slam_toolbox + nav2
- MVP 判据
- 可复用地图 + 自主到达目标点
- MVP 判定
- MVP = 建出一张可复用的无漂移地图,给定目标点后小车自主避开障碍到达。判据很具体:同一片区域重建三次,地图边界一致(不漂);nav2 发布目标点后规划成功并执行;遇到路径上的新障碍会减速绕行。遥控跑圈不是 MVP——那只验证了底盘,没验证系统。系统里最难的不是任何单个组件,是「让所有组件的时间戳和数据对齐」。
- 组成与采购
- 差速底盘套件(两轮 + 万向轮,电机带编码器,30–60 美元)、电机驱动板(TB6612,比 L298N 效率高、不发热)、主控树莓派 5(4 GB 够用)+ 一块 MCU(ESP32 或 Pico,跑编码器计数与速度闭环)、激光雷达 RPLIDAR A1 量级(约 100 美元)、IMU(MPU6050 起步)、12 V 锂电池 + 5 V 降压模块(树莓派独立供电、与电机共地——电机启动瞬间的跌压是树莓派死机 numéro one 原因)。整机约 250–400 美元。
- 组装顺序
- 底盘机械(一小时)→ 电机与编码器 → 驱动板 → MCU 固件(里程计:编码器计数 + PID 速度闭环)→ 树莓派装 ROS 2 Jazzy + micro-ros 桥 → 雷达驱动 + TF 树 → 上电在 rviz 里核对里程计与雷达数据。关键顺序:先让里程计走直线不走歪(轮径与轮距标定),再做 SLAM。里程计歪的 SLAM 地图没法用——重标里程计就好,别去调 SLAM 参数,那是南辕北辙。
- 软件栈
- ROS 2 Jazzy(LTS);SLAM 用 slam_toolbox(2D,最成熟);导航用 nav2;仿真用 Gazebo(强烈建议先在仿真里把 nav2 跑通再上车——仿真里调通的参数文件可以直接搬)。micro-ros 把底盘的 /odom 与 /cmd_vel 接进 ROS 图。两层架构:MCU 只做实时的(编码器、PID、安全停机),树莓派做 SLAM 与导航。新手最常犯的反向操作是把导航也塞进 MCU——那不是架构,是受难。
- 调试到第一次动
- 顺序:rviz 看原始数据 → 里程计标定(直线十次 + 原地旋转十次,量实际距离与角度)→ slam_toolbox 手推建图 → 保存地图 → nav2 定位与导航。三个经典坑:①TF 时间戳不同步——症状是 rviz 里雷达与地图错位抖动,查各节点发布频率与 use_sim_time;②cmd_vel 符号反了——ROS 约定前进为 +x,左转为 +z 旋转,反了就「前进变后退」;③雷达串口权限——udev 规则没写,重启后权限丢失。每个坑都有稳定症状,稳定症状意味着可以稳定排查。
- 下一步扩展
- MVP 后:①加相机做视觉巡线或物体跟随——这时 Jetson 才开始有意义(见主控那条);②把差速换阿克曼或麦克纳姆轮,体会运动学约束怎么写进 nav2;③给这套架构写文档、把参数仓库化——轮式车最大的隐性收益是 ROS 2 经验完全可迁移,这是其他类型给不了的。不建议:急着上多传感器融合——先让单雷达方案稳住。
- 我们核过什么
- 我们核过:①这套组件组合(RPLIDAR A1 + 树莓派 + slam_toolbox + nav2)是社区教程的主流路线,文档互相能对上 ②micro-ROS 对 ESP32 / RP2040 的支持有官方页面背书 ③ROS 2 Jazzy 的 LTS 状态。没核过:具体某款底盘套件的质量(同型号不同批次差异大),以及实际建图效果——这一条只能到你的机器上才知道。分级停在这一档。
这个站怎么判
如果你的目标是「学会机器人」而不是「拥有一台机器人」,从这台开始。每个环节都有开源实现、社区答案、仿真替身,出错时你能定位到层。它不性感——但 ROS 2 的技能比任何一台具体的机器都保值,而且这台机器学到的系统观(消息、时间戳、分层)在后面每一台上都用。
为什么「先标里程计,再谈 SLAM」不是一句废话
SLAM 的输出质量受两个因素影响:匹配算法与运动先验。里程计就是运动先验——它歪了,匹配算法拿到的是系统性错误的位置预测,建出来的图不是「丑」,是自相矛盾:走一圈回到原地,地图对不上。这时候去调 SLAM 参数,等于给一台秤不准的天平换更精细的刻度。
两层架构的判断标准
MCU 与 SBC 的分工标准就一条:这个循环的时间确定性要不要保证。编码器计数、电机 PID、碰撞急停——要;建图、导航、日志——不要。把「不要确定性」的东西塞进 MCU,和把「要确定性」的东西留在树莓派,是两种对称的架构错误。
来源
- ROS 2 Jazzy 官方文档与 nav2 / slam_toolbox 项目页
- micro-ROS 官方支持板列表
- 社区教程与 build log(标定流程与故障症状)
涉及的对象
最后核实 2026-09-28