VMware虚拟机下Ubuntu22.04安装ROS2 Humble避坑指南(附小乌龟测试)
VMware虚拟机下Ubuntu 22.04安装ROS2 Humble避坑指南附小乌龟测试在虚拟化环境中搭建机器人操作系统ROS开发平台是许多初学者和团队进行原型验证、学习测试的首选方案。VMware Workstation Player以其稳定的性能和免费的个人使用许可成为众多开发者的桌面虚拟化利器。然而当我们将Ubuntu 22.04 LTS与ROS2 Humble版本结合试图在虚拟机中构建一个流畅的机器人仿真与开发环境时往往会遇到一系列“意料之外”的挑战——从虚拟机配置的细微差别到系统依赖的版本冲突再到网络环境的特殊限制每一步都可能成为阻碍你快速上手的绊脚石。这篇文章正是为你准备的。我将结合自己多次在VMware虚拟机中部署ROS2的经验为你梳理出一条清晰、稳定、且能避开绝大多数常见陷阱的安装路径。我们不仅会完成基础的安装更会深入探讨那些容易被忽略的虚拟机专属配置例如3D图形加速的开启、共享文件夹的权限设置、以及如何优化虚拟机的性能以流畅运行RVIZ2和Gazebo等图形化工具**。最后我们将通过经典的“小乌龟”测试不仅验证安装是否成功更借此机会直观地理解ROS2的核心通信机制。无论你是机器人领域的新手还是需要在隔离环境中进行多版本测试的资深开发者这份指南都将帮助你高效地搭建起一个可靠的ROS2开发沙箱。1. 虚拟机环境准备与Ubuntu 22.04安装优化在物理机上直接安装Ubuntu或许相对直接但在虚拟机中我们需要为后续的ROS2图形化应用和编译任务做好充分准备。一个配置不当的虚拟机轻则导致界面卡顿重则无法启动ROS2的图形工具。1.1 VMware虚拟机关键配置详解创建虚拟机时默认设置往往不足以支撑ROS2的流畅运行。以下几个配置点需要你格外关注处理器与内存对于ROS2 Humble桌面版我建议至少分配2个CPU核心和4GB内存。如果你的宿主机配置允许分配4核CPU和8GB内存将获得更佳的体验尤其是在运行Gazebo仿真时。在VMware的虚拟机设置中记得开启“虚拟化Intel VT-x/EPT或AMD-V/RVI”选项这能显著提升虚拟机的计算性能。磁盘类型与大小选择SCSI控制器类型并将磁盘容量设置为至少40GB。虽然Ubuntu系统本身占用不大但ROS2的完整安装、工作空间以及后续编译产生的中间文件会占用大量空间。选择“将虚拟磁盘存储为单个文件”还是“拆分成多个文件”取决于你的需求前者性能略好后者便于迁移和备份。网络适配器保持默认的NAT模式即可。这能让虚拟机共享宿主机的网络连接同时拥有独立的IP地址方便后续进行网络相关的测试。桥接模式虽然能让虚拟机像独立设备一样接入局域网但对于单纯的开发环境并非必需且可能带来额外的配置复杂度。显示器图形这是虚拟机运行ROS2图形化工具如RVIZ2的关键。务必在“显示器”设置中将图形内存设置为至少2GB并勾选“加速3D图形”选项。很多用户在虚拟机中启动RVIZ2时遇到黑屏或崩溃问题根源大多在于此。提示安装VMware Tools或Open VM Tools是必须的步骤。它不仅提供更好的屏幕分辨率和鼠标集成更重要的是启用了主机与虚拟机之间的共享文件夹和剪贴板共享功能极大提升开发效率。在Ubuntu 22.04中通常系统会提示你安装开源版本的open-vm-tools直接同意安装即可。1.2 Ubuntu 22.04安装后的首要优化系统安装完成后不要急于安装ROS2。先进行以下几项优化能为后续步骤扫清障碍。首先立即更换软件源。Ubuntu默认的官方源在国内访问速度可能很慢。将源更换为国内镜像如阿里云、清华大学、中科大的源可以让你在安装软件和更新系统时速度飞升。# 备份原有的源列表文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 使用sed命令快速替换为阿里云镜像源以Ubuntu 22.04 Jammy为例 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list # 更新软件包列表 sudo apt update sudo apt upgrade -y其次安装一些基础但至关重要的开发工具链sudo apt install -y build-essential cmake git curl wget python3-pip python3-venv最后检查并设置正确的区域和语言支持。ROS2对UTF-8编码有严格要求不正确的区域设置可能导致后续编译或运行出现奇怪错误。# 确保语言环境支持UTF-8 sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 # 为当前会话也设置 export LANGen_US.UTF-8你可以通过运行locale命令来确认输出中是否包含LANGen_US.UTF-8。2. ROS2 Humble安装脚本与手动方案深度对比安装ROS2 Humble主要有两种主流方式使用社区维护的一键安装脚本或遵循官方文档进行手动安装。两种方式各有优劣适用于不同场景。2.1 方案一使用“鱼香ROS”一键安装脚本推荐给初学者对于绝大多数国内用户尤其是新手我强烈推荐使用鱼香ROS提供的一键安装脚本。它将配置软件源、安装依赖、设置环境变量等繁琐步骤自动化并针对国内网络环境进行了优化极大地提高了成功率。操作步骤如下获取并运行脚本打开终端执行以下命令。这条命令会下载安装脚本并立即执行。wget http://fishros.com/install -O fishros bash fishros交互式选择脚本运行后会出现一个交互式菜单。首先输入1选择“一键安装ROS”。脚本会询问是否更换系统APT源输入y同意。这会将Ubuntu的软件源也替换为国内镜像。随后会列出可用的ROS2版本。找到Humble Hawksbill对应的编号通常是2或3输入该编号。接下来选择安装类型。输入1选择桌面完整版Desktop-Full。这个版本包含了ROS、RVIZ2、Gazebo、演示教程和几乎所有常用功能包是学习和开发的最佳选择。等待安装完成脚本会自动执行后续所有操作包括安装rosdep初始化工具。整个过程耗时约15-30分钟取决于你的网络速度。期间无需任何干预。安装后验证安装完成后在新的终端窗口中尝试运行以下命令来验证ROS2核心是否已就绪source /opt/ros/humble/setup.bash ros2 --help如果看到一长串ros2命令的帮助信息恭喜你核心安装成功。一键脚本的优缺点分析优点缺点自动化程度高省去大量手动配置避免因步骤遗漏导致的错误。定制性较弱安装的软件包集合是预设好的无法精细选择。网络优化自动使用国内镜像解决rosdep update等命令的超时问题。透明度较低新手可能不清楚脚本背后具体执行了哪些操作。集成rosdepc内置了国内加速版的rosdepc解决依赖安装慢的问题。版本锁定脚本提供的ROS2版本可能不是最新的小版本号。2.2 方案二手动安装适合需要定制或深入理解的过程如果你希望完全掌控安装过程或者需要安装特定版本的组件手动安装是更好的选择。以下是精简后的关键步骤设置软件源将ROS2的APT仓库添加到你的系统。sudo apt update sudo apt install curl gnupg lsb-release 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安装ROS2桌面版sudo apt update sudo apt install ros-humble-desktop安装开发工具和编译工具sudo apt install ros-dev-tools python3-argcomplete python3-colcon-common-extensions环境变量设置将ROS2的初始化脚本添加到你的shell配置文件中使其在每次打开新终端时自动生效。echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc手动安装让你对每一个环节都心中有数但需要自行处理可能遇到的网络问题和依赖冲突。2.3 关键步骤配置rosdep无论采用哪种安装方式正确初始化rosdep都至关重要。rosdep是一个用于安装ROS包系统依赖的工具。在虚拟机环境中由于网络配置这一步容易失败。如果你使用了一键脚本它通常已经帮你配置好了rosdepc一个国内镜像加速版本。你可以通过以下命令检查rosdepc --version如果显示版本号则已配置成功。运行rosdepc update来初始化。如果是手动安装则需要运行sudo rosdep init rosdep update如果rosdep update因网络问题失败可以尝试修改其源为国内镜像或者使用代理注意此处仅讨论技术原理不涉及具体工具。一个常见的替代方案是在/etc/ros/rosdep/sources.list.d/20-default.list文件中将raw.githubusercontent.com替换为其国内镜像地址需自行寻找可用镜像。3. 虚拟机专属配置与性能调优在物理机上运行良好的ROS2在虚拟机中可能会遇到性能瓶颈。以下是针对VMware虚拟机的专项调优。1. 启用3D加速与调整显示设置如前所述在VMware虚拟机设置中确保已开启3D加速。此外在Ubuntu系统内可以尝试使用vmware-user-suid-wrapper或open-vm-tools-desktop来改善图形性能。安装后重启虚拟机生效。2. 共享文件夹权限问题在VMware中设置共享文件夹后在Ubuntu的/mnt/hgfs/目录下可以看到共享内容。但默认情况下这些文件的所属用户和组可能是root导致你在普通用户下无法写入。解决方法是在挂载时指定正确的uid和gid或者更简单地在Ubuntu内使用chmod命令修改权限需谨慎操作。3. 资源分配策略CPU如果你的宿主机CPU核心数较多可以给虚拟机分配更多核心。ROS2的编译过程使用colcon build可以很好地利用多核进行并行编译显著缩短等待时间。内存除了分配给虚拟机的内存还要留意宿主机本身是否有足够剩余内存。运行Gazebo等重型仿真时内存不足会导致虚拟机卡死。磁盘使用SSD作为虚拟磁盘的存储位置能极大提升系统和编译的I/O性能。4. 网络与代理配置可选但重要如果你的开发需要从GitHub等平台克隆ROS功能包而虚拟机网络较慢你可能需要配置网络代理。这通常在虚拟机网络设置为NAT模式下在Ubuntu系统内进行设置。例如设置http_proxy和https_proxy环境变量并配置git和apt使用代理。# 示例设置临时环境变量替换为你自己的代理地址和端口 export http_proxyhttp://your-proxy-address:port export https_proxyhttp://your-proxy-address:port # 让apt也使用代理 echo Acquire::http::Proxy http://your-proxy-address:port; | sudo tee /etc/apt/apt.conf.d/proxy.conf4. 核心概念初探与“小乌龟”实战测试环境搭建完毕是时候通过实践来理解ROS2的核心了。我们将通过运行经典的turtlesim仿真器来直观感受ROS2的节点、话题Topic和发布/订阅模型。4.1 理解ROS2的核心构件在启动小乌龟之前先快速建立三个核心概念的心理模型节点NodeROS2系统中的基本执行单元。你可以把它想象成一个独立的、有特定功能的小程序。在接下来的测试中我们将运行两个节点一个负责绘制小乌龟和窗口turtlesim_node另一个负责读取键盘输入turtle_teleop_key。话题Topic节点间进行异步通信的通道。节点可以**发布Publish消息到某个话题也可以订阅Subscribe**某个话题来接收消息。这是一种松耦合的通信方式。工作空间Workspace你存放自己编写的ROS2代码功能包的目录。它有标准的组织结构src,build,install,log使用colcon工具进行构建。4.2 启动小乌龟仿真与键盘控制现在让我们打开三个终端窗口开始实战。终端1启动小乌龟仿真器# 确保环境已加载如果已添加到.bashrc则无需此步 source /opt/ros/humble/setup.bash # 启动仿真节点 ros2 run turtlesim turtlesim_node执行后你会看到一个蓝色背景的窗口中间出现一只随机颜色的小乌龟。终端2查看系统状态ros2 node list这条命令会列出当前系统中所有活跃的节点。你应该能看到一个名为/turtlesim的节点。再运行ros2 topic list这会列出当前所有活跃的话题。你应该能看到诸如/turtle1/cmd_vel,/turtle1/pose,/turtle1/color_sensor等话题。终端3启动键盘控制节点ros2 run turtlesim turtle_teleop_key终端会显示提示Use arrow keys to move the turtle.。确保这个终端窗口是当前焦点用鼠标点一下然后按下键盘的方向键。你会看到第一个窗口中的小乌龟开始移动了4.3 可视化通信关系理解发布与订阅最精彩的部分来了。我们打开第四个终端使用ROS2强大的可视化工具rqt_graph来观察节点间的通信关系。rqt_graph如果提示命令未找到请先安装sudo apt install ros-humble-rqt-graph。rqt_graph窗口会显示一个动态图。你可以看到两个椭圆节点/teleop_turtle/turtlesim它们之间由一条标有/turtle1/cmd_vel的线连接。箭头方向表明了数据流向/teleop_turtle发布速度指令到/turtle1/cmd_vel话题而/turtlesim节点订阅了这个话题接收指令并控制乌龟运动。这就是ROS2最核心的发布-订阅模型。你可以尝试在rqt_graph中勾选“隐藏调试节点”等选项让视图更清晰。这个直观的图形化表示比任何文字描述都能让你更快地理解ROS2的分布式通信本质。4.4 清理与停止测试完成后在每个运行节点的终端窗口中按下CtrlC来安全停止节点。最后再次运行ros2 node list确认所有节点都已停止应无输出。至此你不仅成功在VMware虚拟机中安装并验证了ROS2 Humble更通过“小乌龟”这个经典示例亲手触摸到了ROS2分布式通信框架的脉搏。这个由虚拟机搭建的、独立且可复现的开发环境将成为你探索机器人技术更广阔天地的坚实起点。记住环境搭建只是第一步接下来你可以尝试创建自己的工作空间编写自己的节点或者探索更复杂的仿真世界。

