五、总结
双目视觉导航的一般流程是先对两相机进行标定,获取畸变参数、相机内外参数;然后使用上一步标定结果对左、右两相机采集的图像进行畸变校正和极线校正;再进行立体匹配,计算两图片的匹配点,并计算视差图。
图6-39所示为一幅视差图。视差图中像素点的亮度越亮,表示距离相机越近;亮度越暗,表示距离相机越远。当无人机采用双目视觉导航系统时,即可感知相机前方障碍物距离的远近,从而实现避障和导航。
图6-39 视差图
【任务实施】
双目视觉导航系统需要进行图像处理,需要占用大量的计算资源和存储资源,一般飞控难以满足图像处理运算需求,因此需要用到处理能力更强的机载计算机。与无人机飞控搭配使用的机载计算机种类有很多,现在市场上一般使用树莓派来处理双目视觉传感器采集到的图像。
1.设备准备
在搭建双目视觉导航系统前,需要组装好一架基于Pixhawk飞控的多旋翼无人机,还需要准备一台树莓派和双目视觉传感器,这些设备参考的型号配置见表6-1。
表6-1 主要设备型号配置清单
这里的双目视觉传感器采用的是Intel RealSense跟踪摄像头T265,专为机器人、无人机和增强/虚拟现实(AR/VR)等应用而设计。Intel RealSense跟踪摄像头T265通过收集来自两个板载鱼眼摄像头的输入,提供六自由度(6DoF)内向外跟踪,每个摄像头具有大约170°的范围视图,能为无人机提供高性能的导航。
2.设备安装
(1)将机载计算机安装在无人机上中心板上,一般通过钣金铜柱将机载计算机底座与上中心板连接起来,并使用UBEC给机载计算机供电。
(2)将Intel Real Sense T265安装在无人机上,使相机朝向机体坐标系x轴正方向。由于视觉传感器要避免振动带来的图像模糊,所以视觉传感器的安装要做好减振措施,可以先将壳体装在无人机上,然后使用厚的双面胶将视觉传感器粘在壳体内,安装效果如图6-40所示。
图6-40 双目视觉传感器安装
(3)用USB线将Intel RealSense T265连接至树莓派的USB 3.0端口,同时用Pi Connect Lite串口线连接树莓派的串口至Pixhawk飞控的TELEM2口(图6-41)。
图6-41 接线示意
3.飞控配置
(1)用Micro USB线或数传电台将飞控与计算机相连,然后打开Mission Planner软件,选择合适的串口,单击“Connect”按钮。
(2)进入全部参数表页面,将“SERIAL2_PROTOCOL”参数设置为2,“SERIAL2_BAUD”设置为921。
(3)进行导航参数配置。进入全部参数表页面,按照表6-2依次配置各项参数,然后单击“写入参数”按钮,并重新启动飞控。
表6-2 导航参数配置
(4)重新建立飞控与地面站的连接,在飞行数据的地图窗口内,单击鼠标右键,选择“Set Home Here”,然后选择“Set EKF Origin Here”,告诉飞控当前的位置,然后地图上就会出现无人机图标。
(5)在飞行前,将无人机提起至1 m高度,然后放下,这样使视觉传感器能够校正其垂直方向的尺度。
4.配置双目视觉传感器运行环境
(1)在树莓派上安装Librealsense和Pyrealsense2。
(2)更新PYTHONPATH环境变量,并将其路径添加至Pyrealsense2库。
(3)下载t265_to_mavlink.py文件,并在树莓派上运行,测试Pyrealsense2是否正确安装以及T265能否正常工作。
5.测试前的验证
为了确定飞控是否接收到了T265发过来的消息,可以在Mission Planner地面站上,使用Ctrl+F快捷键,打开“temp”窗口,然后单击“Mavlink Inspector”按钮,这时应该能看到视觉传感器发过来的数据。从图6-42中可以看出,视觉传感器传送给飞控的数据有导航坐标系下的位置、航姿及可信度。
图6-42 视觉传感器数据
6.地面测试
(1)断开地面站与无人机的连接,然后重新建立连接。
(2)在树莓派下运行t265_to_mavlink.py,并在地面站地图上设置EKF的原点,等待一段时间,直到地图上出现无人机图标(图6-43)。
图6-43 地面测试
(3)提起无人机,行走一段路程,检查地图上无人机图标的位置是否跟着走动,地图上无人机的运行轨迹应该与实际行走的轨迹相差不大。
(4)在测试过程中,要时刻关注视觉传感器输出的数据可信度和实际定位性能,只有在可信度高的情况下,才可以相信其输出的六自由度数据。
(5)如果视觉传感器数据丢失,可以尝试重新启动飞控。
7.飞行测试
(1)在姿态或定高模式下起飞,检查飞机是否稳定飞行。
(2)手提无人机走动,观察地面站上飞机的轨迹追踪是否稳定。
(3)切换至留待模式,但要时刻准备着切回姿态或者定高模式,以免发生意外。
(4)在留待模式下,无人机应该能稳定悬停,且位置能保持住。
(5)以不同的速度移动和转动无人机,同样也要时刻注意切回姿态或者定高模式。
如果一切如预期那样,下次就可以在留待模式下解锁起飞。
【拓展阅读】
视觉里程计
视觉里程计,顾名思义,就是通过视觉来测量位置,是一种通过分析相关图像序列来确定机器人位置和朝向的设备。
视觉里程计相比光流传感器具有直接测量位置的能力,测量值也比较准确,不会像光流测速模块容易发散;通常比较优秀的视觉里程计飞100 m之后只积累十几厘米到几十厘米的误差;同时,也比光流测速模块能力更强,性能更好。视觉里程计不仅要通过二维图像测量物体的平面运动,还要计算出这些物体的三维位置,并且基于这些三维位置信息做很多次的优化计算,算法复杂度成倍于光流测速模块。有些视觉里程计的算法甚至包含完整的光流追踪的算法,但是仅仅把计算光流作为预处理图像的步骤。
视觉里程计由相机和IMU组成,相机可采用单目或双目相机,一般多采用双目相机。
我们熟知的大疆精灵4无人机上就有视觉里程计,是由双目立体视觉加上IMU构成的。大疆精灵4的视觉里程计精度非常高,悬停时完全不会飘,而且即使用手拉动它,它也会挣扎着回到原来的位置,显得很稳定。而且,在几乎没有纹理变化的均匀地面上,也可以做到稳定悬停。
精灵4无人机上装有两套双目立体视觉:一套向下看,一套向前看。两套立体视觉都参与了视觉里程计的计算,一般,以向下看的双目立体视觉系统为主,如果向下看的相机对着一些纹理特征不明显的表面(如纯色的地板、海面等),视觉里程计会自动切换到向前看的立体视觉系统。当GPS信号不好时,视觉里程计可以接替GPS为整个系统提供稳定的观测;当有GPS时,视觉里程计依然可以继续运作,提供额外的速度和位置测量值进一步提高导航定位精度(图6-44)。
图6-44 精灵4无人机上的立体视觉
两套双目立体视觉系统还带来了视觉里程计之外的两个好处:
其一是向下看的一套双目立体视觉系统可以探测下方地面上物体的三维位置,从而知道地面的距离;
其二是向前看的一套双目立体视觉系统可以用来探测前方场景中物体的深度,产生深度图进行障碍感知。深度图还可以用于重建一个飞行器周围的局部地图,以进行精细的运动规划,这就是精灵4指点飞行的基础。
【巩固提高】
1.双目视觉系统用到了哪些坐标系?这些坐标系之间的关系是怎样的?
2.什么是视差?视差和深度有什么关系?
3.简述双目视觉立体标定的过程。
4.立体匹配有什么作用?
5.如何通过图片上的像点得到其对应的三维世界中物点的位置信息?