• SLAM产品化的一些思考


    这两年一直在做SLAM产品化的一些工作,有些感触,想和大家分享一下。很多想法只是个人浅见,不当之处还望大家指正。

    我这两年分别做了AR眼镜和辅助驾驶方向的开发,说实话,挫折大于成果。SLAM产品化之难,超出了我的想象。
    先说说我做项目的一般思路。

    • 前期调研。分析项目的产品化需求,输入输出,软硬件平台,以及相关(开源)算法的初步测试和分析。
    • 算法架构设计。根据调研结果,大致确定算法模块的功能和具体实现方法。
    • 迭代开发。开发过程中必然会碰到很多预料之外的问题。如果有备案,那么尝试备案方案。如果遇到了原理性的问题,那么要修正和扩展架构。
    • 技术储备。开发过程中要时刻注重新技术和新方法的储备。

    实际开发过程中,有几个方面会特别影响SLAM的进程。这和SLAM技术的特点有关。

    其一,SLAM是一个技术栈,而不是一个单一算法。无论在哪个应用领域,开发者都会面临很多单一开源算法解决不了的实际问题。SLAM算法本身又有多种实现方式,滤波VS优化,稀疏VS稠密,松耦合VS紧耦合,里程计VS回环优化,人工特征VS语义特征,等等等等。因此,SLAM的架构设计既需要SLAM理论的深度和广度,又需要大量的实践经验,还需要对上下游的算法和硬件有比较充分的理解和认知。

    其二,SLAM强依赖于硬件。硬件不同,算法大大不同,整个系统的计算复杂度、鲁棒程度和可扩展性都会有差别。多传感器SLAM更是提高了系统设计的复杂度。

    其三,SLAM的实用化还需要探索。SLAM算法的不同模块耦合程度高,当算法不能满足要求时,不能简单通过调参或者增减模块控制精度,有可能需要调整整个算法架构或者传感器设计,因此总是属于系统中风险较高的部分,不可控性强。SLAM需要软硬件和计算平台强有力的支撑,但SLAM本身在项目中的地位经常无法达到如此的高度,因此会有些尴尬。

    要解决以上几个问题并不容易,有几点意见仅供参考吧。

    • 除了提升自身水平以外,SLAM圈子需要更深入的交流。泡泡机器人在普及方面做的很好,但可能在交流方面做得还不够深入。
    • SLAM的架构设计应当高度模块化,尽量解耦。将建图和定位分开算是一定程度上的解耦。语义SLAM可以看做是将前端特征提取和SLAM系统解耦。SLAM也许不应当大包大揽所有功能。
    • 针对应用场景做微创新。譬如,减小问题自由度,利用各种已知信息(landmark/map),等等。

    路漫漫其修远兮。

  • 相关阅读:
    第二十二节:类与对象后期静态绑定对象和引用
    WePHP的表单令牌验证
    第二十一节:类与对象对象的比较类型约束
    Windows下 C++ 实现匿名管道的读写操作
    Mongoose 利用实现HTTP服务
    C++ Qt 框架静态编译 操作记录
    使用Qt框架开发http服务器问题的记录
    把CMD下的color 方案遍历一遍
    C++学习笔记
    在1~10的整数范围随机5个不重复的整数
  • 原文地址:https://www.cnblogs.com/luyb/p/9124950.html
Copyright © 2020-2023  润新知