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

[复制链接]
) s( w1 X. c" Y. `* E
" F0 k4 M/ o8 |4 G1 u: E5 |

作者:

; C6 r* D5 f1 _5 J, u% o" i( k
0 m0 b5 `( V3 ?( L" u
8 @ Y4 h% q8 D- v! S2 v6 P

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

) i1 P+ r& D2 j6 e* |& X: B( k
$ R* ]3 r0 V3 e% \$ S1 s6 K; n
! H* q7 b( r' D0 }8 f$ S7 ~7 c

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

, R2 {# h( w' m/ w; K3 R1 B' c; I
7 m- _. f, Z4 w/ `
3 {/ z5 {- S& l" _; E" w( D

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

7 s: k/ s% N6 G9 m
# G" w1 g! R9 J
8 T# @ x) D* A

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

( f/ G/ n5 ^! J8 W9 E
2 ^$ {8 A7 K6 r6 Z5 H" ]' T$ W
+ T9 q1 x+ S$ K$ [

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

5 P1 R6 q, t* t
! Z( V0 O* U& r, E- `% T
s4 N! w( N6 m
1 o T6 X; t. F
" A' ^ a9 N4 }5 e8 c
2 i' g# l u: M9 w# n" c

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

' ~7 }% }2 s6 C' v3 z+ a
' k2 f" V4 J: R: e/ P
3 v# z5 N5 v& ^/ {: ?8 g

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

: l0 s6 K- A# F( E ^
; r5 W+ F4 v' M3 x
; v. O6 \' ^$ e. x% @9 s

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

2 W1 j# T8 W% M
/ G% ~& f( |: X5 v4 E( V
! u: K6 q' U6 ?3 ?( _8 d; j. b9 A5 a0 t

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

, \4 n) ~, x! r# q- K
- `# T. W/ i& t- |' z
6 O1 P* k+ U, j% v9 {% ^$ s1 t. r
4 ]( f: B W" z2 R* ~" k
: Y8 f T! @: @! u. T* X, @! O( n5 u, y
. W; A5 b% z4 S5 x1 }

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

8 c) F' ~4 ?/ U8 g; w% y
0 Q4 I4 H6 H/ Y* P( `
8 S% @ N# d5 J& o7 Q

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

4 s# S1 j7 A1 c! Q6 L# v
, O, O! e; i1 a. Q9 ^2 N) Q
2 K' r$ U4 _; A6 F

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

' ~! o$ t% I& d( J7 l
* q7 c- N! O1 l8 s9 g S, b$ P( u
1 z) x9 `% @) c M
) k0 {& Z) c7 G" g5 K% i
D. Z# h/ N1 I
) C5 [# G! p( l, `, B

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

; \) q- V& g, y2 c/ U; A: u
" q2 P/ H1 q8 f h' {& M/ L2 R
1 @$ P9 w* m6 s$ B" }

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

8 E" q' X" p5 L9 j! _0 ~
3 V& x! e/ C! K4 }" B
4 l6 C# p* ^8 Q8 N" k2 E
1 d! _) C7 L1 Z6 w
0 H6 V q! D5 P1 R' c
0 I% k/ e" P! K

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

( q u0 N/ O! W- t8 }8 O
2 ~, f. ^& F/ M7 N/ `/ P
5 g' \: K, ]8 u6 O! V+ M' @

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

8 [( W# P( L [/ L4 {! A
, R( R+ c3 _0 s# ~% C' s. m
! Q! {4 J6 q3 l4 N( E& f7 [6 i) O

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

/ M1 c: L- b* M Z
/ T F6 N# Y: o$ C/ Y0 A
1 z- w2 Z( O4 N1 Q

激光雷达

" y# p, J! t/ z/ x d
5 U; a J7 N \
8 P9 Z$ ~2 k8 V0 O4 F$ c0 x

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

7 K9 g- d: F f$ i! w+ V
4 b# F* z6 u; v* p5 }; T# y2 }
9 e9 R7 s: B, g ?9 J8 @

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

3 b3 g! ?: Z$ G8 R5 n7 }. c
8 |2 X% X. j' v7 P( K+ e! m
! p5 B [! p5 r, R) y+ W( j& ^
% O, a1 Y" r, x" |7 y* d. ^! l2 d
3 Z# r9 X+ v+ R3 C4 T& B- _
4 a* B; V7 ]+ I

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

% T0 v- c/ Q7 S8 q( m& G
% T6 F; T1 ~ Y. I% S& j
o( u9 `) B7 K* W5 Q7 S# i a

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

: F+ @ U7 W) L6 M$ }0 K3 J [9 V
! L( J* m& b6 M: v
3 q" }+ Y% G; _% B8 [

视觉 SLAM

+ E! r2 C$ _; }( I" Q! J( D! F
$ i& x9 b: z% e% o* N' o
2 O7 D4 k% v6 q! L* M' l+ B$ j5 u* \& l

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

; f) x, t# z; U; p
& G) F6 I2 M9 d u# |
. @2 P# {0 d* E: ^7 O6 m

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

$ G2 }. r. q, K. X
1 L, b+ k, P$ H! F" g; m N
8 _$ M% k1 D4 h1 W

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

0 U2 E z$ R% Y; ]9 V
' J6 n O+ `. D1 j" h( j
; [% b$ x" p1 r3 m

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

1 Q, i' C: H7 }0 ~# m3 |. B# e5 P
" o1 D4 a% u# ~$ z S% z t
. y9 s: _9 ], r8 M1 w
+ j# |8 |) r# r: A# {3 r
8 v* I& C* g5 n6 A5 A
* Z C9 X' u) Z

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

. F y+ i' z y2 g+ \
( T9 J6 p% `1 B7 d0 {& Q4 }+ W
: z! H. E5 X$ M

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

4 ]; B7 }3 m6 G) o2 I& n
" D. Z2 h7 h. N9 r9 [3 V1 l' L
# Y3 `, o( E0 c8 P. u

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

9 X! S, k9 L; b! r
) I: G/ X1 W2 G$ R7 E$ d% |9 w
2 G2 J) c a6 h2 J; ]0 Q6 C% ^

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

8 {& h2 Q' M. ]7 h0 @$ ^
7 k, P9 ^6 K, J* _+ p1 U
7 k: Y$ \) S5 ~- y0 l/ z

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

6 \( q9 \4 d- _4 |, O' T
' y! |- V3 {- d# L. z/ w
z% N. h8 ~ C" B% r; ^' L
. e( I+ X R& t7 X
, ^; J. ]1 S, h8 ^3 b
4 o- k: q- V7 B$ a1 J) [& D& V' C9 n

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

( e- I0 T$ Z/ I# @& Z
9 M; T) o' \2 K/ Y! |4 ^
. M) `# Q& _+ ?" C! W/ u% ]. i# o

OD

W* X P" T8 ?: |7 q
+ R6 c9 v7 X$ T8 w7 ^1 l0 Q
- p3 p+ U! r" W' }2 I& C
举报/反馈
9 m7 p/ c% a& _9 H3 u8 d# k$ P7 v
. D3 z+ ^' `) C( U6 e+ F& K* x- e ; q: l! t( F. X& t' z* B% q% O' \8 q, j/ J ( v( O% `# \/ f% g. H 0 W$ R: G6 K7 p" [! v3 M0 l
回复

举报 使用道具

相关帖子

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