基于ros2 foxy的nav2安装与调试

发布时间:2025-12-10 11:28:06 浏览次数:9

在安装nav2之前,可以参考我上一篇ros2 foxy 调试cartographer 的文章进行一些配置

nav2的二进制安装非常方便,只要运行下面的三句话就可以安装完成了,这里也是依赖turtlebot3的封装包来调用nav2。

sudo apt install ros-foxy-navigation2
sudo apt install ros-foxy-nav2-bringup
sudo apt install ros-foxy-turtlebot3*

但是为了便于调试和阅读源码,我下载的是Nav2的源码以及turtlebot3的源码进行调试。turtlebot3的启动文件只是加载了turtlebot3自己的模型文件,如果你有完整的模型文件,可以不用安装turtlebot3。

安装Git和编译工具

sudo apt-get install git python3-vcstool build-essential python3-colcon-common-extensions

新建工作空间并下载源代码

mkdir -p turtlebot3_ws/src

cd turtlebot3_ws/

下载turtlebot3代码


git clone https://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3.git src/turtlebot3 -b foxy-devel
git clone https://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git src/turtlebot3_msgs -b foxy-devel
git clone https://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git src/turtlebot3_simulations -b foxy-devel

下载navigation2


git clone https://ghproxy.com/https://github.com/ros-planning/navigation2.git src/navigation2 -b foxy-devel

 安装依赖

rosdepc update

rosdepc install --from-paths src --ignore-src --rosdistro foxy -yr

编译

colcon build --symlink-install

设置环境变量

source ~/turtlebot3/install/setup.bash

如果需要使用turtlebot3的模型文件需要将模型所在的位置设置到环境变量里,这样程序才能找到模型

vi ~/.bashrc 添加如下代码,这里我将原本的waffle.yaml复制过来的,该文件在启动文件中可以找到它的位置。

export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/turtlebot3/src/turtlebot3_simulations/turtlebot3_gazebo/models
export TURTLEBOT3_MODEL=wafflejc

 启动运行

主机启动 :1.里程计节点 ;2.激光雷达节点;3.tf2变换

pc端启动nav2导航,我参考的是turtlebot3里面的启动文件,你也可以直接穷启动nav2_bringup下面的bringup_launch.py,不过需要自己配置模型文件和rviz2文件,/home/jc/bag/my_map_1008.yaml为地图保存的目录。


ros2 launch turtlebot3_navigation2 navigation2_jc.py use_sim_time:=false map:=/home/jc/bag/my_map_1008.yaml

 操作其实就是这么简单,但是坑比较多,建议在较好的网络环境下调试,有意思的是NAV2源码,以及py文件和配置文件,推荐阅读。

最后上一张机器人导航的图,以及导航结果

报错and问题解决

问题1

这个问题一加载地图就会出来,但是我在RVIZ中点击定位之后就没有了,所以没有关系。

问题2 

No Valid trajectories out of 

 这个问题困扰了我很久,直到我开始阅读NAV2的源码才发现,DWB发布的导航的速度是基于odom.twist.twist.linear.x和odom.twist.twist.angular.z的,我发布这两个速度的时候把单位搞错了,

odom.twist.twist.linear.x的速度是m/s,odom.twist.twist.angular.z的速度是弧度/s,改过来之后就没问题了。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477