资讯动态

Ubuntu安装ROS指南:Noetic与Humble版本选型及避坑

发布时间:2026/9/30 4:55:56 来源:尧图企业网站定制
1. 为什么装 ROS 之前必须先看版本对应关系很多人第一次在 Ubuntu 上安装 ROS卡住的地方根本不是命令敲错而是版本选错了。ROS 的发行版和 Ubuntu 的版本是硬绑定的你拿 Ubuntu 22.04 去装 ROS Noetic或者拿 Ubuntu 20.04 去装 ROS 2 Humble十有八九会在 apt 依赖解析阶段直接报一堆无法满足的依赖然后就开始怀疑人生。所以在敲第一条命令之前先把版本这关过了能省掉后面至少一半的排查时间。1.1 ROS 1 和 ROS 2 到底该选哪个这是新手问得最多的问题。简单说ROS 1 是上一代架构核心靠一个叫 roscore 的中心节点做通信中介ROS 2 是重写过的架构底层换成 DDS 做去中心化通信实时性、多机协同、安全性都强不少。现在新开的项目、尤其是机械臂、移动机器人、工业场景基本都往 ROS 2 靠。但现实里很多成熟的开源代码、老教程、实验室遗留项目还跑在 ROS 1 上所以你选哪个取决于你要复现的东西是什么。我个人的判断逻辑是这样如果你手上的教程、代码仓库、课程用的是catkin_make、roscore、rosrun这一套那就是 ROS 1别犹豫装对应的 Noetic。如果看到的是colcon build、ros2 run、rclcpp、rclpy这些那就是 ROS 2Ubuntu 22.04 配 Humble 是当前最稳的组合。如果纯新手想系统学我建议直接上 ROS 2 Humble生态文档现在很完整社区活跃度也高。1.2 版本对应表与选型建议下面这张表建议存下来装机前对照一遍Ubuntu 版本代号推荐 ROS 1推荐 ROS 2状态18.04bionicMelodic无已停止维护20.04focalNoeticFoxyNoetic 仍广用Foxy 已 EOL22.04jammy不支持Humble当前主流组合24.04noble不支持Jazzy较新生态跟进中这里有个细节要提醒ROS Noetic 是 ROS 1 的最后一个版本官方支持周期已经结束但因为大量存量项目还在用它依然是装机量最大的 ROS 1 发行版。ROS 2 这边Humble 是 LTS支持到 2027 年Jazzy 是较新的 LTS但部分第三方包跟进还没那么全。所以如果你不是特别追新Ubuntu 22.04 Humble 是最不容易踩坑的组合。1.3 硬件和磁盘空间的实际要求官方文档写的要求往往偏保守。实际跑下来我的经验是磁盘只装ros-distro-desktop-full大概要 1.5 到 3 GB但你要是顺手把 Gazebo、rviz、各种工具包都装上再加上编译工作空间的build、devel目录20 GB 是起步建议给根分区留 40 GB 以上。内存纯跑节点 4 GB 能开机但要开 Gazebo 仿真或者 rviz 看点云8 GB 是底线16 GB 会舒服很多。虚拟机还是双系统新手练手用 VMware 或 VirtualBox 装 Ubuntu 完全够用分配 4 核 CPU、8 GB 内存、60 GB 磁盘记得装 VMware Tools 让剪贴板和分辨率正常。缺点是 Gazebo 仿真在虚拟机里会掉帧真要做仿真建议双系统或者有独显的机器。注意虚拟机里装 ROS 时网络模式建议用 NAT桥接模式在某些校园网或企业网环境下会拿不到 IP后面 apt 更新会直接失败。2. 系统准备把地基打牢再动手我见过太多人直接跳过这一步上来就加 ROS 源结果 apt update 卡在某个国外的地址上进度条纹丝不动最后放弃。其实系统准备做扎实了后面安装 ROS 的顺畅度完全不一样。这一步主要干三件事换源提速、更新索引、补齐基础依赖。2.1 换源让 apt 提速的第一件事Ubuntu 默认的软件源在国内访问速度经常很感人。换成国内镜像以后apt 下载速度能从几十 KB/s 提到几 MB/s。我一般用清华源或者中科大源。备份原来的源列表然后替换sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list把里面的archive.ubuntu.com、security.ubuntu.com替换成镜像地址就行。懒得手动改的直接在图形界面里操作打开软件和更新在Ubuntu 软件标签页把下载服务器改成清华或阿里系统会自动帮你改好源列表。这个方式对新手更友好不容易改错格式。改完源必须更新索引否则改了个寂寞sudo apt update sudo apt upgrade -yupgrade这一步会拉不少包看你原来的系统有多旧慢的话等十几分钟很正常。别嫌烦这一步是为了让系统里所有已安装包都到最新减少后面 ROS 安装时的依赖冲突。2.2 补齐基础依赖和常用工具ROS 的安装脚本和后续开发会用到一堆基础工具缺一个就得临时补。我习惯一次性装齐sudo apt install -y curl wget git build-essential cmake python3-pip \ python3-dev python3-rosdep python3-argcomplete vim net-tools这里解释下为什么是这几个curl用来下载密钥和脚本wget备用git拉代码用得上build-essential和cmake是编译 ROS 包的核心工具链python3-dev是编译 Python 扩展的头文件net-tools里的ifconfig在排查网络和主从机配置时很实用。很多人编译 ROS 功能包时报 CMake 相关错误追根溯源就是build-essential没装全。顺便说一句git装好后建议配置一下用户名和邮箱不然提交代码时会报错git config --global user.name 你的名字 git config --global user.email 你的邮箱2.3 输入法与中文环境的兼容性处理这一块算是容易被忽略的坑。Ubuntu 下装搜狗输入法或者配置中文输入本身不难但要留意它和 ROS 某些 GUI 工具比如 rviz、qt 相关界面的输入法插件可能冲突。我第一次配好中文输入后打开 rviz界面直接崩了查日志才发现是 fcitx 的 qt 插件问题。解决办法是安装 fcitx 的 qt 支持包sudo apt install fcitx-frontend-qt5然后在环境变量里指定export QT_IM_MODULEfcitx export GTK_IM_MODULEfcitx export XMODIFIERSimfcitx写进~/.bashrc或者~/.profile都行。如果你的 ROS 工具压根不涉及图形界面这块可以先跳过不影响核心功能。提示环境变量写多了容易乱建议在~/.bashrc里用注释把不同用途的配置分段比如# 输入法、# ROS以后出问题好定位。3. ROS 1 Noetic 安装全流程Ubuntu 20.04假设你的系统是 Ubuntu 20.04要装 ROS Noetic接下来这几步一步步来就行。整个流程分四块加源、装包、初始化 rosdep、配环境变量。我按实际操作的顺序展开每一步都说明它在干什么。3.1 添加官方软件源与密钥ROS 的包不在 Ubuntu 默认仓库里得先把官方源加进来。第一步装 curl 并配置密钥sudo apt install curl -y curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -apt-key add是告诉系统来自这个签名的包是可信的不加密钥的话 apt 会因为签名验证失败拒绝安装。如果这条命令报错或者卡住多半是那个 GitHub 地址访问不稳定这种情况下我推荐直接用国内的 ROS 镜像源把签名问题绕开。换成清华源的写法sudo sh -c . /etc/lsb-release echo deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $(lsb_release -cs) main /etc/apt/sources.list.d/ros-latest.list中科大源同理把地址换成mirrors.ustc.edu.cn/ros/ubuntu/即可。加完源再更新一次sudo apt update这一步如果报NO_PUBKEY错误说明密钥没导入成功回到密钥那一步重来或者用镜像站的密钥。3.2 apt install 与依赖版本选择ROS 安装包分三个层级选哪个直接影响你后面能用多少东西安装包名包含内容适用人群ros-noetic-ros-base核心通信库、基础工具服务器部署、追求精简ros-noetic-desktop加上 rviz、rqt 等图形工具一般开发ros-noetic-desktop-full再加上 Gazebo、感知、导航等新手、做仿真新手直接上 full一条命令搞定sudo apt install ros-noetic-desktop-full -y这个包体积不小下载加安装大概一两个 GB视网络情况可能要十几分钟到半小时。装的过程中注意看输出如果有 E: 开头的错误多半是依赖冲突或者源没更新。装完可以用下面这条命令确认核心目录存在ls /opt/ros/noetic/看到setup.bash、bin、share、include这些目录说明主体安装成功了。3.3 rosdep 初始化与卡点处理rosdep是 ROS 的依赖管理工具编译功能包时它负责帮你自动安装缺失的系统依赖。初始化分三步sudo apt install python3-rosdep -y sudo rosdep init rosdep updaterosdep init会在/etc/ros/rosdep/sources.list.d/下创建20-default.list里面指向几个配置文件地址。rosdep update则是去拉取这些文件到本地缓存。这两步是最容易卡的地方常见问题有两种。第一种sudo rosdep init报ERROR: cannot download default sources list。原因基本就是那个默认地址访问不通。解决思路有两个一是手动创建目录和文件把地址内容换成国内镜像版本二是干脆用下一节讲的一键脚本它内置了镜像处理。第二种rosdep update超时或者中途断掉。这个多半是网络抖动我的经验是多试几次或者挑网络空闲的时段跑。如果反复失败同样可以考虑镜像方案。注意rosdep update生成的缓存放在~/.ros/目录下之后如果换了用户或者删了家目录这一步得重做。3.4 环境变量写入与验证装完的 ROS 还不能直接用得告诉 shell 去哪找命令。临时生效这么写source /opt/ros/noetic/setup.bash但这样关了终端就没了所以要写进~/.bashrcecho source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc验证一下看环境变量有没有配好echo $ROS_DISTRO输出noetic就对了。再跑个roscore试试roscore终端刷出一堆启动日志最后停在started core service [/rosout]说明核心节点跑起来了。按 CtrlC 退出接下来就可以跑小海龟验证完整链路。4. ROS 2 Humble 安装全流程Ubuntu 22.04如果你的系统是 Ubuntu 22.04想装 ROS 2 Humble整体思路和 ROS 1 类似但源配置和环境变量的路径不一样别把两套命令混着敲。下面这套是我在实际机器上反复验证过的流程。4.1 启用 Universe 仓库与添加 ROS 2 源Ubuntu 的universe仓库里有一些 ROS 2 需要的系统包先确认它开了sudo apt install software-properties-common -y sudo add-apt-repository universe -y接着下载 ROS 2 的密钥注意 ROS 2 用的是 keyring 方式而不是老的apt-keysudo apt update sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg然后添加源。这里$(. /etc/os-release echo $UBUNTU_CODENAME)会自动取到jammy不用手写echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null同样如果这个 GitHub 地址拉不动可以把上面的源地址换成国内镜像的 ROS 2 地址密钥也要用镜像站提供的版本两个必须配套不然签名照样过不了。4.2 安装桌面版与开发工具Humble 的安装包和 ROS 1 命名规则不同常用的是这两个sudo apt update sudo apt install ros-humble-desktop -yros-humble-desktop包含了 rviz2、demo 节点、rqt 这些够日常学习和开发用。如果你需要做仿真再补一个sudo apt install ros-humble-gazebo-ros-pkgs -y开发过程中还会用到 rosdep 和编译工具sudo apt install python3-colcon-common-extensions python3-rosdep -y sudo rosdep init rosdep updatecolcon是 ROS 2 的编译工具取代了 ROS 1 的catkin_makecolcon-common-extensions里带了常用插件装上是省事的做法。4.3 环境变量与安装验证ROS 2 的环境变量文件路径是/opt/ros/humble/setup.bashecho source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc验证方式和 ROS 1 不太一样ROS 2 没有roscore直接跑个 demoros2 run demo_nodes_cpp talker看到它每隔一秒打印一条Publishing: Hello World: N就说明通信正常。另开一个终端跑ros2 run demo_nodes_py listener如果 listener 终端能收到 talker 发的消息说明发布订阅链路通了安装完全成功。提示ROS 1 和 ROS 2 可以装在同一台机器上共存但千万不要在同一个终端里同时 source 两套 setup.bash环境变量会互相覆盖导致命令找不到或者节点通信异常。要切换时新开终端。5. 一键安装脚本鱼香ROS 的用法与判断热词里高频出现鱼香ROS一键安装这个工具在国内 ROS 圈知名度确实高。对完全不想折腾源和依赖的新手来说它是个省事的选项。但我不建议你只会用它因为它把很多细节藏起来了一旦出问题你不知道从哪查。所以我更推荐的方式是先看懂它做了什么再用它。5.1 脚本到底替我们干了什么这个脚本的核心逻辑其实不复杂它把前面几节的手动步骤自动化了主要包括检测当前系统版本自动匹配能装的 ROS 发行版避免版本选错。配置软件源和密钥并且内置了国内镜像地址绕开了访问不稳定的默认地址。处理 rosdep 的初始化和更新这一步是它最大的价值点因为手动搞这个最容易失败。顺手把环境变量写进~/.bashrc装完不用手动配。提供常用工具的快捷安装入口比如换源、装输入法、装 Docker 之类。它本质上就是一个封装好的 shell 脚本集合跑的时候会拉取一些文件到本地。理解了这一点你就不会被一键两个字唬住出问题也敢自己查。5.2 使用步骤与几个必须留意的点使用方式通常是在终端里执行一条包含脚本地址的命令然后跟着交互菜单选。因为脚本地址会更新我不在这里贴死你去它的项目页面拿最新命令是最稳妥的。执行时我提醒几点第一脚本需要 sudo 权限会问你要密码正常输入即可。但执行前建议先把~/.bashrc备份一份cp ~/.bashrc ~/.bashrc.bak万一脚本写坏了环境变量直接还原就行这是个低成本的保险。第二跑完脚本后一定新开一个终端验证不要在当前终端直接测因为环境变量是写入文件后由新 shell 加载的。第三脚本安装的发行版是它根据你系统判断的不能跨版本装。Ubuntu 24.04 上它不会给你装 Noetic这是正常的不是 bug。5.3 脚本安装和手动安装怎么选我的建议是分场景场景推荐方式理由第一次装、纯学习手动安装过程走一遍后面排查有底重装、赶时间一键脚本省掉 rosdep 这些磨人的步骤服务器批量部署手动写脚本可控、可审计教学演示一键脚本节省课堂时间手动装过一次之后你会发现脚本的价值和局限在哪。真正做项目时环境问题还得靠自己对每个环节的理解去排查一键工具救不了所有场。6. 装完必做验证与第一个工作空间装完不验证等于没装。很多人报告ROS 装好了然后跑程序报错一问才发现环境变量没配、工作空间没建。这一节把装完必须做的几件事捋清楚照着做能快速确认环境是全的。6.1 跑通小海龟确认核心链路小海龟turtlesim是 ROS 的Hello World它同时验证了节点、话题、话题订阅发布这一整套通信机制。ROS 1 的操作是三个终端# 终端 1 roscore # 终端 2 rosrun turtlesim turtlesim_node # 终端 3 rosrun turtlesim turtle_teleop_key第三个终端里用方向键如果小海龟跟着动说明从节点启动到话题通信全通了。ROS 2 里对应的是# 终端 1 ros2 run turtlesim turtlesim_node # 终端 2 ros2 run turtlesim turtle_teleop_key同时可以用ros2 topic list看当前有哪些话题用ros2 node list看有哪些节点这些命令是日常调试的基本功趁早熟悉。6.2 创建自己的编译工作空间ROS 1 用 catkinmkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bashROS 2 用 colconmkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build source install/setup.bash这里有个关键点工作空间的setup.bash必须 source而且要在系统级/opt/ros/...之后 source否则你新建的包不会被找到。顺序不能反。建议把工作空间的 source 也写进~/.bashrc但注意路径要对echo source ~/catkin_ws/devel/setup.bash ~/.bashrc注意工作空间重装或者换了名字后~/.bashrc里那条旧路径会报文件不存在的错虽然不影响使用但很烦人记得顺手删掉。6.3 常用工具速览装完之后这几个工具你会反复用到提前知道它们干什么能少走弯路rviz三维可视化看传感器数据、机器人模型、坐标系变换。rqt图形化调试工具集能看节点树、话题、参数比命令行直观。Gazebo物理仿真做机器人运动学和传感器仿真用。rosbag录包回放调试算法时把真实数据录下来反复跑特别有用。这些工具在 desktop-full 或 desktop 里通常都带了rosrun rviz rviz或者rviz2直接能开。第一次打开可能会卡一下因为它在初始化图形后端属正常现象。7. 常见问题与排查速查表前面讲的都是顺利情况实际装的时候大概率会碰到一些报错。这一节是我攒下来的高频问题集合按现象给排查思路比你在论坛里翻帖子快得多。7.1 apt 相关报错怎么定位现象可能原因处理方式E: 无法定位软件包 ros-noetic-...源没加或没 update检查 sources.list.d 下的 ros 源文件重新 apt updateNO_PUBKEY密钥没导入重新导入密钥或换镜像站配套密钥依赖冲突装不上系统包版本太旧先apt upgrade全量更新卡在下载没速度默认源慢换国内镜像源排查 apt 问题有个通用套路先看错误是找不到包还是依赖冲突前者是源的问题后者是版本的问题方向完全不同。找不到包别急着换方法先apt-cache policy 包名看系统里认不认这个包。7.2 环境变量相关的典型坑命令找不到是最常见的一类问题。rosrun: command not found、roscore: command not found八成是~/.bashrc没配或者新终端没加载。排查顺序echo $ROS_DISTRO没输出说明没 source。再确认~/.bashrc里那条 source 路径对不对grep ros ~/.bashrc路径写错、写成/opt/ros/noetic/setup.zsh、或者手滑多打了个空格都会导致加载失败。改完记得开新终端验证别在当前终端纠结。还有一种隐蔽情况系统装了多个 ROS 版本~/.bashrc里 source 了两个后 source 的覆盖前面的结果你以为在跑 Noetic实际跑的是别的版本。用echo $ROS_DISTRO确认当前实际生效的版本。7.3 rosdep 反复失败的应对rosdep 失败基本围绕网络。除了前文说的镜像方案还有几个实操技巧多执行几次rosdep update它的缓存是增量更新的中断后重跑能接着来把系统时间校准一下证书验证对时间敏感时间不准会导致下载校验失败sudo apt install ntpdate -y sudo ntpdate ntp.aliyun.com如果实在搞不定 rosdep临时应对办法是编译时跳过它catkin_make前用rosdep install --from-paths src --ignore-src -r -y单独处理或者手动装缺失的依赖。这不是长久之计但能让你先把项目跑起来。7.4 虚拟机和远程连接的连带问题虚拟机装 Ubuntu 的读者容易碰到两类问题。一类是 SSH 连不上先确认openssh-server装了没sudo apt install openssh-server -y sudo systemctl status ssh再确认虚拟机网络模式NAT 模式下宿主机要连虚拟机得配端口转发桥接模式则要求虚拟机和宿主机在同一网段。另一类是分辨率或剪贴板异常装好 VMware Tools 或 open-vm-tools 后重启即可sudo apt install open-vm-tools open-vm-tools-desktop -y远程操控 ROS 还涉及主从机配置核心是设置ROS_MASTER_URI和ROS_IP两个环境变量。这块内容较多等基础环境稳了再研究先把单机跑通。8. 装完之后往哪走几条实用的进阶路线ROS 装好只是起点真正的学习在后面。根据自己的方向选一条线深入比漫无目的地刷教程效率高得多。8.1 嵌入式方向micro-ROS 与单片机如果你做的是嵌入式micro-ROS 值得关注。它让 ESP32 这类单片机也能接入 ROS 2 网络省掉了自己写通信协议的麻烦。基本流程是在主机上跑 micro-ROS agent单片机侧刷带 micro-ROS 客户端的固件两者通过串口或 UDP 通信。上手前先把主机环境跑通确保ros2 topic list能看到 agent 建立的节点再折腾固件否则出问题分不清是主机还是设备的问题。这条线的坑主要在环境一致性和串口权限。串口设备默认要 root 权限加个 udev 规则或者把用户加进 dialout 组能解决sudo usermod -aG dialout $USER改完要重新登录才生效很多人改完没重登就报权限错误白白浪费时间。8.2 机械臂与仿真方向机械臂相关的开发通常是先在 Gazebo 里仿真跑通算法再上真机。典型流程是获取目标机械臂的 URDF 模型配好控制器插件在 Gazebo 里加载然后用 MoveIt 做运动规划。这中间的坐标系变换TF是最容易出错的地方模型加载后机械臂扭曲、乱飞基本都是 URDF 里的关节坐标系定义有问题。仿真的好处是安全撞了重开就行坏处是虚拟环境和真机有差距动力学参数、摩擦力、传感器噪声都不一样。所以我的经验是算法逻辑在仿真里调参数标定一定要拿真机数据做别指望仿真参数直接搬。8.3 感知与实机接入涉及相机、雷达这类传感器的项目驱动安装是第一步。以常见的工业相机为例厂商一般会提供 ROS 驱动包编译后通过 launch 文件启动再用image_view或 rviz 确认图像能出来。标定是绕不开的环节相机内参、外参、和机械臂的手眼标定每一项都有专门的工具包。标定的精度直接决定后续抓取的准确度这块没捷径只能按流程一步步测。实机调试有个通用原则先保证数据通路畅通再谈算法。传感器数据能不能进 ROS话题能不能正常发布rviz 里能不能看到这三步过了才轮得到上算法。顺序搞反了会在错误的地方debug半天。如果让我给刚装完 ROS 的人一句建议那就是别急着装一堆包先把小海龟、话题、节点、工作空间这几样东西玩熟把rosrun、rosnode、rostopic、roslaunch这几个命令用顺手。环境问题永远会遇到但只要你清楚每一步在干什么就没有解决不了的。我刚开始装的时候也在 rosdep 那卡了大半天后来回头看那些踩过的坑恰恰是最值钱的部分。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