机器学习与计算机视觉(slam技术)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

 

    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就不错,大家可以参考这个链接,

    https://zhuanlan.zhihu.com/p/47451004

   上面还有视频,体验一下slam出来的效果是什么样的。

 

    如果是激光方面,可以直接参考ros gmapping或者hector,最新的方法可以参考Cartographer。

 

14、matlab资源

    http://www.pudn.com/Download/item/id/3868383.html

    一个有趣的matlab slam代码

 

15、比算法更重要的事情

    很多同学学slam偏向于算法,这无可厚非。但是比这更重要的是产品能否落地、能否帮助客户的问题、耐久性有没有问题、成本是否hold住,这些往往不是科学的事情,而是技术、工程的事情,甚至是商业的事情。

    对于嵌入式的同学来说,slam也是一次机会。嵌入式上面的算力、网络、加速、安全等等,都是不小的一个挑战。slam的前端算法、后端优化中,特别是优化,往往是加速的重点,优化意味着更多的循环、计算和算力要求,同时为了保障实时性的要求,必须在借助于multi core、dsp、fpga、npu或者gpu的帮助了,这个就看各个供应商自己的绝活了。

 

 

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页