移动机器人需要通过传感器实时获取周围的障碍物信息,包括尺寸、形状和位置信息,来实现避障。避障使用的传感器有很多种,目前常见的有视觉传感器、激光传感器、红外传感器、超声波传感器等。
超声波传感器
超声波传感器的基本原理是测量超声波的飞行时间,通过d=vt/2测量距离,其中d是距离,v是声速,t是飞行时间。
上图是超声波传感器信号的一个示意。通过压电或静电变送器产生一个频率在几十kHz的超声波脉冲组成波包,系统检测高于某阈值的反向声波,然后使用测量到的飞行时间计算距离。超声波传感器一般作用距离较短,普通的有效探测距离几米,但是会有一个几十毫米左右的最小探测盲区。由于超声传感器成本低、实现方法简单、技术成熟,是移动机器人中常用的传感器。
红外传感器 一般的红外测距都是采用三角测距的原理。红外发射器按照一定角度发射红外光束,遇到物体之后,光会反向回来,检测到反射光之后,通过结构上的几何三角关系,就可以计算出物体距离D。
当D的距离足够近的时候,上图中L值会相当大,如果超过CCD的探测范围,虽然物体很近,传感器反而看不到了。当物体距离D很大时,L值就会很小,测量精度会变差。因此,常见的红外传感器的测量距离都比较近,小于超声波,同时远距离测量也有最小距离的限制。另外,对于透明的或者近似黑体的物体,红外传感器是无法检测距离的。但相对于超声来说,红外传感器具有更高的带宽。
激光传感器
常见的激光雷达是基于飞行时间的(ToF,time of flight),通过测量激光的飞行时间来测距d=ct/2,类似前面提到的超声测距公式,其中d是距离,c是光速,t是从发射到接收的时间间隔。
比较简单的方案是测量反射光的相移,传感器以已知的频率发射一定幅度的调制光,并测量发射和反向信号之间的相移,如上图。 调制信号的波长为lamda=c/f,其中c是光速,f是调制频率,测量到发射和反射光束之间的相移差theta之后,距离可由lamda*theta/4pi计算得到,如上图。
视觉传感器
常用的计算机视觉方案也有很多种, 比如双目视觉,基于TOF的深度相机,基于结构光的深度相机等。
基于结构光的深度相机发射出的光会生成相对随机但又固定的斑点图样,光斑打在物体上,因为与摄像头距离不同,被摄像头捕捉到的位置也不相同。先计算斑点与标定的标准图案在不同位置的偏移,利用摄像头位置、传感器大小等参数就可以计算出物体与摄像头的距离。
双目视觉的测距本质上也是三角测距法,由于两个摄像头的位置不同,就像人的两只眼睛一样,看到的物体也不一样。两个摄像头看到的同一个点P,在成像的时候会有不同的像素位置,此时通过三角测距就可以测出这个点的距离。