全覆盖路径规划思想(1)

全覆盖路径规划

主要用于目前比较火的全自动扫地机、洗地机。需要要求机器人遍历一个地图中所有空间。本文章仅描述其基本原理。

输入条件

输入:

  • 一张地图
  • 清扫边界
    ox_outside = [0.0, 200.0, 200, 0.0, 0.0]     # 外边界,即清扫范围
    oy_outside = [0.0, 0.0,  60,  60.0, 0.0]

    ox_inside = [[50, 90, 75, 50],[100, 150, 130, 100],[160, 170, 130 , 160]]    # 内部障碍边界
    oy_inside = [[18, 48, 28, 18],[18 , 45,  28,  18] ,[20,  30,  10,   20]]

输出:

  • 全覆盖路线

全局规划思想

  1. 根据边界提取一张地图中所需覆盖范围,即清扫范围;
  2. 根据外边界,提取最长边界,用于覆盖时的遍历的方向,并记录一个顶点,用于原点;
    max_dist = 0.0
    vec = [0.0, 0.0]
    sweep_start_pos = [0.0, 0.0]
    for i in range(len(ox) - 1):
        dx = ox[i + 1] - ox[i]
        dy = oy[i + 1] - oy[i]
        d = np.sqrt(dx ** 2 + dy ** 2)

        if d > max_dist:
            max_dist = d
            vec = [dx, dy]                 #最长边向量,即斜率
            ori_pos = [ox[i], oy[i]]       #最长边起始顶点
  1. 根据最长边和一个顶点,将清扫边界和内部障碍物,进行坐标转换,即旋转和平移;将记录的一顶点,作为原点,将最长边作为X轴正方向,进行坐标转换。
  2. 经过以上步骤,则目前清扫范围在x轴方向最长,因此为最适合遍历方向;
  3. 构建栅格地图,将边界外以及障碍物内全部标记为1,而清扫区域标记为0;
  4. 栅格地图进行膨胀,主要考虑机器人大小问题;
  5. 栅格地图闭算法,主要是滤除掉
  6. 定义清扫的主要方向,从下到上,第一次从左到右。(可更改,本文仅以此种情况说明)
  7. 查找清扫起始点,方法是从栅格图最下一行从左到右进行遍历,查找第一个标记为0的栅格,则为起始坐标;
  8. 查找终点,方法与9一样;
  9. 从起点开始开始查找下一个点;
  10. 判断是否为终点或者不存在下一个点,否则执行11步骤;
  11. 记录每一个点坐标,根据原点和长边向量,还原坐标;
  12. 同时9~12步可执行多次,如此可进行分区覆盖;采用python仿真效果图如下:

在这里插入图片描述

判断下一点

已知:

  1. 栅格标记为0.5,表明已经走过;
  2. 栅格标记为1,不能行走;
  3. 栅格标记为0,表明需要清扫未清扫区域;
  4. 初始位置为start_pos
  5. 初始扫描方向为Direction_x = 1
    流程图如下:
    在这里插入图片描述
    附python优化后的源码github
    参考AtsushiSakai/PythonRobotics源工程github
  • 10
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
ECPP覆盖路径规划是一种路径规划算法,旨在找到一条路径,能够覆盖地图上的所有目标点。 在ECPP覆盖路径规划中,首先需要确定地图上的目标点位置,并构建地图。目标点可以是需要访问的地点或需要检查的物体。然后,算法会在地图上计算出一条路径,使得路径经过所有的目标点。 在进行路径规划时,ECPP覆盖路径规划算法考虑了以下几个关键要素: 1. 地图信息:ECPP覆盖路径规划算法需要地图信息,包括目标点的位置、地图的大小和障碍物的位置。这些信息可以通过传感器或其他方法获取。 2. 移动策略:ECPP覆盖路径规划算法考虑到机器人或车辆的移动能力和约束条件,如最大速度、转弯半径等。根据这些约束条件,算法会选择合适的路径来保证能够顺利覆盖所有目标点。 3. 覆盖率优化:ECPP覆盖路径规划算法会优化路径的覆盖率,以最小化目标点之间的未覆盖区域。通过这种方式,算法可以保证所有目标点都被访问到。 4. 算法优化:为了加快路径规划的速度,ECPP覆盖路径规划算法可能使用一些启发式算法或优化技术。这些算法可以有效地搜索解空间,并找到更快、更优的路径。 总结来说,ECPP覆盖路径规划是一种可以保证地图上所有目标点都被访问到的路径规划算法。通过考虑地图信息、移动策略、覆盖率优化和算法优化,ECPP覆盖路径规划算法可以找到一条最优路径,以最小化未覆盖区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值