在虚拟机中成功安装ROS,核心思路是选用VirtualBox或VMware搭配Ubuntu LTS系统,并分配至少4GB内存和60GB磁盘,再按官方二进制源安装即可,整个过程并不复杂。
很多朋友第一次接触ROS时,都会被满屏的终端命令和依赖报错吓住,其实在虚拟机里安装ROS,算得上是最稳妥的入门路径,它不怕把系统折腾坏,快照一恢复又是全新环境,下面我把自己踩过的坑和验证过的流程完整梳理一遍,照着做就能少走弯路。
为什么多数人选择在虚拟机里折腾ROS
先想清楚一个场景:你手里只有一台Windows笔记本,但ROS原生支持的是Ubuntu,双系统来回切换太痛苦,重启一次就得等半天,虚拟机的好处在于,你可以在Windows桌面里直接开一个Linux窗口,复制粘贴命令、截图查资料都方便得多。
行业共识认为,对于ROS初学者和算法调试场景,虚拟机的性能已经足够了,比如跑仿真、写节点、看话题通信,这些操作对CPU和内存的要求并不高,真正吃力的是同时打开Gazebo和Rviz做重型仿真,这时候虚拟机会明显卡顿,但那是后话。
这里有个关键认知:ROS本身不挑虚拟机,挑的是Ubuntu版本。 你选错Ubuntu版本,后面所有安装步骤都会连锁报错,所以第一步不是装软件,而是先确定你要用ROS1还是ROS2。
虚拟机安装ROS教程的第一步:选对软件和版本
市面上主流虚拟机就两款:VirtualBox和VMware Workstation Pro,前者免费开源,后者对个人用户也免费了,但商业环境要付费,我推荐VirtualBox,因为教程多、问题好搜。
在VMware和VirtualBox装ROS哪个好这个问题上,我个人的体验是:VirtualBox对USB设备的支持稍逊,但胜在轻量、启动快;VMware更稳定,GPU透传能力强一些,适合要跑3D仿真的人,如果只是入门,VirtualBox完全够用。
Ubuntu版本怎么定
ROS和Ubuntu的对应关系是铁律,别乱配。
- ROS1 Noetic 对应 Ubuntu 20.04 LTS
- ROS2 Foxy 对应 Ubuntu 20.04 LTS
- ROS2 Humble 对应 Ubuntu 22.04 LTS
- ROS2 Jazzy 对应 Ubuntu 24.04 LTS(2024年发布的新版本)
下载Ubuntu时,认准LTS长期支持版,别用中间版本,镜像地址直接去清华源或简米云镜像站,速度比官网快得多,如果你在百度搜“虚拟机安装ROS教程”,很多老教程还在推荐Ubuntu 18.04配ROS Melodic,那个版本已经停止维护了,建议直接用20.04或22.04。
在VirtualBox里创建Linux虚拟机
这部分是纯操作,按顺序做就行。
- 打开VirtualBox,点击“新建”,名称填ros,类型选Linux,版本选Ubuntu 64-bit。
- 内存分配至少4GB,如果你的物理内存是8GB,请分一半给虚拟机;如果是16GB及以上,分6-8GB,内存太小编译ROS时会直接卡死。
- 磁盘分配至少60GB,别选“动态分配”之外的模式,动态分配的意思是实际占用多少就占多少,不浪费宿主机空间。
- 创建完成后,进入“设置-系统-处理器”,给2个CPU核心及以上,勾选“启用PAE/NX”。

有一个容易被忽略的设置:在“设置-存储”里,给光驱加载你下载的Ubuntu ISO镜像。 然后启动虚拟机,它会自动进入Ubuntu安装界面。
Ubuntu系统的分区建议
虚拟机里装Ubuntu,不用像物理机那样手动分区,在安装类型界面,选“清除整个磁盘并安装Ubuntu”就行,但如果你打算以后跑大型仿真,建议把/home单独分出来,大小给40GB,其余给根目录。
安装过程持续10-20分钟,中间会提示你创建用户名和密码,这个用户名就是你的ros主目录名,建议用简单的小写单词,比如ros。
虚拟机中安装ROS2 Humble的完整脚本
装完Ubuntu重启进入系统后,先打开终端更新一下系统软件源,这里有个国内用户必须做的操作:把Ubuntu的软件源替换成清华或阿里源,否则apt下载速度可能只有几十KB。
替换源的方法很简单,在“软件和更新”里把下载服务器改为“清华大学镜像站”,然后执行:
sudo apt update && sudo apt upgrade -y
接下来正式开始装ROS,以ROS2 Humble为例,如果你装ROS1 Noetic,最后两节命令换成ROS1的仓库地址即可。
添加ROS软件源
ROS官方源在国内不稳定,推荐用中科大或清华的ROS镜像源,依次执行:
sudo apt install software-properties-common curl sudo add-apt-repository universe sudo apt update
然后添加ROS2 GPG密钥:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
再写入源列表:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
这一步是初学者最容易报错的环节,如果提示curl: Failed to connect,说明你的网络无法访问raw.githubusercontent.com,解决办法是手动下载该key文件,或者用代理,有条件的可以换用国内镜像的key地址。