相关新闻

IntelliJ IDEA 2021.3.3版本破解插件ja-netfilter-all的安装与激活指南

IntelliJ IDEA 2021.3.3版本破解插件ja-netfilter-all的安装与激活指南

1. 为什么你需要了解ja-netfilter-all插件? 如果你是一名Java开发者,或者正在学习Java,那么IntelliJ IDEA这个名字你一定不陌生。它被公认为Java开发领域最强大、最智能的集成开发环境(IDE),没有之一。从智…

2026/7/5 3:04:36 阅读更多 →
T113 NAND Flash UBIFS根文件系统扩容实战:从分区表到打包脚本的完整调优

T113 NAND Flash UBIFS根文件系统扩容实战:从分区表到打包脚本的完整调优

1. 从硬件升级到软件适配:一次完整的根目录扩容之旅 最近在折腾一块基于全志T113的开发板,原厂板载的SPI NAND Flash是1Gbit的,容量有点捉襟见肘。项目需要存储更多日志和用户数据,于是我就把Flash芯片换成了同系列但容量翻倍的2G…

2026/7/5 1:23:00 阅读更多 →
FFmpeg缓冲区优化指南:AVIOContext的buffer_size设置到底多少才合理?

FFmpeg缓冲区优化指南:AVIOContext的buffer_size设置到底多少才合理?

