ESC
输入关键词搜索文章标题和内容

Win10搭建ROS2开发环境:WSL2完整配置指南

本文由 linuxROS 整理发布,首发于 linuxros.cn,转载请注明出处。

Win10搭建ROS2开发环境:WSL2完整配置指南

导读:想在Win10上优雅地开发ROS2?WSL2是最佳选择。本文详细介绍WSL2安装、ROS2配置、GUI显示、网络通信等核心步骤,手把手教你搭建完整的ROS2开发环境。


原理简析

WSL2(Windows Subsystem for Linux 2)是Windows原生Linux子系统,相比虚拟机更轻量、与Windows交互更便捷,是Win10上开发ROS2的最佳选择。

flowchart LR A[Win10] --> B[WSL2内核] B --> C[Ubuntu 22.04] C --> D[ROS2 Humble] D --> E[RViz2/Gazebo]

实操步骤

1. 安装WSL2

以管理员身份打开PowerShell,执行:

# 启用WSL和虚拟机平台
wsl --install

# 重启后自动安装Ubuntu 22.04
# 如需指定安装位置(D盘)
wsl --export Ubuntu D:\wsl\ubuntu22.tar
wsl --unregister Ubuntu
wsl --import Ubuntu D:\wsl\Ubuntu22 D:\wsl\ubuntu22.tar

验证安装:

wsl -d Ubuntu
uname -r  # 查看内核版本

2. 安装ROS2 Humble

# 设置语言环境
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# 添加ROS2软件源
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2.list'

# 安装ROS2桌面版
sudo apt update
sudo apt install ros-humble-desktop

# 安装构建工具
sudo apt install python3-colcon-common-extensions
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator

3. 配置开发工具

# 初始化rosdep
sudo rosdep init
rosdep update

# 创建工作空间
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build

4. 配置GUI显示(WSLg或X Server)

方案A:WSLg(推荐,Win11/Win10 21H2+)

# 直接使用,自动集成
export DISPLAY=:0
rviz2  # 直接运行

方案B:VcXsrv(Win10老版本)

来自 linuxros.cn · linuxROS
# 安装VcXsrv后,在Ubuntu中
echo 'export DISPLAY=:0' >> ~/.bashrc
source ~/.bashrc

5. 配置Windows文件访问

# Windows访问WSL文件
explorer.exe .

# WSL访问Windows文件
cd /mnt/d

# 或创建软链接方便开发
ln -s /mnt/d/ros2_projects ~/ros2_projects

6. 配置网络通信

# 在Windows PowerShell获取IP
hostname -I

# 在WSL中设置
echo 'export ROS_DOMAIN_ID=42' >> ~/.bashrc
echo 'export ROS_LOCALHOST_ONLY=0' >> ~/.bashrc
source ~/.bashrc

代码实现

Hello World示例

// ros2_ws/src/hello_world/src/talker.cpp
#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/string.hpp>

using namespace std::chrono_literals;

class Talker : public rclcpp::Node
{
public:
    Talker() : Node("talker")
    {
        publisher_ = this->create_publisher<std_msgs::msg::String>("chatter", 10);
        timer_ = this->create_wall_timer(1s, [this]() {
            auto msg = std_msgs::msg::String();
            msg.data = "Hello ROS2!";
            RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", msg.data.c_str());
            publisher_->publish(msg);
        });
    }

private:
    rclcpp::TimerBase::SharedPtr timer_;
    rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;
};

int main(int argc, char** argv)
{
    rclcpp::init(argc, argv);
    rclcpp::spin(std::make_shared<Talker>());
    rclcpp::shutdown();
    return 0;
}

编译配置

<!-- ros2_ws/src/hello_world/package.xml -->
<?xml version="1.0"?>
<package format="3">
  <name>hello_world</name>
  <version>0.1.0</version>
  <description>Hello World示例</description>
  <buildtool_depend>ament_cmake</buildtool_depend>
  <depend>rclcpp</depend>
  <depend>std_msgs</depend>
</package>
# ros2_ws/src/hello_world/CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
project(hello_world)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)

add_executable(talker src/talker.cpp)
ament_target_dependencies(talker rclcpp std_msgs)

install(TARGETS talker DESTINATION lib/${PROJECT_NAME})

ament_package()

编译运行

cd ~/ros2_ws
source /opt/ros/humble/setup.bash
colcon build --packages-select hello_world
source install/setup.bash
ros2 run hello_world talker

常见问题解决

Q1:ROS2节点无法发现?
A:配置网络环境变量,确保ROS_DOMAIN_ID一致,关闭防火墙或开放端口。

Q2:GUI显示黑屏?
A:检查DISPLAY变量配置,确认X Server运行,尝试export LIBGL_ALWAYS_INDIRECT=1。

Q3:colcon build失败?
A:检查依赖是否完整,运行rosdep install --from-paths src --ignore-src -r。


总结

WSL2是Win10开发ROS2的绝佳方案,安装配置虽有一定步骤,但完成后开发体验接近原生Linux。完成上述配置后,你就可以在Win10上愉快地进行SLAM仿真、Navigation导航、Gazebo机器人仿真了!

搞笑图片
(WSL2:我全都要.jpg)


字数:约1000字 | 完成日期:2026-04-23

版权声明

作者linuxROS
协议本作品采用 CC BY-NC-SA 4.0 许可协议:署名-非商业性使用-相同方式共享
关注欢迎关注微信公众号 linuxROS,获取更多机器人 / 嵌入式 / Linux 干货
返回首页