news 2026/10/3 17:19:57

云服务器上安装ROS 2 Humble完整指南:从选型到跑通节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云服务器上安装ROS 2 Humble完整指南:从选型到跑通节点

学ROS这件事,环境安装往往是第一道坎。我在本地折腾过双系统、虚拟机,也在Windows上用WSL试过,最后反而觉得云服务器是最舒服的学习环境——这句话我说得很负责。云服务器装ROS,简单说就是租一台带公网IP的Ubuntu主机,你通过SSH远程登录进去,在里面完整地装一套ROS / ROS 2,用它跑例程、跑仿真、写节点,和本地开发几乎没区别,而且完全不吃你电脑的配置。

这个方案适合三类人:一是电脑配置一般,本地跑虚拟机卡到不行的学生;二是经常换电脑、希望学习环境固定的开发者;三是想初体验ROS但不想在系统里折腾双系统的观望者。接下来我按实际操作的顺序,把从选购云服务器到装好ROS 2 Humble的完整流程写一遍,顺便把踩过的坑都标出来。

1. 为什么我不再推荐本地装ROS:云服务器的定位

1.1 本地环境的三座大山

我最早学ROS是在自己笔记本上装虚拟机,Ubuntu 20.04 + ROS Noetic。当时觉得很简单,结果一跑Gazebo仿真,风扇直接起飞,内存占用长期在90%以上。后来换成双系统,启动要重启电脑,切来切去很麻烦,分区还要留给Ubuntu至少80GB,不然装完ROS和仿真模型就满了。再后来试过WSL,Windows环境下确实方便,但摄像头、串口这类硬件设备透传经常出幺蛾子,跑图形界面也要额外配。

这三条路我都走过,总结下来本地环境的典型问题就三个:

  • 硬件门槛:8GB内存跑虚拟机很勉强,16GB才算舒服,GPU基本是奢望。
  • 环境隔离差:不同Ubuntu版本对应不同ROS版本,装错了整个系统跟着遭殃。
  • 无法随取随用:换台电脑、换个网络,整个环境就没了。

这些问题不是不能解决,但每次都在消磨学习耐心。尤其是初学者,环境装了两天还没跑通第一个节点,信心早就没了。

1.2 云服务器解决的核心问题

云服务器的思路很简单:把Ubuntu放在远端,本地只用SSH连上去操作。这样本地电脑的内存、硬盘、CPU占用都降下来了,我的旧笔记本只有8GB内存,SSH客户端开着就能流畅跑完整个ROS课程。

它解决了几个本地环境绕不开的痛点:

  • 配置可弹性升级,云服务器配置不够时可以在线升配,不用重装系统。
  • 快照功能随时可以回滚,装坏了rosdep、误删了依赖,一条命令恢复。
  • 公网IP固定,换个电脑、换个网络环境,SSH一登就是同一个工作环境。
  • 不占本地磁盘,Ubuntu系统盘、ROS安装包、仿真模型全放在云端。

我现在的习惯是:本地只留一个代码编辑器,真正跑ROS都在云服务器上。实测下来,2核4G的服务器跑ROS 2和Gazebo,比本地虚拟机还流畅。

1.3 它解决不了的,你也别指望

云服务器也不是万能的。我要先泼一盆冷水:如果你打算做涉及真实摄像头的视觉SLAM、需要GPU的深度学习推理、或者接真实机器人底盘和雷达,那云服务器不适合做主力环境。没有物理硬件,USB设备、CAN总线这些都没法直接接。

但如果你只是学ROS基础、写节点、做仿真、看TF树、跑SLAM算法包,云服务器完全够用,而且比本地更省心。我自己就是在云服务器上把《ROS 2机器人开发实践》里的例程全部跑通的,后面接真机时再把工作空间同步到本地就行。

2. 云服务器选型与初始化:配置、镜像、安全组

2.1 规格怎么定:2核4G是舒服线

先说结论:入门选2核4G,有预算上4核8G,1核2G不要买。下面是不同规格的实际体验参考:

配置价格区间(包年)适合场景实际体验
2核2G较低只装ROS base,跑命令行节点跑Gazebo会卡,编译容易OOM
2核4G中等ROS desktop + rviz + Gazebo轻量仿真舒服线,多数教程能跟下来
4核8G较高大型编译、密集SLAM仿真编译快,体验接近本地中端电脑

