在机器人建图之后,希望确定一块禁区不让机器人在此运动,可通过如下步骤实现:
1、用专用的工具修改.pgm文件
机器人建图完成后,会生成.pgm的地图文件,采用专门的软件工具可以对其修改。
推荐软件ROS Map Editor,是Python包,运行文件即可。
在地图上禁止机器人运动的区域绘制障碍物,就会在地图的静态层中加入物体。
2、配置参数
在局部规划用的local_costmap在考虑规划时,考虑三个层。
local_costmap:
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
3、加载使用
按以上操作,机器人在全局路径规划和局部路径规划时,都将考虑静态层上的障碍物,可达到电子围栏的期望效果。
4、特别说明
- 此方法的缺点
当机器人定位存在一定偏差后,静态障碍物和动态障碍物不重叠,障碍物在地图中的占比会较大,机器人的可行区域会变小。所以定位不准的走廊空间中,机器人行走流畅度降低。 - 不影响定位精度
原因是本方案采用cartographer模块定位,不适用修改后的pgm地图,定位与地图相对独立。