㈠ 有哪些应用于移动机器人路径规划的算法
机器人家上了解到,在二维二值地图(FREE or OCCUPIED)场景下进行路径规划的方法。我看之前有同学在回答的时候配上了这幅图:
这幅图上的算法罗列的还是很全面的,体现了各个算法的出生顺序。但是并不能很好的对他们进行一个本质的分类。刚刚那位同学说的graph-based和sampling-based的分类方法我感觉有点概念重叠不能够对规划算法进行这样的分类,下面通过自己这一年多的研究和实践对规划算法进行一个简单的分类:
这幅图上的算法罗列的还是很全面的,体现了各个算法的出生顺序。但是并不能很好的对他们进行一个本质的分类。刚刚那位同学说的graph-based和sampling-based的分类方法我感觉有点概念重叠不能够对规划算法进行这样的分类,下面通过自己这一年多的研究和实践对规划算法进行一个简单的分类:
两大类:
1. 完备的(complete)
2. 基于采样的(sampling-based)又称为概率完备的
一 完备的规划算法
A*算法
所谓完备就是要达到一个systematic的标准,即:如果在起始点和目标点间有路径解存在那么一定可以得到解,如果得不到解那么一定说明没有解存在。
这一大类算法在移动机器人领域通常直接在occupancy grid网格地图上进行规划(可以简单理解成二值地图的像素矩阵)以深度优先寻路算法、广度优先寻路算法、Dijkstra(迪杰斯特拉)算法为始祖,以A*算法(Dijstra算法上以减少计算量为目的加上了一个启发式代价)最为常用,近期的Theta*算法是在A*算法的基础上增加了line-of-sight优化使得规划出来的路径不完全依赖于单步的栅格形状(答主以为这个算法意义不大,不就是规划了一条路径再简单平滑了一下么)。
完备的算法的优势在与它对于解的捕获能力是完全的,但是由此产生的缺点就是算法复杂度较大。这种缺点在二维小尺度栅格地图上并不明显,但是在大尺度,尤其是多维度规划问题上,比如机械臂、蛇形机器人的规划问题将带来巨大的计算代价。这样也直接促使了第二大类算法的产生。
二 基于采样的规划算法
RRT-connect算法
这种算法一般是不直接在grid地图进行最小栅格分辨率的规划,它们采用在地图上随机撒一定密度的粒子来抽象实际地图辅助规划。如PRM算法及其变种就是在原始地图上进行撒点,抽取roadmap在这样一个拓扑地图上进行规划;RRT以及其优秀的变种RRT-connect则是在地图上每步随机撒一个点,迭代生长树的方式,连接起止点为目的,最后在连接的图上进行规划。这些基于采样的算法速度较快,但是生成的路径代价(可理解为长度)较完备的算法高,而且会产生“有解求不出”的情况(PRM的逢Narrow space卒的情况)。这样的算法一般在高维度的规划问题中广泛运用。
三 其他规划算法
除了这两类之外还有间接的规划算法:Experience-based(Experience Graph经验图算法)算法:基于经验的规划算法,这是一种存储之前规划路径,建立知识库,依赖之进行规划的方法,题主有兴趣可以阅读相关文献。这种方法牺牲了一定的空间代价达到了速度与完备兼得的优势。此外还有基于广义Voronoi图的方法进行的Fast-marching规划,类似dijkstra规划和势场的融合,该方法能够完备地规划出位于道路中央,远离障碍物的路径。答主最近也在研究此类算法相关的工作。
APF(人工势场)算法
至于D* 、势场法、DWA(动态窗口法)、SR-PRM属于在动态环境下为躲避动态障碍物、考虑机器人动力学模型设计的规划算法。
㈡ 详解动态规划算法
其实你可以这么去想。
能用动态规划解决的问题,肯定能用搜索解决。
但是搜素时间复杂度太高了,怎么优化呢?
你想到了记忆化搜索,就是搜完某个解之后把它保存起来,下一次搜到这个地方的时候,调用上一次的搜索出来的结果。这样就解决了处理重复状态的问题。
动态规划之所以速度快是因为解决了重复处理某个状态的问题。
记忆化搜索是动态规划的一种实现方法。
搜索到i状态,首先确定要解决i首先要解决什么状态。
那么那些状态必然可以转移给i状态。
于是你就确定了状态转移方程。
然后你需要确定边界条件。
将边界条件赋予初值。
此时就可以从前往后枚举状态进行状态转移拉。
㈢ 速度的计算公式是什么
速度的计算公式:V=S/t。
科学上用速度来表示物体运动的快慢。速度在数值上等于单位时间内通过的路程,单位是m/s和km/h。
速度表征动点在某瞬时运动快慢和运动方向的矢量。在最简单的匀速直线运动中,速度的大小等于单位时间内经过的路程。速度的常用单位有:厘米/秒,米/秒。千米/小时等。速度的大小也称速率。
(3)速度规划常用算法扩展阅读
速度与速率的区别:
1、速率是路程与时间的比值,速度是位移与时间的比值;速度是矢量,有大小有方向,它描述物体运动的快慢,和反映物体运动的方向;速率是标量,有大小没有方向。
2、平均速率描述一段时间内物体运动的平均快慢程度。计算方法是v=△S/△t。平均速度:v=x/t。
3、平均速率并不是“平均速度的绝对值”。不能为零。
㈣ 求解:图论中常见的最短路径算法有几种都是什么
主要是有三种、、
第一种是最直接的贪心dijkstra算法、、可以利用堆数据结构进行优化、、缺点就是不能求有负权的最短路与判断负环、、
第二种是bellman-ford算法、、根据松弛操作的性质是可以来判断负环的、、时间复杂度是O(nm)的、、
第三种是SPFA算法、、把他单独拿出来作为一种算法并不是非常好的、、他的实质应该是上面的bellman-ford算法的队列优化时间复杂度更低、O(KE)、K的值约等于2、、
㈤ 多目标线性规划的常用求解算法有哪些
多目标决策主要有以下几种方法:
(1)化多为少法:将多目标问题化成只有一个或二个目标的问题,然后用简单的决策方法求解,最常用的是线性加权和法。
(2)分层序列法:将所有目标按其重要性程度依次排序,先求出第一个最重要的目标的最优解,然后在保证前一目标最优解的前提下依次求下一目标的最优解,一直求到最后一个目标为止。
(3)直接求非劣解法:先求出一组非劣解,然后按事先确定好的评价标准从中找出一个满意的解。
(4)目标规划法:对于每一个目标都事先给定一个期望值,然后在满足系统一定约束条件下,找出与目标期望值最近的解。
(5)多属性效用法:各个目标均用表示效用程度大小的效用函数表示,通过效用函数构成多目标的综合效用函数,以此来评价各个可行方案的优劣。
(6)层次分析法:把目标体系结构予以展开,求得目标与决策方案的计量关系。
(7)重排序法:把原来的不好比较的非劣解通过其他办法使其排出优劣次序来。
(8)多目标群决策和多目标模糊决策等
㈥ 几种常用的算法简介
1、穷举法穷举法是最基本的算法设计策略,其思想是列举出问题所有的可能解,逐一进行判别,找出满足条件的解。
穷举法的运用关键在于解决两个问题:
在运用穷举法时,容易出现的问题是可能解过多,导致算法效率很低,这就需要对列举可能解的方法进行优化。
以题1041--纯素数问题为例,从1000到9999都可以看作是可能解,可以通过对所有这些可能解逐一进行判别,找出其中的纯素数,但只要稍作分析,就会发现其实可以大幅度地降低可能解的范围。根据题意易知,个位只可能是3、5、7,再根据题意可知,可以在3、5、7的基础上,先找出所有的二位纯素数,再在二位纯素数基础上找出三位纯素数,最后在三位纯素数的基础上找出所有的四位纯素数。
2、分治法分治法也是应用非常广泛的一种算法设计策略,其思想是将问题分解为若干子问题,从而可以递归地求解各子问题,再综合出问题的解。
分治法的运用关键在于解决三个问题:
我们熟知的如汉诺塔问题、折半查找算法、快速排序算法等都是分治法运用的典型案例。
以题1045--Square
Coins为例,先对题意进行分析,可设一个函数f(m,
n)等于用面值不超过n2的货币构成总值为m的方案数,则容易推导出:
f(m,
n)
=
f(m-0*n*n,
n-1)+f(m-1*n*n,
n-1)+f(m-2*n*n,
n-1)+...+f(m-k*n*n,
n-1)
这里的k是币值为n2的货币最多可以用多少枚,即k=m/(n*n)。
也很容易分析出,f(m,
1)
=
f(1,
n)
=
1
对于这样的题目,一旦分析出了递推公式,程序就非常好写了。所以在动手开始写程序之前,分析工作做得越彻底,逻辑描述越准确、简洁,写起程序来就会越容易。
3、动态规划法
动态规划法多用来计算最优问题,动态规划法与分治法的基本思想是一致的,但处理的手法不同。动态规划法在运用时,要先对问题的分治规律进行分析,找出终结子问题,以及子问题向父问题归纳的规则,而算法则直接从终结子问题开始求解,逐层向上归纳,直到归纳出原问题的解。
动态规划法多用于在分治过程中,子问题可能重复出现的情况,在这种情况下,如果按照常规的分治法,自上向下分治求解,则重复出现的子问题就会被重复地求解,从而增大了冗余计算量,降低了求解效率。而采用动态规划法,自底向上求解,每个子问题只计算一次,就可以避免这种重复的求解了。
动态规划法还有另外一种实现形式,即备忘录法。备忘录的基本思想是设立一个称为备忘录的容器,记录已经求得解的子问题及其解。仍然采用与分治法相同的自上向下分治求解的策略,只是对每一个分解出的子问题,先在备忘录中查找该子问题,如果备忘录中已经存在该子问题,则不须再求解,可以从备忘录中直接得到解,否则,对子问题递归求解,且每求得一个子问题的解,都将子问题及解存入备忘录中。
例如,在题1045--Square
Coins中,可以采用分治法求解,也可以采用动态规划法求解,即从f(m,
1)和f(1,
n)出发,逐层向上计算,直到求得f(m,
n)。
在竞赛中,动态规划和备忘录的思想还可以有另一种用法。有些题目中的可能问题数是有限的,而在一次运行中可能需要计算多个测试用例,可以采用备忘录的方法,预先将所有的问题的解记录下来,然后输入一个测试用例,就查备忘录,直接找到答案输出。这在各问题之间存在父子关系的情况下,会更有效。例如,在题1045--Square
Coins中,题目中已经指出了最大的目标币值不超过300,也就是说问题数只有300个,而且各问题的计算中存在重叠的子问题,可以采用动态规划法,将所有问题的解先全部计算出来,再依次输入测试用例数据,并直接输出答案。
4、回溯法回溯法是基于问题状态树搜索的求解法,其可适用范围很广。从某种角度上说,可以把回溯法看作是优化了的穷举法。回溯法的基本思想是逐步构造问题的可能解,一边构造,一边用约束条件进行判别,一旦发现已经不可能构造出满足条件的解了,则退回上一步构造过程,重新进行构造。这个退回的过程,就称之为回溯。
回溯法在运用时,要解决的关键问题在于:
回溯法的经典案例也很多,例如全排列问题、N后问题等。
5、贪心法贪心法也是求解最优问题的常用算法策略,利用贪心法策略所设计的算法,通常效率较高,算法简单。贪心法的基本思想是对问题做出目前看来最好的选择,即贪心选择,并使问题转化为规模更小的子问题。如此迭代,直到子问题可以直接求解。
基于贪心法的经典算法例如:哈夫曼算法、最小生成树算法、最短路径算法等。
㈦ 常见的路径规划方法有那些
最速下降法、部分贪婪算法, Dijkstra算法、Floyed算法、SPFA算法(Bellman_Ford的改进算法)、A*算法、D*算法、图论最短算法,遗传算法、元胞自动机、免疫算法、禁忌搜索、模拟退火、人工神经网络、蚁群算法、粒子群算法等
㈧ 平均速度的两种算法
1.△ s÷△t = 平均速度 定义式
2.(V0+Vt)/2 = 平均速度 匀变速直线运动 适用
.3.变化的位移除以变化的时间=平均速度.即1
4.2×V1×V2/(V1+V2)=平均速度.仅仅适用于前一半位移v1 .后一半位移V2的直线变速运动
㈨ 速度规划
迹规划任务:接收基准路点、车辆信息、红绿灯检测信息,发布车将要行驶的200个路点(位置/速度)
1秒钟发布5次,局部路径规划是200ms
cruise_speed = 40/decel_limit = -5/accel_limit =1
定义路点个数、停止距离、停止余量、加速度因子、减速度因子
㈩ 公路道路设计中 如何确定设计车速(计算行车速度)
计算行车速度是指行车条件良好、公路设计特征均起控制作用的情况下,在公路上能保持的最高安全速度,其作用为基础参数,以规定最低设计标准,是一个设定值。
运行车速是在特定路段长度上车辆实际行驶的速度。由于不同的车辆在行驶过程中可能采用不同的速度,因此通常采用第85个百分点上的车辆行驶速度作为运行速度。
运行速度与计算行车速度的区别在于前者是车辆的实际运行速度,后者为用来确定设计参数的一个规定车速。国外研究表明,当计算行车速度为80km/h以下时,第85%个百分点上的车辆实际行驶速度一般比计算行车速度高10km/h,当运行速度与计算行车速度之差达到10km/h以上时,就很容易发生交通事故。
(10)速度规划常用算法扩展阅读:
注意事项:
1、在设计路线的各个环节,对路线方案必须选用各种先进手段进行深层次地调查与探究,在多方案论证、比较的前提下,进行最佳路线方案的选择。
2、应在确保行车安全、舒适、迅速的基础上进行路线设计,确保公路工程具有较低造价、高效率等特点,并确保设计对施工与后期养护十分有利。
3、公路工程选线应配合农田的基础建设,做到尽可能占用较少的农田,并做到尽可能不占用高产地、经济作物田等。
4、如公路建设必须在名胜古迹、风景园林等地通过时,必须协调其附近的环境或景观,并对原有自然环境或历史文物进行保护。
5、应提前深入勘察公路工程所建位置的地质情况及水文条件,避免对公路工程质量造成严重影响。