关于价格,各家云厂商的轻量应用服务器或活动机型都会比标准云服务器便宜不少。云服务器“大概多少钱”这个事没有统一答案,但2核4G的活动价一般在每年几百元区间,按量付费则一小时几毛钱,学习期可以先开通按量或短周期套餐,学完快照存档,不产生长期费用。

内存是决定体验的关键。为什么?因为ROS 2的中间件、rmw实现、以及编译时的colcon构建,都非常吃内存。2G内存跑ros-humble-desktop会在编译环节直接OOM,报Killed。所以我的建议是至少2G,最好4G,磁盘至少40G。如果你打算把Gazebo模型库完整拉下来,那建议60G以上。

2.2 系统镜像与登录方式

ROS版本和Ubuntu版本强绑定,所以镜像选择不要贪新,直接选Ubuntu 22.04 LTS Server版。为什么不是24.04?因为ROS 2 Humble官方支持的就是22.04,教程和社区问题最多,遇到报错一搜就有答案。24.04对应的是Jazzy,虽然新但生态还在成熟中,新手没必要尝鲜。

登录方式基本就是SSH。购买后云厂商会给一个公网IP和root密码,Windows用户用Windows Terminal或Putty,macOS/Linux用户直接在终端敲:

ssh root@你的服务器IP

这里有两个安全习惯建议从一开始就养成。第一,登录后不要长期用root,新建一个普通用户,日常开发用普通用户,需要提权时加sudo。第二,优先配置SSH密钥登录,关闭密码登录。云服务器是公网暴露的,我见过不少被扫SSH密码的案例,密钥登录一劳永逸。

2.3 安全组和端口:先开好门再装修

云服务器的安全组相当于服务器的前置防火墙,很多新手在这里栽跟头——安装过程没问题,但VNC连不上、X11转发黑屏,最后发现是安全组没放行端口。

我的建议是初始化服务器时就规划好端口:

  • 22端口:SSH登录,默认放行。
  • 5901或5902端口:后续VNC远程桌面用,按需放行。
  • 6000端口:X11转发用,这一步如果你只走SSH终端可以不开放。

安全组放行时,建议限制来源IP,只允许你自己的IP访问。比如只放行“我的IP”而不是“0.0.0.0/0”,避免服务器端口被全网扫描。

3. 版本选择:我为什么直接选ROS 2 Humble

3.1 新手到底学ROS 1还是ROS 2

这是个老问题。ROS 1(Noetic)发布于2020年,官方支持期到2025年5月,现在已经进入维护末期。ROS 2从Dashing一路更新,经过Foxy、Galactic、Humble,已经非常成熟。我的判断很直接:2024年之后开始学ROS的人,不用纠结,直接学ROS 2。

为什么?一个很现实的原因是,ROS 2重新设计了通信中间件,基于DDS,解决了ROS 1单点故障、实时性不足、多机通信复杂这些硬伤。另一个原因是,现在新出的机器人都赶在ROS 2上做开发,很多经典算法包都已经完成迁移。你学ROS 1,等到了实际项目中基本还是要学一遍ROS 2。

学ROS 1的唯一理由是:你在维护一个遗留的ROS 1项目,或者某些老牌硬件厂商只给了ROS 1驱动。这种情况属于工作需求,不属于新手学习路径。

3.2 Ubuntu 22.04 + Humble为什么是当前黄金组合

ROS 2的每个发行版都对应一个官方支持的Ubuntu LTS版本,Humble对应的是Ubuntu 22.04。这个组合被我用下来,是最稳定、资料最全、踩坑成本最低的组合。

  • Ubuntu 22.04是LTS,官方支持到2027年,服务器可以长期不重装。
  • Humble是ROS 2 LTS版本,支持到2027年,适合长期学习项目。
  • 生态适配好,绝大多数教程、课程、开源项目都跑到这个组合上。
  • Gazebo、Nav2、MoveIt2、micro-ROS等深度学习链路的包,在这个版本上都能顺利装好。

为什么我反复强调LTS对齐?因为机器人项目周期长,你可能一个环境要用两三年。如果用一个非LTS的ROS版本,到期后软件源停止更新,环境就得重装,非常折腾。

3.3 配置国内软件源,让下载速度快三倍

安装ROS之前,得先把Ubuntu的软件源改成国内镜像。这一步不做,后面apt install会慢到怀疑人生,尤其是一次性装几百个依赖包的时候。

这里我以清华镜像源为例,操作步骤很简单:

