收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

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

[复制链接]
1 ?& C7 D. ^5 z. j5 A
1 U2 l# Y& S& t: c. A

作者:

6 q* c7 H2 e* E0 B( s; N2 Y
/ G, r6 _# G6 G# m# N
+ b! q5 x( Z( l' y5 j- u9 i

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

; O* m0 j- y' k A4 `
. C: ~& p, H4 [
, t2 Z, K! P% t* C: d

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

* d$ u& n: t) a, w& ^
) K+ z, x9 T1 g ?( z; d
! a. s: _* e. g) q, a4 t1 ~

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

; N: p5 c, \( [
T: `) }* E5 I* j# j
' m$ m1 u7 T6 y1 J

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

9 T: F) y1 j# \8 O! C
8 L+ P! N0 r3 V6 j* o2 o
" n6 ^8 ]4 {: G. T) f

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

5 T3 H$ u0 @- _ N1 p
9 r, M$ o. r' G. o2 e
+ Y6 Y+ w6 m, _& b
7 I0 C2 z4 W4 c# w$ J4 u i& `
# Z5 |* K4 U3 A r7 A
% T% ` `% r: g& ?' p5 ~0 P4 i

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

1 A5 a. x6 w1 y2 q- ~, C% l) _
- ]% E8 K( a2 b7 Z- B
* F* p1 w- m- |$ {4 E9 i8 q: \6 D

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

. E4 v# H1 V% b. i+ ^) R: t
( c1 S+ R) e/ s% X: L7 z/ P
4 r# ~4 `5 s. {

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

" s( w, _% b# E/ z- `
$ T0 x% c R* A- ~0 y7 F* e
. i9 U) w3 d: j& ?0 K

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

" ? }0 a* K$ Q3 p6 c4 I
0 I; Q9 I" |' }7 i3 X# t @
' Y% d. N& ~; A) U8 K; u8 B' G' |; V
2 A* \$ v+ o7 g/ b6 B+ `8 J
7 ~: i/ q% b$ X9 l3 @
4 Z! e* |% ^" y$ f$ X6 f; m& }

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

& j N; T$ p, b/ C+ _
h8 f" v1 G5 ^. m
6 t7 i0 b/ `! g1 u0 h% }

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

% r; {; V( R/ `& p5 Y" G& W" e
8 g& h6 C7 ~* a8 z) t
+ z( n3 P. V& F. f

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

s" F3 B, ^$ U. n" m: @
|; p# f, `; c: V# s" n! ~/ ~
7 X( m& `8 i# L: g
8 j" u& c0 d7 ?/ n$ x: v; P
8 |/ j4 e0 Q- B# Q& s) D( i- b
4 s/ ?% P' @8 j3 V* s: l

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

" y1 N# c/ f# L$ D
8 n+ ]2 i2 @$ R7 C
1 q6 p4 a) ~. n4 x0 ~

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

" ~8 q7 Q/ j# |4 j, @$ s: W7 m1 f
' r' k) Y; y/ k2 c" p- v8 S
0 y8 n- {( x2 T9 @% K
5 y5 z# l5 i! m, V% }
& C4 \* y3 u& L7 D& s2 J& \
6 X z" q0 b8 z9 D% ]

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

! \( k8 P. g; r* w- q
, r0 G; F) d R& s' m+ _: K# L
& t! i- \- [7 }

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

) T+ }1 y7 T2 k* s
5 i* b, O: U8 Q9 M" z
8 D# b, H7 ~9 E% y: u

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

( c2 h2 b4 e/ H7 z
% P% [) M' m O8 e8 k
8 U4 L# L2 D% X% l* b- _* f

激光雷达

$ X2 \2 K6 I# L6 p- S% K5 r
$ M# r) x+ C9 y. ~
$ V) v* _9 T! W# a" ^' \' d* J

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

$ K, W b) O( _. ~; W. s
9 F L( f) ?9 p4 o7 J# S
& q% c' ], r4 ?6 K! @* b: P

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

5 W2 n; l4 M, t. N9 F
9 y9 w" k5 [1 a
8 E: I$ X0 R6 m, n4 P3 T" j" {
: R; Z, t8 O, m7 c1 K; h
/ ^+ t+ O- L6 s5 [
* S- ~, P3 E T, G5 s

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

4 G N, p8 P9 g: t0 ?; J% g
7 q1 K. I8 Q7 N0 ~1 N
' b" E: ]4 M' X! `; @

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

# e& \* p7 @- ]; V8 ^6 G/ S
/ m; l9 N8 v9 |1 V
6 R5 ^1 L0 G; @

视觉 SLAM

. u1 u) M; O. f: @: k i/ I
# @% `: `2 }7 Y! m5 q9 a7 r
4 Z) ?+ g- n1 a2 C

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

: r4 @% E8 a. b# K* h
8 {) K1 v1 y, p* ^( g$ G; M
8 Z7 K- W3 y7 D, h# F) J, I. s

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

' b) ~. K2 b% W' `
! W. X$ x8 R3 F% t
: }. k* C6 \- J: c

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

" W2 G# E/ L1 T6 u3 v
7 @: Z3 E, V3 {/ V6 r/ F( ]" n
2 s0 b9 ~/ S+ X% w+ r

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

1 h' T" g1 m0 p* Y
$ h4 ]0 v* I* d" r9 I; U
9 n4 ^% s. R; o* A# D2 F
" V& U9 t9 z U
- i$ w& c* r) Q
# w& P7 L9 k$ m. t9 F

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

' z! \: C ?) J
, B- s/ C9 w3 ~0 ?
5 @3 i4 ]' a$ r/ \1 E4 s: G; b

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

+ u) d/ N) N5 O; Z3 x
8 e f3 {2 ?! P; ^2 ]
2 M0 w2 f% R5 C8 i

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

- w A# d9 o9 T& f& f
0 j. r7 ] S" }( G0 n6 m
" W% g7 {' K' f* n2 S9 U

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

% n5 g8 E$ ^! U; A
8 a# Y; V4 M8 a
! L7 _: U9 t# B, O: h

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

4 G6 n$ x3 T$ W5 [: _
v3 F# L6 q D) _
, y( X; v! n. I; e0 b0 V
$ d- w. h: y L: b) s+ t" k9 s3 Z
* S$ T" M3 _6 q" |: L, e* Z/ P
' d: K7 k, ?4 |' X T: i+ l

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

5 V8 c. B+ M; ^
, \ O* s) `5 n, C
) ^0 N+ `: a7 y o; V) a

OD

; N6 G- C0 O8 n! x
$ [2 O6 c2 r0 l5 K7 T7 }
2 q, W3 h7 {( W. l5 E! u4 o% {
举报/反馈
0 L+ {) _0 g& Z( E% d& e3 F! E Z
: {$ |( \' m- ?- r2 C+ E 7 m# s6 F- ]- g" G0 c C9 f b6 n z2 s 1 q6 M% s6 e8 G4 f \/ R7 M* [8 @' }' i6 t( A! _
回复

举报 使用道具

相关帖子

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