WSL安装ros2
wsl安装
保姆级教程:WSL2 (Ubuntu 20.04/22.04) 安装全过程与终极避坑指南
设置语言环境
locale# 查看是否支持 UTF-8# 不支持时修改命令sudoaptupdate&&sudoaptinstalllocalesudolocale-gen en_US.UTF-8sudoupdate-localeLC_ALL=en_US.UTF-8LANG=en_US.UTF-8exportLANG=en_US.UTF-8 locale# 验证结果启用 Ubuntu universe 存储库
# 检查是否启用apt-cachepolicy|grepuniverse# 有结果就表示已经启动# 启用命令sudoaptinstallsoftware-properties-common-ysudoadd-apt-repository universe配置源ros2源信息
更新wsl
wsl--update# 在win的命令窗口执行进入wsl,并更新apt
wslcd~sudoaptupdate&&sudoaptupgrade-y# 开启universe源sudoaptinstallsoftware-properties-common-ysudoadd-apt-repository universesudoaptinstallcurlgnupg2-y# 导入GPG密钥curl-sSLhttps://raw.githubusercontent.com/ros/rosdistro/master/ros.key|gpg--dearmor-o/usr/share/keyrings/ros-archive-keyring.gpg# 添加清华ros2源echo"deb [arch=$(dpkg --print-architecture)signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu noble main"|sudotee/etc/apt/sources.list.d/ros2.list>/dev/null# 更新缓存sudoaptupdate异常解决:
raw.githubusercontent.com 访问超时
解决办法:
将 raw.githubusercontent.com 的ip映射添加到hosts文件中
sudovim/etc/hosts# 适用 vim 打开 hosts 文件# 将ip映射信息添加到hosts文件中并保存关闭185.199.108.133 raw.githubusercontent.comapt 拒绝读取 ros 源
原因:ROS2 清华源缺少 GPG 公钥(F42ED6FBAB17C654),apt 拒绝读取 ros 源,所以找不到 ros-jazzy-desktop 包
解决办法:
# 清理就的ros源文件sudorm-f/etc/apt/sources.list.d/ros2.listsudorm-f/usr/share/keyrings/ros-archive-keyring.gpg# 导入 ROS GPG 公钥(国内可用方案,避开 raw.githubusercontent)gpg--keyserverhkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654 gpg--export--armorF42ED6FBAB17C654|sudogpg--dearmor-o/usr/share/keyrings/ros-archive-keyring.gpg# 重新写入清华 ROS2 源echo"deb [arch=$(dpkg --print-architecture)signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu noble main"|sudotee/etc/apt/sources.list.d/ros2.list>/dev/null# 更新源并安装 ros-jazzy-desktopsudoaptupdatesudoaptinstallros-jazzy-desktop-y安装 ros2
# 更新apt存储库sudoaptupdate&&sudoaptupgrade-y# 安装ros2# 根据自己的 ubuntu 系统版本选择安装对应的 ros2 版本# 笔者是 Ubuntu24.04, 查看自己的版本可以在win的命令行中输入 wsl --list 查看自己安装的版本# 具体对照信息看下方的版本名称对照表,找到对应版本后,将安装命令中的版本简称替换为需要安装的版本简称即可sudoaptinstallros-jazzy-desktop# 完整版(带 rviz、demo、可视化工具,推荐)sudoaptinstallros-jazzy-ros-base-y# 精简核心版(不带 RViz、GUI)# 添加环境信息echo"source /opt/ros/jazzy/setup.bash">>~/.bashrcsource~/.bashrc小提示:
ros-jazzy-ros-base:最小核心包,无 GUI,适合机器人底层开发ros-jazzy-desktop:桌面版,包含 rviz、demo,学习调试首选ros-jazzy-desktop-full:全套所有包,体积最大
ROS2 版本命名规则
- LTS 长期支持版(偶数年发布,5 年维护,工程 / 产品首选)
- 非 LTS(奇数年发布,仅约 18 个月,尝鲜新特性,不适合项目落地)
[!IMPORTANT]
重要:ROS2 版本和 Ubuntu 系统强绑定,不能跨版本混用
| 版本全称 | 简写 | 类型 | 发布 | EOL 结束 | 对应 Ubuntu |
|---|---|---|---|---|---|
| Foxy Fitzroy | foxy | LTS | 2020 | 2023 | 20.04 |
| Humble Hawksbill | humble | LTS | 2022 | 2027 | 22.04 |
| Iron Irwini | iron | 非 LTS | 2023 | 2024 | 22.04 |
| Jazzy Jalisco | jazzy | LTS | 2024 | 2029 | 24.04 |
| Kilted Kaiju | kilted | 非 LTS | 2025 | 2026 | 24.04 |
| Lyrical Luth | lyrical | LTS | 2026 | 2031 | 26.04 |
其它依赖安装
# 安装和初始化rosdepsudoaptinstall-ypython3-rosdepsudorosdep init rosdep update# 安装 colonsudoaptinstallcolconwsl图形界面
前提:你现在是WSL2(WSL1 不行,WSL1 没有完整 Linux 图形支持)
- 方案 1:WSLg(WSL2 自带,优先推荐,不用额外装 Xserver)
[!NOTE]
Windows 11 新版本自带 WSLg;Windows10 需要手动升级 WSL 版本。
WSLg 原理:Windows 内置 Linux 图形转发,直接在 WSL 终端启动 rviz2,窗口自动弹出到 Windows 桌面。
检查 WSL 是否启用 WSLg
在 WSL 内执行:
echo $WSL_DISTRO_NAME echo $WSLg- 如果输出
1→ WSLg 已开启,直接可以跑 GUI 程序 - 如果空值:需要升级 WSL,在**Windows PowerShell (管理员)**执行:
wsl --update重启电脑。
测试可视化(WSL 终端)
# 先加载ros环境 source /opt/ros/jazzy/setup.bash # 启动rviz2 rviz2✅ 正常情况下,RViz 窗口直接弹出在 Windows 桌面。
测试小 demo(ROS2 自带样例)
ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key方案 2:Windows 安装独立 XServer(VcXsrv,老版本 Windows10 备选)
如果 WSLg 无法使用,用 VcXsrv:
- Windows 下载安装 VcXsrv
- 启动 VcXsrv,勾选
Disable access control - WSL 里面配置环境变量
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0 export LIBGL_ALWAYS_INDIRECT=0 # 永久写入bashrc echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0' >> ~/.bashrc echo 'export LIBGL_ALWAYS_INDIRECT=0' >> ~/.bashrc source ~/.bashrc然后再执行rviz2。
⚠️ 常见坑
- conda (base) 环境冲突你现在终端前面有
(base),conda 的 python 会干扰 ROS2。 临时关闭 conda:
conda deactivate建议:跑 ROS 的时候尽量不要开启 conda base 环境,容易出现库版本冲突、rqt 报错。
- 显卡加速(NVidia GPU,你有 cuda wsl) WSLg 自带 NVidia 支持,不需要额外配置,直接硬件加速 RViz、gazebo。
可以测试 glxinfo:
sudo apt install mesa-utils glxinfo | grep OpenGL能看到 NVIDIA 显卡信息就是 GPU 渲染成功。
- Gazebo 仿真(如果后续需要) Jazzy 的 Gazebo 是 Harmonic,WSLg 可以直接跑,但是会占用较多资源。