宾夕法尼亚大学Coursera运动规划公开课学习有感之二

这篇感受是学习宾夕法尼亚大学VJKumar教授的Robotics: Aerial Robotics公开课系列中Robotics: Computational Motion Planning课程, 第二周的感受. 这一周的作业主要需要完成下面两个技术细节: 一个是两个三角形之间有重叠这件事情如何用代码完成; 另一个事情就是Dijkstra算法如何应对机械臂360度到0度的跨越无边界问题.

Introduction to Configuration Space

介绍一下configuration space:把障碍物等等物体都对应到一个坐标系中,用坐标系中的路径规划,给真实物体运动做规划.这一节课只有短短的几分钟, 主要是讲解这个专业名词. 个人理解就是描述所有物体的这么一个空间.

RR arm

说到配置空间configuration space:对于机械臂,有两个自由度,可以把两个自由度当成横纵坐标化成一张图,然后在这张图上做路径规划.到达指定位置就变成了到达指定点.这个转化的思想还是挺厉害的.
不过,有个问题就是,怎么把位置转化成2个角度的约束,画出右边的图形后来做完作业, 这个问题迎刃而解了. 作业中, 将两个机械臂旋转一周360度分成了2度的区间, 一共360度被分成181个点, 两个机械臂就是181*181个点, 每个点对应一种机械臂的姿态. 对于每种姿态, 都采用相撞算法判断一下这个点对应角度的时候机械臂会不会与障碍物相撞, 如果相撞, 这个点就是不能走的, 就对应右侧那个图中的黑色部分; 如果不相撞, 就对应右侧那个图的白色部分.) 需要注意的是右侧这个图上下界是可以跨过的,因为对于机械臂0和360是一样的嘛.

这里写图片描述

后面还有一个比较厉害的例子.6关节机器人.把它想象成6维空间内的规划问题就行了啊.如果再有什么障碍,哈哈,就很难想了.

这里写图片描述
下面是做考试题的时候做错的一道题, 首先要理解什么叫做路径规划中的’complete’说法: the Trapezoidal Decomposition method is complete because it will always find a path through space if one exists and report failure if there is no path. 这句话是正确的. 对于梯形分解, 如果存在可行路径, 那一定能找的出来(只不过不是最优的. ).

Visibility Graph

把起点终点边界点所有凸障碍物的端点都连成线,然后用Dijkstra算法等等算法就可以解了.实际应用的时候为了不碰到障碍物,就把障碍放大.这个放大是在考虑真实物体形状和障碍物位置之后画出来的,不是随意放大出来的.

这里写图片描述
还有一件事需要注意,configuration space分的空间一定要细,保证两个点之间不会发生碰撞.分的足够细的时候,就可以认为,所有的两个点之间都可以自由形成路径.
这里写图片描述

附录
过一阵子会把关于三角形检测的方法传上来. 做的时候自己想了不少点子, 写了不少代码, 后来发现代码都会遇到检测不出来的情况. 最后终于写了一个能够检测所有情况的功能完全但性能比较慢的代码, 利用的办法主要还是上面说的, 检测是否有边的切割情况. 感觉代码一定是有改进的空间的, 只不过根据现在Google的情况只能先到这样.

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34718 人正在系统学习中

来源:yessharing

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年1月11日
下一篇 2017年1月11日

相关推荐