☰
VMware 安装 Ubuntu 并部署 ROS:机器人开发环境搭建与避坑指南
2026/10/15 6:32:27 网站建设 项目流程

简介:这份PDF资料面向ROS初学者与机器人方向的学生,解决在Windows环境下快速搭建Ubuntu与ROS学习环境的问题。内容围绕VMware虚拟机展开,涵盖Ubuntu镜像选择、虚拟机创建与硬件分配、系统安装,以及ROS仓库配置、基础包安装、环境变量设置与talker验证等环节,帮助读者在不动原有系统的前提下完成入门环境部署。资源包共1个PDF文件,约25.9MB,图文步骤与命令示例结合,便于按章节对照操作。目前已有744人学习下载,适合零基础或刚接触机器人操作系统的读者,可据此独立完成虚拟机与ROS的安装配置,并理解版本选择、依赖添加和常见配置要点,为后续学习ROS功能与项目开发打下环境基础。

1. 在 VMware 里装 Ubuntu 再上 ROS:为什么这是机器人入门最稳的第一步

很多人第一次接触机器人操作系统,卡住的地方不是写节点,而是环境根本装不起来。双系统怕分区翻车,WSL 又常被 USB 串口和图形界面折腾到怀疑人生,于是「在 VMware 里装 Ubuntu 再上 ROS」成了最不容易劝退的路径。它把风险关进虚拟机:装崩了删掉重来,宿主机毫发无伤;网络、显卡、串口都能按需透传,跑通 ROS 的发布订阅、rviz 可视化、gazebo 仿真完全够用。这篇面向刚上手 ROS 的开发者、要带学生做实验的助教,以及需要在隔离环境里验证算法的工程师,从虚拟机配置一路讲到 ROS 环境变量和第一个能跑通的节点,把参数、命令和踩坑点都摊开。

2. 装之前先把 VMware 和 Ubuntu 的账算清楚:版本、资源与镜像选择

虚拟机装 ROS 翻车,八成不是 ROS 的问题,而是宿主机资源分配和版本搭配从一开始就错了。这一章先把选型逻辑讲透,再落到 VMware 的具体配置项,让你在点「下一步」之前就知道每个数字意味着什么。

2.1 为什么 Ubuntu 版本要跟着 ROS 版本走

ROS 的发行版和 Ubuntu 版本是强绑定的,这不是建议,是硬约束。ROS 1 时代,每个发行版只官方支持一到两个 Ubuntu 版本;ROS 2 虽然宽松一些,但二进制包依然按 Ubuntu 版本分发。常见对应关系如下:

ROS 版本类型官方支持的 Ubuntu
NoeticROS 120.04
HumbleROS 222.04
JazzyROS 224.04

如果你只是跟着教程学基础概念,选 Noetic + 20.04 的资料最多,遇到问题最容易搜到答案;如果目标是长期维护的新项目,直接上 Humble + 22.04 更合适。我一般会建议新手先确认自己要跟的教程用的是哪个 ROS 版本,再倒推 Ubuntu 版本,而不是先随便装个最新 Ubuntu 再去找 ROS 包,那样大概率卡在依赖报错上。

2.2 VMware 里给多少 CPU、内存和磁盘才不卡

ROS 本身不重,但 rviz 和 gazebo 一开,内存和显卡就成了瓶颈。下面是我在 16GB 内存宿主机上常用的分配方案,可以直接抄:

资源最低推荐说明
CPU 核心24少于 2 核编译 ROS 包会非常慢
内存4GB8GB开 gazebo 建议 8GB 起
磁盘40GB60GBROS 桌面版加依赖轻松吃掉 20GB
显存256MB1GB 以上勾选 3D 加速,否则 rviz 可能黑屏

磁盘类型选单个文件还是拆成多个,对性能影响不大,但单个文件方便整体拷贝备份。网络适配器用 NAT 就够,除非你要从局域网其他机器访问虚拟机里的 ROS 节点,那再考虑桥接。

2.3 镜像从哪来、校验怎么做

Ubuntu 官方镜像站提供桌面版 ISO,下载后务必做一次哈希校验,避免镜像损坏导致安装中途报错。在 Linux 或 macOS 上:

# 计算下载镜像的 sha256,和官网公布值比对 sha256sum ubuntu-22.04.4-desktop-amd64.iso

在 Windows 上可以用 PowerShell:

# 计算文件哈希,Algorithm 指定 sha256 Get-FileHash .\ubuntu-22.04.4-desktop-amd64.iso -Algorithm SHA256

两个值一致再拿去装。校验这步很多人跳过,结果装到一半提示解压失败,回头重下反而更费时间。

2.4 新建虚拟机的关键几步

