slam作为一种基础技术,从最早的军事用途(核潜艇海底定位就有了slam的雏形)到今天,已经逐步走入人们的视野,过去几年扫地机器人的盛行让它名声大噪,近期基于三维视觉的vslam又让它越来越显主流。
slam的前世
定位、定向、测速、授时是人们惆怅千年都未能完全解决的问题,最早的时候,古人只能靠夜观天象和司南来做简单的定向。直至元代,出于对定位的需求,才华横溢的中国人发明了令人叹为观止的牵星术,用牵星板测量星星实现纬度估计。
1964年美国投入使用gps,突然就打破了大家的游戏规则。军用的p码可以达到1-2米级精度,开放给大众使用的ca码也能够实现5-10米级的精度。
后来大家一方面为了突破p码封锁,另一方面为了追求更高的定位定姿精度,想出了很多十分具有创意的想法来挺升gps的精度。利用rtk的实时相位差分技术,甚至能实现厘米的定位精度,基本上解决了室外的定位和定姿问题。
但是室内这个问题就难办多了,为了实现室内的定位定姿,一大批技术不断涌现,其中,slam技术逐渐脱颖而出。slam是一个十分交叉学科的领域,我先从它的传感器讲起。
离不开这两类传感器
目前用在slam上的sensor主要分两大类,激光雷达和摄像头。(待会儿发的部分素材摘自官网、论文、专利,侵删)。
这里面列举了一些常见的雷达和各种深度摄像头。激光雷达有单线多线之分,角分辨率及精度也各有千秋。sick、velodyne、hokuyo以及国内的北醒光学、slamtech是比较有名的激光雷达厂商。他们可以作为slam的一种输入形式。
这个小视频是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的slam。
而vslam则主要用摄像头来实现,摄像头品种繁多,主要分为单目、双目、单目结构光、双目结构光、tof几大类。他们的核心都是获取rgb和depth map(深度信息)。简单的单目和双目(zed、leapmotion)我这里不多做解释,我主要解释一下结构光和tof。
最近流行的结构光和tof
结构光原理的深度摄像机通常具有激光投射器、光学衍射元件(doe)、红外摄像头三大核心器件。
这个图(下图)摘自primesense的专利。
可以看到primesense的doe是由两部分组成的,一个是扩散片,一个是衍射片。先通过扩散成一个区域的随机散斑,然后复制成九份,投射到了被摄物体上。根据红外摄像头捕捉到的红外散斑,ps1080这个芯片就可以快速解算出各个点的深度信息。
这儿还有两款结构光原理的摄像头。
第一页它是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。但据说doe成本也比较高。
还有一种比较独特的方案(最后一幅图),它采用mems微镜的方式,类似dlp投影仪,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。(产自st,st经常做出一些比较炫的黑科技)。
tof(time of flight)也是一种很有前景的深度获取方法。
传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。类似于雷达,或者想象一下蝙蝠,softkinetic的ds325采用的就是tof方案(ti设计的),但是它的接收器微观结构比较特殊,有2个或者更多快门,测ps级别的时间差,但它的单位像素尺寸通常在100um的尺寸,所以目前分辨率不高。以后也会有不错的前景,但我觉得并不是颠覆性的。
好,那在有了深度图之后呢,slam算法就开始工作了,由于sensor和需求的不同,slam的呈现形式略有差异。大致可以分为激光slam(也分2d和3d)和视觉slam(也分sparse、semidense、dense)两类,但其主要思路大同小异。
这个是sparse(稀疏)的
slam算法实现的4要素
slam算法在实现的时候主要要考虑以下4个方面吧:
1. 地图表示问题,比如dense和sparse都是它的不同表达方式,这个需要根据实际场景需求去抉择
2. 信息感知问题,需要考虑如何全面的感知这个环境,rgbd摄像头fov通常比较小,但激光雷达比较大
3. 数据关联问题,不同的sensor的数据类型、时间戳、坐标系表达方式各有不同,需要统一处理
4. 定位与构图问题,就是指怎么实现位姿估计和建模,这里面涉及到很多数学问题,物理模型建立,状态估计和优化
其他的还有回环检测问题,探索问题(exploration),以及绑架问题(kidnapping)。
这个是一个比较有名的slam算法,这个回环检测就很漂亮。但这个调用了cuda,gpu对运算能力要求挺高,效果看起来比较炫。
slam的今生——还存在着问题
多传感器融合、优化数据关联与回环检测、与前端异构处理器集成、提升鲁棒性和重定位精度都是slam技术接下来的发展方向,但这些都会随着消费刺激和产业链的发展逐步解决。就像手机中的陀螺仪一样,在不久的将来,也会飞入寻常百姓家,改变人类的生活。
不过说实话,slam在全面进入消费级市场的过程中,也面对着一些阻力和难题。比如sensor精度不高、计算量大、sensor应用场景不具有普适性等等问题。
多传感器融合、优化数据关联与回环检测、与前端异构处理器集成、提升鲁棒性和重定位精度都是slam技术接下来的发展方向,但这些都会随着消费刺激和产业链的发展逐步解决。就像手机中的陀螺仪一样,在不久的将来,也会飞入寻常百姓家,改变人类的生活。
(激光雷达和摄像头两种 slam 方式各有什么优缺点呢,有没有一种综合的方式互补各自的缺点的呢?)
激光雷达优点是可视范围广,但是缺点性价比低,低成本的雷达角分辨率不够高,影响到建模精度。vslam的话缺点就是fov通常不大,50-60degree,这样高速旋转时就容易丢,解决方案有的,我们公司就在做vslam跟雷达还有imu的组合。
(请问目前基于视觉的slam的计算量有多大?嵌入式系统上如果要做到实时30fps,是不是只有nvidia的芯片(支持cuda)才可以?)
第一个问题,虽然基于视觉的slam计算量相对较大,但在嵌入式系统上是可以跑起来的,sparse的slam可以达到30-50hz(也不需要gpu和cuda),如果dense的话就比较消耗资源,根据点云还有三角化密度可调,10-20hz也是没有问题。
并不一定要用cuda,一些用到cuda和gpu的算法主要是用来加速sift、icp,以及后期三角化和mesh的过程,即使不用cuda可以采用其他的特征点提取和匹配策略也是可以的。
Linux之父:Linux太垃圾了
Diodes公司最新产品介绍
ADI推出第二系列四通道DAC AD5686和AD5696
服务器防御DDOS的方法
二极管的原理与选型
探讨SLAM技术发展中还存在的问题
以仿真实验为主,解析电容与电感对电流测试会有什么影响
HK32MCU应用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施
罗技国际公司提高了年度预测
2020年中国人工智能产业市场规模预计超过1500亿元
学PLC编程 这些指令都了解吗
澳柯玛推出的全新S+Pro系列冰箱抗菌率可达99%
Xilinx首位华人CEO Victor Peng是何方神圣
火星应急信标:为“天问一号”安装“黑匣子”
霸菱科技不锈钢阿里云智能指纹锁S1简介
区块链分叉是行业的大忌
矽力杰高集成Mini LED解决方案
携号转网倒逼运营商改进服务质量,进一步提速降费
可制造性设计中常见的二十个问题及解决方案(上)
uOLED 32028 P1T OLED模块的应用