当前位置: 首页 > news >正文

Win11 WSL2 + Ubuntu 18.04:手把手教你配置ROS开发环境并跑通第一个rviz

Win11 WSL2 + Ubuntu 18.04:从零搭建ROS开发环境的完整实践指南

在Windows系统上进行机器人操作系统(ROS)开发一直是个令人头疼的问题。传统方案要么依赖性能损耗严重的虚拟机,要么需要复杂的双系统切换。而Windows Subsystem for Linux 2(WSL2)的出现彻底改变了这一局面——它让我们能在Windows 11上获得接近原生性能的Linux环境,完美支持ROS开发。本文将带你从零开始,在WSL2中配置Ubuntu 18.04和ROS Melodic,最终实现rviz可视化工具的顺利运行。

1. 环境准备与WSL2基础配置

在开始ROS之旅前,我们需要确保Windows 11系统已做好充分准备。WSL2作为微软推出的第二代Linux子系统,相比第一代采用了真正的Linux内核,提供了完整的系统调用兼容性,这正是运行ROS所必需的。

首先检查系统版本:通过Win+R运行winver命令,确认系统版本为Windows 11 21H2或更高。然后以管理员身份打开PowerShell,执行以下命令启用必要功能:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后,将WSL2设为默认版本:

wsl --set-default-version 2

常见问题排查

  • 如果遇到"WSL 2 requires an update to its kernel component"错误,需要下载并安装 WSL2 Linux内核更新包
  • 对于BIOS中未启用虚拟化的情况,需进入BIOS设置开启Intel VT-x或AMD-V选项

2. Ubuntu 18.04 LTS安装与优化

ROS Melodic官方推荐在Ubuntu 18.04上运行,这也是我们选择该版本的原因。安装Ubuntu 18.04到WSL2有两种主要方式:

2.1 通过Microsoft Store安装

  1. 打开Microsoft Store,搜索"Ubuntu 18.04"
  2. 点击获取并等待下载完成
  3. 启动应用,等待初始化并设置用户名和密码

2.2 通过命令行安装

wsl --install -d Ubuntu-18.04

安装完成后,建议执行以下优化步骤:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git

WSL2磁盘性能优化: 由于WSL2使用虚拟硬盘,频繁的IO操作可能影响性能。可以将项目文件存放在Windows文件系统中,通过/mnt/c访问,或考虑以下优化:

# 在/etc/wsl.conf中添加以下内容 [automount] options = "metadata,umask=22,fmask=11"

3. ROS Melodic完整安装指南

现在进入核心环节——ROS安装。我们将采用最稳定的Melodic版本,这是长期支持(LTS)版本,维护至2023年5月。

3.1 基础环境配置

首先设置软件源:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update

3.2 完整安装ROS

推荐安装桌面完整版,包含ROS、rqt、rviz等常用工具:

sudo apt install -y ros-melodic-desktop-full

安装完成后,初始化rosdep是关键步骤。由于网络问题,这里提供两种可靠方案:

方案一:使用国内镜像源

sudo rosdep init rosdep update --include-eol-distros

方案二:离线方式(当方案一不可用时)

git clone https://gitee.com/ros/rosdistro.git ~/rosdistro sudo cp -r ~/rosdistro/rosdep/sources.list.d /etc/ros/rosdep/ sudo sed -i "s|https://raw.githubusercontent.com|file://$HOME/rosdistro|g" /etc/ros/rosdep/sources.list.d/20-default.list rosdep update

3.3 环境变量配置

将以下内容添加到~/.bashrc文件末尾:

source /opt/ros/melodic/setup.bash echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

然后执行:

source ~/.bashrc

4. 验证ROS环境与rviz初体验

安装完成后,让我们通过实际运行来验证环境是否配置成功。

4.1 启动ROS核心服务

在新终端中运行:

roscore

正常启动后,你应该看到类似以下输出:

... logging to /home/username/.ros/log/xxxxx started core service [/rosout]

4.2 运行rviz可视化工具

另开一个终端,执行:

rosrun rviz rviz

首次启动rviz可能需要一些时间加载。成功启动后,你将看到灰色的3D视图窗口,这表示ROS环境已正确配置。

rviz界面速览

  • 左侧面板:显示选项(Displays)和全局选项(Global Options)
  • 中间区域:3D可视化视图
  • 底部状态栏:显示坐标信息和帧率
  • 工具栏:提供各种交互工具

