Windows下使用VirtualBox搭建ROS开发环境完整指南
1. 项目概述在机器人开发领域ROSRobot Operating System已成为事实上的标准框架。但对于刚接触ROS的开发者来说最头疼的问题往往不是ROS本身的学习曲线而是开发环境的搭建过程。特别是在Windows系统上直接安装ROS会遇到各种兼容性问题这也是为什么我们需要通过VirtualBox虚拟机来创建Ubuntu系统作为ROS开发环境。我最近刚完成一个机器人视觉项目过程中完整走了一遍从零搭建ROS开发环境的流程。这里把我的实操步骤和踩过的坑都记录下来特别适合以下人群参考机器人相关专业的在校学生刚接触ROS的开发者需要在Windows系统上开发ROS程序的技术人员想尝试ROS但不想影响现有系统的爱好者2. 环境准备与虚拟机创建2.1 VirtualBox安装与配置首先需要下载并安装VirtualBox这是Oracle提供的免费开源虚拟机软件。我推荐使用最新稳定版目前是7.0.x系列因为老版本可能存在一些已知问题。安装时需要注意确保勾选创建桌面快捷方式和注册文件关联安装过程中会短暂断开网络连接这是正常现象安装完成后建议重启电脑提示如果安装过程中出现严重错误提示通常是系统缺少必要的运行库。可以尝试安装最新版的Visual C Redistributable后再试。2.2 Ubuntu镜像选择与下载对于ROS开发Ubuntu版本的选择很关键。因为不同版本的ROS对Ubuntu有特定要求ROS Noetic推荐Ubuntu 20.04ROS Melodic推荐Ubuntu 18.04ROS Humble推荐Ubuntu 22.04我选择的是Ubuntu 22.04 LTS版本对应的ROS版本是Humble Hawksbill。这个组合目前最稳定社区支持也最好。下载镜像时建议从官方镜像站获取https://releases.ubuntu.com/22.04/选择ubuntu-22.04.3-desktop-amd64.iso这个文件约4GB。2.3 创建虚拟机实例在VirtualBox中点击新建按以下参数配置名称ROS_Dev可自定义类型Linux版本Ubuntu (64-bit)内存大小建议至少4096MB4GB硬盘创建虚拟硬盘建议40GB以上选择VDI格式动态分配创建完成后还需要进行一些关键设置系统 → 处理器分配至少2个CPU核心显示 → 显存调到128MB存储 → 控制器IDE挂载下载的Ubuntu ISO镜像网络 → 连接方式桥接网卡方便主机与虚拟机通信3. Ubuntu系统安装与基础配置3.1 Ubuntu安装过程启动虚拟机后按照以下步骤安装Ubuntu选择Install Ubuntu语言选择English后续开发时可以减少编码问题键盘布局保持默认安装类型选择Normal installation分区选择Erase disk and install Ubuntu不用担心这只会影响虚拟硬盘时区选择Shanghai设置用户名和密码建议密码不要太复杂后续经常要用到安装过程大约需要20-30分钟完成后会提示重启。重启前记得在VirtualBox设置中移除安装镜像否则会再次进入安装界面。3.2 基础系统配置首次登录后建议立即进行以下配置更新软件源sudo apt update sudo apt upgrade -y安装增强功能提供更好的显示效果和剪贴板共享sudo apt install -y build-essential dkms linux-headers-$(uname -r)然后在VirtualBox菜单选择设备 → 安装增强功能挂载后运行sudo ./VBoxLinuxAdditions.run配置共享文件夹方便主机与虚拟机交换文件sudo adduser $USER vboxsf然后在VirtualBox设置中添加共享文件夹指定主机路径和挂载点如/home/yourname/shared安装必要工具sudo apt install -y git curl wget terminator4. ROS开发环境搭建4.1 ROS安装按照官方推荐的方式安装ROS Humble设置软件源sudo apt install -y software-properties-common sudo add-apt-repository universe添加ROS仓库sudo apt install -y curl 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 $(. /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null安装ROS基础包sudo apt update sudo apt install -y ros-humble-desktop设置环境变量echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc4.2 开发工具配置安装colcon构建工具sudo apt install -y python3-colcon-common-extensions安装ROS开发工具sudo apt install -y python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential sudo rosdep init rosdep update创建工作空间mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build4.3 VSCode配置安装VSCodesudo apt install -y wget wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/ sudo sh -c echo deb [archamd64 signed-by/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main /etc/apt/sources.list.d/vscode.list sudo apt update sudo apt install -y code安装ROS插件打开VSCode进入ExtensionsCtrlShiftX搜索并安装ROS和Python插件配置工作区code ~/ros2_ws在VSCode中打开终端Ctrl就可以直接在IDE中开发ROS程序了。5. 常见问题与解决方案5.1 虚拟机性能优化问题虚拟机运行卡顿 解决方案在VirtualBox设置中启用3D加速分配更多CPU核心不超过主机核心数的一半增加显存最多256MB在Ubuntu中安装轻量级桌面环境如Xfce5.2 ROS安装问题问题rosdep初始化失败 解决方案sudo rm -rf /etc/ros/rosdep/sources.list.d/20-default.list sudo rosdep init rosdep update问题找不到ROS命令 解决方案source /opt/ros/humble/setup.bash5.3 网络连接问题问题虚拟机无法上网 解决方案检查VirtualBox网络设置是否为桥接模式在Ubuntu中重启网络服务sudo service network-manager restart问题主机与虚拟机无法ping通 解决方案确保两者在同一网段检查Ubuntu防火墙设置sudo ufw disable6. 开发环境验证6.1 基础功能测试启动ROS核心roscore应该看到类似输出... logging to /home/username/.ros/log/xxxxx started core service [/rosout]运行小海龟示例ros2 run turtlesim turtlesim_node另开终端运行ros2 run turtlesim turtle_teleop_key此时应该能用键盘控制小海龟移动。6.2 VSCode开发测试在VSCode中创建ROS包cd ~/ros2_ws/src ros2 pkg create --build-type ament_python my_first_package编写简单发布者 编辑my_first_package/my_first_package/publisher.pyimport rclpy from rclpy.node import Node from std_msgs.msg import String class MinimalPublisher(Node): def __init__(self): super().__init__(minimal_publisher) self.publisher_ self.create_publisher(String, topic, 10) timer_period 0.5 self.timer self.create_timer(timer_period, self.timer_callback) self.i 0 def timer_callback(self): msg String() msg.data Hello World: %d % self.i self.publisher_.publish(msg) self.get_logger().info(Publishing: %s % msg.data) self.i 1 def main(argsNone): rclpy.init(argsargs) minimal_publisher MinimalPublisher() rclpy.spin(minimal_publisher) minimal_publisher.destroy_node() rclpy.shutdown() if __name__ __main__: main()编译并运行cd ~/ros2_ws colcon build --packages-select my_first_package source install/setup.bash ros2 run my_first_package publisher应该能看到不断输出的Hello World消息。7. 进阶配置与优化7.1 使用鱼香ROS一键安装对于想快速搭建环境的用户可以使用国内开发者维护的鱼香ROS一键安装脚本wget http://fishros.com/install -O fishros . fishros按照提示选择安装ROS和相关工具。7.2 配置ROS工作区自动补全在~/.bashrc中添加source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash7.3 使用Docker容器开发对于需要隔离环境的项目可以考虑使用ROS Docker镜像sudo apt install -y docker.io sudo usermod -aG docker $USER docker pull osrf/ros:humble-desktop7.4 性能监控工具安装htop监控系统资源sudo apt install -y htop运行htop在实际开发中我发现这套环境配置对于大多数ROS开发任务已经足够。特别是配合VSCode的ROS插件可以大大提高开发效率。对于需要图形加速的应用如Gazebo仿真可以考虑使用GPU直通技术但这需要更复杂的配置。

