树莓派5安装ROS2小白指南避坑攻略
2026/4/18 7:36:55 网站建设 项目流程

树莓派5装ROS2踩坑实录:从零开始的完整实战指南

最近在用树莓派5做机器人边缘节点开发,想把ROS2 Humble跑起来。本以为按照官网教程三步搞定,结果光是环境搭建就卡了两天——不是“找不到包”,就是rclpy导入失败,甚至一度怀疑自己烧录的系统镜像有毒。

直到我把所有错误日志翻了个遍、对比了十几篇文档、试了不下五种组合方案后,终于理出了一条真正能在树莓派5上跑通ROS2的路径。这篇文章不讲虚的,只说你实际会遇到的问题和怎么解决它。


别再用Raspbian了!选错系统等于从开局就崩盘

很多人第一步就错了:拿着最新的树莓派5,刷的却是Raspberry Pi OS(原Raspbian)

问题在哪?
Raspberry Pi OS 是基于 Debian 的,虽然有64位版本,但它并不是标准 Ubuntu,而 ROS2 官方发布的二进制包是专门为Ubuntu LTS打包的。这意味着:

即使你的系统架构是 aarch64,也可能因为底层依赖库版本不匹配导致apt install ros-humble-desktop直接报错:“无法定位软件包”。

✅ 正确做法:
必须使用Ubuntu Server 22.04 for ARM64 (aarch64)

推荐下载地址:
- Ubuntu 官网 - Raspberry Pi 镜像
- 或使用Raspberry Pi Imager工具,在操作系统列表中选择 “Ubuntu Server 22.04 LTS (64-bit)”

📌 小贴士:如果你打算接显示器跑图形界面,也可以选Ubuntu Desktop 22.04,但注意树莓派5对桌面版显存优化一般,建议至少配 4GB 内存以上。

验证系统是否正确:

uname -m # 应输出 aarch64 lsb_release -a # 确认是 Ubuntu 22.04 Jammy Jellyfish

这一步没搞对,后面全白搭。


添加ROS2源时最容易掉进的三个坑

当你执行sudo apt update后发现还是装不了ros-humble-*包?别急,先检查这三个关键点。

坑1:忘了加[arch=arm64]架构限制

ROS2 的 APT 源支持多种架构,包括 x86_64、arm64、ppc64el 等。如果你不显式声明只拉取 arm64 包,APT 可能会因索引混乱而跳过适配项。

❌ 错误写法:

deb https://packages.ros.org/ros2/ubuntu jammy main

✅ 正确写法一定要带上架构过滤:

deb [arch=arm64] https://packages.ros.org/ros2/ubuntu jammy main

否则你会看到这样的错误:

Unable to locate package ros-humble-desktop

坑2:GPG 密钥没导入或格式不对

Ubuntu 默认不会信任第三方仓库的签名密钥。如果不导入 ROS2 的公钥,apt update会报:

NO_PUBKEY AB17C654

网上很多教程让你直接用apt-key add,但这个命令早在 Ubuntu 20.04 就被废弃了!

✅ 正确做法是使用dearmor方式导入并保存为.gpg文件:

# 下载并转换密钥格式 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | \ gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg

然后在 source list 中通过signed-by=显式引用:

echo "deb [arch=arm64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://packages.ros.org/ros2/ubuntu jammy main" | \ sudo tee /etc/apt/sources.list.d/ros-humble.list

📌 说明:这种方式更安全,避免全局添加不受控的密钥。

坑3:网络问题导致 Hash Sum Mismatch

有时候你明明配置都对了,但apt update报:

Hash Sum mismatch Failed to fetch ... Release File

这通常是网络不稳定或者本地缓存污染造成的。

✅ 解决方法三连击:

