高翔博士SLAM硬件体验:INDEMIND双目IMU相机
本文转自高翔博士知乎专栏文章《SLAM硬件体验-INDEMIND双目IMU相机》
很多算法问题本质上是硬件问题。”
这句话相信很多人都应该有所体验。很多时候你发现自己的算法表现不好,背后的原因其实与算法无关,比如:
传感器内外参标定不准;
各传感器的时间同步问题;
驱动程序时不时地丢数据或卡顿;
相机视野不够、曝光不稳定;**
诸如此类。所以我准备写一些SLAM相关的硬件体验,主要是指视觉SLAM方面的。近年来国内外出现了不错的双目/RGBD相机,很多还集成IMU器件,二者硬件同步也慢慢成为一种标准的配置。我之前体验过的主要有:
Stereo lab的ZED;双目相机,自身提供不错的功能比如深度估计和ZED Fusion;
DUO3d;红外双目相机,集成IMU;
国内的perceptIn、小觅、远形、INDEMIND,等等。
我希望这种硬件体验文章能为该方向的读者提供一些选型的指导,方便读者在自己研究的时候作为参考。在这篇文章里,我主要归纳一下INDEMIND出的这款双目相机的体验:
首先我们明确一下SLAM算法对相机有哪些需求:
图像频率:图像频率越高越好。频率高,两个图像之间的差异就越小,算法允许的运动速度就越快。无人车上用的相机常见为15Hz,20Hz,普通的约30Hz,60Hz,更快的也有120Hz左右的。
图像分辨率:常见的有640x480,752x480,1920x1080的。高分辨率图像会影响算法性能,并且分辨率和频率成反比。在SLAM应用里,我们更偏向频率。
卷帘快门/全局快门。:局快门相机不易产生运动模糊,在SLAM应用中优势较大。
视野(FoV):在畸变能够正确校正的情况下,越宽越好。宽视野相机不易被遮挡,也能有效降低白墙、弱纹理区域影响。SLAM中我通常偏好广角(水平120度以上)、鱼眼(180度)乃至全景相机(360度)。
IMU:通常为MEMS IMU,我们需要有硬件时间同步,因为绝大多数算法无法处理图像数据和IMU存在时延的情况。IMU本身自然在成本范围内,性能越高越好。
下面我们来看INDEMIND这款双目IMU相机,我拿到的这个是工程版,还没有上罩子:
它的几个重要参数列举如下:
两个全局快门相机,灰度图像,输出到USB。
广角相机,水平视野120度,垂直75度。
图像在1280x800分辨率下最高达到100Hz,640x400分辨率下最高200Hz,属于高速相机。
IMU型号为ICM-20602,性能和MPU 6050差不多(Youtube上有一个性能比较视频[1]),最高1000Hz。
基线12cm,和ZED一致,估计深度范围大约在0.5-20m,可用于室内场景。
自带深度估计功能,输出深度图像为640x400,25Hz。
自带SLAM功能,可以读到相机计算的Pose,25Hz。
定价为999(优惠价799)。
综合看来,这款相机属于小基线、高频率的双目摄像头,优势在于频率高,且有硬同步的IMU。同时价格方面相比于ZED这类相机要便宜很多。
配件拿到手里大约是这样,相机本体,一根USB线,两个镜头盖。
插上USB线之后就能点亮(要是有个架子挂电脑上就更方便了,碎碎念):
软件方面,如果是Ubuntu 1604或者1804,可以直接在电脑上测。我用的1804,改了下Demo程序的cmakelist之后就可以测Demo。Demo主要有两项内容:深度图显示以及自带的SLAM功能。以下视频是在我家的小房间内测试:
测试下来,整体感受有以下几条:
深度图表现和双目算法预期差不多,和RGBD比肯定有一点距离,但是双目稠密深度本来也做不了特别稳定。这个相机的深度图不需要GPU,算是一个优势。
自带的SLAM是基于角点匹配的,由于广角的存在,通常条件下表现不错。
在测试环境中出现了几种情况:
曝光变化。比如窗口在室内看起来很亮,靠近之后曝光会调节到正常水平;
远景。朝窗外观察时,双目应该测不到深度,退化为单目,但slam还能正常工作;
快速旋转。由于存在IMU且相机频率较高,可以正常追踪。
弱纹理。弱纹理对基于特征的方法还是很不友好的。目前这个自带的SLAM在追踪不到时,UI会停止更新,这点还有待加强。
此外,这个器件也支持接入现有的开源SLAM或者ROS,对SLAM开发者比较友好。
综合来说,INDEMIND这款相机优缺点列举如下。
优势:
成本便宜。类似传感器中,ZED价格在2800,DUO3D在5000左右,和小觅的入门版在一个价位。
相机频率做的很高,对快速运动有优势。
有硬同步的IMU,频率也够高,自带标定。
水平120度的广角视野。
SDK自带SLAM功能。
缺点:
目前还没有彩色版本,要做机器学习和感知还需要再加别的传感器。
希望这篇体验文章对读者的科研、开发有所帮助。我之后也会写一些类似的硬件体验类文章,以供读者查询。