相关新闻

AIOps为什么需要从“处理告警“转向“理解业务服务关系“?

AIOps为什么需要从“处理告警“转向“理解业务服务关系“?

告警已经处理了,业务问题仍然没有解决 一个核心业务系统响应变慢,监控平台立即产生大量告警。应用服务器CPU升高,数据库连接数增加,存储延迟出现波动,部分容器发生重启,网络端口也产生丢包警告。 传统告警…

2026/10/10 22:19:31 阅读更多 →
如何快速入门Neural Amp Modeler?从gh_mirrors/na/NAM_models开始的完整指南

如何快速入门Neural Amp Modeler?从gh_mirrors/na/NAM_models开始的完整指南

如何快速入门Neural Amp Modeler?从gh_mirrors/na/NAM_models开始的完整指南 【免费下载链接】NAM_models A repository collecting model files for Neural Amp Modeler (NAM) all in one place 项目地址: https://gitcode.com/gh_mirrors/na/NAM_models Ne…

2026/10/11 2:25:05 阅读更多 →
Fody开源可持续发展:为什么成为Patron是每位开发者的责任

Fody开源可持续发展:为什么成为Patron是每位开发者的责任

Fody开源可持续发展:为什么成为Patron是每位开发者的责任 【免费下载链接】Home The landing page for Fody repositories 项目地址: https://gitcode.com/gh_mirrors/home1/Home Fody作为一款强大的.NET代码编织工具,为开发者提供了简化代码、提…

