【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @】
slam技术,就是一边定位一边进行建图。现在比较流行的扫地机器人,其实就是slam应用的一个例子。另外工业生产上用的比较多的AGV,有一部分也是slam技术。相比较传统的磁条导航,带有slam的AGV不需要磁条,可以自己对环境进行建图,并且快速进行部署,接受服务器控制。
1、应用场景
家庭上主要是扫地机器人,工业上主要是AGV、无人叉车等,无人驾驶也算一部分。
2、slam分类
主要是激光slam和视觉slam。
3、基本流程
经典的slam一般包括三个部分。前端负责获取传感器数据、寻找特征点、特征匹配、数据融合、计算里程计、求解姿态和位置。后端负责对前端的结果数据进行进一步优化,主要有滤波优化和图优化两种方法。除了前端和后端,还有一个就是回环检测,如果识别到机器人回到了原来的场景,那么可以重新进行姿态矫正,减小传感器误差。
slam的关键在于优化和回环检测,slam做的好不好、能不能用,就在于这两个方面。
4、为什么要后端优化
传感器的数据都是有误差的,如果没有优化,我们会发现构建出来的图是一个不合理的图。即使robot转了一圈回来之后,这时会发现终点和起点没有重合。
5、soc方案
除了传统的树莓派,现在最火的应该是jetson nano,因为有gpu的加持,算力会比较强。
6、操作系统
linux,目前用的最多的其实就是ubuntu
7、slam的主要软件平台
ros,ros其实是一个中间件,习惯上称之为机器人操作系统
ros里面其实东西比较多,类似于一个大杂烩,比如说机器人手臂、仿真、地图显示什么的都可以做。slam只是其中的一部分内容。
8、机器人平台
jetbot或者类似的套件
9、slam使用的主要技术
摄像机标定、摄像机外参标定、pcl点云库、opencv库、Eigen线性代数、sophus库计算李群问题、g2o优化、robot规划、车辆控制、A*算法等等。
常用的传感器有激光、摄像头、imu、gps、轮式里程计或者轮式编码器、麦克风矩阵等等。
10、slam是否需要每一次都重构地图
理论上只需要构建以此,后面就可以直接利用了,当然也取决于地图中的关键帧信息。有了地图,就可以每时每刻都知道自己的位置,方便对路径进行规划、对车辆进行路线设计了,能做的事情也多了不少。
11、slam参考资料
目前slam的书籍比较少,除了论文,slam十四讲可以参考下。
12、目前的发展情况
激光slam比较成熟,视觉slam (比如vio)有所发展,但是做成产品还是有距离。
13、开源代码
开源代码其实挺多的。在github上搜一下,就可以出来好多,大家可以选择适合自己的。
视觉方面,比如orbslam就不错,大家可以参考这个链接,
/p/47451004
上面还有视频,体验一下slam出来的效果是什么样的。
如果是激光方面,可以直接参考ros gmapping或者hector,最新的方法可以参考Cartographer。
14、matlab资源
/Download/item/id/3868383.html
一个有趣的matlab slam代码
15、比算法更重要的事情
很多同学学slam偏向于算法,这无可厚非。但是比这更重要的是产品能否落地、能否帮助客户的问题、耐久性有没有问题、成本是否hold住,这些往往不是科学的事情,而是技术、工程的事情,甚至是商业的事情。
对于嵌入式的同学来说,slam也是一次机会。嵌入式上面的算力、网络、加速、安全等等,都是不小的一个挑战。slam的前端算法、后端优化中,特别是优化,往往是加速的重点,优化意味着更多的循环、计算和算力要求,同时为了保障实时性的要求,必须在借助于multi core、dsp、fpga、npu或者gpu的帮助了,这个就看各个供应商自己的绝活了。