1. 为什么要在Windows上玩ROS?
很多刚接触机器人开发的朋友可能会疑惑:ROS不是主要在Linux上运行的吗?确实,ROS最初是为Linux设计的,但微软和ROS社区的合作让Windows支持越来越完善。我自己三年前第一次在Windows上折腾ROS时,光是解决依赖问题就花了整整两天,现在工具链已经成熟多了。
选择Windows平台有几个实际优势:首先是不用折腾双系统,特别是实验室电脑或公司设备不方便重装系统的情况;其次是Visual Studio的调试体验确实比Linux下的工具更友好;最重要的是,很多机器人仿真工具(如Unity3D、Webots)对Windows的支持更好。不过要注意,生产环境还是建议用Linux,Windows更适合学习和原型开发。
2. 准备工作:别急着安装
2.1 系统体检报告
先确认你的Windows 10版本:按Win+R输入winver,必须要是1903及以上版本。我遇到过有人用着1809版死活装不上,最后发现是系统太旧。另外一定要64位系统,32位的趁早换设备吧。
C盘空间至少留出20GB(官方说10GB,但实测加上工作空间很容易不够)。建议把下载缓存路径改到其他分区:
# 修改临时目录到D盘 [Environment]::SetEnvironmentVariable("TEMP", "D:\Temp", "User") [Environment]::SetEnvironmentVariable("TMP", "D:\Temp", "User")2.2 杀毒软件的正确姿势
装ROS最头疼的就是各种杀毒软件拦截。建议先把Windows Defender的实时防护关掉(控制面板→病毒和威胁防护→管理设置),或者把以下目录加入白名单:
- C:\opt
- 你的工作空间目录(比如D:\ros_ws)
- Chocolatey安装目录
3. 搭建开发环境基石
3.1 Visual Studio的玄学选择
官方推荐VS2019,但我实测VS2022也能用。关键是要安装"使用C++的桌面开发"工作负载,记得勾选Windows 10 SDK(版本选最新的就行)。有个坑要注意:首次安装VS时默认不装C++组件,需要手动勾选。
安装完成后,建议创建一个专用命令提示符快捷方式:
# 创建VS开发环境快捷方式 $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$Home\Desktop\VS_ROS.lnk") $Shortcut.TargetPath = "cmd.exe" $Shortcut.Arguments = '/k "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"' $Shortcut.Save()3.2 Chocolatey:Windows下的apt-get
这个包管理器能省去手动下载的麻烦。用管理员权限打开PowerShell执行:
Set-ExecutionPolicy Bypass -Scope Process -Force iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))安装完记得重启终端,然后测试下:
choco -v # 应该显示版本号4. ROS安装实战
4.1 选择你的ROS版本
新手建议从Melodic开始,生态最成熟。如果想用ROS2就选Foxy,但要注意有些经典包还没移植到ROS2。我两个版本都装了,用不同快捷方式切换。
安装Melodic完整版:
choco source add -n=ros-win -s="https://aka.ms/ros/public" --priority=1 choco upgrade ros-melodic-desktop_full -y --execution-timeout=3600这个过程可能耗时30分钟到2小时不等,取决于网速。如果卡住,可能是网络问题,试试手机热点。
4.2 环境变量那些坑
安装完成后,需要创建启动脚本。新建一个ros_env.bat文件:
@echo off call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" set ChocolateyInstall=c:\opt\chocolatey call c:\opt\ros\melodic\x64\setup.bat把这个bat文件固定到任务栏,以后每次点它就能进入ROS环境。
5. 第一个ROS节点实战
5.1 测试核心功能
打开ROS环境后,先试试水:
roscore正常应该看到类似输出:
... logging to C:\Users\xxx\.ros\log\... started core service [/rosout]另开一个终端(记得先运行ros_env.bat),运行小乌龟demo:
rosrun turtlesim turtlesim_node这时候你应该能看到经典的乌龟窗口了。
5.2 常见问题排雷
如果遇到"无法加载DLL"错误,通常是VC++运行时没装好,试试:
choco install vcredist-all -y要是turtlesim窗口闪退,可能是显卡驱动问题,尝试:
set GAZEBO_IP=127.0.0.1 set LIBGL_ALWAYS_SOFTWARE=16. 高效开发环境配置
6.1 终端美化方案
默认cmd太难用,建议安装Windows Terminal,然后配置ROS环境自动加载。编辑settings.json,添加:
{ "commandline": "cmd.exe /k \"C:\\path\\to\\ros_env.bat\"", "name": "ROS Melodic" }6.2 工作空间搭建
创建catkin工作空间:
mkdir -p ~/ros_ws/src cd ~/ros_ws catkin_make记得把工作空间路径加入白名单,否则编译时杀毒软件可能会捣乱。
7. 进阶技巧:混合开发环境
我最近发现一个神器叫WSL2,可以同时利用Windows的GUI优势和Linux的命令行环境。配置方法:
- 启用WSL功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart - 安装Ubuntu 20.04 from Microsoft Store
- 在WSL中安装ROS,然后通过X11转发显示图形界面
这样既可以用VS Code编辑代码,又能享受Linux原生的ROS环境,两全其美。不过要注意网络配置会比较复杂,建议先掌握基础用法再尝试。