本章节包括
2D costmap的解释
全局成本图
本地成本图
Nav2如何使用costmap避开障碍
最后将所有导航部分集成到一个启动文件中
成本图
costmap是机器人再网格地图上感知障碍物的二维表示。
每个网格单元包含传感器检测到的障碍物信息
每个单元的代价可能是未知的、为0的、占用的或者膨胀的
不同的颜色表示碰撞障碍物的可能性
然后,controllers planners 还有 recoveries使这些信息安全高效地计算其任务
全局、本地成本图
有两种类型的成本图
根据静态地图中的障碍物生成全局成本图,是planner用来生成长期路径的
根据机器人在周围检测到的新障碍物创建,使用它来生成短期路径并避免动态障碍。
不同点
全局成本图帮助避免已知障碍物,局部成本图帮助避免动态障碍物
全局覆盖整个地图,局部覆盖机器人周围一小块区域
全局成本图是静态的,局部成本图是动态的
在导航系统中添加全局成本图
在planner_server.yaml中加入以下配置
global_costmap:
global_costmap:
ros__parameters:
update_frequency: 1.0
publish_frequency: 1.0
global_frame: map
robot_base_frame: base_link
use_sim_time: True
robot_radius: 0.15
resolution: 0.05
track_unknown_space: true
plugins: ["static_layer", "inflation_layer"]
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
cost_scaling_factor: 3.0
inflation_radius: 0.35
always_send_full_costmap: True
练习5.1
将上述设置列表添加到planner_server.yaml中的文件底部,需要考虑缩进
编译并且source
启动所有的路径规划系统
打开RVIZ,加载路径规划的config,并正确定位机器人
在display中加入costmap并订阅/global_costmap/costmap,选择color scheme,保存config
应该会得到如下图

在仿真中添加一个额外袁旭,通过以下操作添加额外构造的圆柱体
source /home/simulations/ros2_sims_ws/install/setup.bash
ros2 run gazebo_ros spawn_entity.py -entity construction_cone -database construction_cone
在rviz中你就会看到雷达对
你会观察到
1. 地图上的障碍物以不同的灰色色调展开,以指示机器人无法移动的空间。浅灰色区域是可以被用于规划的
2. 激光会检测到额外的圆锥体,但是不会加入costmap中,意味着物体在路径上不会被考虑,机器人可能撞到它
全局成本地图障碍层

文章详细介绍了Nav2如何使用2DCostmap来感知和避开障碍物,包括全局和本地成本图的区别与应用。全局成本图基于静态地图生成,用于长期路径规划,而本地成本图根据实时传感器数据动态更新,用于避免动态障碍。文章提供了配置参数示例,并通过实践练习展示了如何添加和调整障碍层,以及如何将所有导航组件集成到一个启动文件中。
5489

被折叠的 条评论
为什么被折叠?