# 备份原始源配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 编辑sources.list,换成清华源地址 sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list sudo sed -i 's@//security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list # 更新索引 sudo apt update

国内镜像源除了清华,阿里云、中科大也挺稳。换源的原理很简单:默认源在境外,国内访问延迟高且经常断连,镜像源把软件包同步到国内服务器,速度自然快几倍。这个步骤不只对ROS有用,后续装任何Ubuntu软件都能受益。

4. 手工安装ROS 2 Humble全流程:一步步照着敲

4.1 更新系统与安装基础依赖

安装的第一步,先把系统内核到软件包全部更新到最新。很多ROS依赖包在旧版本上编译不过,更新系统可以提前规避。

sudo apt update && sudo apt upgrade -y

然后安装ROS 2编译和运行需要的基础工具:

sudo apt install -y software-properties-common curl wget gnupg2 lsb-release build-essential

这里有个小细节:一定先确认系统的locale是UTF-8编码。ROS 2对locale有要求,如果不是UTF-8,后面启动节点会报奇怪的字符错误。检查命令:

locale

如果没有生成UTF-8 locale,按下面方式设置:

sudo apt install -y locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 # 重新登录终端后生效

4.2 添加ROS 2软件源与密钥

官方源的地址是packages.ros.org,但国内访问速度不稳定。我的方案是:优先配置国内镜像源,这里有清华的ROS镜像可以直接用。

# 添加ROS 2软件源(清华镜像) sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2.list' # 添加密钥 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

这里有一个坑:raw.githubusercontent.com在国内有时会连不上,导致密钥下载失败。如果你遇到这个问题,有一个替代办法,就是从https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/keyring或国内镜像同步的key地址下载,或者直接搜索“ros-archive-keyring.gpg镜像”找可用的地址。下载后要校验一下证书内容,避免装到来历不明的密钥。

注意:Ubuntu 22.04默认的apt签名机制要求用keyring文件方式([signed-by=...])。如果只写deb行不写signed-by,会报Key is stored in legacy trusted.gpg keyring的警告,虽然能装,但不干净。

所以更严谨的写法是把deb行改成:

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

添加完源之后:

sudo apt update

如果apt update里看到来自mirrors.tuna.tsinghua.edu.cn/ros2的条目,说明源配置成功了。

4.3 装ros-base还是desktop:按需选择

ROS 2的安装包分成几个等级,最核心的是ros-humble-ros-base,包含ROS 2的底层通信、核心客户端库、常用命令行工具。另一个是ros-humble-desktop,包含了全套工具和图形界面程序,比如rviz2、demo节点、turtlesim。

这里需要做选择,我的建议是:

  • 基础学习、命令行开发、只写代码不跑仿真:ros-humble-ros-base就够。
  • 要跑rviz2可视化、要做Gazebo仿真、要跑turtlesim练手:选ros-humble-desktop。

安装命令:

# 基础版 sudo apt install -y ros-humble-ros-base # 桌面版(包含rviz2、turtlesim、demo等) sudo apt install -y ros-humble-desktop

如果你不确定,直接装desktop,多占一点磁盘空间但省得后面缺包补装。desktop大概要1.5GB到2GB的下载量,在好的网络环境下几分钟就装完,在国内镜像源下也不慢。

另外,官方建议装一些开发工具和命令行补全工具:

sudo apt install -y ros-dev-tools python3-argcomplete python3-colcon-common-extensions

colcon是ROS 2的构建工具,后面写自己的功能包必须要用到,这一步直接装好,省得后面再补。

4.4 配置环境变量与验证安装

安装完成后,需要把ROS 2的环境变量加载到shell里。因为服务器重启或者新开终端后,环境变量会自动丢失,所以建议直接写进bashrc:

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

验证是否安装成功:

ros2 --help

如果输出了ROS 2的命令列表,说明核心安装成功。接下来跑一个最简单的验证,turtlesim小乌龟:

ros2 run turtlesim turtlesim_node

这个命令会启动一个小乌龟仿真窗口。如果你是纯SSH命令行模式,这一步可能会报“cannot connect to display”,因为服务器没有显示器。这个问题的解决办法我在第5节会详细说,先不纠结,你可以用ros2 run demo_nodes_cpp talker来验证通信是否正常,这类命令不需要图形界面。

4.5 旁路方案:鱼香ROS一键安装脚本

如果你手工配置源、密钥的时候反复出错,或者那些网络问题实在搞不定,还有一个社区方案可以用:鱼香ROS一键安装。这个工具在中文ROS圈里很流行,它把换源、装ROS、配置rosdep整个流程脚本化,一条命令跑完。

