牛耕覆盖路径算法 [ BCPP ]
实现效果:
覆盖算法所需前置数据:
map_origin
:地图原点,表示地图左上角的位置。map_resolution
:地图分辨率,即每个单元格代表的实际距离(米/单元格)。robot_radius
:机器人半径,表示机器人占据的空间大小。starting_position
:起始位置,转换为像素坐标。planning_mode
:规划模式,选择FOV还是FOOTPRINT,也就是按照视野面积还是机器人移动面积覆盖
对地图的前置处理:
- 获取地图和基本参数
- 计算房间大小(平方米)
- 使用腐蚀和膨胀修正地图
- 移除不连通的区域
- 确定网格大小
牛耕覆盖算法所需参数(除基础参数外):
min_cell_area:
这个参数定义了网格中每个单元格的最小面积path_eps:
这个参数定义了路径规划中的容错率。它可以用来调整路径规划的精度,例如,较小的值可以导致更精确但可能更复杂的路径。grid_obstacle_offset:
这个参数定义了网格中障碍物的偏移量。它可以用来调整障碍物在网格中的表示,以便更好地适应实际环境中障碍物的大小和形状。max_deviation_from_track:
这个参数定义了机器人在跟踪探索路径时允许的最大偏差。如果设置为负值,则表示没有偏差限制。cell_visiting_order:
这个参数定义了访问网格单元格的顺序。它可以用来控制探索算法的行为,例如,按照特定的顺序(如螺旋或随机)访问单元格。