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

路漫漫其修远兮。设计

相关文章
相关标签/搜索