☰
ROS开发环境搭建:Ubuntu虚拟机安装与配置全攻略
2026/11/3 4:47:08 网站建设 项目流程

简介:这份PDF教程面向准备进入ROS机器人开发领域的初学者与自学者,聚焦机器人学习中最基础也最容易卡壳的一环——Ubuntu系统的安装与环境搭建,帮助读者在正式接触ROS框架前把开发环境准备到位。资源共1个PDF文件,压缩包约13.36MB,内容以图文步骤形式呈现,涵盖Ubuntu镜像下载与版本选择、VMware虚拟机的创建与参数配置、虚拟机名称与存储位置规范、硬盘容量分配、UEFI设置以及Ubuntu安装全过程,并延伸至ROS安装所需的环境准备。教程对易错点标注明确,如名称避免中文字符、务必选择Ubuntu 64位、硬盘至少25GB等,可帮助读者少走弯路、快速完成环境部署。目前已有277人学习,适合零基础或需要规范搭建ROS开发环境的学习者参考。

1. 装 Ubuntu 这件事,为什么值得单独占一章

很多人第一次搭 ROS 环境,卡住的地方不是节点通信,也不是 TF 变换,而是虚拟机里那个 Ubuntu 装不上、装上了又进不去桌面。这份课程资料把「Ubuntu 安装」单独拎出来做成一整节,从下载镜像、装虚拟机软件、建虚拟机、分区到进桌面,一步一截图,恰恰说明它是整条 ROS 学习链路上最容易翻车的一环。它面向的是刚接触 ros机器人 开发、手上只有一台 Windows 笔记本的从业者和学生,目标很明确:在不重装物理机的前提下,得到一个干净、可反复重建、能跑 ROS 的 Linux 环境。下面按资料里的真实操作顺序拆,把每一步为什么这么做、参数怎么定、哪里会踩坑讲透。

2. 装之前先想清楚:虚拟机方案与镜像选型

2.1 为什么课程选虚拟机而不是双系统

机器人开发对 Linux 的依赖是硬性的,ROS 的一整套工具链、编译系统、驱动包基本都长在 Ubuntu 上。但直接给笔记本装双系统,代价是分区风险高、驱动容易出问题、切来切去效率低。虚拟机方案的核心价值是隔离和可重建:系统崩了删掉重来,宿主机毫发无损;同一台机器上还能并存多个不同版本的 Ubuntu,对应不同 ROS 发行版。

代价也要说清楚。虚拟机跑 ROS 做仿真(Gazebo、RViz)时,图形性能吃的是宿主机的 CPU 和内存,没有独立显卡直通的话帧率会明显偏低。所以虚拟机适合学习、写代码、跑轻量节点;真要上真实机器人做视觉重计算,后期还是得考虑物理机或双系统。资料里选的是 VMware 这类商业虚拟机软件,界面引导完整、对 Ubuntu 的兼容性成熟,新手照着点不容易迷路,这是它作为教学方案的理由。

2.2 镜像与版本:64 位是硬门槛

资料反复强调的一点是「一定选择 Ubuntu 64 位」,这不是啰嗦。ROS 的官方支持、绝大多数二进制包、以及后面要用的编译工具,都只针对 64 位架构;选了 32 位,后面装 ROS 时会直接卡在依赖解析上,而且报错信息往往不指向根因,属于典型的玄学问题。

镜像从 Ubuntu 官方渠道下载 ISO 文件即可,注意两点:一是选桌面版(Desktop)而不是服务器版,课程后续要用图形界面跑 RViz 这类工具;二是镜像文件下载完后校验一下完整性,网络中断导致的半截 ISO 会在安装中途报「无法读取介质」,很多人以为是虚拟机的问题,其实是镜像坏了。版本上,ROS 各发行版对 Ubuntu 版本有严格对应关系,装之前先确认你要学的 ROS 版本支持哪个 Ubuntu,别装完才发现对不上,那就只能推倒重来。

