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),等等。
路漫漫其修远兮。
SLAM产品化的一些思考的更多相关文章
- SLAM前端技术选择思考
以前是专门做室内定位技术研究的,先后学习和分析了多种基于电磁的室内定位技术,如WiFi指纹定位(先后出现过RSSI.CTF.CIR多种指纹特征).WiFi ToF定位.低功耗蓝牙BLE以及iBeaco ...
- SLAM应用的一些思考
关心SLAM技术的人有两种.一是像我这样的研究者,为了了解其中各种方法和模块的原理.二是机器人技术的开发者,旨在将SLAM技术用到他们自己的机器人上.从数量上来说,第二类人数远多于第一类,他们的需求也 ...
- 分享| 语义SLAM的未来与思考(泡泡机器人)
相比典型的点云地图,语义地图能够很好的表示出机器人到的地方是什么,机器人“看”到的东西是什么.比如进入到一个房间,点云地图中,机器人并不能识别显示出来的一块块的点云到底是什么,但是语义地图的构建可以分 ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- SLAM for dummies中文翻译
1.简介 本文的主要目的是简单介绍移动机器人领域中广泛应用的技术SLAM(同步定位与地图绘制)的理论基础以及应用细节.虽然目前存在很多关于SLAM技术的方方面面的论文,但是对于一个新手来说,仍然需要花 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- 浅谈SLAM的回环检测技术
什么是回环检测? 在讲解回环检测前,我们先来了解下回环的概念.在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说 ...
- 学习Spring的思考框架
引子 很早之前听同事说:“要开会了.我都知道领导要问什么,就那几板斧.”其实领导之所以为领导,人家问的问题确实很合情合理,甚至可以说一针见血.而之所以能问出来这些合理的问题,就是因为头脑中有自己的思考 ...
- K2 BPM_北汽新能源业务流程管理信息系统建设思考_全球领先的工作流引擎
本文由CIO发展中心根据北汽新能源流程与IT总监刘伟霞在“亦庄CIO数字化转型探索——CIO发展中心亦庄分舵2019夏季论坛”活动中演讲整理. 在“亦庄CIO数字化转型探索——CIO发展中心亦庄分舵2 ...
随机推荐
- JIRA服务器搭建
JJIRA服务器搭建 http://wiki.csdn.net/display/CSDN/Atlassian CSDN国内代理: http://atlassian.csdn.net/m/btc/atl ...
- system表空间空间不足解决办法
场景描述: 系统表空间空间不足,导致应用无法正常连接!!! 环境描述: ORACLE 11G 查看当前表空间的整体使用情况,以及有没有开启自动扩展,以及扩展的最大限制!!! ---tablespace ...
- 转:TCP为什么要3次握手和4次挥手时等待2MSL、 TCP如何保证消息顺序以及可靠性到达
关于tcp三次握手.四次挥手可以看这里:TCP与UDP的差别以及TCP三次握手.四次挥手 1.TCP为甚要3次握手? 在谢希仁著<计算机网络>第四版中讲“三次握手”的目的是“为了防止已失效 ...
- spring cloud(服务消费者(利用ribbon实现服务消费及负载均衡)——初学二)
Ribbon是一个基于HTTP和TCP客户端的负载均衡器,利用ribbon实现服务消费,并实现客户端的负载均衡. 一.准备工作(利用上一节的内容) 启动服务注册中心 启动computer-servic ...
- 浏览器中F5和CTRL F5的行为区别及如何强制更新资源
一.浏览器中F5和CTRL F5的行为区别 我们直接来看效果,下面是我打开qq网页,分别使用F5和CTRL F5,我们来看区别. F5: CTRL F5: 区别: 首先直观上的区别是CTRL F5明显 ...
- 全网最详细的Windows系统里PLSQL Developer 32bit的下载与安装过程(图文详解)
不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端32位,是远程连接,因此本地配置PLSQL Developer32位. PLSQL Develope ...
- 三:理解Page类的运行机制(例:在render方法中生成静态文件)
我这里只写几个常用的事件1.OnPreInit:此事件后将加载个性化信息和主题2.OnInit:初始化页面中服务器控件的默认值但控件的状态没有加载,没有创建控件树3.OnPreLoad:控件完成状态和 ...
- JavaScript初探二
//----------总结01.查找dom元素 document.getElementById();//通过id获取一个dom元素 document.getElementsByClassName() ...
- 解决Oracle死锁问题,及产生的原因
文章来源:http://www.cnblogs.com/leijh/archive/2012/10/15/2724165.html 最近老是发现应该执行操作数据库的代码时发现执行不了,查了一下发现是数 ...
- 面试:用快排实现数组中的第K大的数
#include <iostream> #include <cassert> using namespace std; int selectKth(int a[],int st ...