简介:这份PDF教程面向ROS机器人开发初学者与在校学生,聚焦机器人学习环境搭建中最基础也最容易卡壳的一环——Ubuntu系统的安装与配置。内容从Ubuntu镜像的下载与位数选择讲起,逐步延伸到虚拟机软件的安装、虚拟机创建、操作系统类型与版本选择、存储位置与硬盘容量规划、网络与硬件资源分配,并进一步衔接ROS的安装与环境搭建,帮助读者打通从零到可开发状态的完整链路。资源包共1个PDF文件,大小约13.36MB,以图文步骤形式呈现,重点标注了虚拟机名称避免中文、镜像版本务必选择Ubuntu 64位、硬盘至少分配25GB、UEFI选项与后续分区的关系等易错细节,便于对照操作与排错。目前已有276人学习,适合希望系统掌握ROS开发环境准备、少走弯路的学习者参考。
1. 机器人开发环境第一道坎:为什么 ROS 学习必须从 Ubuntu 装起
很多人兴冲冲打开 ROS 教程,第一步就卡在环境上。ROS 不是装在 Windows 里的普通软件,它深度依赖 Linux 的进程管理、文件系统和网络栈,而 Ubuntu 是官方支持最完整、社区资料最厚的发行版。你后面要跑的节点通信、TF 变换、rviz 可视化,底层都跟系统环境强绑定。这份课程资源把 Ubuntu 安装单独拎出来讲,恰恰说明它是整个 ROS 机器人学习链条里绕不过去的地基。适合谁?刚接触机器人开发、手头只有一台 Windows 电脑、想先把环境跑通再学算法的人。虚拟机方案能让你在不重装系统的前提下,得到一个干净的 Ubuntu 环境,装坏了删掉重来就行,试错成本极低。
2. 虚拟机方案选型与 VMware 安装:为什么不用双系统
2.1 虚拟机、双系统、WSL 三条路的取舍
在 Windows 上搞 Ubuntu,常见做法就三种:双系统、虚拟机、WSL。双系统性能最好,但每次切换要重启,分区操作一旦失误可能丢数据,对新手不友好。WSL 启动快、资源占用低,但图形界面和硬件直通一直是个玄学,跑 rviz 和 Gazebo 经常出各种显示问题。虚拟机方案在隔离性和完整性之间取了个平衡:你得到一个完整的 Ubuntu 桌面,能跑图形化工具,宿主机文件不受影响,快照功能还能当后悔药用。
我一般会建议 ROS 初学者走虚拟机这条路,原因很实际:ROS 的很多调试工具依赖完整的桌面环境和网络配置,WSL 在这块坑太多,而双系统对只想先试试水的人来说太重。等你确定要长期搞机器人开发了,再考虑装双系统或者直接上 Ubuntu 物理机也不迟。
2.2 VMware 安装过程中的两个关键勾选项
VMware Workstation 的安装本身不复杂,但有两个地方值得单独说。安装路径不要出现中文字符,这是血泪经验——很多开发工具对中文路径的支持就是不行,后面编译 ROS 包的时候报一堆莫名其妙的错,排查半天发现是路径问题。
安装过程中会出现两个勾选项,课程里明确说了“这两个全部不要勾选”,通常指的是加入客户体验提升计划和自动检查更新这类选项。另外两个建议勾选的,一般是创建桌面快捷方式和关联虚拟机文件。这些选项不影响功能,但能让你后面用起来顺手。
# 安装完成后验证 VMware 是否正常工作 # 查看 VMware 服务状态(Windows 下用管理员权限打开终端) sc query "VMware Authorization Service" sc query "VMware DHCP Service" sc query "VMware NAT Service" # 三个服务都应该是 RUNNING 状态 # 如果某个服务没起来,虚拟机网络会出问题这段命令是检查 VMware 后台服务有没有正常启动。Authorization Service 负责虚拟机权限,DHCP 和 NAT 服务负责虚拟机的网络地址分配和转发。如果这三个服务有任何一个没跑起来,你后面装完 Ubuntu 会发现上不了网,或者宿主机和虚拟机之间 ping 不通。遇到这种情况,在服务管理器里手动启动,或者重装 VMware 时确保以管理员权限运行安装程序。
2.3 创建虚拟机时的参数决策
新建虚拟机时选“自定义(高级)”而不是“典型”,因为典型模式会帮你做很多默认决策,而这些默认值不一定适合 ROS 开发。比如典型模式默认硬盘 20GB,对 ROS 来说不够用。
操作系统类型选 Linux,版本必须选 Ubuntu 64 位。课程里特别强调“如果不选,后续步骤会出问题”,这不是吓唬人。选错版本类型会导致 VMware 用错误的虚拟硬件配置,最直接的后果是后面 UEFI 选项出不来,而 UEFI 又直接关系到分区方案。
虚拟机名称和存放位置都不要用中文,原因跟安装路径一样。存放位置建议专门建一个文件夹,不要放桌面或者盘符根目录。桌面路径通常带用户名,有些工具处理不了;根目录则容易跟其他文件混在一起,时间长了你自己都分不清哪个文件夹是虚拟机。
# 虚拟机创建完成后,建议在宿主机上确认虚拟机文件结构 # 假设虚拟机存放在 D:\VMs\ROS_Ubuntu ls -la /d/VMs/ROS_Ubuntu/ # Git Bash 或 WSL 下的查看方式 # 或者在 Windows 资源管理器里直接看 # 典型文件结构: # ROS_Ubuntu.vmx —— 虚拟机配置文件 # ROS_Ubuntu.vmdk —— 虚拟硬盘文件 # ROS_Ubuntu.nvram —— 虚拟 BIOS 设置 # vmware.log —— 运行日志,出问题时看这个虚拟机文件结构值得了解一下,尤其是 .vmx 和 vmware.log 这两个。.vmx 是配置文件,里面记录了内存大小、硬盘路径、网络模式等参数,有时候图形界面改不动的东西可以直接编辑这个文件。vmware.log 是运行日志,虚拟机启动失败、网络异常的时候,日志里通常有明确报错。
3. Ubuntu 镜像加载与系统安装:从 ISO 到桌面
3.1 镜像挂载与启动顺序确认
下载 Ubuntu 镜像这件事本身没什么好说的,但有一个点容易翻车:下载完之后要确认 ISO 文件完整,网络中断导致的半截文件在安装时会报各种奇怪的错误。常见做法是核对文件大小,或者用校验工具比对哈希值。
在 VMware 里加载 ISO 镜像,位置在虚拟机设置的 CD/DVD 选项里,选择“使用 ISO 映像文件”然后浏览到下载好的文件。课程里提到“这里加载的就是我们下载的 ISO 镜像”,确认加载成功后启动虚拟机,应该能看到 Ubuntu 的启动菜单。
# 在 Ubuntu 启动菜单出现时,可以按 Esc 或 Shift 进入引导选项 # 如果直接进了安装界面但你想检查镜像完整性,可以在 Try Ubuntu 模式下操作 # 进入 Try Ubuntu 桌面后,打开终端检查 ISO 挂载情况 lsblk # 应该能看到一个 loop 设备或者 sr0 设备,那就是 ISO 镜像 # 查看 ISO 文件系统类型 file -s /dev/sr0 # 输出应包含 ISO 9660 CD-ROM filesystemlsblk 列出所有块设备,你能看到虚拟硬盘和光驱设备。file -s /dev/sr0 确认光驱里挂载的确实是 ISO 9660 文件系统。如果这里显示的不是 ISO 文件系统,说明镜像加载有问题,需要回到 VMware 设置里重新挂载。
3.2 安装类型选择与分区方案
Ubuntu 安装过程中有一个关键分叉点:安装类型选择。课程里明确说“一定选择其他选项”,也就是手动分区。为什么不用“清除整个磁盘并安装 Ubuntu”?因为虚拟机里虽然可以随便清,但手动分区能让你理解 Linux 的目录结构,而且后面如果要做磁盘扩容或者调整分区,有手动分区的经验会从容很多。
手动分区至少需要两个分区:根分区 / 和交换分区 swap。根分区用 ext4 文件系统,挂载点选 /,大小建议 20GB 以上。交换分区大小一般设为内存的 1 到 2 倍,如果你给虚拟机分配了 4GB 内存,swap 给 4GB 到 8GB 都行。如果打算用休眠功能,swap 要大于物理内存。
课程里提到“这个一定要选择 UEFI,会涉及到后期的分区”,UEFI 引导模式下分区表是 GPT,传统 BIOS 是 MBR。选 UEFI 的话,分区时还需要一个 EFI 系统分区,大小 512MB 左右,类型选 EFI System Partition。这个分区不挂载到 / 或 /home,它是独立存在的,负责引导系统启动。
# 安装完成后,在 Ubuntu 终端里验证分区方案 lsblk -f # 输出示例: # NAME FSTYPE LABEL MOUNTPOINT # sda # ├─sda1 vfat EFI /boot/efi # ├─sda2 ext4 / # └─sda3 swap [SWAP] # 查看分区表类型 sudo parted /dev/sda print # Partition Table: gpt 表示 GPT 分区表,对应 UEFI 引导lsblk -f 会显示每个分区的文件系统类型和挂载点。EFI 分区应该是 vfat 格式挂在 /boot/efi,根分区 ext4 挂在 /,swap 分区显示为 [SWAP]。parted 命令确认分区表是 GPT 还是 MBR,如果是 UEFI 引导但分区表显示 msdos,说明安装时分区方案选错了,后面引导可能会出问题。
3.3 安装过程中的几个“千万不能勾”
课程里有一页专门写了“千万不能勾选”,虽然具体内容没有展开,但根据 Ubuntu 安装的常见流程,这里通常指的是安装过程中询问是否下载更新和是否安装第三方软件这两个选项。安装时下载更新会让安装过程变得很慢,而且如果网络不稳定,可能卡在半路。第三方软件包括显卡驱动、WiFi 驱动、媒体解码器等,在虚拟机环境里这些通常不需要,装了反而可能引入兼容性问题。
我的习惯是安装时全部不勾,等系统装好、网络配通之后,再按需安装。这样安装过程最快,出问题也容易定位——至少你知道问题不是安装时引入的。
安装完成后重启,如果一切正常,你会看到 Ubuntu 的登录界面。第一次登录后建议先做两件事:更新系统包和安装 VMware Tools(或者 open-vm-tools)。VMware Tools 负责宿主机和虚拟机之间的剪贴板共享、文件拖拽、分辨率自适应,不装的话用起来会很别扭。
# 更新系统包列表并升级已安装的包 sudo apt update && sudo apt upgrade -y # 安装 open-vm-tools 和桌面支持 sudo apt install open-vm-tools open-vm-tools-desktop -y # 安装完成后重启 sudo rebootapt update 刷新软件源列表,apt upgrade 升级已安装的包。open-vm-tools 是 VMware Tools 的开源版本,Ubuntu 官方源里就有,比手动挂载 VMware Tools 安装镜像方便得多。open-vm-tools-desktop 提供图形界面相关的功能,比如分辨率自适应和剪贴板共享。装完重启,虚拟机应该就能全屏显示,宿主机和虚拟机之间也能复制粘贴了。
4. 避坑与排查:安装过程中最容易翻车的五个点
4.1 虚拟机启动后黑屏或卡在启动界面
现象:虚拟机开机后一直黑屏,或者卡在 Ubuntu 启动画面不动。
原因:常见的有三种——ISO 镜像损坏、虚拟机内存分配不足、显卡加速冲突。镜像损坏是最常见的,尤其是从非官方渠道下载的镜像。内存不足在分配了 2GB 以下时容易出现。显卡加速冲突则是 VMware 的 3D 加速和某些显卡驱动不兼容。
解决:先核对 ISO 的哈希值,确认镜像完整。然后检查虚拟机内存设置,ROS 开发建议至少 4GB。如果还是黑屏,在虚拟机设置的显示器选项里,把“加速 3D 图形”取消勾选试试。
4.2 安装过程中找不到硬盘
现象:进入分区界面后,列表里没有任何磁盘可选。
原因:虚拟机硬盘没有正确挂载,或者硬盘控制器类型跟 Ubuntu 安装程序不兼容。常见于创建虚拟机时硬盘类型选了 SCSI 但安装程序没有对应驱动。
解决:关闭虚拟机,在设置里把硬盘控制器改成 SATA 或者 NVMe,重新启动安装程序。如果还是不行,删除虚拟硬盘重新添加一块,确保创建时选择了“将虚拟磁盘存储为单个文件”。
4.3 安装完成后重启进入 GRUB 命令行
现象:重启后没有进入 Ubuntu 桌面,而是停在 grub> 提示符。
原因:UEFI 引导模式下,EFI 分区没有正确配置引导文件,或者启动顺序里没有把 Ubuntu 的引导项排在最前面。
解决:在 VMware 虚拟机设置里检查启动顺序,确保硬盘排在光驱前面。如果还是进不去,用 Ubuntu 安装 U 盘进入 Try Ubuntu 模式,用 efibootmgr 命令检查和管理 EFI 启动项。
# 在 Try Ubuntu 模式下检查 EFI 启动项 sudo efibootmgr -v # 查看是否有 Ubuntu 的启动项,以及启动顺序 # 如果 Ubuntu 启动项存在但顺序不对,调整顺序 sudo efibootmgr -o 0001,0002,0000 # 0001 是 Ubuntu,0002 是其他,0000 是默认efibootmgr -v 列出所有 EFI 启动项和当前启动顺序。如果 Ubuntu 的启动项存在但排在后面,用 -o 参数调整顺序,把 Ubuntu 的编号放到最前面。这个操作在 Try Ubuntu 模式下做,改完后重启就能正常进入系统。
4.4 虚拟机网络不通
现象:Ubuntu 里能 ping 通 127.0.0.1,但 ping 不通外网,apt update 失败。
原因:VMware 网络模式设置问题。NAT 模式下虚拟机通过宿主机上网,如果 VMware NAT 服务没启动,或者虚拟机网络适配器没连接,就会断网。桥接模式则需要宿主机所在网络有 DHCP 服务。
解决:先检查 VMware 的 NAT 和 DHCP 服务是否运行。然后在虚拟机设置里确认网络适配器已连接,网络模式选 NAT。如果还不行,在 Ubuntu 里手动触发 DHCP 重新获取地址。
# 查看网络接口状态 ip addr show # 找到 ens33 或类似名称的接口,看是否有 inet 地址 # 如果没有地址,手动触发 DHCP sudo dhclient ens33 # 再次查看是否获取到 IP ip addr show ens33 # 测试网络连通性 ping -c 4 8.8.8.8 ping -c 4 www.ubuntu.comip addr show 查看所有网络接口。虚拟机的网卡通常叫 ens33 或 ens160。如果没有 inet 地址,说明 DHCP 没成功。dhclient 命令手动请求地址。ping 8.8.8.8 测试 IP 层连通性,ping 域名测试 DNS 解析。如果 IP 能通但域名不通,是 DNS 配置问题,检查 /etc/resolv.conf。
4.5 磁盘空间不够用
现象:用了一段时间后,Ubuntu 提示磁盘空间不足,apt install 失败。
原因:创建虚拟机时硬盘只给了 25GB,ROS 完整安装加上 Gazebo 模型库、rviz 配置文件、编译中间文件,很容易超过这个数。课程里说“至少 25GB,建议尽可能大”,这是有道理的。
解决:VMware 支持虚拟硬盘扩容,但扩容后还需要在 Ubuntu 里扩展分区和文件系统,步骤稍微有点绕。更省事的做法是一开始就给足空间,建议 60GB 起步,如果宿主机硬盘充裕,直接给 100GB。
# 查看磁盘使用情况 df -h # 查看各个挂载点的使用率 # 查看目录占用空间 du -sh /usr/* | sort -rh | head -10 # 找出 /usr 下占用最大的目录 # 清理 apt 缓存 sudo apt clean sudo apt autoremove -ydf -h 看整体使用率,du -sh 看具体目录占用。ROS 相关的大头通常在 /opt/ros 和 ~/.gazebo。apt clean 清理下载的包缓存,autoremove 删除不再需要的依赖包。这些操作能腾出一些空间,但如果是硬盘本身太小,还是得扩容。
5. 装完系统之后:验证环境与衔接 ROS 安装
5.1 系统层面的检查清单
Ubuntu 装好之后,别急着装 ROS,先花几分钟确认系统本身没问题。我一般会走一遍这个检查清单:网络通不通、时间对不对、软件源快不快、磁盘空间够不够、VMware Tools 有没有生效。
# 1. 检查网络 ping -c 2 www.ubuntu.com # 2. 检查系统时间 timedatectl status # 确保时区和时间正确,时间不对会导致 apt 更新报签名错误 # 3. 检查软件源速度 sudo apt update # 看更新过程是否流畅,如果卡顿可以换国内源 # 4. 检查磁盘空间 df -h / # 5. 检查 VMware Tools vmware-toolbox-cmd -v # 输出版本号说明工具正常运行timedatectl 确认系统时间,时间偏差太大会导致 apt 的 GPG 签名验证失败。apt update 看软件源响应速度,如果慢得离谱,换国内镜像源能快很多。vmware-toolbox-cmd -v 验证 VMware Tools 是否正常工作,这个命令能输出版本号就说明工具在跑。
5.2 为 ROS 安装做准备:软件源与依赖
ROS 的安装对 Ubuntu 版本有严格要求,不同 ROS 版本对应不同的 Ubuntu 版本。虽然这份课程主要讲 Ubuntu 安装,但装完系统后紧接着就是 ROS 环境搭建,所以有些准备工作可以提前做。
常见做法是先把软件源换成国内镜像,然后安装一些基础编译工具和依赖库。这些操作在 ROS 安装之前做,能避免后面因为网络问题卡住。
# 备份原有软件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 查看当前 Ubuntu 版本代号 lsb_release -cs # 输出类似 focal、jammy 等 # 根据版本代号替换软件源(以 jammy 为例) sudo sed -i 's|http://archive.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list sudo sed -i 's|http://security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list # 更新软件源 sudo apt update # 安装基础工具 sudo apt install -y build-essential cmake git python3-piplsb_release -cs 输出 Ubuntu 的版本代号,这个代号在配置 ROS 软件源时要用到。sed 命令批量替换软件源地址,换成国内镜像能显著提升下载速度。build-essential 提供 gcc、g++、make 等编译工具,cmake 是 ROS 包编译的标配,git 用来拉取源码,python3-pip 管理 Python 依赖。这些工具在后续 ROS 开发中都会用到。
5.3 快照:给虚拟机留一颗后悔药
系统装好、环境配通之后,强烈建议在 VMware 里打一个快照。快照记录当前虚拟机的完整状态,后面不管怎么折腾,哪怕把系统搞崩了,一键恢复就能回到这个干净状态。
我自己的习惯是至少打两个快照:一个是刚装完 Ubuntu 的纯净状态,一个是 ROS 装好、基础环境配通的状态。这样后面不管装什么新东西出了问题,都能快速回退,不用从头再来一遍安装流程。
# 在 VMware 图形界面里打快照的步骤: # 1. 确保虚拟机处于关机或挂起状态(建议关机) # 2. 菜单栏选择“虚拟机” -> “快照” -> “拍摄快照” # 3. 填写快照名称和描述,比如“Ubuntu 20.04 纯净系统” # 4. 点击“拍摄快照” # 恢复快照: # 菜单栏选择“虚拟机” -> “快照” -> “快照管理器” # 选中要恢复的快照,点击“转到”快照文件会占用额外的磁盘空间,但相比重装系统的代价,这点空间花得值。注意快照不是备份,如果宿主机硬盘坏了,快照和虚拟机一起丢。重要数据还是要单独备份到宿主机或者外部存储。
5.4 从 Ubuntu 到 ROS:环境衔接的注意事项
Ubuntu 装好只是第一步,后面 ROS 安装还有一堆细节。但有几个点现在就可以注意,能避免后面踩坑。
第一,系统语言。安装时如果选了中文,终端里有些命令的输出会是中文,而很多 ROS 教程和报错信息是英文的,中英文混杂会增加排查难度。我一般建议安装时选英文,或者装完后把系统语言改成英文,至少终端环境保持英文。
第二,用户权限。ROS 的某些操作需要 sudo,但日常开发不建议一直用 root。安装时创建的用户默认在 sudo 组里,够用了。后面如果遇到权限问题,先想清楚是文件权限不对还是真的需要 sudo,不要无脑加 sudo。
第三,时间同步。ROS 的节点通信依赖时间戳,如果虚拟机时间跟宿主机偏差太大,多机通信或者仿真时会出问题。装完系统后确认时间同步正常,必要时配置 NTP 服务。
# 检查当前语言环境 echo $LANG # 如果是 zh_CN.UTF-8,可以改成 en_US.UTF-8 # 临时修改当前终端语言 export LANG=en_US.UTF-8 # 永久修改系统语言 sudo update-locale LANG=en_US.UTF-8 # 重新登录后生效 # 检查时间同步状态 timedatectl status # 确保 System clock synchronized: yesLANG 环境变量控制终端和系统的语言。临时修改只影响当前终端会话,永久修改需要 update-locale 然后重新登录。timedatectl 的 synchronized 状态显示时间是否已同步,如果是 no,检查 systemd-timesyncd 服务是否运行。
5.5 一个容易被忽略的细节:虚拟机分辨率
虚拟机装好之后,如果分辨率不对,窗口要么太小看着费劲,要么太大超出屏幕。课程里提到在 Try Ubuntu 模式下可以调整分辨率,但装完系统后同样需要设置。
正确做法是装好 open-vm-tools-desktop 之后,在 Ubuntu 的显示设置里调整分辨率。如果分辨率选项里没有你想要的值,可能是 VMware Tools 没生效,或者需要手动配置。
# 查看当前显示器和分辨率 xrandr # 输出会列出所有可用分辨率和当前设置 # 如果 open-vm-tools-desktop 已安装但分辨率选项不全 # 尝试重启 VMware Tools 服务 sudo systemctl restart open-vm-tools # 或者在 VMware 菜单里选择“查看” -> “自动调整大小” -> “自动适应客户机”xrandr 列出显示器和可用分辨率。如果列表里只有 800x600 和 1024x768 这种低分辨率,说明 VMware Tools 的显示驱动没正常工作。重启 open-vm-tools 服务,或者在 VMware 菜单里触发自动调整,通常能解决。
从那以后我每次装完虚拟机系统,第一件事就是打快照,第二件事是确认 VMware Tools 和网络,第三件事才是装开发环境。这三步走完,后面不管怎么折腾都有退路。希望帮到你。
本文还有配套的精品资源,点击获取