机器人、无人车、无人机、AR都离不开它,什么东西这么管用?

[复制链接]
_7 J9 i4 d8 g
2 j# O: J: @( p4 l( f

作者:

0 \/ E' s$ F& E& d& T: S2 g
6 {6 Y1 I- G1 P* v
$ v+ j* Z' h: x/ M7 S

当你身处一个陌生的地方,要准确找到目的地和路线,十有八九会打开手机上的地图 app,然后定位、输入目的地、规划路线、导航。

9 d! U/ C* }1 I5 j8 p& e
0 @, S) i& s9 {; d$ j: s; Z
% X) g8 E5 u. e' l

机器人也一样。当它们身处未知环境时,一样要通过以上步骤才能做出正确的运动。只不过,机器人靠的不是手机地图 app,而是 SLAM 技术。

W. d& u! K3 i5 J* c! L
3 C8 s' D' r2 \2 |9 P
$ |9 F$ d7 y" H1 Z% f5 ]

SLAM 全称 Simultaneous Localization and Mapping,中文名曰「同步定位与地图构建」,主要用于解决机器人在未知环境运动时的定位和地图构建问题。这更像一个概念,而不是某种算法。它本身包含许多步骤,其中的每一个步骤均可以使用不同的算法实现。

( V7 B& u' z+ ?$ S
7 ~4 u- f2 [ |; U: N
o- U1 C( J3 T9 D- j8 e

机器人、无人车、无人机、AR,无所不能的 SLAM

8 \2 K! F5 G) f5 t$ c0 ]
~ N, i8 z9 v7 G6 c& T" v
0 R8 l( f7 Q$ M' }) v0 Z1 r1 D

两年前,SLAM 最流行的应用场景还只是我们家里的扫地机器人。近几年,随着无人机、无人驾驶、服务机器人、仓储机器人以及 AR 的兴起,SLAM 作为其中核心技术的一种,正变得越来越重要。

, J/ J) @: E$ ]) |, d% Q
& Z% z! Y7 F' V0 l
5 G# G, ?8 ^: v* z B' D
6 X1 O( p4 j% ]% Q; d4 ?
% x" L1 h w! i; C9 X
8 K/ m3 F* w% z s3 n1 I" w/ ?% t

曾引用 SLAM 技术发烧友 Guang Ling 的话,来强调 SLAM 技术的重要性:雷锋网过去一篇文章

9 y @0 {, Z6 S# D( c! Q
8 y0 B) `% D6 |7 |; g+ g
/ M3 S8 U: j8 s" U, \

一个机器人也好,无人汽车也好,其中最核心,最根本的问题有四个,定位技术、 跟踪技术、 路径规划技术(Path Planning), 还有就是控制技术(Controlling)。

0 X! h/ `( n8 J4 a
; Z) t' c* @0 x% Y
* q4 c; v4 U/ E/ P6 V* [

而这四个问题中的前三个,SLAM 都扮演了最核心的功能。打个比方,若是手机离开了 wifi 和数据网络,就像无人车和机器人,离开了 SLAM 一样。

7 b. I6 \: p" n/ P: t1 H( g
# U9 p0 N5 Z6 s
' t2 S+ {2 z* ?# I

也许有读者好奇,为什么无人车也非常依赖 SLAM?因为无人车被看作移动机器人的一种,也需要首先解决定位、避障和导航的问题。目前用在无人驾驶汽车上的 SLAM 主要是基于激光雷达传感器,后面会详细提到。

0 |/ Q0 T b& d" p0 W* [' q5 t
# b* d% G0 W. w9 e t* w9 `
; L! w8 I4 ]' B3 }
2 } R' w+ Y# P
1 q6 I6 h/ h8 O9 H3 q
1 W. A6 G+ V! W( w5 ]

天上飞的的无人机同样需要 SLAM 来「添翼」。SLAM 能让无人机知道障碍物在哪里,进而实现自动避障的功能。

