首页/装一台

装一台 ROS 2 轮式小车:SLAM 到导航的最小闭环

单位金钱学到东西最多的一台。目标 MVP 不是遥控跑圈,是自己建出一张地图、并在上面完成一次自主导航。

类型
差速轮式 + 2D 激光 SLAM + 自主导航
预算
约 250–400 美元
主控
树莓派 5 + ESP32/Pico(micro-ros 桥)
雷达
RPLIDAR A1 量级(约 100 美元,二手更低)
软件
ROS 2 Jazzy + slam_toolbox + nav2
MVP 判据
可复用地图 + 自主到达目标点
ROS 2 轮式小车:身体是怎么组成的点编号(或下方图例)直达对应文档
底盘与悬挂1 主控(树莓派 5)2 下位机与 micro-ROS3 雷达与整机清单4 IMU 姿态5 软件栈 ROS 26 仿真先跑一遍7
  1. 1底盘与悬挂底盘打印件要留电机舱和走线槽;PETG 比 PLA 耐晒耐撞
  2. 2主控(树莓派 5)导航栈吃 CPU 不吃 GPU,Pi 5 是这档的甜点位
  3. 3下位机与 micro-ROS电机编码器这类实时活交给 MCU,micro-ROS 把它接进 ROS 2 图
  4. 4雷达与整机清单激光雷达是这台车里最贵的一件,选型口径在整机条目里核对
  5. 5IMU 姿态$2 裸芯片和 $30 融合模块在里程计里的表现差多少,条目里有数
  6. 6软件栈 ROS 2建图、导航、坐标变换全是现成包;上手成本在替代品一栏写清
  7. 7仿真先跑一遍TF 树错了先在仿真里看,别在地板上撞
ROS 2 轮式小车:系统架构(信号与供电)点方框直达对应文档;虚线是软件关系,实线是物理连接
导航栈 ROS 2 建图 · 定位 · 路径规划1导航栈 ROS 2建图 · 定位 · 路径规划 主控(树莓派 5)2主控(树莓派 5) 下位机 MCU + micro-ROS3下位机 MCU+ micro-ROS 激光雷达 + 整机清单4激光雷达+ 整机清单 IMU 姿态5IMU 姿态 MuJoCo 仿真6MuJoCo仿真 电机与编码器 电池与分电 DDS 话题 USB 串口 USB I2C
  1. 1导航栈 ROS 2 建图 · 定位 · 路径规划全是现成包;上手成本在替代品一栏写清
  2. 2主控(树莓派 5)导航栈吃 CPU 不吃 GPU;Pi 5 是这档甜点位
  3. 3下位机 MCU + micro-ROS编码器与轮速环的实时活别放上位机;micro-ROS 把它接进 ROS 2 图
  4. 4激光雷达 + 整机清单全车最贵的一件;选型口径在整机条目里核对
  5. 5IMU 姿态接下位机不走 USB;$2 裸芯片和 $30 融合模块的差距条目里有数
  6. 6MuJoCo 仿真TF 树错了先在仿真里看
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