常见算法的理解与比较

市场常见调度算法的一些理解

RRT

传统的路径规划算法有人工势场法、模糊规则法、遗传算法、神经网络、模拟退火算法、蚁群优化算法等。但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度机器人在复杂环境中的规划。

基于快速扩展随机树(RRT / rapidly exploring random tree)的路径规划算法,通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模能够有效地解决高维空间和复杂约束的路径规划问题。该方法的特点是能够快速有效地搜索高维空间,通过状态空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划。与PRM类似,该方法是概率完备且不最优的。

RRT算法也有一些缺点,它是一种纯粹的随机搜索算法对环境类型不敏感,当C-空间中包含大量障碍物或狭窄通道约束时,算法的收敛速度慢,效率会大幅下降

 

DWA (局部避障的动态窗口算法)

(Dynamic Window Approach),ROS中使用了DWA算法获得了很好的局部路径规划的效果 . 其大概思路是,机器人在获得目的信息后先规划出一条大概的路线,然后调用局部路径规划器,根据这条路线及costmap的信息,规划出机器人在局部是做出具体的策略。

其原理是在(v, w)速度在空间中 采样多种速度,并模拟这些速度在一定时间内的运动轨迹,再通过一个评价函数对这些轨迹打分,最优的速度被选出来后发给下位机。

[视频​示例]  http://v.youku.com/v_show/id_XMTg2NzY4MjY5Ng==.html 

 

A*(念做:A Star)

是一种很常用的路径查找和图形遍历算法,1968年斯坦福大学搞出来的,被认为是Dijkstar算法的一种扩展

Dijkstra算法用来寻找图形中节点之间的最短路径。

考虑这样一种场景,在一些情况下,图形中相邻节点之间的移动代价并不相等。例如,游戏中的一幅图,既有平地也有山脉,那么游戏中的角色在平地和山脉中移动的速度通常是不相等的。

 

A*算法通过下面这个函数来计算每个节点的优先级。

 

其中:

  • f(n)是节点n的综合优先级。当我们选择下一个要遍历的节点时,我们总会选取综合优先级最高(值最小)的节点。

  • g(n) 是节点n距离起点的代价。

  • h(n)是节点n距离终点的预计代价,这也就是A*算法的启发函数。关于启发函数我们在下面详细讲解。

A*算法在运算过程中,每次从优先队列中选取f(n)值最小(优先级最高)的节点作为下一个待遍历的节点。

另外,A*算法使用两个集合来表示待遍历的节点,与已经遍历过的节点,这通常称之为open_setclose_set

它有很多变种算法

  1. ARA(anytime repairing A) 也称为 Anytime A*

  2. D(dynamic A) 与A*不同的是,其具体代价在运行过程中可能发生变化

  3. Field D*

Field D扩展了D和D* Lite,是一种基于插值( interpolation-based )的规划算法,它使用线性插值来有效地生成低成本路径,从而消除不必要的转向。

在给定线性插值假设的情况下,路径是最优的,并且在实践中非常有效。该算法目前被各种现场机器人系统使用。

参考

[参考链接​]  <https://segmentfault.com/a/1190000017839112> 

不用的应用场景对 T(n) = O(f(n)) 考虑程度不同,以上算法均能规划出准确的路径,根据场合和需要选择相应的算法。

 

以上算法皆仅仅是在理论和软件的基础上讨论,再往下一层就要谈到硬件,说到硬件不得不提的就是SLAM技术了

SLAM是“Simultaneous Localization And Mapping”的缩写,可译为同步定位与建图

这里包含的东西就多了 本身就包含前后端,里面又包含好几个块 一个是数学,一个是编程。入门比较困难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值