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

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

[复制链接]
7 I! |' _2 w* D3 ]: k; b3 E+ y
" b* W. g" D, ], o

作者:

b( S9 Z2 l. \% c" w
; c! v* \6 Y v1 z7 E
, E- f1 f! [1 g

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

% z, r, H, ^7 P2 q( d, p
3 h8 z, L0 M. t4 l2 H: a* c5 b8 X X
: K N8 ~5 u" _; B9 U% i

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

4 p' w+ o0 r; y
0 s2 H; h) t! C4 h- s& o
; Z1 q l4 S/ O3 B9 G; [

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

# ^$ y1 Z" M3 d& a+ A
! g8 g4 y x6 |4 l- A% U+ M
3 @1 {/ [0 V( y; h' I( N. R

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

) W5 F- C9 O7 c) b) T% c
, f7 n5 h6 m |( ]- V8 `, r
. l$ g6 s2 d$ v8 t, V" Q

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

- m9 c5 p% a! E& B. n2 |8 i5 f2 ~
- [' ?- i+ x, [; _
4 J- Z7 a" d4 N$ D, Y, s+ h
) X/ a4 i: y7 H) ~/ G4 r
/ O8 h* I. X$ a
: ~+ j5 V2 Z, b" m

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

- N' E' L) U6 [0 R7 V
/ D: J3 r. M4 e2 J0 c
* X% `4 W7 D+ @8 p- q+ G

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

8 N* T* e( u" a) j0 a6 G- y/ {) X
`5 }4 i3 \6 X6 ^4 u' m! ~2 P
8 f: y; c; w1 g( k( g% F: a# G

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

( r; c* N0 v# N0 ]
* s- L" ~" }: w3 Z, S- z- k
- x8 g7 T1 E/ x6 T* d

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

# u! `9 ^$ { I' R' a4 d
x- B* ]6 q; |! Q
# J; ~+ W1 y% E4 h
( ?5 S9 \! k; c# Z$ h" j
! N. S8 q. C5 e8 i+ w
! [0 z( Q# b6 Z* d

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

# H7 b+ E6 v6 s
* u$ h ?, T @- B0 h
/ @% x6 i& m0 |' c3 k X

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

: n' f* S. a* r3 s) @1 i
: b' _3 i. y* d: k
; a$ Y4 I W1 g

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

% S2 X" J% ]- }
1 Y( D+ z: J# m2 L/ X
* ]* \' w6 s# K
" _: a' Q5 f7 y
/ ` q c5 e: r2 m/ c$ r
* V( d' W3 R. y8 M# [: K; ^

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

2 Z/ A/ X" T3 y& t1 ~& y$ J s* c
6 H' Y9 v$ E' j* A1 t4 {5 O
- G. d9 I1 c5 s

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

# ]/ m% }8 b5 \$ J/ [! s. D3 L
& Q" `, T+ Q; g7 v- V3 X/ y
( A$ ~, o$ W8 X1 m- C1 s( \8 i& O
0 m% v# g) r7 l2 d; R" B7 @; u' B
. p0 x5 o6 g- J( u
+ J/ @2 o S8 v& a

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

2 }( C5 r/ B+ U: x9 ?( l/ U
2 C# S i; Z( ~# M) ^6 v. j
8 R L: i" Z% K. f+ U. I

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

; C+ S2 ^) e4 A% X/ I
, h0 ^* @& U2 g4 T
% x2 U2 P# Y0 Z4 ^- v

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

9 l b" ]- u5 ~( r! o$ {' E
3 y4 }4 h4 k, l% H& S! k% w0 l
4 k) j4 r& p9 T- Y# j( G9 Y

激光雷达

3 A" t3 h' q7 `" W% [: ]
: o' X4 b$ @, i7 B; l3 l
( p4 s, N! \, Y4 @* O1 t

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

4 S& Y' m9 a6 J4 ^( G) l# }4 q
' Y; g, s. U5 t7 P# Q. M2 \& K, y2 {
& J$ V( p4 h8 [8 U" A" [) \# Y3 \) P

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

5 }- s( |; h8 e& {2 d
) k& U u1 G# I3 v
7 l. Q: [3 v2 C, k w8 Z
7 ~4 l2 ~0 k o# r0 Z8 K( A8 P
6 ]& h& a) D5 r+ t& s" k0 F9 [8 ?
* a* ^* s2 }# k! T5 P# W

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

( C* q; a8 X1 m# T* |
+ c+ T6 K( ?7 l
, s0 O6 D4 S1 y& q/ d+ _& j

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

; b5 D1 e; r' [; U% O
5 }3 ?& R8 u& n' Q
* O! @ M1 t& W) C! w/ Y

视觉 SLAM

" a$ f" a) D- ]
3 d c8 Q3 G0 ^+ Q
+ M3 F0 H- z( j T5 v) A7 ^

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

( g1 B4 u( G4 Z8 X# r% e& p
: k+ h' B. m, \& ~' ~
! l& [0 n. o! M5 O

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

, g% \3 N2 \0 ?. h) u! \8 x
* y3 g, E7 [& \8 t" f) R# L
" t( ?+ D, p- {

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

6 b: k0 w+ i7 n6 n$ G- C
7 R) s, o" Y; h$ o& k4 p8 R
( f( G5 j" F0 h- \; M& m

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

/ G# a) v7 A2 V/ _3 V* j' J5 i
% ]! B3 Q% j% q/ y0 h; j2 n
9 K* }/ A! _/ `) b' L7 Z8 t# M
# h0 s" p3 B. M; C
4 Y' ?; d# ]* c' Y# t
' Y, ]' O, Q; [# o' Q

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

4 x9 } I' e1 A. e2 b# z( I
/ r; m0 V0 H7 I$ T, U o: `
6 |' P6 p; C$ E4 L+ d+ d; J

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

$ p4 D3 c: [$ P e0 j+ }- }
, ]! l3 I. R5 s% K. ]
1 M/ B$ K# m; y$ I

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

1 j6 W6 f. z. ]; R4 }
: [3 W/ d' c2 a% U+ u! H
, K# u! G: V4 [4 }" \+ Z" M6 B6 {

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

. N* g) O& b8 ~; ?8 r
$ ^- d( S* M6 [9 O+ n6 |; C
8 _2 p/ Y/ l' m2 K- H

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

4 }) ?% @! e7 K/ v- `( f' I
' q' T/ @, T2 M
: `# Q% Z# ?5 ] C
$ e& _' k+ y$ [% ]" D# f: w
7 i1 @& x9 F7 \0 A, K1 @' [
+ L; |& q: |2 p5 f4 y

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

: y' ~: G. A+ O) C3 ~" b
# q( S" J6 M% i
9 ~8 H K. V1 x I2 s2 m$ q

OD

2 s! R n5 Q# Y% w& |0 X. y
7 `. ]6 c I( H" Y/ \( g
- w( P$ g. f: \! E! u
举报/反馈
$ g3 Z2 ` ^( ]) ^9 G
Q Z+ d4 Z$ x" r! }9 { : Z6 ]9 C' ]4 k, n " Q2 w- \9 [0 E/ |' R , d+ x+ `1 i% `3 f6 ^1 q . s& B6 h" n. j/ v4 j' m/ p
回复

举报 使用道具

相关帖子

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