提示:镜像和虚拟机文件都建议放在同一块剩余空间充足的硬盘上,跨盘存放会让虚拟机的磁盘性能明显下降。

3. 虚拟机创建:从安装路径到 UEFI 的每个开关

3.1 虚拟机软件的安装选项怎么勾

安装虚拟机软件本身就有几个容易忽略的勾选项。资料里的原话是「这两个全部不要勾选」「这两个建议全部勾选」,对应的是安装向导里的两类选项:一类是加入用户体验改进计划、发送使用数据之类的,不勾;另一类是创建桌面快捷方式、关联文件类型这类便利性选项,勾上。安装位置同样有硬性要求——路径里不要出现中文字符。这一点在 Windows 上尤其重要,中文路径会让部分组件在调用底层库时解析失败,表现为软件能装完但启动异常。

# 安装完成后,先在宿主机上确认虚拟化支持已开启 # Windows 下用管理员权限打开终端执行 systeminfo | findstr /i "Hyper-V" # 输出中若显示「已检测到虚拟机监控程序」相关字样,说明虚拟化可用

这段检查的意义在于:如果宿主机 BIOS 里没开虚拟化(Intel VT-x / AMD-V),虚拟机软件能装、能建虚拟机,但一开机就报错或性能极差。这一步花三十秒,能省掉后面半小时的排查。

3.2 新建虚拟机时的关键参数

创建虚拟机走「自定义(高级)」流程,资料明确要求客户机操作系统选 Linux、版本选 Ubuntu 64 位。这个选择直接决定了虚拟机向 Ubuntu 暴露的硬件抽象层,选错了后面 UEFI 选项会变灰、分区步骤也会出问题。

虚拟机名称不要用中文,存放位置单独建一个文件夹,不要丢在某个盘根目录或桌面。原因很实际:虚拟机会生成一堆 vmdk、vmx、log 文件,散落在桌面会让你的工作区一团乱,而且路径过长或含特殊字符时,虚拟机软件偶尔会写日志失败。

磁盘容量资料给的下限是 25GB,建议尽可能大。这个数字要这么理解:Ubuntu 系统本身占 10GB 左右,ROS 完整安装再加 3~5GB,Gazebo 模型库、编译中间产物、你自己的代码仓库,很快就能吃掉剩下的空间。我一般直接给 60~80GB,选「将虚拟磁盘存储为单个文件」还是「拆分成多个文件」看用途——单个文件拷贝迁移方便,拆分文件在部分文件系统上读写略快,学习场景选单个文件更省心。

3.3 UEFI 选项与硬件资源分配

资料里有一句很关键的提醒:能选择 UEFI 的前提是前面选对了 Ubuntu 64 位,并且「这个一定要选择 UEFI,会涉及到后期的分区」。UEFI 引导模式下,磁盘分区表用 GPT,需要单独的 EFI 系统分区;如果这里选了传统 BIOS 而后面按 UEFI 的思路分区,安装器会找不到引导位置,装完重启直接进不去系统。这是新手最高频的翻车点之一。

硬件资源上,内存建议给宿主机的一半左右,8GB 宿主机给 4GB,16GB 给 8GB;CPU 核心数给 2~4 个,不要把手上的核心全分出去,宿主机还要跑虚拟机软件本身。网络适配器默认 NAT 即可,学习阶段够用,需要宿主机和虚拟机互访时再改桥接。

参数项课程建议值我的实操取值说明
客户机系统Linux / Ubuntu 64 位同左选错会导致 UEFI 不可选
磁盘容量至少 25GB60~80GB预留 ROS 与模型库空间
内存未明确宿主机一半低于 4GB 跑 RViz 会卡
CPU 核心未明确2~4 核留足宿主机资源
引导方式UEFIUEFI与 GPT 分区配套
网络未明确NAT需要互访时改桥接

4. 进安装器之后:分区、账户与首次启动

4.1 加载 ISO 与进入 Live 环境