! w5 y8 M3 i) }- P
; f0 I2 f: |/ m( l& y w
8 C" X% v; [* c! l6 ~8 c0 ^

香港科技大学助理研究员徐枭涵曾在知乎上如此形容 SLAM 对无人机的重要性:

# ~0 T" w( j% x) F+ @( T. W1 `
! `( t7 V* _0 D+ v) G4 j: d0 w+ S
$ y8 G! M7 e& b. Q2 x

所有的关于无人机的梦想都建立在 SLAM 之上,这是无人机能飞(具有定位,姿态确定以后)的时代以后,无人机最核心的技术。也是现代无人机和玩具的区别。

) y# i: v/ {) e, d8 Q7 Q% p
+ r% ?6 }1 Y; y: a* t
% c) B& g; f0 d$ B4 H
% l0 U! \2 L( j( c* ^6 q
0 A9 Z$ ]. ?8 A! l
3 Z& {! o% [) f

无人车、无人机,都可以算作机器人的一种,依赖 SLAM 很好理解。但与机器人没什么关系的 AR 设备,其实也是 SLAM 的一个重要应用。

+ v, r; n- X& N" g+ {! B
" j+ B( [# X" Y4 k { `; V
. T4 H) n5 G" ?) a: Q6 t, c

如果没有 SLAM 加持,所有头戴眼镜就只是一个近眼投影设备。有了 SLAM,AR 眼镜才能知道自己的空间坐标和相对于室内各种障碍物的位置,同时识别出各种室内摆件的形状。这是 AR 设备人机交互的基础。