FFmpeg缓冲区优化指南:AVIOContext的buffer_size设置到底多少才合理? 最近在调试一个直播拉流项目时,遇到了一个让人头疼的问题:播放器在弱网环境下频繁卡顿,但网络带宽监测显示带宽是足够的。排查了半天,最…

2026/5/17 12:33:23 阅读更多 →

最新新闻

多重共线性实战指南:识别、归因与工程化解法

多重共线性实战指南:识别、归因与工程化解法

1. 项目概述:为什么多重共线性不是“错误”,而是数据在说话你刚跑完一个线性回归模型,R高达0.92,F检验p值小于0.001,一切看起来都很漂亮——直到你扫了一眼系数表:某个自变量的系数是3.7,标准误…

2026/7/5 3:02:54 阅读更多 →
云原生技术28-K8s排障实战:20个常见问题的快速定位与解决,从CrashLoopBackOff到Running的完整指南

云原生技术28-K8s排障实战:20个常见问题的快速定位与解决,从CrashLoopBackOff到Running的完整指南

1、AI程序员系列文章 2、AI面试系列文章 3、AI编程系列文章 目录 排障思维:从"盲人摸象"到"精准定位" 2.1 自上而下 vs 自下而上 2.2 假设验证法 2.3 二分法定位 Pod问题:四大金刚的"病历本" 3.1 CrashLoopBackOff&…