使用方法很简单:

wget http://fishros.com/install -O fishros && . fishros

运行后会弹出选项菜单,让你选择要安装ROS 1还是ROS 2、哪个版本,然后自动完成安装。它对新手确实友好,而且内置了很多国内环境的处理逻辑。

我个人的建议是:第一次学习时,还是手工装一遍,这样你会对软件源、密钥、环境变量、apt依赖这些概念有体感,后面遇到问题能自己排查。如果你已经手工装过一次,换新环境时再用一键脚本提效,非常合适。

5. 服务器没显示器,GUI可视化怎么办

5.1 问题拆解:rviz和Gazebo不是没地方显示

云服务器没有显卡也没有显示器,这是做机器人仿真最尴尬的事。rviz2和Gazebo都需要图形界面,刚装完ROS的服务器直接跑这两个程序,百分之百会报一个错:cannot connect to X server。

X Window系统是Linux图形界面的基础协议,rviz2这种GUI程序是运行在X server上的,而服务器默认没有图形环境,这个错误本质就是找不到显示服务。

解决思路有三条:SSH端口转发、VNC远程桌面、Foxglove Studio网页可视化。三条路的适用场景完全不同,我分别说一下。

5.2 方案一:X11 SSH转发,轻量但延迟高

X11转发是最省事的GUI方案,原理是把服务器上的图形显示通过SSH隧道传输到本地,由本地电脑的X server显示出来。这个方案的前提是本地电脑要有X server环境。

Linux原生系统直接支持,macOS需要装XQuartz,Windows则需要用MobaXterm这类自带X server的SSH客户端。

连接方式和配置:

# 本地终端执行,用 -X 参数启动X11转发 ssh -X root@你的服务器IP

连接后再启动rviz2:

rviz2

这时rviz2的窗口会出现在本地屏幕上。想要转发成功,本地电脑的网络延迟不能太高,而且两端都要有基本的X11支持。实测在同一个城市网络内还算流畅,跨地域就有明显延迟,拖动视角时会有迟滞感。

这个方案最大的优点是零额外安装,最小可行性验证很合适。缺点是延迟高、3D渲染性能差,复杂场景会很卡。

5.3 方案二:VNC远程桌面,最稳妥

如果你想要一个完整的Ubuntu桌面,而不是把单个窗口转发到本地,那就用VNC。VNC的流程是在服务器上装一个虚拟桌面,然后通过VNC客户端远程连接。

简单说一下我的搭建过程,服务器安装XFCE桌面和TigerVNC:

# 安装轻量桌面环境 sudo apt install -y xfce4 xfce4-goodies sudo apt install -y tigervnc-standalone-server tigervnc-common

第一次启动VNC会要求设置密码,也会生成配置文件。在启动VNC服务时指定分辨率:

vncserver :1 -geometry 1920x1080 -depth 24

本地连的时候,用VNC Viewer连接服务器IP:5901,端口对应关系是:1就是5901。

VNC里跑rviz2和Gazebo,流畅度比X11转发好很多,毕竟整个桌面都在服务器上,本地只是接收画面。如果用的是轻量桌面,小规格服务器也能带得动。

但是注意:VNC默认是不加密的,不要在公网上裸奔。要么把VNC端口只对特定IP放行,要么给VNC加SSH隧道:

ssh -L 5901:localhost:5901 root@你的服务器IP

然后本地连接localhost:5901,这种方式更安全。我自己在云服务器上跑ROS仿真时,最常用的就是VNC方案。

5.4 方案三:Foxglove Studio,Web端新选择

最近几年,Web端可视化工具Foxglove Studio用的人越来越多。它跟rviz2的定位不完全一样,更偏重数据可视化,但用来展示ROS 2的topic数据、查看TF树、看图像流,非常好用。

配置方式也不复杂:服务器上启动节点后,用Foxglove Studio连接服务器地址,就能实时看到topic数据。Foxglove本身支持ROS 2的WebSocket连接,需要装一个桥接包:

# 工作空间里编译安装rosbridge_suite sudo apt install -y ros-humble-rosbridge-suite ros2 launch rosbridge_server rosbridge_websocket_launch.xml

然后在本地Foxglove Studio里添加连接,填服务器IP和端口。因为它是Web技术栈,本地只要有现代浏览器就能看,不依赖X server,也不依赖VNC。对于纯传感器数据处理、可视化的场景,这条路线最现代,也最轻量。