4 w( n, I' a( d! r4 F
/ l$ S. K1 o/ J! r0 j; z
. s+ x$ t, H) G, v' i$ [
; @: q9 @( z7 C& \" f
B& q8 q4 ~" ]7 ]4 u- Z
- l' D7 W/ Q7 f/ M$ n. A

由于 AR 是将虚拟图像叠加在真实物体上,所以 SLAM 的应用讲究局部精度,要求避免出现漂移、抖动的现象,虚拟与真实才能完美地融合在一起。另外,AR 对帧率、硬件体积、计算量、功率、成本等问题都更敏感。

" G" ?* U$ p, E' C
1 _6 Q( H7 ?7 E
* u( N1 n, d9 L3 a

激光雷达、单目、双目、RGBD,SLAM 传感器的分类

- m* G0 V4 E, h$ i
. ?% g4 j- a# d W
! Q* I+ `9 X: _( c7 y* K

实现 SLAM 的第一步,是选择传感器的形式和安装方式。传感器分为激光雷达和视觉两大类,视觉下面又分三小方向。

3 r1 v+ t1 [. t* |" ?
( `; H) ^! T" D; a! [
# V/ k% |) E0 ]% E

激光雷达

! W! F7 J7 N, R* D
. Z1 q9 x+ @" z+ ]8 l$ S
, {" m( }( W- P! T8 g4 Q2 h, c

激光雷达能以很高精度测出机器人周围障碍点的角度和距离,而且速度快,计算量也不大,容易做成实时 SLAM。激光雷达一般用于扫描一个平面内的障碍物,适用于适用于平面运动的机器人(如无人车、扫地机器人)。

0 X% D1 G& b. b
& w( [4 N- E8 E% `* H2 [
! N g, a' x* f3 v% t+ ?

许多行业分析师认为,激光雷达是实现全自动驾驶的关键传感器,其产品被以 Google、百度为代表的企业认可。

9 @0 d5 d9 Q9 J1 b
3 Q/ k1 Z; ?* n% I1 v# v4 D0 |
: B) q1 Y# K8 a- N
5 M* T* M' l s- d3 Q8 N5 A, T
4 G+ \+ A7 s2 V& h& q
5 d" ], v. L+ R; Y

不过,激光雷达制造成本高,价格十分昂贵,比如 Google 无人车目前使用的激光传感器单个定制成本在 8 万美元左右,百度采购一台激光雷达也要 70 万人民币。

3 {+ g. y }8 A* }; ~
9 P2 o# o) Y) Q; a9 s2 `$ i0 M( I
; r. o+ l% k5 L) b% `9 A: u& a2 m

成本已然成为激光雷达普及最大的拦路虎。2016 年 8 月福特和百度一起投资了激光雷达厂商 Velodyne LiDAR 1.5 亿美元,目的就是帮助 Velodyne 降低激光传感器的成本。Velodyne 希望将激光雷达的价格降到 300 到 500 美元之间,以满足大众汽车市场。

) h6 D% H& y0 m' V
: f" ^( X$ Z& c/ f
+ T4 z9 ]* K$ }3 \

视觉 SLAM

, }" `- G0 C) a1 u
% H, ? i+ q5 @3 O; k( \/ L
8 D$ d; a7 k- J9 D

视觉 SLAM 是 21 世纪 SLAM 研究热点之一。CPU、GPU 处理速度的增长和硬件的提高,让许多以前被认为无法实时化的视觉算法,得以在 10 Hz 以上的速度运行。

) W( `+ {: ^ @0 f! |0 h+ p# Q& j
( L% q* `3 d1 u/ E9 h3 g" a! b
; O) {: w' q$ f% y$ D6 @8 P6 z0 T

按照摄像头的数量和种类分,视觉 SLAM 分 3 个子方向:单目、双目(或多目)、RGBD。此外,还有鱼眼、全景等特殊摄像头,但是都属于少数。

6 |! g. Y1 G2 t) G
! z6 ~0 e2 f* t/ H- y$ d. e0 M
* p' u" l6 M: V

单目相机 SLAM 只需要一个普通的 2D 摄像头,成本优势大。但普通 2D 摄像头没法获取深度信息,它捕获的仅仅是一张 2D 图像。深度信息缺失有什么影响?引用:知乎用户「半闲居士」的一个回答

9 t! k% y, q% I2 ?1 U$ o3 I2 W! {
# P X/ Q$ D& \8 q# v
- k: d4 {% V& W3 p

没有距离信息,我们不知道一个东西的远近——所以也不知道它的大小。它可能是一个近处但很小的东西,也可能是一个远处但很大的东西。只有一张图像时,你没法知道物体的实际大小(Scale)。

) {7 j3 e7 B* z/ w0 d
4 K1 `/ r6 j8 u& E
, m" Z2 q, d- s x* X
" O; D) H: ^; y, x' w
5 {7 K; M. {' t7 `. n9 t' @
/ ?2 M* h+ T. f

另一方面,单目相机也无法依靠一张图像获得图像中物体离自己的相对距离。

+ c9 _6 i/ B% T0 d1 Z8 b% K0 m
: m0 B: b2 T+ M9 @0 J" p
, X; R1 k9 Z! A! n7 G- ^+ T

但这两个问题都有对应的解决办法。比如,通过借助 GPU 和 IMU(Inertial Measurement Unit,惯性测量器件)确定物体的大小,依靠运动中的三角测量,来求解相机运动并估计像素的空间位置。

0 i% y* s8 t3 N3 n1 B7 x
0 J7 f. q \; ]4 r5 W7 }
( x' l4 y& W- H

双目 SLAM 消除了单目的很多麻烦。双目视觉和人眼类似,通过左右眼图像的差异来计算距离——也就是所谓的立体视觉(Stereo)。

% i/ J* ~/ [4 L- p+ r$ C- ^
% a+ {$ W1 w1 ~2 b" B- ]
' a! S2 G' O/ V* }9 g$ g* B1 n& S

但双目 SLAM 的计算量非常大,通常需要用到可编程门阵列 FPGA。而且其其深度量程也受双目的基线与分辨率限制。

9 E8 i4 C' F6 E2 }
1 t+ [) @' M! G. N: x5 t" T, K
" [, a/ P+ Q) Y' a& f

RGBD SLAM 的传感器是深度摄像头,能直接记录深度信息。深度摄像头通过把光投射到物体表面,再测量反射的信息来计算距离,具体原理有两种:结构光或 Time-of-Flight。它比传统相机能够提供更丰富的信息,也不必像单目或双目那样费时费力地计算深度。Kinect 就是一种比较常见的深度摄像头。不过,现在多数 RGBD 相机还存在测量范围窄、噪声大、视野小等诸多问题。

& P: \7 @$ R* j0 o; y( u9 |* O: O
$ B4 V6 x' u) B" Z5 Y- c9 b
& u8 A3 U. n& P( D/ A0 `3 b
: q- o7 I- G" w6 ], z0 T
" g" _3 a& z& C/ E7 h
) v1 ?+ ~; i5 w6 N' I' l9 O( W# B( r1 T

总的来说,SLAM 的实现方法多种多样,应用场景也不断打开。但「由于产品和硬件高度差异化,而 SLAM 相关技术的整合和优化又很复杂,导致算法和软件高度碎片化,所以市场上目前还没有一套通用普适的解决方案,在短时间内也不会有」。

' z- I' z! J% n5 i/ E
) {" p! \$ k! k7 _/ s, M n
; u1 f1 @! K+ a

OD

" `$ }& j$ Q, v( P2 M
* I& X) g+ f, R8 S
0 H3 u7 g) S( \( V! t+ H
举报/反馈
^1 S6 B: c8 D8 j8 \& M: O
6 g0 e: o* U5 M2 h' ]3 ^: I , W c+ L4 ^% ?/ ]/ ?: C' K: N) f9 Z: I/ i& F. F 7 ?' Q# \/ }5 \0 d/ q3 ~' ~2 k1 P
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
葛宝淼
活跃在2024-11-5
快速回复 返回顶部 返回列表