Windows WSL2 装 ROS 2 Humble 跑通 turtlesim

发布时间:2026/9/17 12:22:55
Windows WSL2 装 ROS 2 Humble 跑通 turtlesim 在 Windows 上折腾 ROS 2早几年是一件挺消耗耐心的事。要么装虚拟机忍受显卡直通和各种剪切板不同步要么划一块分区装双系统每次想跑个turtlesim都得重启一次机器。WSL2 出现之后这条路才算真正顺了——你可以在 Windows 上一边开着浏览器查文档一边在终端里ros2 run turtlesim turtlesim_node图形界面直接弹在桌面上文件和剪贴板还是互通的。这篇内容就围绕用 WSL 装 ROS 2 并跑通小海龟这一条主线把环境选型、WSL2 安装、ROS 2 Humble 部署、turtlesim 实操、故障排查和性能调优整条链路讲清楚。适合刚接触 ROS 2 的新手也适合手上只有一台 Windows 笔记本、想在本地把开发环境先搭起来再考虑上真机的同学。文中所有命令我都在 Ubuntu 22.04 ROS 2 Humble 的组合上验证过参数和坑点会一并交代。1. 方案选型为什么是 WSL2 而不是虚拟机或双系统1.1 四种跑法的真实体验对比很多人一上来就问我该用哪种方式学 ROS 2这个问题没有标准答案但有一张很实在的对照表。我把这几年实际用过的四种方式拉出来横向比一比注意这里的评价维度都是日常开发里真正会疼的地方不是跑分。维度WSL2传统虚拟机双系统纯 Docker启动速度秒级随开随用分钟级需要重启整机秒级图形界面rviz2/GazeboWSLg 直接显示接近原生需要虚拟显卡3D 性能差原生最好需要额外做 X11 转发与 Windows 文件互通双向直接访问靠共享文件夹慢需要挂载分区需要挂载卷USB 设备雷达、相机需要 usbipd 转发可直通配置麻烦原生支持需要映射设备资源占用动态可回收固定占用吃内存只跑一个系统较低学习成本中中低但折腾中高结论很明确入门阶段、以学概念和跑仿真为主WSL2 的性价比最高。它的本质是在 Hyper-V 上跑一个轻量级的 Linux 虚拟机微软做了深度裁剪和集成所以启动快、内存还能回收。等到你需要接真实硬件、跑长时间 SLAM 建图再考虑双系统或者一台独立的 Ubuntu 主机。虚拟机方案现在最大的问题是 3D 加速。rviz2 和 Gazebo 对 OpenGL 有要求虚拟机里那套虚拟显卡驱动经常出现花屏、帧率掉到个位数的情况体验很劝退。双系统的问题不在性能在于切换成本——你写代码时想查个东西重启一次机器思路就断了。1.2 WSL2 到底给了你什么又拿走了什么先把机制说清楚后面踩坑时才知道往哪查。WSL2 不是模拟层它跑的是真正的 Linux 内核由微软编译维护跑在一个经过优化的 Hyper-V 虚拟机里。这意味着系统调用是真的fork、epoll、mmap全都是原生语义所以 ROS 2 这种重度依赖多线程和共享内存的框架跑起来没毛病。文件系统分两块。Linux 侧的根目录放在一个ext4.vhdx虚拟磁盘里性能接近原生Windows 盘挂在/mnt/c、/mnt/d下面走的是 9p 协议新版本已切到 virtiofs跨系统调用开销大小文件随机读写能慢好几倍。网络默认是 NAT 模式。WSL 里能访问外网但外部设备想主动连进来需要额外配置。这一点对 ROS 2 的 DDS 发现机制影响很大后面单独讲。图形界面靠 WSLg它内置了 Wayland 和 XWayland 服务Linux 程序画出来的窗口会以原生窗口的形式出现在 Windows 桌面上剪贴板、输入法、高分屏缩放都是通的。被拿走的部分也要心里有数。默认情况下 WSL2 看不到 USB 设备插上激光雷达、RealSense 相机Linux 侧是没有/dev/ttyUSB0或者/dev/video0的得用usbipd-win做转发。另外默认没有 systemd有些服务型程序起不来不过新版本可以直接在配置文件里打开。知道边界在哪就不会在错误的方向上浪费时间。注意如果你的目标只是跟着教程跑一遍小海龟、理解话题和服务WSL2 完全够用不需要为 USB 的事情焦虑。等到真的要接硬件再回来处理转发。2. 装 WSL2 和 Ubuntu 22.04把地基打正2.1 开工前的五项检查这一步很多人跳过然后卡在虚拟化未启用上折腾半天。花两分钟确认下面几件事能省掉后面几小时。系统版本。Win10 需要 2004 版本及以上内部版本号 19041 起Win11 全版本都行。运行winver看一眼或者用systeminfo | findstr /B /C:OS Name /C:OS Version。CPU 虚拟化。任务管理器 → 性能 → CPU右下角看虚拟化是否为已启用。如果是已禁用得进 BIOS/UEFI 打开 Intel VT-x 或者 AMD-V不同主板叫法不一样通常在 Advanced 或 CPU Configuration 里。磁盘空间。Ubuntu 基础系统加 ROS 2 桌面版装完大概 8 到 10 GB再算上编译缓存和仿真资源留 40 GB 空闲比较稳。虚拟磁盘是动态增长的别卡着边。内存。8 GB 是底线16 GB 舒服。WSL2 默认最多能吃掉宿主机一半内存后面会用.wslconfig限制。Windows 功能。管理员 PowerShell 里执行dism /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux和把最后的VirtualMachinePlatform也查一遍确认状态是已启用。新版wsl --install会自动开但企业环境里可能被策略拦掉。2.2 一条命令和它的四种失败姿势理想的路径就一条命令wsl --install -d Ubuntu-22.04-d指定发行版很关键。不带这个参数时系统会装默认版本而默认版本随 WSL 更新会变新版本可能给到你 Ubuntu 24.04。ROS 2 的版本和 Ubuntu 是强绑定的22.04 对应 Humble24.04 对应 Jazzy。既然目标是 Humble 这套生态最成熟、资料最多的组合就明确指定 22.04别让系统替你决定。装完之后做几个常规操作wsl --set-default-version 2 wsl --list --verbose wsl --update第二条能看到已装发行版和它的 WSL 版本一定要确认VERSION那一列是2。如果是1用wsl --set-version Ubuntu-22.04 2转过来WSL1 不支持完整系统调用ROS 2 跑不起来。现在说失败姿势这几种我都遇到过第一种提示你的 WSL 版本太旧英文原话是your version of windows subsystem for linux (wsl) is too old。这是内核组件没跟上执行wsl --update即可。如果卡在下载不动加--web-download走网页下载通道绕开 Microsoft Store 的分发链路通常能救回来。第二种wsl --install卡在下载很久不动。这是从应用商店拉发行版镜像网络状况不好时确实慢。两个办法一是改用wsl --install -d Ubuntu-22.04 --web-download二是直接从商店手动安装 Ubuntu 22.04或者下载离线的发行版包再用wsl --import导入。离线导入的方式值得记一下它同时也是环境备份的手段# 导出做个干净环境的快照 wsl --export Ubuntu-22.04 D:\wsl\ros2-clean.tar # 导入到指定目录 mkdir D:\wsl\ros2-humble wsl --import ros2-humble D:\wsl\ros2-humble D:\wsl\ros2-clean.tar --version 2这个操作的价值在于ROS 2 环境装崩了、乱改配置改坏了你可以三分钟回滚到一个干净状态不用重装系统。我习惯在装完 ROS 2、跑通小海龟之后立刻导出一次后面折腾出问题就回滚。第三种企业策略禁用应用商店。表现是命令报权限或者 0x80070005 之类的错误。这种情况走离线包 wsl --import最省事。也可以用wsl --install --no-distribution只装 WSL 组件发行版自己想办法导入。第四种报0x800701bc。这是缺 WSL2 的 Linux 内核更新包去微软官方下载wsl_update_x64.msi装上再wsl --set-default-version 2就好。这个错误在 Win10 上出现的频率比 Win11 高得多。2.3 首次进入系统后的十分钟初始化第一次进 Ubuntu开始菜单里点 Ubuntu 22.04或者 PowerShell 里敲wsl会让你设用户名和密码。这里的密码输入时终端不显示任何字符是正常的不是卡住了盲打回车即可。进去之后按顺序做这几件事# 1. 换软件源国内网络下这一步能省掉大量等待 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s//.*archive.ubuntu.com//mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list sudo apt update sudo apt upgrade -y # 2. 设置时区 sudo timedatectl set-timezone Asia/Shanghai timedatectl # 3. 装基础工具 sudo apt install -y curl wget git build-essential python3-pip时钟同步这件事必须单独提。WSL2 虚拟机在宿主机休眠、长时间挂起之后系统时间会漂移症状是apt update报Release file is not valid yet或者 TLS 证书校验失败。原因是宿主机时间跳了虚拟机的时钟没跟上。解决办法sudo hwclock -s如果这条不行在 PowerShell 里wsl --shutdown再重新进重启时会自动同步。这个坑很典型很多人看到证书错误会误以为是网络问题其实一条命令就解决了。接下来配置两个文件这是让 WSL 真正好用的关键。第一个是/etc/wsl.conf用来打开 systemd 和调整互操作行为[boot] systemdtrue [interop] enabledtrue appendWindowsPathfalsesystemdtrue让 WSL 支持服务管理后面跑一些需要守护进程的工具会用到。appendWindowsPathfalse是把 Windows 的 PATH 从 Linux 环境里去掉好处是 shell 启动明显变快、which查找不会被一堆 Windows 路径干扰代价是不能再直接调用 Windows 的 exe但对我们跑 ROS 2 没影响性价比很高。改完在 PowerShell 里wsl --shutdown重启生效。第二个是 Windows 侧的C:\Users\你的用户名\.wslconfig用来限制资源[wsl2] memory8GB processors6 swap4GB networkingModemirrored [experimental] autoMemoryReclaimgradualmemory限制最大内存占用防止 WSL 把宿主机吃光processors限制 CPU 核心数编译大工程时可以适当调高autoMemoryReclaimgradual让 WSL 在空闲时把内存还给 Windows这是个很实用的新特性。networkingModemirrored是镜像网络模式能显著改善网络互通和组播支持对后面 ROS 2 的 DDS 发现很有帮助——但它需要 Win11 22H2 以上的版本Win10 上不支持写进去不生效也不报错心里有数就行。3. ROS 2 安装版本矩阵与 apt 全流程3.1 版本对应关系选错了后面全是坑ROS 2 和 Ubuntu 的版本是硬绑定的这个关系不能凭感觉。Ubuntu 22.04 配 ROS 2 Humble这是目前机器人行业里装机量最大、第三方包支持最全的组合Humble 的官方维护到 2027 年 5 月足够你学完整个体系。Ubuntu 24.04 对应 Jazzy功能更新但生态还在追赶遇到某个包没有对应版本会很难受。UbuntuROS 2 版本状态建议20.04Foxy已停止维护不建议新项目使用22.04HumbleLTS维护至 2027-05首选24.04JazzyLTS生态追赶中尝鲜可以生产慎重所以前面强调装Ubuntu-22.04而不是默认发行版就是为了这一步。如果你已经装成了 24.04 又不想重来也可以装 Jazzy命令里把humble换成jazzy即可流程完全一致。3.2 用官方 apt 源安装逐条解释每条命令在干什么网上流传的一键脚本不少但第一次装强烈建议手敲一遍因为你要理解依赖链条出问题时才知道查哪里。等环境熟了再考虑脚本加速。第一步准备基础工具并启用 universe 仓库sudo apt update sudo apt install -y software-properties-common curl sudo add-apt-repository universe -yuniverse仓库里有不少 ROS 2 依赖的第三方库不开会缺包。第二步导入 ROS 2 的 GPG 签名密钥sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \ -o /usr/share/keyrings/ros-archive-keyring.gpg这一步的作用是让 apt 能验证从 ROS 源下载的包没有被篡改。注意密钥路径是/usr/share/keyrings/早期教程写的是/usr/share/keyrings/ros-archive-keyring.gpg之外的路径新版已经统一如果照抄老教程可能出现签名校验失败。第三步把 ROS 2 的软件源写进 apt 配置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这条命令里有两个自动取值dpkg --print-architecture会输出amd64或arm64. /etc/os-release echo $UBUNTU_CODENAME会输出jammy22.04 的代号。用变量代替硬编码能避免手抄错误也是官方推荐的写法。第四步更新并安装sudo apt update sudo apt upgrade -y sudo apt install -y ros-humble-desktop ros-dev-tools这里必须提醒一句sudo apt upgrade不要跳过。ROS 2 的二进制包对系统库版本有要求如果长期没更新过系统会出现依赖冲突或者装完运行时报共享库缺失。我遇到过librcl加载失败的案例最后就是靠一次 upgrade 解决的。ros-humble-desktop是桌面完整版包含 rviz2、rqt、demo 节点和教程包体积大概 2 GB 左右对学习来说最省心。如果你磁盘实在紧张可以选ros-humble-ros-base只含核心通信库没有 GUI 工具但那样跑不了 rviz2后面学可视化还得补装。ros-dev-tools是一套开发辅助工具包含colcon构建工具、rosdep依赖管理器等写自己的功能包时是刚需。3.3 环境变量、rosdep 与工作空间装完还不能直接用得把环境变量加载进来echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc验证一下ros2 --help能打出一大片命令列表就说明通了。如果报ros2: command not found八成是没 source 或者~/.bashrc没写对可以先手动source /opt/ros/humble/setup.bash再试。接着初始化 rosdep它的作用是自动解析并安装功能包的系统依赖后面从 GitHub 克隆别人的项目时能省很多事sudo rosdep init rosdep updaterosdep update会去拉取索引文件如果卡住多试几次或者检查网络代理设置。这一步失败不影响跑小海龟可以稍后再处理。最后建一个自己的工作空间mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build source install/setup.bashcolcon build在空工作空间上也会执行一遍把目录结构初始化好。注意每次编译完都要source install/setup.bash否则ros2 run找不到你自己写的包——这是新手最容易犯的错误之一建议直接写进~/.bashrc里。关于一键安装脚本这类脚本本质上就是把上面几条命令打包确实省事。但建议至少在第一次安装时手动走一遍搞清楚每一步做了什么。用别人的脚本出问题时你连排查的入口都没有。4. 小海龟上位turtlesim 完整实操4.1 两个终端的分工与启动顺序turtlesim 是 ROS 2 的Hello World但它一点都不简陋——它同时演示了话题、服务、参数、动作四大通信机制把这只乌龟玩透ROS 2 的核心概念就掌握了一大半。开两个终端窗口Windows Terminal 里可以用CtrlShiftT新开标签或者在 WSL 里用tmux分屏我更推荐后者因为在一个窗口里上下分屏看日志非常舒服终端 A启动仿真节点source /opt/ros/humble/setup.bash ros2 run turtlesim turtlesim_node屏幕上会弹出一个浅蓝色背景的窗口中间趴着一只小乌龟。这个窗口是 WSLg 渲染出来的可以自由拖动、缩放和 Windows 原生程序没区别。终端 B启动键盘遥控source /opt/ros/humble/setup.bash ros2 run turtlesim turtle_teleop_key终端会提示操作方式方向键控制前进后退和左右转GBVCDERT这几个键让乌龟转向指定的绝对角度F取消旋转。关键点在于必须让终端 B 保持焦点键盘输入才会被接收。如果你在浏览器里点了一下再回来按方向键没反应就是这个原因。4.2 隔着屏幕看通信话题机制的真实面貌乌龟能动起来背后是这么一条链路turtle_teleop_key节点把按键转换成速度指令发布到/turtle1/cmd_vel这个话题上turtlesim_node节点订阅这个话题收到指令后计算乌龟的新位置再把它发布到/turtle1/pose上。再开第三个终端我们来亲眼看看这个过程ros2 node list # /teleop_turtle # /turtlesim ros2 topic list # /parameter_events # /rosout # /turtle1/cmd_vel # /turtle1/color_sensor # /turtle1/pose ros2 topic echo /turtle1/pose最后一个命令会滚动输出乌龟当前的位置和姿态包含x、y、theta以及线速度、角速度。这时候你在终端 B 按几下方向键能明显看到linear_velocity的数值跳动。这种操作一边、观察另一边的方式比看任何图解都直观。想看话题的数据结构定义ros2 topic info /turtle1/cmd_vel ros2 interface show geometry_msgs/msg/TwistTwist这个结构是 ROS 2 里最常用的速度表示由linear和angular两组三维向量组成。记住它后面做移动机器人控制离不开。还可以看节点之间的连接拓扑ros2 topic info /turtle1/cmd_vel --verbose会列出发布者和订阅者以及它们用的 QoS服务质量配置——这是 ROS 2 相比 ROS 1 的重要变化后面调试通信问题时经常要回头看这一项。4.3 用命令行直接给小乌龟下指令不依赖遥控节点我们也可以手动往话题里灌数据。这是理解发布/订阅最直接的方式ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist \ {linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}--rate 1表示每秒发一次。这条指令让乌龟以 2.0 的线速度和 1.8 的角速度运动它会走出一段弧线。为什么必须持续发送因为 turtlesim 的仿真模型是指令驱动的——它只在一帧内记住当前速度如果没有新的指令进来速度会归零。所以这里用--rate保持持续发布而不是发一次就完事。如果想让它沿直线走ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist \ {linear: {x: 3.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}小乌龟撞到墙壁会停下来默认行为想让它继续动先把它挪回中心ros2 service call /reset std_srvs/srv/Empty再来看服务。服务和话题的区别是话题是持续的流服务是一次性的请求-响应。比如清除轨迹ros2 service list ros2 service call /clear std_srvs/srv/Empty窗口里刚才画出来的线一下子没了。再比如生成第二只乌龟ros2 service call /spawn turtlesim/srv/Spawn \ {x: 5.5, y: 9.0, theta: 0.2, name: turtle2}屏幕上会多出一只新乌龟名字叫turtle2。这时候话题列表里会多出/turtle2/cmd_vel和/turtle2/pose你可以单独控制它这就是 ROS 2 命名空间机制的直观体现。参数部分也顺带试一下ros2 param list /turtlesim ros2 param get /turtlesim background_r ros2 param set /turtlesim background_r 150把背景的红色分量从默认值改到 150能看到窗口背景立刻变深。参数系统的价值在于不改代码就能调整节点行为实际项目里常用来在运行时调 PID 系数或者传感器阈值。最后是动作action。动作适合耗时较长、有中间反馈、可取消的任务turtlesim 里的绝对角度旋转就是一个典型例子ros2 action list ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute \ {theta: 1.57} --feedback加了--feedback能看到旋转过程中的实时进度这是动作和服务的核心差异。理解这三者的适用场景比记住命令本身重要得多通信机制典型场景是否有反馈是否可取消话题 Topic传感器数据流、速度指令无不适用服务 Service清屏、生成实体、查询状态无否动作 Action导航到目标点、旋转到指定角度有是参数 Parameter运行时配置如 PID 系数不适用不适用4.4 在 VS Code 里用 WSL 写代码顺便把字体调舒服命令行玩明白之后下一步是写自己的节点。这时候 VS Code 的 Remote - WSL 扩展是最省心的选择。在 WSL 终端里进到工作空间目录执行cd ~/ros2_ws code .第一次会提示安装 VS Code Server装好之后 Windows 侧的 VS Code 就直连到 Linux 文件系统了。左侧资源管理器里看到的是真实的 Linux 目录终端默认就是 WSL 的 shell改完代码保存、编译、运行全在一个界面里完成非常顺。安装的扩展要装到WSL 侧这是个细节。装了 Remote - WSL 之后扩展面板里每个扩展会有在 WSL 中安装的按钮Python、C/C、CMake Tools 这些都得在 WSL 侧装一份否则在远程会话里不生效。字体这块纯英文等宽字体在中文注释下会很难看——中文会被拉得很宽或者挤在一起。中英混排的等宽字体目前体验最好的是更纱黑体Sarasa Mono SC系列它把中文和英文的宽度比做成了严格的 1:2表格和注释对得整整齐齐。再搭配一个带连字的英文等宽字体做主字体代码可读性会明显提升。在 VS Code 的settings.json里这样配置{ editor.fontFamily: JetBrains Mono, Sarasa Mono SC, Cascadia Code, Consolas, monospace, editor.fontLigatures: true, editor.fontSize: 14, editor.lineHeight: 1.6, terminal.integrated.fontFamily: JetBrains Mono, Sarasa Mono SC, monospace, terminal.integrated.lineHeight: 1.2 }字体回退链的原理是从前到后找系统里存在的那一个。JetBrains Mono 没有中文字形遇到中文时自动落到下一级的更纱黑体这样英文用连字、中文用等宽两全其美。行高设到 1.5 到 1.6 之间长时间看代码眼睛会舒服很多这一点在 Windows 高分屏上尤其明显。5. 踩坑实录WSL 与 ROS 2 的典型故障排查5.1 WSL 层的五个高频问题问题一wsl --install下载慢或者卡住。加--web-download参数换下载通道或者手动从商店安装发行版。如果公司网络有出口限制走离线包加wsl --import这条路最稳。问题二磁盘空间莫名暴涨。WSL2 的ext4.vhdx只增不减删了文件空间也不会自动还给 Windows。收缩方法先在 PowerShell 里wsl --shutdown然后找到虚拟磁盘文件默认在%LOCALAPPDATA%\Packages\...下或者你导入时指定的目录用diskpart的compact vdisk命令处理。更省事的办法是把发行版导出再导入一次重新生成一个紧凑的磁盘。问题三编译或者跑仿真时整个 Windows 卡顿。内存被吃满了。检查.wslconfig里的memory限制如果值超过物理内存的一半就调小比如 16 GB 机器设 6 GB 或者 8 GB。同时确认autoMemoryReclaim已经开启。问题四文件在/mnt/c下操作特别慢。这是跨文件系统的天然开销。所有 ROS 2 工作空间、编译产物都应该放在~/下面不要放在 Windows 盘里。如果确实需要和 Windows 共享代码把仓库放在 Linux 侧用 VS Code 的 Remote 功能去访问而不是反过来。问题五时间不对导致 apt 报错。前面说过的sudo hwclock -s或者wsl --shutdown重启。5.2 ROS 2 层的六个典型故障ros2: command not found。九成是没 source。执行source /opt/ros/humble/setup.bash或者检查~/.bashrc里那行是不是被写到了别的用户目录下。ros2 run找不到自己编译的包。编译完忘记 sourceinstall/setup.bash。注意顺序先 source 底层环境再 source 工作空间反过来会被覆盖。启动节点报共享库缺失。通常是系统没更新到位sudo apt update sudo apt upgrade -y走一遍再sudo apt install -f补依赖。话题有发布者但没有订阅者或者反过来。先ros2 topic info 话题名 --verbose看两端的 QoS 配置是否匹配。ROS 2 的 QoS 不兼容是通信静默失败最常见的原因尤其是历史深度和可靠性策略设置不一致时。另外可以试试export ROS_LOCALHOST_ONLY1限制在本地回环能排除掉跨网络发现带来的干扰。节点列表空空如也。试试重启守护进程ros2 daemon stop ros2 daemon start守护进程缓存了节点发现信息有时候会进入不一致状态重启一下就好。图形窗口不显示或者报无法连接显示服务器。Win11 和较新的 Win10 有 WSLgecho $DISPLAY应该能输出类似:0的值。如果是空的说明 WSLg 没工作需要wsl --update。实在不行退回到手动起一个 X Server 再export DISPLAY:0的老办法但那只在旧版本上才需要。5.3 排查速查表现象大概率原因处理动作WSL 版本过旧提示内核组件未更新wsl --update或加--web-download安装报 0x800701bc缺内核更新包装wsl_update_x64.msiapt 报 Release 文件未生效时钟漂移sudo hwclock -sros2 命令找不到未 source 环境source 底层环境再 source 工作空间话题通信静默失败QoS 不匹配或网络发现异常查--verbose设ROS_LOCALHOST_ONLY1节点列表为空守护进程状态异常ros2 daemon stop ros2 daemon start图形窗口不弹WSLg 未就绪wsl --update检查$DISPLAY编译奇慢项目放在/mnt/c移到~/下6. 让这套环境真正好用调优与下一步6.1 三处优化体验差别很大文件系统是第一优先。前面反复强调过所有代码和构建产物放 Linux 侧。这条带来的性能差异在有大量头文件和小文件的项目里能到数倍不是心理作用。终端工具值得花时间。Windows Terminal 里把默认配置文件设成 Ubuntu字体用带连字的等宽字体行高调到 1.2 左右背景透明度开到 90%。做几个快捷的标签页布局一个跑节点、一个跑 topic echo、一个留给编译。这套配置调好之后日常开发效率的提升非常明显比换一台电脑还管用。GPU 加速可以考虑。WSL2 支持把宿主机的显卡透传给 Linux 侧用于计算装好 Windows 侧的显卡驱动注意不要在 Linux 里再装一遍驱动会冲突然后在 Ubuntu 里装 CUDA 工具链即可。对跑视觉 SLAM、深度学习推理会有帮助。不过纯学 turtlesim 和基础概念阶段用不上等你开始跑仿真环境和视觉算法再折腾。6.2 从小海龟到真实项目路怎么走小海龟跑通只是起点接下来这条路径我建议按顺序走先装 rviz2 和 rqt用ros2 run rviz2 rviz2和ros2 run rqt_graph rqt_graph把可视化工具熟悉起来。rqt_graph 能看到节点和话题连成的图对理解大型系统的结构非常有用。然后装 Gazebo 相关包跑一个带机器人模型的仿真环境。这一步会开始考验显卡性能也是 WSL2 和虚拟机方案拉开差距的地方。再往后就是接硬件。前面提过 WSL2 默认看不到 USB 设备需要装usbipd-win把设备转发进来# Windows 侧管理员权限 usbipd list usbipd bind --busid 设备ID usbipd attach --wsl --busid 设备ID转发成功后Linux 侧就能看到对应的设备节点了。这一步在接激光雷达、串口底盘、USB 相机时都会用到。另外跑 micro-ROS 把单片机接进 ROS 2 的通信网络里也是个很有意思的方向能把你的开发板变成真正的 ROS 2 节点。关于 DDS 中间件默认是 Fast DDS通信量大、跨机器场景下可以试试切换实现export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp不同实现的性能和稳定性表现不一样具体选哪个要在自己的场景里实测。我在实际使用中最大的体会是WSL2 这套环境的稳定性取决于你有没有在最初就把配置文件写对。.wslconfig里限制好内存/etc/wsl.conf里开好 systemd、关掉 Windows 路径注入装完后立刻导出一次快照——这三件事花不到半小时但能让你后面半年的折腾省掉一大堆环境又崩了的烦躁。另外再分享一个小习惯每次要装什么新东西之前先wsl --export备份一次成本几秒钟回滚的时候你会感谢自己。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询