不过我还是要提醒一句:Gazebo这种需要渲染物理仿真环境的工具,目前还是VNC方案比较靠谱。Foxglove更适合做数据分析而不适合做仿真场景编辑。

6. 完整实操记录:从购买到跑通第一个ROS节点

6.1 登录服务器后的初始检查

这一节我记录一次真实的完整流程,方便你对照操作。

我购买了一台2核4G的云服务器,系统选择Ubuntu 22.04 Server版,磁盘初始40G。拿到公网IP后,SSH登录:

ssh root@服务器IP

登录后第一件事不是装ROS,而是看基础环境:

# 查看系统版本 lsb_release -a # 查看CPU和内存 nproc && free -h # 查看磁盘空间 df -h

我的检查结果是:2核CPU、4G内存、40G磁盘,符合预期。系统更新后,我发现磁盘剩余可用空间其实只有33G左右,这提醒我之后在装Gazebo模型库时要留意空间占用。

6.2 安装过程中的关键输出与验证

按照第4节的流程,我依次执行了换源、装密钥、更新索引、安装desktop。我这里记录几个关键输出,你安装时可以对照判断。

换源后执行sudo apt update,末尾会看到:

Get:12 https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy InRelease […]

这条说明ROS 2源已经生效。

安装ros-humble-desktop时,下载总量在1.5GB左右,国内镜像下大概3到5分钟。如果某一步卡住了,大多数情况是网络问题,可以先看看是不是某个源地址不可达。

安装完成后验证:

ros2 --help printenv | grep ROS

printenv | grep ROS应该输出ROS_DISTRO=humble和AMENT_PREFIX_PATH等路径信息,这说明环境变量配置正确。

6.3 用Python写一个最小talker/listener验证

环境装好后,我习惯做一个比turtlesim更接近实际开发的验证:创建一个自己的工作空间,写一个极简的Python发布/订阅节点。这样既能验证colcon工具链,也能验证Python客户端库。

# 创建工作空间 mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src # 创建Python功能包 ros2 pkg create py_demo --build-type ament_python --dependencies rclpy std_msgs

然后编辑~/ros2_ws/src/py_demo/py_demo/publisher.py:

import rclpy from rclpy.node import Node from std_msgs.msg import String class SimplePublisher(Node): def __init__(self): super().__init__('simple_publisher') self.publisher = self.create_publisher(String, 'demo_topic', 10) self.timer = self.create_timer(1.0, self.timer_callback) def timer_callback(self): msg = String() msg.data = 'hello from cloud server' self.publisher.publish(msg) self.get_logger().info(f'Publishing: {msg.data}') def main(args=None): rclpy.init(args=args) node = SimplePublisher() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()

再写一个subscriber.py:

import rclpy from rclpy.node import Node from std_msgs.msg import String class SimpleSubscriber(Node): def __init__(self): super().__init__('simple_subscriber') self.subscription = self.create_subscription(String, 'demo_topic', self.listener_callback, 10) def listener_callback(self, msg): self.get_logger().info(f'Received: {msg.data}') def main(args=None): rclpy.init(args=args) node = SimpleSubscriber() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()

别忘了在setup.py里注册入口点。然后编译:

cd ~/ros2_ws colcon build --symlink-install source install/setup.bash

开三个终端窗口,分别跑:

ros2 run py_demo publisher ros2 run py_demo subscriber ros2 topic echo /demo_topic

如果能看到两边日志交替输出,说明整条链路——软件源、安装、环境变量、编译、通信——全部验证通过。我实际跑的时候,ros2 topic echo里能看到每秒钟一条hello from cloud server,那一刻才觉得环境真的搭好了。

7. 高频问题排查与避坑清单

7.1 无法定位软件包 / 找不到ros-humble

这个报错是刚装ROS的人遇到最多的:E: Unable to locate package ros-humble-desktop。原因基本只有一个:软件源里没有这个包,或者apt update没有成功拉到ROS 2的源。

排查顺序:

# 1. 看源文件是否存在且内容正确 cat /etc/apt/sources.list.d/ros2.list # 2. 更新索引,观察ROS源是否被加载 sudo apt update # 3. 搜索你的目标包 apt search ros-humble

如果apt search没有任何输出,说明源没配对。常见坑是$(lsb_release -cs)拿了错误的版本代号,比如你系统是Ubuntu 22.04,这个命令应该输出jammy。如果输出不对,直接把deb行里的$(lsb_release -cs)手动替换成jammy。

