在WSL Ubuntu中部署ROS2 Jazzy Navigation2 (Nav2)

我会帮你从零开始,在WSL Ubuntu环境下完整部署ROS2 Jazzy版本的Navigation2(Nav2),包括环境准备、安装配置、功能验证等核心步骤。

一、环境准备

1. 确认WSL环境

首先确保你的WSL是Ubuntu 24.04(ROS2 Jazzy推荐版本):

# 检查WSL版本
wsl --version
# 查看已安装的发行版
wsl --list --verbose
# 如果不是Ubuntu 24.04,安装对应版本
wsl --install -d Ubuntu-24.04

2. 配置Ubuntu基础环境

# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装必要依赖
sudo apt install -y curl gnupg2 lsb-release git
# 设置locale(避免ROS2中文乱码)
sudo apt install -y locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

二、安装ROS2 Jazzy

1. 添加ROS2软件源

# 添加ROS2 GPG密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加源到sources.list.d
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

2. 安装ROS2 Jazzy完整版

sudo apt update
# 安装ROS2 Jazzy桌面完整版(包含RViz、Nav2等)
sudo apt install -y ros-jazzy-desktop-full
# 安装开发工具
sudo apt install -y python3-colcon-common-extensions python3-rosdep python3-vcstool

3. 初始化ROS2环境

# 初始化rosdep(首次使用必须)
sudo rosdep init
rosdep update
# 设置环境变量(临时生效)
source /opt/ros/jazzy/setup.bash
# 永久添加环境变量到bashrc
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
# 生效配置
source ~/.bashrc

三、安装并配置Nav2

1. 安装Nav2二进制包(推荐新手)

# 安装Nav2核心包
sudo apt install -y ros-jazzy-navigation2 ros-jazzy-nav2-bringup
# 安装仿真器(用于验证Nav2功能)
sudo apt install -y ros-jazzy-turtlebot3-gazebo ros-jazzy-turtlebot3-navigation2

2. 创建工作空间(可选,用于源码编译)

如果需要自定义Nav2功能,建议创建源码工作空间:

# 创建工作空间目录
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
# 克隆Nav2源码(Jazzy分支)
git clone https://github.com/ros-planning/navigation2.git -b jazzy
# 安装依赖
cd ~/nav2_ws
rosdep install --from-paths src --ignore-src -r -y
# 编译工作空间
colcon build --symlink-install
# 添加工作空间环境变量
echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

四、验证Nav2功能

1. 配置TurtleBot3模型

# 设置TurtleBot3模型(永久生效)
echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc
source ~/.bashrc

2. 启动Nav2仿真示例

终端1:启动Gazebo仿真环境

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

终端2:启动Nav2导航功能

ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True

终端3:发送导航目标(可选)

# 启动RViz(可视化导航)
ros2 launch turtlebot3_navigation2 rviz_launch.py
# 或通过命令行发送目标点
ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose "{pose: {header: {frame_id: map}, pose: {position: {x: 2.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}}"

五、常见问题解决

1. WSL中Gazebo黑屏/卡顿

# 安装WSL图形界面支持
sudo apt install -y mesa-utils libgl1-mesa-glx
# 设置GPU加速(需要Windows 11 + WSL2)
echo "export LIBGL_ALWAYS_SOFTWARE=0" >> ~/.bashrc
source ~/.bashrc

2. rosdep update失败

# 替换rosdep源(解决网络问题)
sudo sed -i 's/raw.githubusercontent.com/ghproxy.com\/https:\/\/raw.githubusercontent.com/g' /usr/lib/python3/dist-packages/rosdep2/sources_list.py
rosdep update

3. Nav2节点启动失败

# 检查节点状态
ros2 node list
# 查看日志
ros2 run rclpy_logger logger
# 重新加载参数
ros2 param load /nav2_controller ~/nav2_ws/src/navigation2/nav2_controller/params/default_params.yaml

总结

  1. 核心步骤:WSL Ubuntu 24.04 → 安装ROS2 Jazzy → 安装Nav2二进制包/源码编译 → 用TurtleBot3仿真验证功能。
  2. 关键配置:必须设置TURTLEBOT3_MODELuse_sim_time:=True才能正常运行仿真导航。
  3. 常见问题:WSL中Gazebo需配置图形加速,rosdep失败可替换源,Nav2启动异常需检查参数和依赖。

通过以上步骤,你可以在WSL Ubuntu中完整运行ROS2 Jazzy的Nav2导航功能,适合新手学习和开发。如果需要自定义导航算法,可以基于源码工作空间进行二次开发。

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