总体
涉及到关于摄像头和路劲规划的问题,导师要求一个星期写出总结报告
- 规划如下
- 看论文,总结出传统方法和目前使用比较多的方法
- 做对比,比较多种方法之间的优劣情况
- 对比的内容包括:可行性,复杂性,结果优劣,适用情况等
全局规划
转载自 :http://www.gamedev.net/reference/articles/article2003.asp
https://blog.csdn.net/nie2314550441/article/details/106673966
A*算法
- 从起点A开始,将起点A放入open list中。open list相当于是一个待检测的列表,里面是将来有可能经过的点。
- 查看与起点A相邻的所有点(如果是使用方格来划分区域,那么与A相邻的方格,也就是通常所说的节点一共有八个),这里如果有障碍物需要排除(所以事先需要先有全局地图),将所有可到达的放入open list,并且设置A节点是这些点的父节点。
- 从open list中移除A节点,加入到close list中,close list相当于一个封闭的列表,这里面的点都是接下来无需再去关注的。
- 接下来从open list中找到F值最小的。
这里的F值如何判断
F = G + H
这里G是起点A移动到指定地方的代价,可以理解为移动到这里需要走的路程
H 是 从这个点出发移动到终点需要的估算成本,可以理解为从这里走到终点需要的路程
这里找到open list中的最小的F值的点作为下一个出发点。
G和H是认为定义的
这里给出一种定义方法
G如果是横竖方向移动,路径为10,如果是斜方向移动,路径为14(因为根号2是1.414)
H就是横竖方向移动到终点的路径数(可以通过障碍物)
继续往下搜索
这里如果你找到点继续放入open list,继续找下一个值,这里需要注意的是G的值会累加,并且和之前的未更新前的G对比,如果小,则继续,如果大,则返回上一个父节点(说明这个点走错了)
重复以上步骤,实现A*算法
最后从终点,一直寻找父节点找到起点,路径规划完成。
改进后的A*算法
- 更改G和H的权重
- 在拐点处设置安全阈值,放着碰撞发生
部分规划
转自:https://blog.csdn.net/junshen1314/article/details/50472410
人工势场法
障碍物有斥力,终点是引力,在合力的作用下引导机器人向制定方向移动。
- 其中Uatt是引力,Urep是斥力
引力场和斥力场定义如下
- k是引力增益常量,η是斥力增益常量,λ0是障碍物影响最短距离,λ机器人距离障碍物中心坐标距离,Xg是机器人目标点坐标,X是当前点坐标。
缺陷
- 当物体离目标点比较远时,引力将变的特别大,相对较小的斥力在甚至可以忽略的情况下,物体路径上可能会碰到障碍物
- 当目标点附近有障碍物时,斥力将非常大,引力相对较小,物体很难到达目标点
- 在某个点,引力和斥力刚好大小相等,方向想反,则物体容易陷入局部最优解或震荡
改进
- 解决目标不可达问题
目标点在障碍物附近的时候,斥力大于引力,会产生目标不可达问题。
解决方法:在斥力函数中加入目标位置函数,使得目标位置势能最小。 - 解决局部极小点问题
如果判断进入局部极小点,改变机器人前一步所受合力。