ROS安装虚拟机并不复杂,核心思路是选对Ubuntu版本、配好虚拟机资源、再按官方命令安装,但真正容易翻车的地方都在细节里。
ROS虚拟机安装具体步骤有哪些?从零开始的完整流程
第一步:选好Ubuntu版本
ROS和Ubuntu版本是严格绑定的,目前绝大多数教学和项目使用ROS Noetic,对应的系统是Ubuntu 20.04,如果你在文章里看到“ROS安装虚拟机”但没写版本,默认就是指这个组合。
- Ubuntu 18.04只能装ROS Melodic,部分新包已不在维护计划中。
- Ubuntu 22.04对应对ROS 2 Humble,但传统ROS 1教程不适用。
建议直接用Ubuntu 20.04,原因是:
- 官方教程、教材、网上案例数量最多。
- ROS Noetic是ROS 1最后的长期支持版本,稳定且资料齐全。
- VirtualBox对20.04的兼容性很好,不至于踩图形界面的坑。
第二步:创建虚拟机并安装Ubuntu
先下载Ubuntu 20.04的桌面版镜像,然后在VirtualBox里新建虚拟机。
- 新建虚拟机,类型选Linux,版本选Ubuntu 64-bit。
- 内存分配:至少4GB,推荐8GB,物理机只有4GB内存的话,建议换物理机装,否则虚拟机跑起来会卡到怀疑人生。
- 磁盘分配:至少30GB,如果打算编译大型功能包,直接给50GB。
- 处理器核心数给2个以上,并勾选“启用EFI”(部分机器需要关闭)。
创建完后,在设置里做三件事:
- 显示内存拉到128MB以上,开启3D加速。
- 存储里挂载刚刚下载的Ubuntu镜像。
- 网络模式选NAT,后面可以改桥接。
启动虚拟机进入安装界面,安装过程中选择“最小安装”,方便省空间,然后一路默认直到重启。
重启后登录系统,第一件事是安装VirtualBox增强功能(Guest Additions),在VirtualBox菜单栏点击“设备->安装增强功能”,然后在Ubuntu终端里执行:
sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r) sudo mount /dev/cdrom /mnt cd /mnt sudo ./VBoxLinuxAdditions.run sudo reboot
增强功能装好后,共享文件夹、拖拽文件、自适应分辨率才能用,这一步不能跳过,否则后续把主机上的ROS代码拖进虚拟机时会非常痛苦。
第三步:在虚拟机里安装ROS
打开终端,按顺序执行以下命令,这里以ROS Noetic为例。
设置软件源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
设置密钥:
sudo apt install -y curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
更新并安装完整版ROS:
sudo apt update sudo apt install -y ros-noetic-desktop-full
初始化rosdep:
sudo apt install -y python3-rosdep sudo rosdep init rosdep update
设置环境变量:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc
最后验证安装是否成功:
roscore
看到started core service字样,说明ROS已经在虚拟机里跑起来了。
虚拟机装ROS注意事项:性能和网络配置别忽略
性能分配不合理,装好了也白装
虚拟机的性能上限被物理机限制死,业内专家指出,多数“ROS虚拟机卡到没法用”的案例,问题都出在给了太少的内存和CPU核心,如果你准备在虚拟机里跑Gazebo仿真,请至少分配4核CPU和8GB内存。
不要在虚拟机里频繁切换桌面特效,关闭动画和透明窗口能明显提升流畅度。
网络模式选错,rosdep直接失败
VirtualBox默认NAT模式可以用,但rosdep update经常因为网络问题卡住,行业共识认为,虚拟机的网络配置是ROS安装过程中最容易忽略的坑。
解决办法有两个:
- 把虚拟机网络模式改为“桥接网卡”,让虚拟机直接走物理网卡的网络。
- 保持NAT,但在虚拟机里配置代理或使用国内镜像源。
改完后重新执行:
sudo apt update rosdep update
如果还是提示网络错误,多数情况下是因为raw.githubusercontent.com被墙,可以手动从GitHub下载rosdistro文件放到本地,或者更换rosdep源。
共享文件夹权限问题要提前处理
安装增强功能后,共享文件夹默认挂在/media/sf_文件夹名,用户需要加入vboxsf组才能读写:
sudo usermod -aG vboxsf $USER
退出登录再重新进入,就能看到共享文件夹了,这一步不处理,你会遇到“能看见文件夹但无法复制代码”的诡异问题。
虚拟机里的ROS能不能连接真实机器人
可以,但有限制,用USB串口连接时,在VirtualBox的设备菜单里把USB设备分配给虚拟机,然后ls /dev/ttyUSB0就能看到,但要注意,虚拟机的USB处理有延迟,不适合对实时性要求高的控制场景,比如电机轮式机器人底盘。
如果要做雷达建图或相机识别,尽量把数据采集放在物理机里,虚拟机只跑运算。
ROS安装虚拟机常见问题解答
为什么ROS在虚拟机里跑起来很卡?
因为虚拟机没有直接访问硬件的能力,CPU和内存还好,GPU是最大的瓶颈,如果跑Rviz或者Gazebo卡顿,先确认是否已安装增强功能,再检查状态栏里的虚拟显存是否设置到最高,还有,不要用笔记本电池模式跑虚拟机,插上电源再试,性能差距很明显。
ROS安装虚拟机与物理机相比,有什么差别?
物理机性能更好,通信实时性更强,适合做实际机器人调试,虚拟机胜在方便,系统崩了直接重置快照,适合学习ROS语法和跑仿真,对于高中生或非计算机背景的初学者,虚拟机的容错率远高于物理机,装坏了大不了重新建一个,不影响宿主机环境。
安装时提示rosdep command not found怎么办?
这个命令属于Python工具,需要单独安装,执行sudo apt install -y python3-rosdep,然后检查/usr/bin/rosdep是否存在,如果存在但还是提示找不到,多半是环境变量问题,重新打开终端或执行source ~/.bashrc即可,ROS安装虚拟机是一个容错率很高的方案,只要记住“先配资源、再装增强功能、最后按顺序跑命令”这个节奏,绝大多数报错都能在半小时内解决,把这台虚拟机当成一个随时可以重来的实验场,你的ROS学习之路会顺畅很多。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/925200.html


评论列表(3条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于版本的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@灵ai189:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于版本的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
读了这篇文章,我深有感触。作者对版本的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!