微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 分析机器人避障技术:从传感器到算法原理

分析机器人避障技术:从传感器到算法原理

时间:10-25 来源: 点击:

的深度相机,基于结构光的深度相机等。深度相机可以同时获得RGB图和深度图,不管是基于TOF还是结构光,在室外强光环境下效果都并不太理想,因为它们都是需要主动发光的。像基于结构光的深度相机,发射出的光会生成相对随机但又固定的斑点图样,这些光斑打在物体上后,因为与摄像头距离不同,被摄像头捕捉到的位置也不相同,之后先计算拍到的图的斑点与标定的标准图案在不同位置的偏移,利用摄像头位置、传感器大小等参数就可以计算出物体与摄像头的距离。而我们目前的E巡机器人主要是工作在室外环境,主动光源会受到太阳光等条件的很大影响,所以双目视觉这种被动视觉方案更适合,因此我们采用的视觉方案是基于双目视觉的。

双目视觉的测距本质上也是三角测距法,由于两个摄像头的位置不同,就像我们人的两只眼睛一样,看到的物体不一样。两个摄像头看到的同一个点P,在成像的时候会有不同的像素位置,此时通过三角测距就可以测出这个点的距离。与结构光方法不同的是,结构光计算的点是主动发出的、已知确定的,而双目算法计算的点一般是利用算法抓取到的图像特征,如SIFT或SURF特征等,这样通过特征计算出来的是稀疏图。

要做良好的避障,稀疏图还是不太够的,我们需要获得的是稠密的点云图,整个场景的深度信息。稠密匹配的算法大致可以分为两类,局部算法和全局算法。局部算法使用像素局部的信息来计算其深度,而全局算法采用图像中的所有信息进行计算。一般来说,局部算法的速度更快,但全局算法的精度更高。

这两类各有很多种不同方式的具体算法实现。能过它们的输出我们可以估算出整个场景中的深度信息,这个深度信息可以帮助我们寻找地图场景中的可行走区域以及障碍物。整个的输出类似于激光雷达输出的3D点云图,但是相比来讲得到信息会更丰富,视觉同激光相比优点是价格低很多,缺点也比较明显,测量精度要差 一些,对计算能力的要求也高很多。当然,这个精度差是相对的,在实用的过程中是完全足够的,并且我们目前的算法在我们的平台NVIDIA TK1和TX1上是可以做到实时运行。

KITTI采集的图

实际输出的深度图,不同的颜色代表不同的距离

在实际应用的过程中,我们从摄像头读取到的是连续的视频帧流,我们还可以通过这些帧来估计场景中 目标物体的运动,给它们建立运动模型,估计和预测它们的运动方向、运动速度,这对我们实际行走、避障规划是很有用的。

以上几种是最常见的几种传感器 ,各有其优点和缺点,在真正实际应用的过程中,一般是综合配置使用多种不同的传感器 ,以最大化保证在各种不同的应用和环境条件下,机器人都能正确感知到障碍物信息。我们公司的E巡机器人的避障方案就是以双目视觉为主,再辅助以多种其他传感器,保证机器人周边360度空间立体范围内的障碍物都能被有效侦测到,保证机器人行走的安全性。

避障常用算法原理

在讲避障算法之前,我们假定机器人已经有了一个导航规划算法对自己的运动进行规划,并按照规划的路径行走。避障算法的任务就是在机器人执行正常行走任务的时候,由于传感器的输入感知到了障碍物的存在,实时地更新目标轨迹,绕过障碍物。

Bug算法知乎用户无方表示

Bug算法应该是最简单的一种避障算法了,它的基本思想是在发现障碍后,围着检测到的障碍物轮廓行走,从而绕开它。Bug算法目前有很多变种, 比如Bug1算法,机器人首先完全地围绕物体,然后从距目标最短距离的点离开。Bug1算法的效率很低,但可以保证机器人达到目标。

Bug1算法示例

改进后的Bug2算法中,机器人开始时会跟踪物体的轮廓,但不会完全围绕物体一圈,当机器人可以直接移动至目标时,就可以直接从障碍分离,这样可以达到比较短的机器人行走总路径。

Bug2算法示例

除此之外,Bug算法还有很多其他的变种, 比如正切Bug算法等等。在许多简单的场景中,Bug算法是实现起来比较容易和方便的,但是它们并没有考虑到机器人的动力学等限制,因此在更复杂的实际环境中就不是那么可靠好用了。

势场法(PFM)

实际上,势场法不仅仅可以用来避障,还可以用来进行路径的规划。势场法把机器人处理在势场下的 一个点,随着势场而移动,目标表现为低谷值,即对机器人的吸引力,而障碍物扮演的势场中的一个高峰,即斥力,所有这些力迭加于机器人身上,平滑地引导机器人走向目标,同时避免碰撞已知的障碍物。当机器人移动过程中检测新的障碍物,则需要更新势场并重新规划。

上面这个图是势场比较典

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top