4.3 常见问题解决

问题1:启动rviz时报错"Could not load the Qt platform plugin xcb"

解决方案:

sudo apt install -y libxcb-xinerama0 export QT_DEBUG_PLUGINS=1

问题2:WSL2中rviz窗口显示异常

尝试以下命令:

export LIBGL_ALWAYS_INDIRECT=1 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0

5. 开发环境进阶配置

为了让ROS开发更加高效,我们还需要配置一些常用工具和开发环境。

5.1 创建工作空间

标准的ROS开发通常从创建工作空间开始:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash

5.2 安装常用工具

sudo apt install -y python-rosinstall python-rosinstall-generator python-wstool sudo apt install -y python-catkin-tools

5.3 配置VS Code开发环境

  1. 在Windows端安装VS Code
  2. 安装"Remote - WSL"扩展
  3. 在Ubuntu终端中输入code .即可在WSL环境中启动VS Code

推荐扩展

  • ROS (Microsoft)
  • C/C++
  • CMake Tools
  • Python

5.4 网络配置优化

WSL2与Windows主机的网络通信需要通过特殊IP进行。获取WSL2 IP地址:

ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

在Windows端使用此IP与WSL2中的ROS节点通信。

6. ROS基础概念与实践

为了帮助初学者更好地理解ROS,让我们通过一个简单示例来演示ROS的核心概念。

6.1 创建第一个ROS包

cd ~/catkin_ws/src catkin_create_pkg beginner_tutorials std_msgs rospy roscpp cd ~/catkin_ws && catkin_make

6.2 编写简单发布者

创建src/talker.cpp文件:

#include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char **argv) { ros::init(argc, argv, "talker"); ros::NodeHandle n; ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000); ros::Rate loop_rate(10); while (ros::ok()) { std_msgs::String msg; msg.data = "hello world"; chatter_pub.publish(msg); ros::spinOnce(); loop_rate.sleep(); } return 0; }

6.3 编写简单订阅者

创建src/listener.cpp文件:

#include "ros/ros.h" #include "std_msgs/String.h" void chatterCallback(const std_msgs::String::ConstPtr& msg) { ROS_INFO("I heard: [%s]", msg->data.c_str()); } int main(int argc, char **argv) { ros::init(argc, argv, "listener"); ros::NodeHandle n; ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); ros::spin(); return 0; }

6.4 编译并运行示例

修改CMakeLists.txt文件后执行:

cd ~/catkin_ws && catkin_make

在三个不同终端中分别运行:

roscore rosrun beginner_tutorials talker rosrun beginner_tutorials listener

你应该能在listener终端中看到"hello world"消息不断输出。

7. 可视化工具深度探索

rviz作为ROS的核心可视化工具,功能远比初次启动时看到的丰富。让我们深入了解其强大功能。

7.1 rviz基本配置

  1. 添加显示类型:点击左下角"Add"按钮,尝试添加"Grid"、"TF"等显示类型
  2. 保存配置:通过"File"→"Save Config"保存当前布局
  3. 视角控制
    • 左键拖动:旋转视角
    • 滚轮拖动:平移视角
    • 滚轮滚动:缩放视角

7.2 常用插件介绍

插件名称功能描述典型用途
LaserScan显示激光雷达数据SLAM、导航
PointCloud2显示点云数据3D感知
Path显示路径规划结果自主导航
Marker显示各种标记调试可视化

7.3 实战:可视化虚拟数据

创建一个简单的发布者,发布可视化标记:

#!/usr/bin/env python import rospy from visualization_msgs.msg import Marker def main(): rospy.init_node('visualization_node') pub = rospy.Publisher('visualization_marker', Marker, queue_size=10) marker = Marker() marker.header.frame_id = "base_link" marker.type = Marker.SPHERE marker.action = Marker.ADD marker.scale.x = 0.2 marker.scale.y = 0.2 marker.scale.z = 0.2 marker.color.a = 1.0 marker.color.r = 1.0 marker.color.g = 0.0 marker.color.b = 0.0 marker.pose.orientation.w = 1.0 marker.pose.position.x = 0 marker.pose.position.y = 0 marker.pose.position.z = 0 rate = rospy.Rate(10) while not rospy.is_shutdown(): marker.header.stamp = rospy.Time.now() pub.publish(marker) rate.sleep() if __name__ == '__main__': try: main() except rospy.ROSInterruptException: pass

