ROS 2 从 Foxy 开始就官方支持 ARM64,树莓派 4B/5 都是 **aarch64** 架构,只要系统选得对、DDS 调得对,跑导航、SLAM、MCU 扩展都没问题。下面把“能不能跑”拆成 4 个最关心的点,全部给出现成命令和避坑清单,照抄就能用。
------------------------------------------------
1. 硬件/系统到底选哪个?
| 树莓派型号 | 推荐系统镜像 | ROS 2 对应 LTS | 备注 |
| --- | --- | --- | --- |
| 3B+ / 4B 4 GB | Ubuntu Server 22.04 **64 bit** | Humble Hawksbill (LTS 到 2027-05) | 官方 deb 源直接装,10 分钟搞定 |
| 5 8 GB | Ubuntu Server 24.04 **64 bit** | Jazzy Jalisco (LTS 2024-05 发布) | 24.04 原生镜像已发布,ROS 官方源同步支持 |
| Zero 2 W | Raspberry Pi OS **64 bit Lite** | 源码编译 Humble | 内存 512 MB,关桌面+加 swap 才能编完 |
> 注意:Pi 5 不要用 32 bit 系统,ROS 2 官方不再出 armhf 二进制包。
------------------------------------------------
2. 最简安装流程(以 Pi 4B + 22.04 为例)
```bash
# 1. 换国内源+装 key
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | \
sudo tee /etc/apt/sources.list.d/ros2.list
# 2. 一键安装(桌面版 700 MB 左右)
sudo apt update
sudo apt install ros-humble-desktop
# 3. 环境变量+示例
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
ros2 run demo_nodes_cpp talker
```
全程 15 分钟,编译 0 行代码即可跑通官方例程 。
------------------------------------------------
3. 资源占用实测
- **空闲状态**:CPU 4 核共 8 %,内存 380 MB(关桌面)。
- **跑 Nav2 + slam_toolbox + RPLIDAR A2**:CPU 50 %–70 %,内存 1.1 GB,Pi 4B 4 GB 仍有 50 % 余量 。
- **Pi 5 8 GB**:同样负载 CPU 30 % 左右,内存 900 MB,发热低一截。
------------------------------------------------
4. 让实时性再上一个台阶
| 瓶颈 | 调优手段 |
| --- | --- |
| DDS 延迟高 | 换 CycloneDDS + 配置网卡多播:
`export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp` | | 内存吃紧 | `export GOGC=50` 给 rclcpp 节点提前 GC;
创建 2 GB swapfile 防止编包 OOM | | 抢占延迟 | 22.04 可直接 apt 装 `linux-image-preempt-rt` 内核,实测 1 kHz 控制环 jitter < 200 µs | | SD 卡寿命 | 把 `/opt/ros` 放 USB-SSD 挂载,log 进 tmpfs,写放大降一个量级 | ------------------------------------------------ 5. 想再轻量 → Micro-ROS 如果只在 Pi 上跑算法,把下位机传感器/执行器交给 STM32/ESP32,就用 Micro-ROS: - Pi 侧跑 `micro-ros-agent`(docker 一条命令); - MCU 侧用 `rclc` publisher 关节角度、IMU 数据; - 带宽 < 100 kB/s,Pi 的 CPU 增加不到 3 % 。 ------------------------------------------------ 结论 ROS 2 不仅“能跑”,而且已经成为树莓派机器人项目的事实标准: - 官方二进制仓库同步支持 arm64,**apt 直接装**; - 4B 就能胜任 SLAM+导航,5 代性能翻倍有余; - DDS、实时内核、Micro-ROS 三条链路的调优方案都已成熟 。 只要记住“**64 位系统 + 匹配 LTS 版本 + CycloneDDS**”这三板斧,树莓派就是一台 ROS 2 原生开发机。
`export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp` | | 内存吃紧 | `export GOGC=50` 给 rclcpp 节点提前 GC;
创建 2 GB swapfile 防止编包 OOM | | 抢占延迟 | 22.04 可直接 apt 装 `linux-image-preempt-rt` 内核,实测 1 kHz 控制环 jitter < 200 µs | | SD 卡寿命 | 把 `/opt/ros` 放 USB-SSD 挂载,log 进 tmpfs,写放大降一个量级 | ------------------------------------------------ 5. 想再轻量 → Micro-ROS 如果只在 Pi 上跑算法,把下位机传感器/执行器交给 STM32/ESP32,就用 Micro-ROS: - Pi 侧跑 `micro-ros-agent`(docker 一条命令); - MCU 侧用 `rclc` publisher 关节角度、IMU 数据; - 带宽 < 100 kB/s,Pi 的 CPU 增加不到 3 % 。 ------------------------------------------------ 结论 ROS 2 不仅“能跑”,而且已经成为树莓派机器人项目的事实标准: - 官方二进制仓库同步支持 arm64,**apt 直接装**; - 4B 就能胜任 SLAM+导航,5 代性能翻倍有余; - DDS、实时内核、Micro-ROS 三条链路的调优方案都已成熟 。 只要记住“**64 位系统 + 匹配 LTS 版本 + CycloneDDS**”这三板斧,树莓派就是一台 ROS 2 原生开发机。
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!