【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录

  • 系列文章目录
  • 前言
  • 一、深度优先搜索Depth-First-Searching(DFS)
    • 1.适合的路径规划应用场景
    • 2.维护容器
    • 3.搜索过程图例
    • 4.伪代码
  • 二、广度优先搜索Breadth-First Searching(BFS)
    • 1.适合的路径规划应用场景
    • 2.维护容器
    • 3.搜索过程图例
    • 4.伪代码
  • 三、迭代加深Best-First Searching(DFS-ID)的深度优先搜索
  • 总结
    • (1)DFS\BFS\DFS-ID搜索算法对比
    • (2)三种算法的选择
    • 【核心思想:盲目式的图搜索算法】
  • 参考资料


前言

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

在项目和平时的学习中,我对机器人/无人驾驶的决策规划模块进行了划分,当然划分的方法有很多,我的划分方式仅供参考
(1)动态障碍物行为预测模块(Behavior prediction)–结合感知和高精度地图信息,估计周围障碍物未来运动状态
(2)执行机构的轨迹规划模块(Trajectory_planning)–执行机构如机器人载体上的机械臂、串行云台等的运动轨迹规划
(3)任务决策模块(Mission_planning)–任务决策模块比较偏业务层了,处理机器人/无人驾驶的各种任务,主要分为三个方面:车底盘航线业务决策(交规、横向换道等等)、执行应用机构业务决策(机械臂、人机交互等等)、不同场景的导航方案切换决策(组合导航、融合导航)
(4)前端路径探索模块(path_finding)–全局路径规划算法难度不算复杂,找到一条可通行的(必须满足)、考虑动力学的(尽可能满足)、可以是稀疏的路径base_waypoints【由于其只考虑了环境几何信息,往往忽略了无人机本身的运动学与动力学模型。因此,其得到的轨迹往往显得比较“突兀”,并不适合直接作为无人机的控制指令】
(5)后端轨迹处理模块(motion_planning)–我主要归纳整理为三个方向:(1)对base_waypoints进行简单处理及生成方向、(2)对base_waypoints轨迹优化方向【一般是二次优化,这里用的较多的事优化方面的知识】、(3)进行对应功能的replan方向(replan之前的预处理、进入replan的条件、停障replan、避障replan、纠偏replan、换道replan、自动泊车replan、穿过狭窄道路replan等等),这部分内容使用的方法比较专
(6)路径跟踪模块(trajectory_following)–这个模块就得针对机器人载体了,如无人驾驶使用得阿克曼模型可以采用几何的pure pursuit纯追踪算法,更好的可以用模型预测控制MPC方法,还有强化学习做的(效果怎样我就没验证过了);当然也可能事麦克纳姆轮车、差速车PID、还有无人机的三维轨迹跟踪等等
(7)碰撞检测模块
(8)集群多机器人规划模块

当然,这种划分方式是我权衡了原理和功能粗略划分的,在实际产品研发过程中,需要理解了各个算法的功能和定位的基础上融汇贯通,不能生搬硬套,如全段通过hybrid A探索出来的路径与A、RRT*探索出来的路径更平滑,后端轨迹优化的任务就不用这么重了;又如,机器人/无人驾驶项目研发的需求业务还没发展到能响应很多功能阶段,任务决策使用简单的状态机(fsm)就可以对现有任务进行状态转移了
本文先对DFS\BFS\DFS-ID搜索算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

一、深度优先搜索Depth-First-Searching(DFS)

1.适合的路径规划应用场景

存在在狭窄的通道中环境,依此弹出每条最深的路径,一条路走到黑【防盗标记–盒子君hzj】
.

2.维护容器

【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第1张图片
用的是队列(先入先出的数据结构)来维护容器
.

3.搜索过程图例

1)节点图一维形式(一条路走到黑a的搜索形状)【防盗标记–盒子君hzj】
【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第2张图片
2)栅格地图二维形式(一条路的搜索形状)
【把栅格地图中填充值并确定方向进行深度搜索】
【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第3张图片

4.伪代码

TODO:待补充

二、广度优先搜索Breadth-First Searching(BFS)

1.适合的路径规划应用场景

有连续成片的障碍物,依此弹出每条最广(浅)的路径,一层一层的走

2.维护容器

【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第4张图片
用的是队列(先入后出的数据结构)来维护容器

3.搜索过程图例

(1)节点图一维形式(一个圆的搜索形状)
【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第5张图片
(2)栅格地图二维形式(一个圆的搜索形状)
【把栅格地图中填充值并确定方向进行深度搜索】
【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第6张图片

4.伪代码

TODO:待补充

三、迭代加深Best-First Searching(DFS-ID)的深度优先搜索


总结

(1)DFS\BFS\DFS-ID搜索算法对比

1)算法工作原理
【路径生成--图搜索的思想】DFS\BFS\DFS-ID搜索算法_第7张图片
1、深度优先搜索:1->2->3 1->2->4->5 1->6->7 1->6->8
2、广度优先搜索:1->2 1->6 1->2->3 1->2->4 1->6->7 1->6->8 1->2->4->5
3、迭代加深(DFS-ID)的深度优先搜索::1->2 1->6 2->3 2->4->5 6->7 6->8 4->5

(2)三种算法的选择

1)选择深度优先搜索:当树很深、【防盗标记–盒子君hzj】分支因子不大、在树中解出现的位置相对较深时
2)选择广度优先搜索:当搜索树的分支因子不太大、在树中解出现的位置在合理的深度级别、路径不是非常深
3)选择迭代加深的深度优先搜索(DFS-ID):DFS-ID同时具备DFS和BFS的有利性

【核心思想:盲目式的图搜索算法】

参考资料

TODO:待补充

你可能感兴趣的:(6,运动规划motion,planning,算法,自动驾驶,深度学习)