2026/7/5 3:00:53 阅读更多 →
Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界

Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界

聊《Codex 实战:AI 编程助手接入真实项目,用真实案例讲清边界》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要这篇面向想用 AI 提升研发效率的开发者和技术负责人,但不会把“…

2026/7/5 3:00:53 阅读更多 →
功能测试中的“精准打击“:避免大而全的实用策略 (2)

功能测试中的“精准打击“:避免大而全的实用策略 (2)

一、核心认知前提 等价类、边界值、场景法是标准合规的用例设计方法,合理抽样≠无差别穷举。 过度细测的本质不是用例方法用错,而是两个无效叠加行为: 在必要边界样本外,额外枚举大量逻辑完全一致的重复数据; 每一条…

2026/7/5 2:58:53 阅读更多 →
76_Python数据分析pandas入门

76_Python数据分析pandas入门

Python数据分析基石:pandas入门指南 文章目录Python数据分析基石:pandas入门指南前言一、安装与核心数据结构二、读取各种格式的数据三、数据筛选与索引四、排序与聚合五、数据修改与新增列六、实战:销售数据分析✅ 亮点总结适用场景扩展方向…

2026/7/5 2:58:53 阅读更多 →
绝了!原来论文还能这样拿高分?2026降AI率工具推荐合集

绝了!原来论文还能这样拿高分?2026降AI率工具推荐合集

还在为论文查重高、AI痕迹明显、格式乱七八糟焦虑?2026 年的论文降AIGC工具已经全面升级,从选题构思到内容润色、从降重处理到去除AI痕迹、再到专业格式排版,全流程智能辅助,帮你把写作压力降到最低,轻松拿下高分论文&…

2026/7/5 2:56:52 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