
经常有同学来问我ROS 怎么入门我一般回答先把环境装好。然后就没有然后了——因为光是安装这一步就能劝退一大半人。我第一次折腾 ROS 的时候也是在 VMware 16 里装了 Ubuntu 20.04再装 ROS Noetic前前后后折腾了三天不是下载镜像卡到崩溃就是依赖冲突装了一半全废。过了这道坎回头看安装本身不难难的是没人把每一步为什么要这么做讲清楚。所以我想写这样一篇真正保姆级的教程从 VMware 16 虚拟机、Ubuntu 20.04 系统到 ROS Noetic 安装一次讲完。适合完全没有 Linux 经验、手头是 Windows 电脑、又不想双系统折腾的朋友。这篇文章会把软件源、rosdep 初始化、显卡驱动这些最容易撞墙的地方单独拎出来提前帮大家排雷。1. 先搞清楚三件事Noetic、Ubuntu 20.04 和虚拟机之间的关系很多新手上来就搜ROS 最新版怎么装结果装了一堆东西之后才发现跑不通别人的代码。这里我先把版本关系梳理清楚省得你走弯路。1.1 为什么是 Noetic而不是 ROS 2 或者更新的版本先说结论ROS Noetic 和 Ubuntu 20.04 是一对近乎绑定的关系。Noetic 官方文档明确写明支持 Ubuntu 20.04而且它是 ROS 1 的最后一个长期维护版本官方维护期到 2025 年。既然维护期都快到了为什么入门还选它核心原因是生态。你后面学到的很多教程、开源项目、激光雷达和相机驱动包默认运行环境都是 ROS Noetic。比如你搜ORB-SLAM3 部署cartographer 建图UR 机械臂仿真大概率会看到Ubuntu 20.04 Noetic这个组合。反观 ROS 2 的 Humble 虽然很新但大量历史资料和第三方包还没完全迁移过去新手遇到问题搜不到答案那才是真的绝望。所以说新手阶段跟着老版本生态走是最稳的选择。这不是说 ROS 2 不好而是先上 Noetic 能让你把核心概念学透后面切换到 ROS 2 时话题、节点、服务的底层逻辑都是通的。1.2 虚拟机、双系统、WSL2 到底怎么选大家最纠结的就是环境载体。我直接用一张表说明白维度VMware 虚拟机双系统WSL2安装风险低改的是虚拟磁盘中涉及分区和引导项低但图形化支持弱系统切换不用重启随时在 Windows 和 Ubuntu 间切换必须重启才能切换轻量快速但和 Windows 集成度高性能有一定虚拟化损耗入门完全够用原生性能适合 GPU 重度需求损耗低但外设兼容性看场景快照回滚支持系统玩坏一键还原不支持可用 WSL 整体备份但体验不如快照适合场景入门学习、纯软件仿真深度视觉、SLAM、需要 GPU 加速轻量测试、ROS 2 学习入门阶段你的操作 90% 是终端命令加小窗口图形界面虚拟机完全扛得住。更重要的是虚拟机可以随时打快照。你在虚拟机里把系统搞崩了回滚一下又是一条好汉。双系统要是把 grub 引导玩没了那才叫欲哭无泪。至于有人担心 GPU 性能记住一句话入门阶段的仿真、导航、建图基本都用不到物理显卡。等以后真要做视觉 SLAM 或深度学习再考虑双系统也不迟。1.3 提前给你打个预防针这几个坑高频出现我整理网友高频问题的时候发现大家搜得最多的就是VMware16 密钥ubuntu20.04 网络问号ubuntu20.04 安装 N 卡驱动ros 安装无法定位软件包。这里先剧透一个结论虚拟机里不要装物理显卡驱动比如 N 卡驱动。你看到的是 VMware 虚拟显卡物理显卡驱动在虚拟机里不但没用反而会把图形界面搞坏。至于其他几个坑后面章节我会逐一拆解。2. 下载 VMware 和 Ubuntu 镜像这里省时间比省流量重要2.1 VMware 16以及一个比它更香的选择VMware Workstation 16 的安装基本无脑官网下载安装包双击、下一步、完成。网上很多人还在搜VMware16 最新密钥其实现在已经没必要了。VMware Workstation Pro 官方已经宣布对个人用户免费你只需要去官网注册一个个人账号就能拿到正版许可功能和原来的 Pro 版本没有区别。如果你手头已经有 VMware 16 的安装包也可以直接用试用期过了如果提示输入密钥再去官网看看个人免费授权即可。省下的时间去跑一个例程比什么都划算。安装 VMware 时有一个容易被忽略的点网络类型默认是 NAT保持默认就行。NAT 模式下虚拟机通过宿主机共享 IP 上网能省掉很多网络连通性的麻烦。桥接模式虽然能让虚拟机独立获取局域网 IP但经常会因为路由器或防火墙配置导致 Ubuntu 上不了网新手先不要碰。2.2 Ubuntu 20.04 镜像下载别去官网折磨自己的耐心系统镜像下载很多新手第一反应是去官网 ubuntu.com。官网的服务器在国外从国内拉一个 3GB 的 ISO 可能半小时起步遇到网络波动直接失败。建议大家去国内镜像站清华 TUNA、中科大 USTC、阿里云开源镜像站都有完整的 Ubuntu 镜像。打开镜像站之后找到 ubuntu-releases选 20.04.6。注意选 20.04.6 而不是 20.04.0原因很简单这是 20.04 系列的最后一个维护更新版集成了大量补丁和驱动更新对新硬件兼容性更好。文件命名里通常有一个桌面版 ISO比如 ubuntu-20.04.6-desktop-amd64.iso就选它。这里明确一下要下载 Desktop 版不要 Server 版。Server 版没有图形界面对新手极不友好后面你想打开 rviz、Gazebo 都费劲。2.3 在动手之前建立一层关键认知安装之前先给你建立一个认知你在虚拟机里装的 Ubuntu内部是一个完整系统但它所有的磁盘其实只是 Windows 上的一个大文件比如叫 Ubuntu.vmdk所有内存都是从物理机借出来的。所以你在虚拟机里随便折腾Windows 上的正经文件不会被动到。这层认知建立好后面安装系统时看到清除整个磁盘这样的选项才不会慌——它清除的只是那个虚拟磁盘文件不是你的 C 盘。3. 创建虚拟机到装完 Ubuntu每一步都踩在点上3.1 创建虚拟机时的参数建议打开 VMware点击创建新的虚拟机。安装类型选择自定义高级会比较好控制新手选典型也完全没问题。下面几个关键参数直接按这个表配参数建议值备注内存至少 4GB建议 6-8GBUbuntu 桌面系统开机就要占 1.5-2GB后续编译很吃内存处理器2 核心起步如果你的 CPU 性能好可以给 4 核硬盘60GBROS 装完 desktop-full 后需要好几个 GB加上仿真模型60GB 是起步网络NAT默认即可最稳ISO 映像使用下载好的 ubuntu-20.04.6-desktop-amd64.iso在安装系统时挂载3D 加速勾选加速 3D 图形在显示器设置里解决 rviz 白屏问题内存这里多说一句4GB 是底线给 8GB 会舒服很多。你后面编译功能包时OpenCV、PCL 这些库一起上内存不够会直接卡死甚至让 Windows 都变卡。3.2 Ubuntu 安装过程中的几个关键选择题挂载 ISO 后开机选择Try or Install Ubuntu等几分钟进入图形安装界面。这里面有几个点值得说语言和键盘布局建议选中文之后搜报错、看界面都方便。键盘布局默认 English (US)。安装选项选正常安装安装时更新可以取消勾选装完进系统再统一更新速度更快。安装类型这是新手最容易慌的一步。选清除整个磁盘并安装 Ubuntu。不要担心它清除的是虚拟磁盘不是 Windows 系统盘。界面上通常也会明确标出是虚拟机磁盘。时区选 Shanghai 或任意中国大陆城市即可。用户名建议全小写英文比如 ros、jack。不要用大写字母和中文否则后面很多路径和工具链会出现奇怪的问题。密码可以设置简单一些因为你几乎每天都要敲 sudo。3.3 装完系统后的第一轮整理系统装完重启进入桌面第一轮整理分四步。第一步打开终端CtrlAltT把 apt 软件源换成国内镜像。20.04 可以直接编辑 /etc/apt/sources.list把里面的 archive.ubuntu.com 换成 mirrors.aliyun.com 或 mirrors.tuna.tsinghua.edu.cn。改完执行 sudo apt update看会不会报错。第二步安装 open-vm-tools。这是 VMware 增强功能的新版替代品命令是sudo apt install open-vm-tools open-vm-tools-desktop装完重启分辨率、共享剪贴板、拖拽文件就都正常了。不用再像老教程那样去 VMware 菜单里点安装 VMware Tools了。第三步系统更新sudo apt upgrade等它跑完大概需要几分钟到十几分钟。第四步打一个干净系统的快照。在 VMware 菜单栏点击虚拟机 - 快照 - 拍摄快照命名为 CleanSystem_Base。这个快照就是你的后悔药后面装 ROS、乱改配置把系统搞坏了回滚只需要十秒钟。3.4 再提醒一句虚拟机里不要装显卡驱动网上一搜ubuntu20.04 安装 N 卡驱动能出来一大堆教程但在虚拟机里这纯属给自己找麻烦。虚拟机里识别到的是 VMware SVGA 虚拟显卡你物理机上的 N 卡或 A 卡驱动和它没有任何关系。装了反而大概率导致图形界面进不去。4. ROS Noetic 安装实战看懂一键脚本到底在干什么4.1 安装前最后的体检开始动真格之前在终端里确认三件事。第一系统版本lsb_release -a输出里会出现 focal 字样这是 Ubuntu 20.04 的代号确认无误才能往下走。第二磁盘空间df -h看根目录 / 剩余空间至少要有 30GB。第三网络sudo apt update能正常刷新索引说明源通了。这三步过了就可以正式装 ROS 了。4.2 配置 ROS 软件源和公钥ROS 不在 Ubuntu 默认的软件源里需要先配置 ROS 专属源。这里我用中科大源做示例稳定性和速度都不错。第一步把源地址写入配置文件sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list这里有个值得说的细节$(lsb_release -sc) 在 20.04 上会自动展开成 focal所以这条命令也能用于其他 Ubuntu 版本只是不同版本对应不同 ROS 发行版而已。第二步添加公钥。推荐用 curl 下载官方密钥并安装到 keyrings 目录sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg如果你在这个网络步骤中遇到超时可以多试几次也可以把 packages.ros.org 域名换成国内镜像来规避。这一步的本质是让系统信任 ROS 官方仓库的签名和装普通软件时添加 ppa 是同一个道理。第三步写入带签名信息的正式源地址echo deb [signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros/ubuntu focal main | sudo tee /etc/apt/sources.list.d/ros-latest.list第四步更新索引sudo apt update更新完成后你可以用 apt search ros-noetic 看看能不能搜到大量 ros-noetic- 开头的包。能搜到就说明源配好了。4.3 正式安装桌面完整版核心命令就是这一条sudo apt install ros-noetic-desktop-fulldesktop-full 里大概包含这几类东西ROS 核心通信框架可视化工具 rviz、rqt机器人仿真工具 Gazebo2D/3D 感知库比如 PCL、OpenCV 的 ROS 封装大量常用功能包比如 navigation、move_base、tf2、urdf 等这条命令执行时会拉取几百个依赖包下载体积接近 3GB。所以前面让你把磁盘给到 60GB真不是随口说的。下载速度取决于你的网络如果前面源配的是国内源速度会明显快很多。如果你只想先体验 ROS也可以装 ros-noetic-ros-base 或 ros-noetic-desktop。但我建议一步到位 desktop-full因为后面跑仿真、建图、导航几乎每个例程都会用到它。4.4 rosdep最容易被劝退的环节以及我的处理思路rosdep 是 ROS 的依赖管理工具用来在编译源码时自动下载依赖规则。但这一步在国内网络环境下经常失败因为 rosdep 的数据源主要托管在 GitHub raw 上网络环境不好时很容易卡死。我给大家两个思路。思路 A使用国内维护的 rosdepc 工具替代。你可以通过鱼香 ROS 提供的脚本或 pip 安装 python3-rosdepc逻辑和 rosdep 完全一致只是数据源切到了国内。思路 B暂时跳过 rosdep。如果只是跑编译好的功能包、写话题和服务程序rosdep 根本不参与。等到以后要编译第三方源码包时再回来处理。这个建议可能和大多数教程唱反调但根据我的经验入门第一周先别和 rosdep 死磕。先让小乌龟跑起来把信心建立起来比搞定一切工具链都重要。很多同学就是卡在 rosdep 一整天最后直接放弃了太可惜。4.5 配置环境变量并验证安装装上 ROS 之后还差最后一步让终端能找到 ros 命令。echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc这两行的作用是把 ROS 环境变量写进 shell 启动配置文件。你可以把 /opt/ros/noetic/setup.bash 理解为 ROS 的总开关。后面我们建工作空间之后还会有一个 devel/setup.bash它和这个文件是叠加关系。验证方式rosversion -d如果输出 noetic说明 ROS 版本环境正常。然后执行roscore启动 ROS 主节点。看到 started core service 就说明核心跑起来了。这个终端会一直占用前台是正常的按 CtrlC 可以关闭。4.6 鱼香 ROS 一键安装它到底干了什么网上很多人推荐鱼香 ROS 一键安装命令长这样wget http://fishros.com/install -O fishros . fishros运行后会出现一个菜单选1. 一键安装 ROS然后按提示选择 Ubuntu 20.04 / Noetic脚本就会自动完成换源、安装依赖、配置环境变量甚至处理 rosdepc 这一整套流程。所以你可以直接用这个脚本。但我的建议是第一次最好手动装一遍哪怕中途遇到点波折。手动安装能让你明白 ROS 环境由哪些部分组成软件源、公钥、功能包、环境变量再加上 rosdep。这些概念在后面排查问题时非常有用。一键脚本适合的场景是你已经懂了这些但今天就是不想折腾或者手动装到某一步老是报错重装系统后想快速恢复环境。两条路不冲突反而是互补的。5. 第一次让你笑出来的验收小乌龟和第一个工作空间5.1 小乌龟验证ROS 世界的 Hello World现在来做 ROS 里最经典的验证实验——小乌龟。开三个终端终端 1roscore终端 2rosrun turtlesim turtlesim_node终端 3rosrun turtlesim turtle_teleop_key然后回到第三个终端按键盘上的方向键你会发现窗口里的小乌龟按你的指挥动起来了还能在屏幕上画出运动轨迹。从这三个命令能直观看出 ROS 的基本运行方式roscore 是整个系统的中央调度室必须先启动turtlesim_node 是一个节点负责显示仿真窗口turtle_teleop_key 是另一个节点负责把键盘输入转成运动指令发布两个节点之间通过话题topic通信你不用管底层怎么连接ROS 已经封装好了。这是 ROS 最核心的心智模型后面所有内容都建立在这个模型上面。5.2 初始化 catkin 工作空间小乌龟跑通之后接下来初始化自己的工作空间。ROS 里的项目代码都组织在工作空间里最常用的是 catkin 工作空间。mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_makecatkin_make 第一次运行会生成 build编译中间文件和 devel编译产物与 setup.bash两个文件夹。这步做完后把工作空间的环境变量加进 .bashrcecho source ~/catkin_ws/devel/setup.bash ~/.bashrc source ~/.bashrc现在你的 .bashrc 里有两行 source 了一行是 /opt/ros/noetic/setup.bash一行是自己工作空间的 setup.bash。shell 读取 .bashrc 是从前往后的第二行的作用是在 ROS 包路径里追加你自己的工作空间这样就能找到你自己写的功能包了。5.3 顺手看一眼 /opt/ros/noetic 里到底有什么好奇的话可以看一下 ROS 装到了哪里。ls /opt/ros/noetic目录下主要有 bin、include、lib、share 等。bin 里是大量可执行文件比如 roscore、rosrun、roslaunchshare 里是各种功能包的配置、launch 文件等。ROS 本质上不是什么神秘系统它是一套基于 Linux 的软件包集合通过环境变量让各个包之间能够互相发现和通信。把这个概念搞明白你对安装 ROS这件事就不会再有恐惧感了。6. 装完之后的常见报错和我的几条实操经验6.1 高频问题速查表下面这张表是我被问得最多的几类问题建议收藏现象可能原因处理方式sudo apt install ros-noetic-desktop-full 提示无法定位软件包没有先 apt update或源没写对重新执行 sudo apt update检查 /etc/apt/sources.list.d/ros-latest.list 内容bash: rosdep: command not found没有安装 python3-rosdepsudo apt install python3-rosdepbash: roscore: command not found环境变量没有配置检查 .bashrc 是否有 source /opt/ros/noetic/setup.bash然后 source ~/.bashrcecho $ROS_DISTRO 输出为空环境变量没有被当前终端加载在当前终端执行 source /opt/ros/noetic/setup.bashUbuntu 没有网络或网络图标变问号虚拟机网络适配器设置问题关机后在 VMware 虚拟机设置里把网络适配器改为 NAT重新开机rviz 或小乌龟窗口白屏、闪退3D 图形加速没开勾选 VMware 显示设置里的加速 3D 图形并安装 open-vm-tools-desktop分辨率低、无法全屏没装 open-vm-toolssudo apt install open-vm-tools open-vm-tools-desktop重启键盘方向键控制不了小乌龟焦点没在 teleop 终端用鼠标先点击 teleop 终端窗口再按方向键6.2 我踩过的几个坑以及现在会做的选择分享几个我自己实操后总结的经验这些不一定写在教程里但很实用。第一个经验是快照习惯。我现在每装完一个大的环境比如刚装完系统、刚装完 ROS、刚配完某个仿真环境都会打一个快照。这样后面为实验乱装包把系统搞乱时回滚一下就能恢复到稳定状态比花一晚上排查依赖冲突划算太多。命名要清楚比如 Ubuntu_Clean、ROS_Noetic_Done方便识别。第二个经验是别急着钻牛角尖。如果只是把 ROS 装完想开始学话题与服务rosdep 暂时没配好可以先放一放。先跑起来后面再回来补效率反而更高。第三个经验是尽量用终端启动图形程序。你在虚拟机里运行 rviz、Gazebo 这些大型图形软件时直接从终端用 rosrun 或 roslaunch 启动报错信息能直接看到排错比双击图标快很多。6.3 装完之后下一步学什么环境装好只是开始。我给的建议路线是把卤蛋小乌龟玩熟搞清楚节点、话题、服务这三个概念。用 rqt_graph 看一下节点之间的通信关系图建立直觉。写一个最简单的 talker / listener 发布订阅程序尝试创建自己的功能包。接触 URDF 建模给自己搭一个虚拟小车或机械臂。学习 launch 文件理解如何一键启动多个节点。再进入 SLAM、导航、MoveIt 这些应用级内容。每一步都要动手敲不要只读。ROS 学习最大的特点就是看了十遍不如跑一遍。安装环境这件事说难也难说简单也简单。我第一次装 ROS 时卡在 rosdep 上整整一个下午后来发现跳过它直接进例程反而一切顺畅。用顺手之后再回头处理也就是十分钟的事。所以如果你在安装过程中遇到某个步骤反复失败别急着怀疑自己关掉教程去睡一觉第二天换一个思路或者重装一次通常都能过。动手能力就是在这一次次重装里磨出来的。祝你的第一只小乌龟顺利跑起来。