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

[复制链接]
) y x' n: g: g9 R
: X5 @2 u$ e j( |% @

作者:

: ?5 J" U; u1 |7 k" ~
4 p* s+ w1 ]* R( L {% ]
& Q) Q# n3 l7 S6 J

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

4 P. D( }) j* Q* [+ B, c
; h4 M# h T+ I0 b5 I/ \. ]$ f
% o! _8 q: G" W& H4 ]: O

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

# ~6 g4 R: \8 w! ^! N3 h
9 d2 \1 U+ C8 I+ c3 l
/ l5 P8 m; L+ H- j, v

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

# B) Y( s( X q+ F. o7 G1 V
$ b5 i0 Z! |, O% [$ }+ F
' |% L6 M' W7 M1 V3 _4 X) T6 F0 _+ I

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

9 J' S: Z/ V! r0 T" K* O
Y' |! o- c4 ~% n4 G2 a
+ h9 |* M2 f5 \) U# I( \& O

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

* k9 G3 J7 o1 r6 ]# p. I
* d* A# Q4 t. q0 U
3 P' I6 z( `+ r
% ?. u3 I! |" g( j* h* u5 O
! z( d' D+ K6 x6 n" o3 ^" H
- a! M- ]+ i. n( [/ a

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

; I3 v% I- l$ o
2 N6 `7 |6 B ?% d/ ~, ~) `# p9 s* o
. F9 ^9 m2 t( t8 X

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

( @! `7 L. X* p6 u- w
3 Z0 Z( r' s; w1 {6 s0 O0 M( K5 T
3 P8 X9 ~% O. G7 Z1 C3 x

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

9 {" m# y% o1 i$ a5 X) d: i
/ r& c- W' v/ `
5 a3 o P- L' H1 `* U" }

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

' Q' H% c; s7 Q
5 N% Y9 e0 a6 {* }1 O2 t
5 a: ~+ F) w, {+ U
* H1 ?' M5 ?- @. g' I
" Q4 j9 y+ l$ {2 o9 w5 ~+ ~5 H/ c
4 M' n4 I( Z2 X/ H+ I

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

' S, R+ I9 M6 U& J2 |
1 V1 u6 k& g; R+ z' z, a& |
- K6 v" Z& s/ p2 ?

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

! D* f+ v- ~: V" _- D
8 R" ?+ Q0 c% M( ^9 x# o6 c) E. r
* j) _- S. d( ~# u4 [

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

9 o2 O, q# t# _% g. _
6 J1 n6 M0 T! m2 x& q; Z$ ^
; c5 K, V1 I: `# n7 k. \
: [0 \4 k6 L; b8 ?/ V# u! _! Y1 ?
) K# \0 P" n1 p1 p, z
5 v7 K& ~/ j' `. P. q/ }: k" w1 g

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

8 \' Z, ~8 U0 _8 X
7 {5 X O# s4 O! ~8 t- p8 ~' N0 x7 h
5 ^5 x9 b- a4 Y: G8 Y

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

; y1 o9 ]& o$ n# G. C' M
' s+ F+ M- [& h, K, \# ^, |
5 T! X; B: S* R; q6 u
+ [0 u2 U( N; V/ }7 C$ z6 _- p/ V7 R
6 ?, S; M% V$ e+ E9 o5 D" [
7 U, M( J& B) c1 X. z

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

5 K5 q2 p1 |6 X3 g) G8 u
: T3 A& h% p+ }, Z$ \6 ^( ] Z) ]
+ i: Y' ?0 ~, Y3 `6 ~+ G

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

/ ]3 z9 j. v0 N# c
3 I8 k# q7 Z% ?1 Z
* H' _; Z, F- V6 N- w% x

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

' n. _# Z" I! T
R2 P( O5 B- M* s. ?
& c" C% S1 @' _9 ^# I$ v! e4 A0 U

激光雷达

" o9 F5 J& z r
! j' @& B# L! Y) ]' q* Z( c
. X( K% A+ ~- _+ F/ R+ V

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

" A" R6 y* `) `% h! v
I2 f) W/ Q9 f5 j o1 T/ M
* s" e* w: O. E3 |+ G/ T: n

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

, k5 f: E2 S9 t, u
' G" h4 k* |! e" ^
* F* ?8 \; M6 D% @) }! H% {
" {7 U. l! D8 ]$ T% a. r
4 H7 G2 c+ r E, M: X! X5 X
+ H6 O* m7 T9 X' h0 r

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

F. h/ z, t9 O O: i, e9 E
. {# k% L9 P3 b! W0 D6 T
/ A0 g( ]0 m( M

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

* a+ n1 P0 W3 f
" ]% d9 B& ~! Y& T
5 V0 n0 M/ h) K6 H, v, c+ Q

视觉 SLAM

2 P: [. [' t8 ` l7 D8 f
! e6 J3 L. y) X& P& Y" I
( `4 W$ U! T# Y% M7 F0 N

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

9 c( ~9 P" {7 a$ H
$ h, R9 R5 x' [( R- M7 l
& R- j5 \; ?5 ^0 d3 ~9 D1 R

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

7 c2 J2 y0 t2 e) G! e
8 m* R' H! w. P7 q: _
4 s9 A; S7 H T8 i" ~( \$ P

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

% T3 N1 G8 K' z0 v' z# l7 X
7 l6 C, M G1 f
1 a+ o" U2 I/ Z. J" E. q* ^* f

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

( X5 T% g- M3 p
& e; x$ L8 i5 V0 i% I! k+ `
R" T. T, ~$ l* m1 i
+ T, ]) M5 E8 U' l8 H7 t
. g1 X2 A0 A {1 n
1 T6 z2 E/ K. r

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

( A9 P) h1 m0 Z3 F8 f
4 A% p9 m9 I/ C- A6 z8 A
: Q# w+ O2 d# q0 V0 K% Y0 q/ [. V& N

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

. f; \7 R- g. s5 u
4 d1 t- i8 I, o4 T
" l( J; D; v8 J4 R$ s/ j

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

5 h: x# b1 u. d) f, s! @0 Q9 d
% N, M" `& e/ w# _. ^+ f. V
) B5 H" b% F7 t1 w/ t

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

4 F% z* U6 j9 u. t: k: a
% e0 g1 m M9 ?" `
" z V" q# t" z

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

) c4 A( o) }1 b1 S* n7 D# V% j2 P
5 A# {, P! Y" S& j6 I8 g' M
- m2 `! ]1 j( L0 c0 S% T1 _
/ H) L T4 e% F& T* |: o
# h$ [* J2 j p3 \
7 \" R& a# J0 V" [. I; I) X

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

$ ^2 Y' P& t/ {
% k1 Z7 s4 n' [- {0 Z
# V) |8 C5 X, ?, P, m J

OD

: g6 F( @6 S# w) @4 L
: y, h9 C" m+ r7 }
& Y4 N s1 |* a+ E
举报/反馈
" N, ]1 j- h4 L0 o1 A
) D% ?/ V, ^0 { + M R' v/ G! q% f* m- e6 ]/ Q* m A8 l) y ; W6 H; b* G, B / X) b. U% Z5 g, O# t
回复

举报 使用道具

相关帖子

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