VMware 安装 Ubuntu 并部署 ROS:机器人开发环境搭建与避坑指南
简介这份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 版本类型官方支持的 UbuntuNoeticROS 120.04HumbleROS 222.04JazzyROS 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 -yapt 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-fullsudo 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 的路径我用了很多年它不炫技但足够稳希望帮到你。本文还有配套的精品资源点击获取