安装ROS2本体
更新源后,直接安装桌面版:
sudo apt update sudo apt install ros-humble-desktop python3-argcomplete
ros-humble-desktop包含Rviz、Gazebo、demo节点等核心工具,大概占用500MB磁盘空间,装起来需要几分钟,如果你只想跑核心库,可以装ros-humble-ros-base,但入门阶段不建议省这个空间。
配置环境变量
装完并不是结束,ROS2默认不会自动加载到当前shell,需要手动source:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc
这一步千万别省。 很多新人装完ros打不开rviz2,就是因为没有source环境,另外建议再装一个colcon构建工具,后面自己写功能包会用:
sudo apt install python3-colcon-common-extensions
验证安装是否成功
运行一个最简单的测试,开两个终端,第一个跑:
ros2 run demo_nodes_cpp talker
第二个跑:
ros2 run demo_nodes_cpp listener
如果终端里持续出现“Publishing: ‘Hello World’ ”和“Subscribed: ‘Hello World’ ”,说明ROS2已经正常工作了,你也可以用ros2 topic list查看当前话题列表。
Ubuntu虚拟机安装ROS2时经常卡顿怎么办
这是被问得最多的问题,很多人在虚拟机里装完ROS,打开Rviz后画面拖影严重,或者启动Gazebo时风扇狂转,这里有几个实打实的优化手段。
开启3D加速和显存
在VirtualBox的“设置-显示”中,把显存拉到128MB,勾选“启用3D加速”,然后安装增强功能:
sudo apt install virtualbox-guest-utils virtualbox-guest-x11
重启后,Rviz的旋转、缩放会流畅不少,但你发现依然卡,别慌,这通常是CPU调度的问题。
调整虚拟机CPU使用比例
ROS编译和仿真期间,CPU占用会飙到100%,在VirtualBox的“设置-系统-处理器”里,把“执行上限”调低到90%,反而可以减少虚拟机的卡顿感,原因是虚拟化的CPU调度有高优先级抢占问题,稍微限制一下就能给宿主系统留出喘气的空间。
关闭Ubuntu的动画特效
Ubuntu的桌面动画在虚拟机里很吃GPU,打开“设置-外观”,把动画和透明效果全部关闭,或者直接安装轻量桌面:
sudo apt install xfce4
登录时选择Xfce会话,整个系统会变得非常轻快,如果ROS在虚拟机里卡顿已经很影响你写代码了,这个方案是最优解。
虚拟机与Windows宿主机之间的文件共享

代码老放在虚拟机里也不踏实,万一虚拟机崩了,你的代码全没了,所以把虚拟机里的ROS项目同步到Windows是刚需。
VirtualBox提供了共享文件夹功能,先关闭虚拟机,在“设置-共享文件夹”里添加一个Windows下的目录,比如D:ros_share,勾选“自动挂载”和“固定分配”,启动虚拟机后,执行:
sudo mount -t vboxsf ros_share /home/ros/share
想每次开机自动挂载,就把这行命令加进/etc/rc.local或者用systemd服务,但更推荐的做法是用Git管理代码,直接推送到Gitee或GitHub,然后Windows上再拉下来,共享文件夹适合大文件,Git适合代码版本管理,两者结合最省心。
常见问题解答
虚拟机里装ROS性能跑得起来吗?
分场景,纯写代码、跑话题通信,性能损耗基本感知不到,跑Rviz做可视化,掉帧但能用,跑Gazebo复杂物理仿真,大概率会卡,如果你要做SLAM建图或者深度相机点云处理,建议还是直接装双系统,虚拟机的GPU加速能力再强,也比不过物理机直通显卡,多数情况下,入门和算法验证用虚拟机完全够,别在早期被环境问题劝退就好。
安装ROS1和ROS2可以共存于同一个虚拟机吗?
可以,但不推荐,ROS1 Noetic和ROS2 Humble分别依赖不同的Python环境和构建工具,同时装着容易导致python3指向混乱,如果确实有共存需求,最简单的办法是不修改系统默认环境,每次使用前分别source不同的setup.bash,社区里也有ros1_bridge这个中间件能实现跨版本通信,但配置过程相当繁琐,新手不建议碰。
为什么我的apt install ros-提示找不到软件包?
99%的情况是软件源没更新,或者ROS源还没写入sources.list.d,你先执行sudo apt update,然后搜索一下是否有该包:apt search ros-humble,如果搜索结果显示红色[universe]标签但没结果,说明你的Ubuntu发行版代号和ROS版本不匹配,比如在Ubuntu 22.04上你安装的是ros-foxy-desktop,那肯定报错,因为Foxy只支持20.04,用lsb_release -a查看你的Ubuntu版本,再对照前文提到的对应表重新选择。
回到最初的问题,在虚拟机里安装ROS这件事,本质上就是一次系统环境的组合搭配,选对Ubuntu版本,配好虚拟机硬件参数,然后一行一行执行官方源里的安装命令,它不要求你多精通Linux,但需要一点耐心,当你第一次看到talker和listener在终端里互相同步消息时,前面所有的等待就都值了,把环境跑通,接下来的机器人编程之路才算真正开始。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/920541.html


评论列表(2条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于设置的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是设置部分,给了我很多新的思路。感谢分享这么好的内容!