树莓派4B安装Ubuntu 18.04 Server与ROS Melodic全流程指南

发布时间:2026/10/14 23:40:45
树莓派4B安装Ubuntu 18.04 Server与ROS Melodic全流程指南
树莓派4B装带桌面的Ubuntu 18.04 server再叠一个ROS Melodic这套组合在机器人开发圈子里几乎是“入坑标配”。原因很简单树莓派4B性能足够跑常见ROS节点Ubuntu 18.04和ROS Melodic的兼容性是官方钦定的稳定组合而server版加自装桌面又比直接用desktop版更省资源、更可控。这篇文章我会把整个流程从头到尾讲透从选系统、烧卡、首启配置、装桌面到完整安装ROS Melodic并跑通可视化工具每个步骤都附带我实际踩过的坑和教训希望你照着走不会浪费一个周末。1. 为什么偏偏是Ubuntu 18.04 server ROS Melodic1.1 ROS与Ubuntu版本的对应关系ROS的每个发行版本都有严格绑定的Ubuntu系统版本。Melodic对应的就是Ubuntu 18.04 Bionic这是官方支持的硬性组合不是随便查个教程就往下装的。虽然Ubuntu 20.04配ROS Noetic、Ubuntu 22.04配ROS Humble也都是主流但很多经典ROS包、教学代码、工业方案在Melodic上跑得最成熟尤其是Python 2时代的节点和源码包在Melodic下基本不会遇到“版本太新导致依赖崩掉”的幺蛾子。还有一个很现实的原因树莓派4B是arm64架构ROS Melodic在arm64上有完整的预编译二进制包不需要从头编译一堆巨无霸源码。你只要配好源、敲几条命令就能装出完整的robot开发环境。相比之下如果去啃源码编译一个navigation栈就能让你折腾一整天还不一定能编过。1.2 server版装桌面而不是直接用desktop版很多人不理解既然要桌面为什么不直接下载Ubuntu Desktop镜像问题的核心在于性能和干净度。树莓派4B再怎么说也只是块开发板内存2G或4G。官方Desktop版预装了完整的GNOME桌面、一堆办公软件、浏览器和后台服务开机内存占用轻松飙到1GB以上。你以为它是拿来即用的实际用起来会发现留给ROS的内存空间非常紧张开个rviz再跑个SLAM就开始卡。我用的方案是先装Ubuntu Server 18.04再手动安装一个轻量桌面环境比如Xfce。这样做有几层好处server版系统本身干净后台服务少资源占用低。桌面环境自选装Xfce还是LXDE自己说了算不需要强行接受GNOME。图形工具rviz、rqt、gazebo还是能正常用因为只要有X Server和OpenGL支持就能跑起来。后续做机器人部署时如果想去掉桌面只留server改动成本极低。这一点算是个人项目里最值得保留的经验选择后续章节我会把每一步怎么操作都交代清楚。2. 硬件准备与系统镜像选择2.1 树莓派4B需要什么配置先说结论建议用4GB内存版本2GB版本也可以跑但内存会很紧张。如果手里只有2GB版本又不想换板子那建议尽量不要在桌面上开太多应用同时按我后面说的配置好swap和zram勉强能用。其他必需硬件TF卡一张建议32GB起步速度等级至少A1条件是“读写的稳定性和速度”。我自己试过劣质Class 4卡系统跑起来动不动I/O错误最后根文件系统直接损毁重刷一遍系统才知道卡的问题。电源必须支持5V/3A以上树莓派4B对供电非常挑供电不足会出现CPU降频、USB设备随机掉线、甚至ext4文件系统报错。别用手机充电器凑合最好带独立电源。散热片和风扇建议一起装。4B在全速编译ROS包的时候CPU温度可以轻松冲到80度以上过热会触发降频编译时间翻倍。显示器和HDMI线用于首启配置键盘鼠标至少准备一套后面做远程操作时可以撤掉。2.2 烧录镜像的正确姿势镜像选择上我建议直接用树莓派官方维护的Ubuntu Server 18.04.5 arm64镜像。这个镜像虽然是server版但它是为树莓派定制过的包含了树莓派所需的固件、内核和硬件驱动比通用Ubuntu Server镜像省心很多。下载时认准arm64架构不要下成32位armhf版本因为很多ROS预编译包在arm64下有armhf下则经常缺依赖。烧录工具我只推荐两个一个是树莓派官方推出的写卡工具另一个是跨平台的Etcher。两者都能一键写入操作逻辑一样我这里以Etcher为例解压下载好的镜像得到.img文件。打开Etcher选择镜像文件。插入TF卡选择目标磁盘。点击Flash等待写入完成。写入完成后Windows或macOS下能看到一个名为boot的分区。如果插到Linux上可能会自动挂载两个分区boot分区和根分区。这里有个细节树莓派定制的Ubuntu镜像默认会把根分区自动扩容到TF卡全部容量但前提是首次启动时系统能正常初始化。如果你发现启动后根分区还是只有几个GB用后面的扩容方法手动处理。操作提示烧录前先备份TF卡里已有的数据因为写入会强制格式化整张卡。烧录完成后建议把原始镜像文件保存好后面系统搞坏了可以直接重刷不用重新下载几GB的镜像。3. 首次启动前的关键配置3.1 用一根网线搞定网络接入很多教程会让你启动后接显示器用命令行配置Wi-Fi。但最省心的方法是先不要启动系统而是把TF卡插回电脑编辑boot分区里的文件提前配置好Wi-Fi和SSH这样开机后直接在路由器后台找到树莓派IP远程登录干活。Wi-Fi配置在boot分区新建一个wpa_supplicant.conf文件内容如下ctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev update_config1 countryCN network{ ssid你的Wi-Fi名称 psk你的Wi-Fi密码 }需要特别提醒一句不同镜像版本对wpa_supplicant.conf的支持不完全一样部分新版镜像已经把网络配置移交给netplanwpa_supplicant.conf不一定生效。所以我最推荐的方案是先用网线把树莓派连接到路由器这样只要有DHCP系统启动后就能拿到IP绕开所有Wi-Fi配置问题。SSH服务同样建议提前开启在boot分区里新建一个名为ssh的空文件注意没有任何扩展名。有部分镜像默认开了SSH但为了保险起见放一个空文件不会有任何副作用。3.2 开机后的最小系统设置给树莓派接好电源等一两分钟让它完成启动然后到路由器后台的设备列表里找主机名类似ubuntu或者raspberrypi的IP地址。如果你的路由器后台能看到设备列表这个过程非常快。拿到IP后在电脑上执行ssh ubuntu你的IP地址初始账号是ubuntu密码也是ubuntu。第一次登录系统一般会提示你修改密码跟着提示走就行。登录后的第一件事是确认网络和软件源可用。Ubuntu Server默认的apt源指向国外服务器国内网络环境下下载速度会非常可怜。我自己实测过不换源直接apt update等上十分钟它还在刷几十KB每秒。建议先把apt源替换成国内镜像站地址这一步可以帮你节省大量时间sudo sed -i s//archive.ubuntu.com//mirrors.你的镜像源.comg /etc/apt/sources.list sudo sed -i s//security.ubuntu.com//mirrors.你的镜像源.comg /etc/apt/sources.list sudo apt update sudo apt upgrade -y命令里的镜像站地址请替换成你常用的国内镜像源一般高校镜像和云厂商镜像都有Ubuntu源。然后检查一下根分区是否已经扩展到了TF卡的全部容量lsblk如果根分区还没有扩展到整张卡执行手动扩容sudo growpart /dev/mmcblk0 2 sudo resize2fs /dev/mmcblk0p2扩容这个操作你会在后面装桌面、装ROS的时候体会到它的必要性因为如果根分区只有5GB装完桌面和ROS Melodic的desktop-full包磁盘直接见底。4. 给Server版安上图形桌面4.1 桌面环境的选型我先说结论Ubuntu 18.04 server上装桌面优先选择Xfce桌面也就是安装xubuntu-desktop元包。原因很简单Xfce对资源的占用很低内存开销大概在500MB上下而且在树莓派4B上GPU驱动和OpenGL的支持都很好rviz这种重图形工具能正常运行。如果选择安装完整的ubuntu-desktopGNOME桌面也不是不行但你会面对两个麻烦一是系统会拉入大量无关软件包系统整体臃肿二是GNOME的某些动画效果在树莓派上会卡顿登录界面黑屏概率也更高。还有一类选择是LXDE或者MATE但LXDE在Ubuntu 18.04上已经停止维护MATE虽然轻量但配置入口较散。综合来看Xfce是“能跑、够稳定、生态好”三者平衡的最佳选择。4.2 安装与常见显示问题执行下面命令安装Xfce桌面。这一步的等待时间取决于网络速度一般需要几分钟到十几分钟sudo apt install xubuntu-desktop -y安装过程中会询问选择显示管理器这里务必选lightdm不要选gdm3。gdm3在树莓派这种缺少硬件加速的板子上经常出问题表现是登录后黑屏、鼠标能动但没桌面。lightdm配上Xfce稳定到可以连续开机跑很多天不重启。安装完成后设置默认启动到图形界面sudo systemctl set-default graphical.target sudo reboot重启后如果能进入Xfce桌面说明系统基本正常。如果卡在登录界面循环或者黑屏首先要查的是显示管理器和HDMI参数。在/boot/firmware/config.txt里[pi4]段可以加这两行强制指定HDMI输出hdmi_group1 hdmi_mode16这两行是对1080P显示器的常见配置如果你的显示器是4K可能需要改成hdmi_mode32。还有一个小技巧如果桌面一直起不来直接把config.txt里的hdmi_force_hotplug1加上强制HDMI热插拔检测可以解决部分显示器不亮的问题。装完桌面后还建议顺手装中文字体不然界面中文会变豆腐块sudo apt install fonts-wqy-zenhei fonts-wqy-microhei -y4.3 桌面装好后的系统优化建议这部分是我自己反复试出来的几个优化项直接影响后续ROS使用的流畅度。第一个必须是swap。Ubuntu Server 18.04默认不带swap文件而装完桌面再加上ROS内存很容易不够用。创建一个2GB的swapfile解燃眉之急sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab第二个是GPU内存分配。在/boot/firmware/config.txt里把gpu_mem设为128gpu_mem128如果设太大系统可用内存会变少设太小rviz渲染场景时会出现图形异常或闪烁。128是桌面环境下比较合理的中间值。第三个是关闭蓝牙和Wi-Fi的省电模式对Wi-Fi连接稳定性有帮助但这个并不是必须看个人使用场景决定。我个人建议打开swap的前提下其他优化都可以后期按需做。5. ROS Melodic完整安装流程5.1 软件源与密钥配置ROS安装的第一步是配置软件源。官方源地址是packages.ros.org如果你的网络直连速度还算能接受直接用官方源没问题。官方源如果很慢可以考虑换国内镜像源但我还是建议优先用官方源因为ROS源的更新频率低实际下载并不会太慢。添加ROS源和密钥sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C1CF6E31E6BADE886026172B4FEB250F787D4C1E然后更新软件索引sudo apt update这里如果出现“缺少公钥”或者“无法验证签名”的报错多半是密钥导入失败。重新执行一次apt-key命令即可也可以到官方文档找最新密钥。另外如果提示无法连接keyserver可能是网络对国外服务器不太友好可以换一个keyserver地址重试或者使用指定IP直连方式但这一步国内网络环境下偶尔会卡住多试几次是常态。5.2 安装核心组件与rosdep初始化完成更新后直接装ROS Melodic完整版。这个包包含ROS核心、常用机器人库以及rviz、rqt等可视化工具适合绝大部分入门和开发场景sudo apt install ros-melodic-desktop-full -y如果你只想跑基础功能也可以只装ros-melodic-ros-base但我建议新手直接装desktop-full因为后面跑rviz、看TF树、做URDF调试都离不开这些工具分步装反而可能漏掉依赖。安装结束后要初始化rosdep。rosdep的作用是解决ROS包在编译和运行时的系统依赖不初始化的话后面用catkin_make编译工作空间时各种缺依赖会让人抓狂sudo rosdep init rosdep updaterosdep init只有一条命令但rosdep update经常因为网络原因卡住。遇到这种情况我的处理办法是换个时间段再执行或者多执行几次。官方远程源在某些网络环境下确实不稳定这不是你操作的问题属于环境因素。最后把ROS环境变量写入bashrc确保每次打开终端都能直接使用ROS命令echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc再装一批构建工具后面自己编译工作空间会用到sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential git -y5.3 环境变量与验证测试环境变量配置完成后先做一个最基础的验证。在终端输入roscore看到类似“started core service”等输出说明ROS Master正常启动。这个终端不要关另外开一个新终端测试小乌龟程序rosrun turtlesim turtlesim_node会弹出一个窗口里面有一只乌龟和一个蓝色背景。再开一个终端输入rosrun turtlesim turtle_teleop_key然后你就可以用方向键控制乌龟移动了。小乌龟成功跑起来意味着整个ROS系统从通信框架到GUI渲染都已经通了。走到这一步带桌面的Ubuntu 18.04 server ROS Melodic的组合基本算是搭建完毕。6. 桌面环境下的ROS实操验证6.1 完整命令流程记录我把从开机到跑通rviz的完整流程整理一份方便你对照执行# 1. 登录系统进入桌面环境 # 2. 打开终端加载ROS环境 source ~/.bashrc # 3. 启动ROS Master roscore # 4. 启动rviz可视化工具 rosrun rviz rvizrviz是ROS里最常用的3D可视化工具。能弹出rviz窗口说明图形栈、OpenGL、显示管理器都工作正常。这一步很多人在无桌面环境下会卡在X Server错误但在我们自装的Xfce桌面里通常直接就能起来。如果你想在远程电脑上访问树莓派的桌面可以用SSH的X11转发ssh -X ubuntu你的树莓派IP然后在这个会话里启动rviz。注意远程转发模式下3D性能会有所下降如果是复杂场景还是建议直接用树莓派自带的显示器操作。6.2 资源占用与性能实测我用4GB版本实测过各阶段的资源占用给大家一个参考状态内存占用说明命令行模式无桌面约300MB纯净系统最小占用Xfce桌面待机约900MB已经加载面板、终端等打开rviz并加载模型约1.3GB正常使用范围内同时跑turtlesim和rviz约1.5GB还能有余量如果跟我一样是2GB版本用户开rviz后内存会非常吃紧建议把swap设到3GB同时关闭桌面特效再不济只能换4GB版本了。内存开销是树莓派跑图形化ROS最需要重视的瓶颈比CPU性能更明显。CPU方面编译ROS工作空间时4核全开会吃满温度很快到80度以上散热片和风扇一定要做好。平时跑节点时CPU占用不算高一个turtlesim加rviz整体CPU占用在20%左右表现比较稳定。7. 我踩过的一堆坑7.1 常见问题速查表把项目过程中遇到的高频问题和解决方案整理成了表格你在实操时一旦遇到类似现象直接对照着排查。现象可能原因解决方案apt update报错Hash Sum mismatch镜像站同步缓存不一致重新apt update或换一个镜像站apt-key导入密钥失败keyserver网络不通多试几次或换keyserver地址rosdep update超时远程源网络不稳定反复执行换网络环境或手动配置rviz启动提示cannot connect to X server没有图形环境或DISPLAY未设置在桌面终端启动或用SSH -X转发登录后黑屏gdm3显示管理器问题换lightdm修改HDMI参数系统启动报文件系统错误TF卡质量差或供电不足换A1/A2等级TF卡使用5V3A电源编译工作空间缺依赖rosdep未初始化执行sudo rosdep init和rosdep update7.2 树莓派4B特有的几个坑第一是电源问题。树莓派4B对电源质量非常敏感。我一开始用的是旧款5V2A电源系统运行半小时后Wi-Fi随机断连CPU频率从1.5GHz掉到600MHz还出现过ext4文件系统只读错误。换成5V3A电源后所有问题消失。第二是TF卡问题。系统频繁损坏的根因多半是卡不行。实验证明“工控级”卡和普通卡在随机读写性能上差好几倍尤其ROS在运行时要频繁写日志文件劣质卡容易掉速。预算充足直接买大品牌A2卡能省掉大量后续烦恼。第三是HDMI显示器不亮。树莓派4B的HDMI有热插拔检测机制有些显示器信号协商失败就会黑屏。在config.txt里加hdmi_force_hotplug1和hdmi_group/hdmi_mode参数可以解决大部分兼容问题。第四是Ubuntu 18.04上默认的NetworkManager在树莓派上有时会出异常表现为Wi-Fi能连上但无法获取IP。删除连接后重新配置即可或者干脆用网线连接最省事。7.3 关于系统备份和恢复的苦口婆心最后必须单独提醒系统配置好以后务必做一次完整镜像备份。最简单的方式是把TF卡插到电脑上用写卡工具的“读取”功能把整张卡备份成一个镜像文件。备份耗时取决于卡的速度和容量32GB大约需要十分钟左右。为什么特别强调备份因为树莓派的环境非常容易被一次误操作搞坏比如不小心删了系统关键包、改错了config.txt、apt upgrade到一半断电哪一条都可能导致系统无法启动。而重刷系统加重新配置ROS的环境又得花一个下午。我吃过这个亏后来养成了每完成一个阶段就备份一次的坏习惯虽然备份麻烦但恢复起来是真香。另外如果要批量部署多台树莓派备份镜像的意义更大在一块板的系统上装好ROS和所有依赖再用镜像复制出好几张卡省去每台重复安装的时间质量也更一致。我个人在这些年做了不少树莓派相关的机器人小项目最大的体会是别再纠结“是不是应该直接装Desktop”如果你是拿它长期跑ROS并做实物机器人server加轻量桌面是一条真正会被感谢的路。版本选择上Melodic配18.04确实是很多教程和源码包的默认前提跨版本尝试折腾的成本远高于收益。环境搭好后接下来建议直接跑一个激光雷达建图Demo把gmapping或cartographer装起来让rviz里出现实时地图那一下你会觉得前面所有等待都值了。