ros2 Navigation 学习笔记 第五章(the construct 网站)

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

本章节包括

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中,意味着物体在路径上不会被考虑,机器人可能撞到它

全局成本地图障碍层

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值