虚拟机设置里挂载下载好的 ISO 镜像,开机后进入 Ubuntu 的 Live 环境。资料在这里的操作是:先选语言(英文或中文都行),然后不要急着点 Install,而是点 Try Ubuntu 先进桌面,再从桌面右上角设置里把分辨率调到 1920×1080。这个顺序有讲究——Live 环境默认分辨率可能很低,安装界面按钮被挤到屏幕外,新手会以为卡住了。调完分辨率再点桌面上的 Install Ubuntu,界面才完整可用。

# 进入 Live 桌面后,若想先确认磁盘识别情况,可开终端执行 lsblk # 应能看到类似 sda 的虚拟磁盘,容量与你分配的一致 # 若容量对不上,说明虚拟机磁盘配置有误,先退回检查再安装

lsblk列出的是块设备树,sda就是那块虚拟硬盘。这一步是给自己一个确认:安装器看到的磁盘和你以为的一致,避免装到别的地方去。

4.2 安装类型:为什么必须选「其他选项」

安装类型页面有几个选项,资料的原话是「一定选择 其他选项」,也就是手动分区(Something else)。自动分区看起来省事,但它会按自己的逻辑划分,不一定给你留出合适的 EFI 分区和根分区比例,而且出问题时你完全不知道它干了什么。手动分区虽然多几步,但每一步都可控。

典型的分区方案是两块:一块 EFI 系统分区,200~500MB,格式 FAT32,挂载点 /boot/efi;一块根分区,剩余全部空间,格式 ext4,挂载点 /。交换分区在内存足够(≥8GB)的虚拟机里可以不要,需要休眠再单独加。分区时注意引导加载器安装位置选整块磁盘(如 /dev/sda),不要选到某个分区上。

注意:分区操作不可逆,动手前确认虚拟机里没有你需要保留的数据。虚拟机的好处正在于此——分错了删掉重建,代价只是时间。

4.3 安装过程中的两个勾选项

资料里有一句「千万不能勾选」,指的是安装过程中询问是否在安装时下载更新、是否安装第三方图形驱动的选项。学习环境下不勾的理由是:安装时联网下载更新会大幅拉长安装时间,网络一抖就卡在半路;第三方驱动在虚拟机里基本用不上,勾了反而可能引入不兼容的显卡驱动,导致装完进不了图形界面。系统装好、能正常启动之后,再按需更新,出问题也好定位。

账户设置按提示填用户名和密码即可,用户名同样建议纯英文。安装完成后重启,记得在虚拟机设置里把 ISO 镜像卸载或改为不连接,否则又会从光盘引导,看起来像「装完没生效」。

4.4 首次启动后的基础检查

进桌面后先做几项确认,把环境底子打牢再谈装 ROS。

# 确认系统架构是 64 位 uname -m # 期望输出 x86_64 # 确认 Ubuntu 版本,后续装 ROS 要按版本对应 lsb_release -a # 更新软件源索引 sudo apt update && sudo apt upgrade -y # 安装常用工具,后面编译和调试都会用到 sudo apt install -y build-essential cmake git curl wget

uname -m输出x86_64才说明架构正确;lsb_release -a给出代号(如 jammy、focal),这个代号决定了你该装哪个 ROS 发行版,装之前务必核对。apt update刷新索引,upgrade打上已有更新,build-essential提供 gcc、g++、make,cmake是 ROS 工作空间编译的基础,git用来拉代码包。这一套下来,环境才算真正可用。

5. 避坑清单:五个真实翻车现场

5.1 装完重启进不去系统,卡在黑屏或 grub 提示符

现象:安装过程一切正常,重启后黑屏,或停在grub>提示符。原因多半是引导方式与分区不匹配——虚拟机设了 UEFI,但分区时没建 EFI 系统分区,或者引导加载器装到了错误位置。解决:关机进虚拟机设置确认固件类型,重新挂 ISO 进 Live 环境,用分区工具补建 FAT32 的 EFI 分区并重装引导,或者干脆删掉虚拟磁盘重来一遍,这次严格按 UEFI + GPT 走。

