Win11 WSL2下Ubuntu 22.04安装ROS1:从“官方不支持”到稳定运行的深度实践
如果你是一名机器人开发者,或者正在学习ROS,手头的主力机又是Windows 11,那么这篇文章可能就是为你准备的。我最近接手了一个基于ROS1 Noetic的遗留项目,但我的开发环境是Windows 11。双系统切换太麻烦,虚拟机性能又堪忧,于是我把目光投向了WSL2。一个公认的“难题”摆在了面前:Ubuntu 22.04 LTS的官方支持列表中,早已没有了ROS1 Noetic的身影。这意味着,按照常规方法,你根本无法通过apt安装。但现实是,很多工业项目、学术代码依然运行在ROS1上,迁移到ROS2并非一朝一夕之事。
难道就此放弃,退回Ubuntu 20.04?经过一番折腾和踩坑,我不仅成功在WSL2的Ubuntu 22.04上完美运行了ROS1 Noetic,还顺带配置了Gazebo仿真环境,整个过程流畅稳定。这篇文章,我将抛开那些泛泛而谈的教程,深入分享我是如何一步步解决核心矛盾,并优化整个开发体验的。无论你是初学者,还是需要跨平台协作的工程师,这些实战经验都能帮你节省大量时间。
1. 基石:WSL2与Ubuntu 22.04的系统级优化
很多人觉得WSL2安装就是一行命令的事,但细节决定成败。一个基础不牢的系统,后续安装ROS时各种诡异错误会接踵而至。
首先,确保你的Windows 11版本足够新(建议22H2及以上),并且完全启用了虚拟化功能。这不仅仅是打开BIOS里的VT-x/AMD-V,还要在Windows功能中确认以下两项:
# 在PowerShell(管理员)中检查WSL状态
wsl --status
如果WSL版本不是2,或者根本没安装,你需要先启用它。最可靠的方式不是只用商店安装,而是通过命令行进行完整部署:
# 以管理员身份打开PowerShell
wsl --install -d Ubuntu-22.04
这条命令会一次性安装WSL2内核、Ubuntu 22.04发行版并设为默认。安装后,务必重启电脑。我遇到过不止一次,跳过重启直接配置,导致WSL无法正常启动,报错0x80370114,重启后迎刃而解。
进入Ubuntu系统后,第一件事不是急着换源,而是做一次全面的系统更新和基础加固:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl wget git software-properties-common
接下来是内存与交换空间配置。WSL2默认会贪婪地占用大量内存,对于后续运行Gazebo这类图形化仿真工具极其不利。我们需要在Windows用户目录下创建.wslconfig文件(例如C:\Users\你的用户名\.wslconfig),并加入以下限制:
[wsl2]
memory=4GB # 限制最大内存使用,根据你电脑内存调整
swap=2GB # 交换空间大小
localhostForwarding=true
保存后,在PowerShell中执行wsl --shutdown关闭WSL,再重新启动,配置生效。这个步骤能有效防止Gazebo运行时因内存不足而崩溃。
2. 破解核心难题:在Ubuntu 22.04上安装ROS1 Noetic
这是本文的核心。Ubuntu 22.04 (Jammy Jellyfish) 对应的官方ROS发行版是ROS2 Humble,ROS1 Noetic是为Ubuntu 20.04设计的。直接添加ROS官方源进行安装,必然会失败。
解决方案的关键在于一个社区维护的、兼容Jammy的ROS Noetic源。 经过测试,由Autolabor(一家国内的机器人公司)维护的源最为稳定可靠。他们重新打包了必要的依赖,使其能在更高版本的系统库上运行。
注意:使用第三方源需要谨慎。建议在操作前,备份好原始的
sources.list文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

&spm=1001.2101.3001.5002&articleId=154434878&d=1&t=3&u=049807f03b6b484bac59995bb91092b3)
1034

被折叠的 条评论
为什么被折叠?



