Nav2自主导航
首先明确
Nav2都需要哪些部件的配合

1.BT Navigator Server
功能:这是整个导航系统的“总指挥”。它不直接进行规划或控制,而是通过一个行为树来编排整个导航过程的逻辑
行为树就是判断一下你是否满足这个条件,如果满足之后再运行如果不满足不执行该运动
在这个导航系统中就是用来判断自己在地图中的实时位置
2.Recovery Server
功能:当导航出现问题时(例如,机器人被卡住、无法规划出路径、无法找到有效控制指令),行为树会触发恢复服务器。
这个就是给我们处理异常状态用的
通常它会返回给我们值
恢复插件:执行一系列预定义的恢复行为来尝试让系统恢复正常,例如:
ClearCostmap:清空局部代价地图,可能传感器误报了障碍物。
Spin:让机器人原地旋转,以扫描周围环境。
Wait:等待一段时间。
BackUp:先向后移动一段距离。
3.Controller Server
功能:负责跟随全局路径进行实时运动控制。它关注机器人前方一小片区域内的动态环境,并避开临时出现的障碍物(如行人、移动的椅子)
这个是为了就是对我们全局规划过程中进行实时更改
比如我们全局规划之后这个路径,发现有障碍物,会实时修改这个路径
Local Costmap(局部代价地图):这是一张高频率更新的、只关注机器人周围局部区域的地图。它融合了来自传感器数据(如激光雷达 LaserScan 和深度相机 PointCloud2)的实时信息。
就是如果Planner 规划的不是十分正确,它可以对部分路径进行更改
4.Planner Server
功能:负责制定从起点到终点的全局路线。它只关心“从A到B怎么走大体路线”,不关心临时的动态障碍。
和Controller Server配合使用,那个负责实时更新,而这个负责全局规划
打一个比方,我们在Rviz中使用Nav2 Goal就是我们全局规划器来规划的
它就知道起点和终点其他的都不是它需要管理的服务
下面我们找一个Nav2的demo来运行一下吧
安装这两个包
sudo apt install ros-humble-turtlebot3-gazebo
sudo apt install ros-humble-turtlebot3-navigation2然后使用这个指令启动仿真
export TURTLEBOT3_MODEL=waffle
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
在这个里面把图给建完
新建一个终端启动Nav2并使用官方地图
export TURTLEBOT3_MODEL=waffle
ros2 launch nav2_bringup navigation_launch.py use_sim_time:=true map:=/opt/ros/humble/share/turtlebot3_navigation2/maps/turtlebot3_world.yaml新建一个终端运行Rviz2
ros2 launch nav2_bringup rviz_launch.py之后运行我们就可以体会到Nav2的自动导航啦