7.2 GPG key错误与软件源失效

安装后可能出现key报错,典型输出长这样:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654

解决思路是把缺失的key重新导入。如果官方地址连不上,可以直接用镜像站的key文件。我一般这样处理:

# 重新下载ROS2 key到系统keyring sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg # 如果下载失败,换镜像地址再试 sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/keyring -o /usr/share/keyrings/ros-archive-keyring.gpg

导入后记得再sudo apt update验证。这个问题的本质是ROS官方更新过密钥,老教程里的旧key签名已经失效。

7.3 SSH连接卡顿、终端乱码与内存不足

SSH连接卡顿,先看是不是用了root密码登录、用的还是旧版加密算法。建议改用密钥登录,本地生成公钥:

ssh-keygen -t ed25519 ssh-copy-id root@你的服务器IP

终端乱码通常是locale没配好,按4.1里的locale设置处理。

内存不足的典型表现是编译时报Killed,或者out of memory。2G内存跑colcon build大包时经常出现。缓解手段有几个方向:

  • 关掉不用的服务,释放内存。
  • 编译时限制并行度:colcon build --parallel-workers 1。
  • 加swap交换空间,我一般给服务器加2G swap:
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

加了swap之后,2G内存的服务器也能勉强编译完成,只是会比较慢。长期用还是建议4G内存。

7.4 快照与系统重置:云服务器的后悔药

这是云服务器相比本地环境最香的一点。本地装ROS装坏了,要么花一下午重装系统,要么手动排查清理;云服务器只需要在购买控制台里点“创建快照”,环境坏了一键回滚。

我的习惯是在几个时间点做快照:

  • 刚完成系统更新和换源后。
  • ROS 2安装完成后,确定能正常跑例程时。
  • 每次大工程前,比如装Gazebo、更新rosdep、编译大型包前。

这样即使后续操作把系统搞挂了,最多回滚到上一个状态,不会从零再来。这个习惯帮我省了大量时间,强烈建议养成。

7.5 避坑清单速查表

最后整理一份我在云服务器装ROS过程中总结的避坑清单,你照着检查一遍基本不会出大问题。

检查项建议踩坑后果
Ubuntu版本必须选22.04 LTS版本不对,ROS源不匹配
内存规格至少2G,建议4G编译OOM、Gazebo掉帧
软件源用国内镜像并确认deb行正确apt update极慢或404
GPG key使用keyring方式并导入新key软件源验证失败
locale设置为UTF-8节点启动报字符错误
环境变量写进~/.bashrc每次新终端都要手动source
安全组按需放行22/5901等端口GUI远程连接失败
快照关键节点手动创建环境损坏只能重装
swap小内存补2G swap大包编译被kill

还有一个容易被忽略的细节:云服务器带宽。如果只是SSH敲命令,1Mbps带宽都不觉得慢;但如果要VNC远程桌面或下载大文件,带宽太小会非常痛苦。买服务器时带宽尽量选3Mbps以上,或者选按量计费带宽,用多少算多少。

最后分享一个我自己的习惯

这篇文章写到这儿,操作流程已经完整了。最后聊点我的个人习惯:我在云服务器上装完ROS后,会把~/.bashrc里额外加几个alias,比如alias cm='colcon build --symlink-install'、alias sb='source install/setup.bash',这样每次编译和刷新环境只需要敲两个短命令。这些小约定看起来不起眼,但长期用下来非常提效。

另一个建议是,云服务器费用虽然不高,但别忘了在控制台设置好自动续费和到期提醒。我也遇到过服务器到期没续费,整个环境被释放的情况。快照可以帮你迁移,但提前续费能省去重新部署的麻烦。用云服务器学ROS,本质上就是把环境变成一个资产——它在你需要的时候随时可用,学会了知识,环境还能继续服务后续的项目。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 17:19:07

Android ContentObserver实战:从原理到避坑,轻松监听数据变化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 17:19:05

DRV8818与PIC18LF46K22协作:步进电机工业控制方案复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 17:19:00

正交试验方差分析全流程:手算、表格与图形呈现实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 17:18:15

SPD5集线器协议解析:从抓包到CRC校验的全流程实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 17:16:44

基于Cadence Virtuoso的Buffer电路设计与仿真完整教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 17:16:42

FPGA XDMA双BAR地址映射原理与实战调试指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华