打开 VMware,选「创建新的虚拟机」,走自定义模式,依次设置:稍后安装操作系统、客户机系统选 Linux、版本选 Ubuntu 64 位、位置放在剩余空间充足的盘、磁盘按 2.2 的表分配。创建完成后先别急着开机,进「编辑虚拟机设置」把内存、核心数、3D 加速按需调好,再挂载 ISO 镜像。开机后跟着安装向导走,分区选「清除整个磁盘并安装」,因为这是虚拟磁盘,不会影响宿主机。安装过程中建议勾选「安装时下载更新」,能省掉装完再手动补驱动的一步。

3. 系统装完别急着装 ROS:先把 Ubuntu 侧的网络、源和工具链理顺

Ubuntu 装好只是开始,直接冲去装 ROS 的人,往往会在 apt 更新和依赖解析上卡很久。这一章把系统侧的准备工作做扎实,后面 ROS 安装会顺很多。

3.1 换源与更新:让 apt 不再龟速

默认的软件源在国内访问可能很慢,换成国内镜像能显著提速。编辑源列表前先备份:

# 备份原始源列表,出问题可以还原 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 用编辑器替换为国内镜像地址(以某镜像站为例,按实际可用地址填写) sudo nano /etc/apt/sources.list

替换完成后执行更新和升级:

sudo apt update sudo apt upgrade -y

apt update刷新的是软件包索引,apt upgrade才是真正升级已安装的包。如果 update 报 GPG 或 404 错误,先检查源地址和 Ubuntu 版本代号是否匹配,比如 22.04 的代号是 jammy,写错就会大面积 404。

3.2 装 VMware Tools 还是 open-vm-tools

这一步直接影响剪贴板共享、拖拽文件和分辨率自适应。现在 Ubuntu 桌面版通常自带 open-vm-tools,先确认:

# 查看是否已安装 open-vm-tools 及桌面组件 dpkg -l | grep open-vm-tools

如果没有,直接装:

sudo apt install -y open-vm-tools open-vm-tools-desktop

装完重启。open-vm-tools-desktop负责图形相关的共享,只装基础包会出现能复制文字但分辨率不自动调整的情况。装好后在 VMware 菜单里确认「安装 VMware Tools」是灰色或已提示,不要再去点它手动挂载,两者混用反而可能冲突。

3.3 串口、USB 与显卡透传的取舍

做机器人常要接 USB 转串口、摄像头或单片机。VMware 支持把宿主机 USB 设备连接到虚拟机:虚拟机运行状态下,点菜单里的「虚拟机 → 可移动设备」,找到目标设备选「连接」。连接后 Ubuntu 里用ls /dev/ttyUSB*或ls /dev/ttyACM*确认设备节点出现。

显卡方面,勾选 3D 加速后 rviz 一般能正常渲染,但 gazebo 对 OpenGL 要求更高,如果出现黑屏或崩溃,先确认虚拟机设置里显存给够,再在 Ubuntu 里检查驱动:

# 查看当前 OpenGL 渲染器信息 glxinfo | grep "OpenGL renderer"

如果没装mesa-utils,先sudo apt install -y mesa-utils。虚拟机里的图形性能终究有限,复杂仿真建议降低 gazebo 的渲染质量,或者把重活放到宿主机上跑。

4. 在 Ubuntu 里把 ROS 装起来:从源配置到环境变量生效

系统侧理顺后,ROS 安装本身其实很快。这一章以 ROS 2 Humble 为例走完整流程,ROS 1 Noetic 的步骤结构一致,只是源地址和包名不同。

4.1 配置 ROS 软件源与密钥

ROS 2 的 apt 源需要先添加密钥和仓库地址:

# 安装必要工具 sudo apt install -y software-properties-common curl # 添加 ROS 2 仓库密钥 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg # 写入仓库地址,$(lsb_release -cs) 会自动取当前 Ubuntu 代号 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

$(lsb_release -cs)会展开成 jammy 这类代号,保证源地址和系统版本匹配。密钥文件路径要和源里的signed-by一致,否则 apt update 会报签名验证失败。

4.2 安装桌面版还是基础版

ROS 2 提供几个安装粒度:

包名内容适用场景
ros-humble-ros-base核心通信库、命令行工具服务器、无图形环境
ros-humble-desktop基础 + rviz、demo 节点学习与日常开发
ros-humble-desktop-full桌面版 + 仿真、感知等需要 gazebo 的完整开发

新手直接装 desktop 或 desktop-full:

sudo apt update sudo apt install -y ros-humble-desktop

安装包体不小,网络慢的话耐心等。中途如果提示依赖冲突,先sudo apt --fix-broken install修复再重试。

4.3 source 环境变量:为什么新终端里 ros2 命令找不到

装完 ROS 不会自动生效,每个新终端都要 source 一次:

# 临时生效,仅当前终端 source /opt/ros/humble/setup.bash

想永久生效,写进 shell 配置:

# 追加到 ~/.bashrc,新开终端自动加载 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

验证是否生效:

# 能打印出版本号说明环境正常 ros2 --version

如果提示 command not found,先确认路径里的发行版名拼写正确,再确认~/.bashrc里那行没有被注释掉。这是最高频的「装完了却用不了」原因。

