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