在rviz中添加"Marker"显示类型,订阅/visualization_marker话题,即可看到红色球体。

8. 性能优化与实用技巧

经过实际使用,我发现以下几个技巧能显著提升WSL2中ROS的开发体验:

  1. 内存管理:WSL2默认会占用大量内存。在%UserProfile%\.wslconfig中添加:
[wsl2] memory=4GB swap=2GB
  1. 图形性能:对于3D应用,设置以下环境变量:
export LIBGL_ALWAYS_SOFTWARE=1 export WSL2_GUI_APPS_ENABLED=1
  1. 文件系统:避免在Linux文件系统中进行大量IO操作,将项目文件放在Windows文件系统中通过/mnt/c访问

  2. 启动速度:使用wsl --shutdown完全关闭WSL2实例,可以解决一些性能下降问题

  3. 备份配置:定期导出WSL2实例:

wsl --export Ubuntu-18.04 ubuntu_backup.tar
http://www.gsyq.cn/news/1424219.html

相关文章:

  • 2026年5月留香沐浴露品牌推荐:十大排名运动后留香评测专业价格 - 品牌推荐
  • Sysinternals Autoruns实战:从“计划任务”里挖出潜伏的挖矿脚本(附排查思路)
  • 基于大语言模型的生成式智能体架构设计与应用实践
  • 2026年5月留香沐浴露品牌推荐:十大专业评测持久留香价格适用场景 - 品牌推荐
  • Hugging Face数据集实战指南:10大精选与NLP模型微调全流程
  • 2026年节日送礼毛绒玩具怎么选:五家优选品牌深度解析 - 科技焦点
  • 2026年5月工控主板厂家推荐:口碑好的产品解决产线频繁死机导致停产 - 品牌推荐
  • Kotlin 泛型
  • BI上线沦为摆设无价值,智能BI如何落地实效不做面子工程?
  • 2026年5月30全国沙发翻新优选匠阁、御匠、锦修上门换皮换布全解析,三大连锁品牌推荐靠谱哪家好?价格和方式 - 卓一科技
  • E图提取技术与e-boost框架在EDA中的高效应用
  • 2026年节日限定盲盒毛绒玩具怎么挑:五家优选品牌解析 - 科技焦点
  • 并网逆变器开发实战:从PR控制器到GaN功率级的设计与爆炸复盘
  • 告别CentOS思维:在银河麒麟V10上用源码编译PHP的正确姿势
  • 如何选择家用SUV车型?2026年5月推荐TOP5对比家庭出行案例评测价格 - 品牌推荐
  • 十分钟掌握暗黑2存档修改:d2s-editor终极指南让游戏体验焕然一新
  • 从Simulink仿真到SVM分类:电力故障数据生成与模型部署避坑指南
  • 2026年薪酬设计公司推荐:这几家靠谱又专业
  • Claude调用OR-Tools求解器的隐藏API文档(内部泄露版):5个未公开参数让求解速度提升3.2倍
  • 2026年齿轮减速机选型评测:冷却塔减速电机、冷却塔永磁电机、冷却塔电机、圆柱齿轮减速电机、永磁减速机、辊道减速机电机选择指南 - 优质品牌商家
  • 手把手教你用MMDetection 3.x复现EfficientDet的BiFPN模块(附代码逐行解析)
  • 中小型企业核心层网络改造实录:如何用VRRP+MSTP+OSPF解决单点故障和环路问题?
  • Lindy驱动的CI/CD进化论:如何让自动化流程随时间推移自动增强鲁棒性?
  • SketchUp STL插件终极指南:3D打印工作流完全掌握
  • 基于ESP32-C3的智能药盒提醒器:从硬件选型到Web配置的物联网实践
  • 大模型纪检涉案情节分析方案:让案件材料真正形成可研判的关系网络
  • 2026年婴儿布艺类玩具怎么挑选:五家优选品牌深度解析 - 科技焦点
  • AI应用入门必看:小白程序员如何抓住大模型风口,收藏这份学习指南
  • 敬老院日常运营管理系统PHP源码(含登录界面、老人档案、膳食健康、活动安排等完整功能)
  • 如何让MAA明日方舟小助手成为你的游戏时间管理专家