sudo rm -rf /var/lib/apt/lists/* sudo apt clean sudo apt update

如果是国内用户,还可以考虑换国内镜像加速(如清华TUNA),不过目前 TUNA 还未完全同步 ROS2 的 arm64 包,建议优先走官方源 + 稳定网络。


安装ROS2之后必做的五件事

你以为apt install ros-humble-desktop成功就完事了?远远不够。下面这些步骤不做,大概率运行第一个节点就会翻车。

✅ 第一步:升级系统并重启

sudo apt update && sudo apt full-upgrade -y sudo reboot

别小看这一步。树莓派刚烧录完系统,内核和驱动可能还不是最新,尤其是蓝牙/Wi-Fi模块容易出问题,影响后续多机通信。


✅ 第二步:安装构建工具链

虽然你只是想跑现成的节点,但很多功能包依赖 colcon 和 rosdep 来解析依赖关系。

sudo apt install python3-colcon-common-extensions python3-rosdep python3-vcstools

其中:
-colcon是 ROS2 推荐的构建系统
-rosdep用来自动安装第三方依赖库(比如 OpenCV、PCL 等)


✅ 第三步:初始化 rosdep(关键!)

sudo rosdep init rosdep update

⚠️ 注意:sudo rosdep init只需执行一次,它会在/etc/ros/下创建默认源文件;而rosdep update需要普通用户权限运行,用于下载最新的依赖映射表。

如果rosdep update太慢或失败,可以尝试设置代理或改用国内镜像(搜索“rosdep 国内镜像”即可找到替换脚本)。


✅ 第四步:激活环境变量

每次打开终端都要手动执行?

source /opt/ros/humble/setup.bash

太麻烦!把它写进 shell 配置里:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

这样以后每次登录都会自动加载 ROS2 环境。

📌 提示:如果你用的是 zsh,记得改~/.zshrc


✅ 第五步:测试通信是否正常

来,跑个最简单的例子验证一下:

ros2 run demo_nodes_cpp talker & ros2 run demo_nodes_py listener

你应该能看到 Python 写的 listener 收到 C++ 写的 talker 发来的消息:

[INFO] [1234567890]: I heard: [Hello World]

✅ 如果能收到,恭喜你,ROS2 核心通信链路已经打通!


常见故障排查清单(收藏级)

问题现象可能原因解决办法
Unable to locate package ros-humble-*系统非 Ubuntu 22.04 或源配置错误检查 LSB 版本和 APT 源中的jammyarm64
ModuleNotFoundError: No module named 'rclpy'未执行source setup.bash加入.bashrc并重新登录
Permission denied启动节点用户不在 dialout 组sudo usermod -aG dialout $USER
RViz2 卡顿严重图形渲染压力大使用轻量工具替代,如plotjuggler或命令行调试
多节点时间不同步系统未启用 NTPsudo timedatectl set-ntp true
存储空间不足MicroSD 卡读写慢且容量小推荐使用 M.2 NVMe SSD 外接启动

💡 高阶建议:对于长期项目,建议将根文件系统挂载到外接 SSD 上。树莓派5支持 PCIe 2.0 ×1,配合 NVMe 转接板,实测顺序读取可达 350MB/s,极大缓解日志写入卡顿问题。


性能调优小技巧:让ROS2跑得更稳

树莓派5虽强,但也别指望它当工作站使。以下几点能显著提升稳定性:

1. 关闭不必要的服务

sudo systemctl disable bluetooth.service avahi-daemon.service cups-browsed.service

这些后台服务占内存又耗CPU,除非真要用打印机或mDNS发现,否则建议关掉。

2. 设置 CPU 性能模式

默认是“ondemand”,动态降频可能导致节点调度延迟。

切换为高性能模式:

echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

⚠️ 注意:会增加功耗和发热,建议配合散热风扇使用。

3. 使用轻量级 DDS 实现

ROS2 默认使用 Fast DDS,资源占用较高。可改为Cyclone DDS

sudo apt install ros-humble-rmw-cyclonedds-cpp export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

加入.bashrc永久生效。实测在低负载场景下延迟更低、内存占用减少约 15%。


结尾:现在你可以做什么?

完成上述步骤后,你的树莓派5已经是一个合格的 ROS2 边缘计算节点了。接下来可以尝试:

  • 接入摄像头跑图像发布节点(usb_camv4l2_camera
  • 控制电机驱动板实现差速运动(搭配ros2_control
  • 搭建 SLAM 导航系统(Humble 自带 Nav2)
  • 与其他设备组网通信(如 Jetson、PC 主机)

整个过程不需要编译源码,全部走二进制安装,熟练的话30分钟内就能跑通第一个demo

更重要的是,你现在已经掌握了那些教程里不会明说的“潜规则”:
👉 选对系统才是成功的一半
👉 源配置细节决定成败
👉 环境激活和依赖管理一个都不能少

下次别人问你“树莓派5能不能跑ROS2”,你可以自信地说:
不仅能跑,还能跑得很稳。

如果你在实践中遇到了其他奇怪问题,欢迎留言交流,我们一起填坑。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询