5.2 安装器提示磁盘空间不足,明明分了 25GB

现象:分区页面显示可用空间远小于分配值,或安装到一半报空间不足。原因通常是创建虚拟机时选了「立即分配所有磁盘空间」之外的选项却没留足宿主机空闲空间,虚拟磁盘实际增长受宿主机剩余容量限制;也可能是分区时把空间分给了多个小分区。解决:确认宿主机目标盘剩余空间大于虚拟磁盘上限,分区时根分区吃掉剩余全部空间,不要留未分配区域。

5.3 中文路径导致虚拟机软件启动异常

现象:虚拟机软件装完打不开,或新建虚拟机时报错。原因:安装路径或虚拟机存放路径含中文字符,底层组件解析失败。解决:卸载后重装到纯英文路径,虚拟机文件也迁到英文目录。这条在 Windows 用户名是中文的机器上尤其常见,因为默认安装路径会带用户名。

5.4 分辨率过低,安装按钮点不到

现象:进 Live 桌面后安装窗口显示不全,下一步按钮在屏幕外。原因:Live 环境默认分辨率与虚拟机显示设置不匹配。解决:按资料的做法,先进 Try Ubuntu 桌面,右上角设置里把分辨率调到 1920×1080,再启动安装器。若设置里没有合适选项,检查虚拟机设置中是否启用了 3D 加速,关掉它有时反而能恢复正常分辨率列表。

5.5 装完 ROS 前就发现 apt 报错源不可达

现象:apt update大量报错,提示无法连接软件源。原因:安装时没配好网络,或软件源指向了访问不畅的地址。解决:先在虚拟机里用ping确认外网连通,NAT 模式下一般无需额外配置;源的问题在系统设置里换成可用的镜像源再更新。这一步不解决,后面装 ROS 会寸步难行。

6. 把环境做成可复制的模板:快照与克隆的用法

装好一套能跑 ROS 的 Ubuntu 不容易,所以装完第一件事不是急着写代码,而是做快照。虚拟机软件的快照功能记录当前磁盘状态,之后无论你把系统折腾成什么样,都能一键回滚。我的习惯是装完系统、更新完基础工具、装好 ROS 之后各打一个快照,命名带上日期和阶段,比如「base-clean」「ros-ready」。这样后面装某个包把依赖搞崩了,回滚到最近快照,十分钟恢复,比排查两小时划算得多。

# 系统层面也留一份环境清单,方便重建时对照 # 导出已安装包列表 dpkg --get-selections > ~/pkg-list-$(date +%F).txt # 记录 ROS 相关环境变量,排查问题时有用 env | grep -i ros > ~/ros-env-$(date +%F).txt

dpkg --get-selections把当前所有包的安装状态导出成文本,将来换机器或重建虚拟机时可以对照恢复;env | grep -i ros抓出所有 ROS 相关环境变量,工作空间 source 顺序错了导致找不到包时,对比这份记录能快速定位。这两条不是课程原文,是我自己每次搭完环境都会跑的收尾动作。

再进一步是克隆。虚拟机完整克隆出一份独立副本,可以拿来做「破坏性实验」——装新版本 ROS、试新驱动,坏了不影响主环境。克隆时选「创建完整克隆」而不是链接克隆,链接克隆依赖母盘,母盘一动子盘就废,学习场景没必要省那点空间。

最后说一个验证习惯:每次重建或克隆完环境,别只看桌面能不能进,跑一条最小验证——开两个终端,一个跑roscore,一个rostopic list,能列出/rosout和/rosout_agg就说明 ROS 通信链路是通的。这个动作三十秒,能挡住后面一大半「代码没问题但就是跑不起来」的糊涂账。从那以后我每次装完系统、打完快照,都强制走一遍这条最小验证,确认环境真的活着再往下学。希望帮到你。

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

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

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

立即咨询