常用的移动机器人路径规划算法
- Astar算法:基于启发式搜索,可以快速找到最短路径。
- Dijkstra 算法:基于图论,能够计算出所有节点到起点的最短路径。
- RRT(Rapidly-exploring Random Tree)算法:采用随机方式搜索空间,适用于高维或者非线性问题。
- PRM(Probabilistic Roadmap)算法:将随机生成的点作为可行解,构建路线图,从而实现路径规划。
- LQR(Linear Quadratic Regulator)控制器:基于状态反馈,结合优化问题求解,可以用来进行动态轨迹规划。
- MPC(Model Predictive Control)算法:基于模型预测控制,以优化目标为目的,利用有限时间内模型预测的信息,在控制周期内计算出变量的最优值,从而实现路径跟踪和避障控制。
- Wavefront 算法:通过向待搜索集合中加入起点和目标点,并计算两点之间的波前扩散来构建一条可行路径。
- Potential Field 方法: 把机器人所处的空间看作一个势场,在遇到障碍物时,会产生斥力,而在接近目标点时,会受到引力,最终通过一系列物理模拟完成路径规划。
- Hybrid Astar算法:结合连续状态空间(包括车辆速度角度等)和离散状态空间(包括位置坐标等),将A*算法应用于混合状态上,从而实现机器人的路径规划。
- TEB (Time-Elastic Band) 算法:考虑到移动机器人实际行驶过程中有时间限制的情况,TEB 利用向量的方式精确描述车辆运动,使轨迹路径具有时间弹性,进而处理好不确定条件下的移动机器人轨迹控制问题。
- Visibility Graph 算法:将地图上的障碍物转化为节点,并将两个可行的节点之间的边绘制为无虚线段,然后再应用Dijkstra 算法来找到起始点和目标点之间的最短路径。
- Voronoi Diagram 算法:根据地图上障碍物产生的影响,构建出 Voronoi图来表示空间中的通路情况,从而搜索可行路径或者生成基于样条函数的平滑轨迹。
- Dynamic Window Approach:使用运动模型、传感器数据和轨迹优先级系统等多方面的因素,通过计算机预测小车未来可能到达的状态,以指导小车实现路径跟踪与避障控制。
- Curvature-Velocity Method:它利用曲率变化和车速限制信息,结合楔形梯形准则提供了直观且很容易理解的数据解释方式,在一定程度上可以避免智能车(autonomous car)发生危险。
算法优缺点
A* 算法
优点:A* 算法在计算范围内找到最优解。它的平均性能是很高的,除非存在太多死路和拐角。可以通过使用启发式函数来适应不同环境。
缺点:需要预先知道起点和终点的位置。当地图复杂并且迷宫的细节不能响应地钦定好时,它可能过早地停止运行或者进入了一个死循环。而且,它的计算成本也比 BFS 算法高。
Dijkstra 算法
优点:适用于没有数据的情况。对于小规模问题,Dijkstra 算法能够快速产生正确的结果。并且在处理大型问题时,可以基于网络分割(Steiner tree)加速计算。
缺点:计算成本相对较高, 是将每个节点都看做候选集合中数据的原因。时间复杂度为 O(V^2), V 表示节点数量。
Wavefront 算法
优点: Wavefront算法是一个简单的步进方法,它可以找到解决方案在数据范围内的最短路径。无论是否有障碍物和多条路径,Wavefront 算法的运行时空复杂度都很低,并且很好地适应了性质不同的网络。
缺点: Wavefront算法建议计划制图,但是在涉及实际运动之后,并非每个特定操作的行为都被考虑进去。
Potential Field 方法
优点:Potential Field 密集下降和重力会确保目标点免于过于接近或撞上其他障碍。而且由于不是预先视觉化所有场景的原因,使用边缘检测识别障碍物并创建建筑等统一的机器人昂贵。
缺点:程式代码实现具有一定的间距高估,并且经常陷入局部极小点。
Hybrid A* 算法
优点:结合连续状态空间和离散状态空间,能够比较好得平衡规划效率和轨迹平滑性。通过引入航路点方式可以大大提高轨迹精度,同时也减少了路径规划时间。
缺点:当维数很高、场景非常复杂时,计算量就会很大。此外,对于海量地图类型,存储和传输空间也是一个问题。
TEB (Time-Elastic Band) 算法
优点:能够考虑移动机器人实际行驶过程中的时间限制,使机器人能够更高效、安全地规划路径。在不确定的环境下更加有效。
缺点:需要使用精确的向量描述车辆运动轨迹,计算复杂度较高。
Visibility Graph 算法
优点:可用于极具特权的场景,保证每次最优解。并且所有算法中只有先行集合了目标位置,由此本项成为了答案的生成。
缺点:适用于简单平面情况,易受障碍物数目的影响。
Voronoi Diagram 算法
优点:通过根据环境障碍物产生的影响构建 Voronoi 图来表示通道情况,以此确定可行路径或者生成光滑轨迹。 能够处理不规则障碍物,并且算法速度较快。
缺点:如果环境和目标位置非常复杂,则无法找到理想解决方案。
Dynamic Window Approach 算法:
优点:通过模拟移动机器人可能到达的状态,使用连续运动模型及轨迹优先级来协调机器人避障和路径跟踪控制。即在刻画轨迹时不会丢失全局信息,与当前状态无缝对接。
缺点:复杂度较高
Curvature-Velocity Method 算法:
优点:可用于高速环境下的自驾车驾驶,而且通过进一步理解一些雷达或者传感器的数据分布以及车辆转弯特性,可以加快自动驾驶汽车穿越更加复杂的街道路口的速度。
缺点:具体实现时需要综合考虑车速限制、转弯特性等多方面因素,并且需要大量的数据分析和模
算法分类
-
基于图搜索的算法:
Dijkstra 算法、A算法、双向搜索算法、跳点(Jump Point)搜索算法、Theta算法、Anytime D算法、D Lite 算法、Wavefront算法。
优点:准确、可靠,易于实现。
缺点:只适用于静态环境且计算复杂度高。 -
基于采样的随机算法:
RRT ( Rapidly-exploring Random Trees )算法、 PRM (Probabilistic Roadmap )算法 、BIT* ( Batch Informed Trees )算法优点:可以处理大规模、高维空间、动态及存在复杂障碍物的情况,适用范围广
缺点:搜索结果不一定最优。 -
基于模型预测的控制算法:
MPC ( Model Predictive Control )算法、QP-SIPP( Quadratic Program Smoothed Heuristics for Entity-driven Planning)算法、DP-SIPP(Dynamic Programming Space Integrated Path Planning )算法、SIPP ( Safe Interval Path Planning algorithm )算法优点:能够考虑到执行器或运动学效应等重要的限制条件,搜索时间较短,并且可以在动态环境下工作
缺点:需要实时采集传感器数据以识别障碍物和耗费计算资源。
综合推荐
- A*算法:在静态环境下,可以找到一条最小代价的路径,并且可以在合理时间内快速运行。
- RRT算法:适用于处理大规模、高维空间、动态及存在复杂障碍物的情况,通常运行效率也比较快。
- MPC算法:相较于其他算法,它能够更好地考虑到执行器或运动学效应等重要的限制条件,同时具有高实时性和自适应能力。