2026/10/11 2:25:05 阅读更多 →

最新新闻

二手车交易数据分析与可视化:从清洗到交互看板的完整实践

二手车交易数据分析与可视化:从清洗到交互看板的完整实践

简介:二手车交易数据分析与可视化系统是一份面向数据分析学习者与前端开发者的综合实战资源。项目整合网络爬虫、前后端分离架构、MySQL数据库存储以及Pandas/NumPy数据分析流程,最终通过Echarts、Plotly等交互式图表呈现二手车价格、里程与市场趋势&…

2026/10/11 2:25:01 阅读更多 →
LOL数据集与YOLOv8实战:从格式转换到小目标检测避坑指南

LOL数据集与YOLOv8实战:从格式转换到小目标检测避坑指南

简介:面向LOL英雄联盟角色检测任务,数据集包含3000张对局截图,提供Pascal VOC与YOLO两种标注格式,覆盖己方小兵、敌方小兵、己方防御塔、敌方防御塔、LUX、VAYNE共6类目标,总计24665个标注框,适合训练YOLO系…

2026/10/11 2:25:01 阅读更多 →
API测试的数据管理:从分类、隔离到清理的系统化实践

API测试的数据管理:从分类、隔离到清理的系统化实践

对不少做API测试的人来说,工作里最磨人的其实不是怎么写脚本,而是“用什么数据去跑脚本”。我参与过好几个接口自动化测试项目,真正让用例反复失败、需要半夜爬起来重跑、甚至让测试结果被质疑的,十有八九都跟测试数据有关。明明接…

2026/10/11 2:25:01 阅读更多 →
Python深度学习CNN水果识别系统实战:从数据集到部署全流程

Python深度学习CNN水果识别系统实战:从数据集到部署全流程

简介:这份资源是面向计算机相关专业学生与项目实战学习者的深度学习实战项目,以Python结合CNN卷积神经网络实现水果图像识别,可直接用于毕业设计、期末大作业或课程实践,难度适中,适合具备一定Python与机器学习基础、希…

2026/10/11 2:25:01 阅读更多 →
百家CMS黑盒测试实战:从用例设计到缺陷提交全流程

百家CMS黑盒测试实战:从用例设计到缺陷提交全流程

接到“百家cms 黑盒测试”这个任务时,我第一反应不是翻源码,而是把系统装进测试环境,像普通网站管理员一样从登录页开始点。黑盒测试说白了,就是不关心系统内部用的是什么语言、表结构怎么设计、代码里有没有注释,只看…

2026/10/11 2:25:01 阅读更多 →
通达OA 2017授权机制解析与合法注册重建指南

通达OA 2017授权机制解析与合法注册重建指南

简介:本资源提供通达OA 2017版本的注册与授权支持文件,面向企业信息化管理员、OA系统实施人员及二次开发技术人员,用于解决正版授权受限、部署次数受限或功能模块被锁定等实际运维问题。压缩包共5个文件,含2个关键.dat授权数据文件…

2026/10/11 2:24:01 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →