1. 环境准备与系统优化

树莓派5相比树莓派4B在性能和架构上都有明显提升,这也意味着我们在安装ROS2时需要特别注意一些细节。我自己在树莓派5上折腾Ubuntu24.04 LTS和ROS2 Jazzy时,发现和之前在树莓派4B上的体验确实不太一样。

首先说说系统选择。树莓派5目前官方推荐的只有Ubuntu24.04 LTS版本,这个版本针对ARM64架构做了很多优化。我建议直接使用Ubuntu Server版本,因为桌面环境会占用不少资源,而ROS2开发更多是通过命令行和远程连接进行的。安装完系统后,第一件事就是换源,树莓派5是ARM64架构,所以要用ubuntu-ports源,我推荐清华源或者阿里源,速度会快很多。

换源的方法很简单,先备份原来的源列表:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后用sed命令一键替换:

sudo sed -i 's/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list

更新系统的时候有个小技巧,因为树莓派5的CPU性能强了,可以启用多线程更新:

sudo apt update -o Acquire::http::Dl-Limit=100
sudo apt upgrade -y

这样能显著加快下载速度。另外建议安装一些基础工具,比如curl、wget、vim,这些在后面安装ROS2时都会用到。

2. 关键依赖与环境配置

安装ROS2之前需要配置一些基础环境,这里有几个坑需要特别注意。首先是locale设置,ROS2要求系统支持UTF-8编码。在树莓派5上,我发现直接运行官方文档的命令可能不生效,需要多一步操作:

sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

验证是否设置成功:

locale

如果看到所有项都是en_US.UTF-8就说明成功了。接下来要启用universe仓库,这个步骤在树莓派5上特别重要,因为很多ROS2依赖包都在这个仓库里:

sudo apt install software-properties-common
sudo add-apt-repository universe

这里有个小技巧:如果add-apt-repository命令报错,可以手动添加:

echo "deb http://ports.ubuntu.com/ubuntu-ports noble universe" | sudo tee -a /etc/apt/sources.list

网络配置也是个重点。由于某些资源在国外,建议修改hosts文件来加速访问:

sudo vim /etc/hosts

添加以下内容:

185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com

这样能避免在安装过程中因为网络问题导致失败。我实测下来,加了这些配置后下载速度明显稳定很多。

3. ROS2 Jazzy安装实战

开始正式安装ROS2 Jazzy。树莓派5的ARM架构需要特别注意包兼容性问题。首先添加ROS2的APT源,这里推荐使用清华的镜像源,速度更快:

sudo apt install curl gnupg lsb-release
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

然后添加源列表:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

更新软件列表:

sudo apt update

安装开发工具包,这个包包含了编译ROS2需要的各种工具:

sudo apt install ros-dev-tools

接下来安装ROS2桌面版。树莓派5的内存通常足够大,建议安装桌面版,这样包含了常用的GUI工具:

sudo apt install ros-jazzy-desktop

如果内存比较紧张,可以安装基础版:

sudo apt install ros-jazzy-ros-base

安装过程可能需要20-30分钟,取决于网络速度。期间如果遇到包依赖问题,可以尝试先更新系统:

sudo apt update && sudo apt upgrade

安装完成后需要配置环境变量。建议将source命令添加到.bashrc中,这样每次打开终端都会自动配置好ROS2环境:

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

4. 常见问题与解决方案

在树莓派5上安装ROS2时,我遇到了一些特有问题,这里分享解决方案。第一个问题是内存不足。树莓派5虽然有4GB或8GB内存,但在编译一些大包时还是可能不够用。解决方法是在安装前先创建swap空间:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

将这个swap文件设置为永久生效:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

第二个常见问题是USB端口供电不足。树莓派5的USB接口在高速数据传输时可能供电不稳,导致外设断开连接。建议使用高质量的数据线,或者外接供电的USB Hub。

第三个问题是温度控制。树莓派5的性能更强,但发热也更大。安装ROS2时CPU负载很高,建议先安装散热片或者主动散热风扇。可以安装温度监控工具:

sudo apt install psensor

第四个是音频问题。树莓派5的音频驱动在Ubuntu24.04上可能需要额外配置:

sudo apt install pulseaudio pavucontrol

最后是蓝牙问题。如果使用ROS2的蓝牙相关功能,可能需要更新固件:

sudo apt install pi-bluetooth
sudo systemctl enable bluetooth

5. 稳定性优化与性能调优

安装完成后,还需要做一些优化来提升树莓派5运行ROS2的稳定性。首先是文件系统优化。建议使用SSD作为系统盘,并通过USB3.0接口连接。需要在/etc/fstab中添加noatime参数来减少写入次数:

UUID=你的磁盘UUID / ext4 defaults,noatime 0 1

其次是网络优化。树莓派5的WiFi性能比4B好很多,但如果需要稳定的ROS2通信,建议使用有线网络。可以调整网络参数来优化ROS2的DDS通信:

sudo sysctl -w net.core.rmem_max=2097152
sudo sysctl -w net.core.wmem_max=2097152

电源管理也需要调整。树莓派5的电源管理比较激进,可能会导致性能波动。建议禁用一些节能选项:

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

对于ROS2本身的优化,可以调整DDS配置。树莓派5建议使用CycloneDDS,因为它的内存占用更小:

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

可以创建专门的DDS配置文件来优化性能:

<CycloneDDS>
    <Domain>
        <General>
            <NetworkInterfaceAddress>auto</NetworkInterfaceAddress>
        </General>
        <Internal>
            <SocketBufferSize>65536</SocketBufferSize>
        </Internal>
    </Domain>
</CycloneDDS>

保存为cyclonedds.xml,然后设置环境变量:

export CYCLONEDDS_URI=file:///home/pi/cyclonedds.xml

6. 实战测试与验证

安装优化完成后,需要测试ROS2是否正常工作。首先测试基础通信功能。打开第一个终端,运行talker节点:

source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker

打开第二个终端,运行listener节点:

source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py listener

如果能看到talker发送消息,listener接收消息,说明基础功能正常。

接下来测试图像传输,这是ROS2中比较耗资源的应用。安装摄像头支持包:

sudo apt install ros-jazzy-image-transport-plugins

测试摄像头功能(需要连接摄像头):

ros2 run image_transport republish raw compressed --ros-args -r in/compressed:=image/compressed -r out:=image/decompressed

对于树莓派5,还可以测试GPU加速功能。首先安装GPU相关驱动:

sudo apt install libgles2-mesa-dev

然后测试OpenGL支持:

glxinfo -B

如果显示支持OpenGL,说明GPU驱动正常。可以进一步测试ROS2的GPU加速功能:

sudo apt install ros-jazzy-rviz2
ros2 run rviz2 rviz2

如果RViz2能够正常启动并显示3D界面,说明图形加速功能正常。

最后建议做一个压力测试,模拟多节点通信:

ros2 run stress_test_node talker --ros-args -p frequency:=100.0

这个测试会以100Hz的频率发布消息,可以检验系统的实时性能。

更多推荐