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),等等。

路漫漫其修远兮。

posted @ 2018-06-03 15:12  路游侠  阅读(1944)  评论(1编辑  收藏  举报