4.4 跑通第一个发布订阅:验证安装是否真的可用

环境生效后,用官方 demo 节点验证通信链路。开两个终端,第一个跑发布者:

# 终端 A:发布字符串消息 ros2 run demo_nodes_cpp talker

第二个跑订阅者:

# 终端 B:订阅并打印消息 ros2 run demo_nodes_py listener

终端 B 持续打印I heard: [Hello World: N]就说明 DDS 通信正常。如果 listener 没反应,先确认两个终端都 source 了环境,再检查ROS_DOMAIN_ID是否一致——不同 domain 之间默认不通信。这一步跑通,才算真正把 ROS 装明白了。

5. 虚拟机装 ROS 最容易翻车的几个地方:避坑与排查

前面流程走顺了不代表不会出问题,虚拟机环境有它特有的坑。下面几条是我和身边人反复踩过的,按「现象 → 原因 → 解决」列出来。

5.1 apt update 大面积 404 或签名错误

现象:执行sudo apt update时大量 404,或提示 NO_PUBKEY。原因通常是源地址里的 Ubuntu 代号写错,或者 ROS 仓库密钥没正确导入。解决:用lsb_release -cs确认当前代号,核对源文件里的地址;密钥问题重新执行 4.1 的导入命令,确认signed-by路径和实际文件一致。

5.2 rviz 启动黑屏或直接崩溃

现象:rviz2打开后窗口全黑,或秒退。原因多为虚拟机 3D 加速没开、显存不足,或 OpenGL 走了软件渲染。解决:关机后在虚拟机设置里勾选「加速 3D 图形」并把显存调到 1GB 以上;进系统后用glxinfo | grep "OpenGL renderer"确认渲染器,若显示 llvmpipe 说明在用软件渲染,需要检查 VMware 的图形设置。

5.3 USB 设备在虚拟机里时有时无

现象:串口设备插上后/dev/ttyUSB0时有时无,或拔插后节点号变化。原因:USB 设备默认连在宿主机,需要手动连接到虚拟机;且设备节点号不固定。解决:在 VMware 菜单里把设备连接到虚拟机;在代码或启动文件里用/dev/serial/by-id/下的稳定路径代替/dev/ttyUSB0,避免每次拔插都要改配置。

5.4 虚拟机时间漂移导致通信异常

现象:虚拟机挂起再恢复后,ROS 节点时间戳错乱,TF 变换报时间外推错误。原因:虚拟机暂停期间系统时钟停走,恢复后与真实时间产生偏差。解决:安装并启用时间同步服务,sudo apt install -y chrony后启动;或者避免长时间挂起虚拟机,用完直接关机。

5.5 磁盘空间被日志和构建产物吃满

现象:用着用着提示磁盘空间不足,编译 ROS 包失败。原因:ROS 日志、colcon 构建目录、apt 缓存累积。解决:定期清理,sudo apt clean清 apt 缓存,删除~/.ros/log下的旧日志,构建产物用colcon build后按需清理build/和install/目录。虚拟机磁盘建议一开始就给足 60GB,扩容虽然可行但步骤繁琐。

6. 让这套环境真正好用:快照、共享目录与多版本共存的小技巧

装好只是及格线,把它用顺手还得再花点心思。我习惯在 ROS 环境完全配好后立刻打一个 VMware 快照,命名成「ros-clean」之类,之后无论怎么折腾,出问题一键回滚,比任何后悔药都管用。快照会占用额外磁盘,但相比重装系统的时间成本,这点空间花得值。

共享目录是另一个提效点。在虚拟机设置里启用共享文件夹,指向宿主机上放代码的目录,Ubuntu 里通常在/mnt/hgfs/下能看到。这样在宿主机用熟悉的编辑器改代码,虚拟机里直接编译运行,不用来回拷贝。如果/mnt/hgfs/是空的,确认装了open-vm-tools-desktop并重启,必要时手动挂载:

# 查看 VMware 共享目录挂载情况 vmware-hgfsclient # 手动挂载(路径按实际共享名调整) sudo mkdir -p /mnt/hgfs/share sudo mount -t fuse.vmhgfs-fuse .host:/share /mnt/hgfs/share -o allow_other

多版本 ROS 共存也值得提前规划。ROS 2 支持通过不同终端 source 不同发行版来切换,但别把多个版本的 source 行同时写进~/.bashrc,否则后加载的会覆盖前面的,导致命令行为诡异。我的做法是写几个小脚本,比如ros-humble.sh和ros-jazzy.sh,需要哪个就 source 哪个,保持环境干净。

验证环境是否真的健康,除了跑 talker/listener,还可以定期做一次完整检查:ros2 doctor会扫描网络配置、环境变量和依赖,把潜在问题列出来。养成装完就打快照、改配置前先备份、新终端先确认ros2 --version的习惯,能省下大量排查时间。这套在 VMware 里装 Ubuntu 再上 ROS 的路径,我用了很多年,它不炫技,但足够稳,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询