运动规划一:基于搜索的路径搜索

1.Graph Search Basis

1.1 配置空间下的规划

  • 工作空间:机器人有不同的形状和尺寸,进行碰撞检测就需要花费很多时间,并且较难。
  • 配置空间:把机器人当成一个点,把障碍物进行膨胀,规划就进行了简化。

1.2 图搜索整体思想:

搜索树的节点,然后从目标点回溯到起始点,找到路径。

  • 维护容器:open list (访问的节点) and close list(已被扩展过的节点)
  • 容器从起始点Xs开始初始化
  • 循环
    • 容器中弹出节点,放入close list ,不会被再次加入openlist
    • 扩展节点
    • 将扩展节点存入容器
  • 结束循环,直到容器为空

1.3 图遍历

  • BFS (广度优先):(每条边权重相等)
    • 队列,先入先出。
    • 层级搜索
    • 地图中能找到最优路径,后面算法的基础
  • DFS (深度优先):
    • 堆栈,后入先出。
    • 把某个分支走到底
    • 地图中不能找到最优路径

2.Dijkstra and A*

算法

  • 启发式搜索:人为设置规则,朝着目标点前进
  • 贪心算法:欧氏距离或曼哈顿距离,有障碍时会误导,无法得到最优路径
  • Dijkstra:使得路径有最小的 cost,弹出节点的方式是以g(n)最小的方式弹出。若存在,就能找到最优解,类似于BFS,若不存在,就相当于穷举。
    在这里插入图片描述
  • A*:Dijstra 算法加上一个启发式函数,弹出节点以f(n)=g(n) + h(n)最小的节点弹出.
    • 要求h(n)<=h(n*) ,小于实际需要花费的最小路径:欧氏距离/无穷范数/0(Dijkstra)
      在这里插入图片描述
  • Weighted A*-> Anytime A*-> ARA*->D*:后续可深入研究

工程实现

  • 将栅格地图表示为图:4连接或8连接
  • 优先队列:见pdf
  • 最优的启发式函数:相差太多就会使得搜索范围增加
    在这里插入图片描述- Tie Breaker:打破平衡,使得路径搜索时有偏向性,具体使用时参考ppt

3. Jump Point Search

系统性打破平衡的办法:要遵循对应的 look ahead rules
在这里插入图片描述

  • 优点:在障碍物较多的时候,JPS 速度会很快。维护容器的代价更低等等。
  • 缺点:但是在空旷的时候,JPS 迭代查询花的时间就会很多
  • 限制:只适用于uniform grid map.

4. Homework

  • 1.完成启发式函数:欧式、曼哈顿、最短距离
  • 2.初始化配置g(n) = infinite g(Xs) = 0
  • 3.弹出排序第一的节点,放入close list
  • 4.找到neighbor,计算cost
  • 5.扩展节点,并将上一节点设为父节点
  • 6.若已在open list 里,若满足条件则更新g(n)值,更新父节点。
  • 7.根据终点回溯找到路径。

参考

  1. 高飞老师:移动机器人运动规划课程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值