1. 环境准备:WSL2与Ubuntu20.04基础配置
在Windows系统上搭建ROS开发环境,WSL2是目前最接近原生Linux体验的方案。我实测对比过VMware、双系统等多种方案,WSL2在资源占用和IO性能上优势明显。以下是具体操作步骤:
1.1 启用WSL2功能
首先需要确保Windows版本为1903及以上,建议更新到最新版。以管理员身份打开PowerShell执行:
powershell复制# 启用WSL功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启后,将WSL2设为默认版本:
powershell复制wsl --set-default-version 2
注意:部分老款CPU需要在BIOS中开启虚拟化支持(Intel VT-x/AMD-V),具体按键因主板品牌而异,通常在开机时按Del/F2进入BIOS设置。
1.2 安装Ubuntu20.04 LTS
从Microsoft Store直接安装Ubuntu 20.04 LTS,安装完成后首次启动会要求设置用户名和密码。建议密码不要过于简单,后续sudo操作需要频繁使用。
关键配置优化:
bash复制# 更新软件源(建议替换为中科大源)
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
# 安装基础工具链
sudo apt update && sudo apt install -y build-essential cmake git vim net-tools
1.3 WSL2与Windows的交互配置
实现Windows与WSL2的无缝协作需要几个关键配置:
-
文件互访:
- Windows访问WSL:在资源管理器地址栏输入
\\wsl$ - WSL访问Windows:路径挂载在
/mnt/下
- Windows访问WSL:在资源管理器地址栏输入
-
网络互通:
bash复制# 获取Windows主机IP(需安装net-tools) cat /etc/resolv.conf | grep nameserver | awk '{print $2}' -
图形界面支持(可选):
bash复制# 安装X11转发支持 sudo apt install -y x11-apps dbus-x11在Windows端安装Xming或VcXsrv,设置DISPLAY环境变量:
bash复制export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ROS Noetic基础环境部署
ROS1的最终版本Noetic专为Ubuntu 20.04设计,官方支持周期到2025年。以下是完整安装流程:
2.1 配置ROS仓库源
bash复制# 设置软件源(建议使用国内镜像)
sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/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
2.2 完整安装ROS
推荐安装桌面完整版(包含GUI工具):
bash复制sudo apt update
sudo apt install -y ros-noetic-desktop-full
安装后初始化rosdep:
bash复制sudo rosdep init
rosdep update
常见问题:若出现"Website may be down"错误,可尝试修改
/usr/lib/python3/dist-packages/rosdep2/sources_list.py中的DEFAULT_SOURCES_LIST_URL为国内镜像地址。
2.3 环境变量配置
将以下内容添加到~/.bashrc末尾:
bash复制source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash # 后续创建工作空间后需要
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
3. VINS-Fusion依赖环境搭建
VINS-Fusion作为多传感器融合的SLAM方案,对依赖库版本要求严格。以下是经过验证的安装流程:
3.1 基础依赖安装
bash复制sudo apt install -y libeigen3-dev libsuitesparse-dev libboost-all-dev
sudo apt install -y libopencv-dev python3-opencv
特别要注意Eigen版本:
bash复制# 检查Eigen版本(需要≥3.3.4)
pkg-config --modversion eigen3
3.2 Ceres Solver安装
建议从源码编译安装(当前稳定版2.1.0):
bash复制git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
git checkout 2.1.0
mkdir build && cd build
cmake .. -DEXPORT_BUILD_DIR=ON -DBUILD_TESTING=OFF
make -j$(nproc)
sudo make install
3.3 其他关键库
- Pangolin(可视化工具):
bash复制git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
- GeographicLib(地理坐标转换):
bash复制sudo apt install -y libgeographic-dev
4. VINS-Fusion编译与调试
4.1 源码获取与准备
bash复制mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
4.2 修改配置适配WSL2
需要特别调整的配置:
-
修改
global_fusion/launch/global_fusion.launch:xml复制<param name="output_path" value="$(find global_fusion)/../output/"/> -
调整相机参数文件路径(根据实际传感器修改
config/下的yaml文件)
4.3 编译与问题排查
bash复制cd ~/catkin_ws
catkin_make -j$(nproc)
常见编译错误及解决方案:
-
OpenCV版本冲突:
bash复制sudo apt purge libopencv* # 移除冲突版本 -
Eigen3路径问题:
cmake复制# 在CMakeLists.txt中添加 set(EIGEN3_INCLUDE_DIR /usr/include/eigen3) -
Ceres找不到问题:
bash复制sudo ldconfig # 更新库链接
5. 运行测试与性能优化
5.1 数据集测试
以EuRoC数据集为例:
bash复制roslaunch vins vins_rviz.launch
rosrun vins vins_node src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
rosbag play MH_01_easy.bag
5.2 WSL2特有优化
-
内存限制调整:
在%USERPROFILE%\.wslconfig中添加:code复制[wsl2] memory=8GB processors=4 -
磁盘性能优化:
bash复制sudo mount -t drvfs C: /mnt/c -o metadata -
图形加速(可选):
bash复制export LIBGL_ALWAYS_INDIRECT=1
5.3 实时性调优
- 关闭Windows Defender实时监控
- 在WSL2中调整CPU优先级:
bash复制sudo cpupower frequency-set -g performance - 减少ROS日志输出:
bash复制export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}' export ROSCONSOLE_CONFIG_FILE='~/catkin_ws/rosconsole.config'
6. 扩展应用与开发建议
6.1 接入实际硬件
-
相机配置:
bash复制sudo apt install -y ros-noetic-usb-cam roslaunch usb_cam usb_cam-test.launch -
IMU配置:
修改config/下对应的IMU参数文件,特别注意:yaml复制imu_topic: "/imu/data"
6.2 Docker化部署(可选)
dockerfile复制FROM osrf/ros:noetic-desktop-full
RUN apt update && apt install -y git cmake
WORKDIR /root/catkin_ws/src
RUN git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
WORKDIR /root/catkin_ws
RUN rosdep install --from-paths src --ignore-src -y
RUN /bin/bash -c '. /opt/ros/noetic/setup.bash; catkin_make'
6.3 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 启动时报GLIBCXX错误 | 编译器版本不匹配 | sudo apt install libstdc++6 |
| Rviz无法显示图像 | WSL2图形转发问题 | 检查DISPLAY变量和X11服务 |
| IMU数据延迟大 | 系统时钟不同步 | sudo apt install chrony |
| 轨迹漂移严重 | 传感器标定不准 | 重新校准IMU和相机内参 |
经过完整测试,在i7-11800H/32GB内存的笔记本上,WSL2运行VINS-Fusion的EUROC数据集可以达到实时性要求(约85%原生Ubuntu性能)。对于实际机器人部署,建议在完成算法验证后移植到原生Linux系统。
