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

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

[复制链接]
8 A( p; O) l5 K" |. E
0 ?) S4 `6 ?: ~& ?0 z

作者:

, ?" z- U* L2 y# X0 R) A+ r
, x4 [4 m- ?2 M# E# o0 W m
P7 F- f8 R! `* _

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

9 ?& ` ]+ R! h, f8 I3 `
1 A5 Z+ \/ d' j* x$ T$ n8 f
. w* n: z/ q+ v: ?6 W$ j

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

) i1 q+ U( O" q8 z7 E3 l
6 `: v" ]0 @1 l
! ]0 G7 a2 C+ r9 t* j+ {

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

7 w& K& @' }: `) s) ]- n1 o& p/ U
4 P: Q! {( Q; d! Y+ L0 M
5 S5 ~. V. F2 B' g7 B- ?2 K2 n

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

2 ^; f7 K4 G5 C% y3 l* |8 d% P, n. Y
6 p2 d7 M$ Q# r% ]0 k
4 o! l/ J7 J0 G1 c9 @ a

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

# g x& ~) S* c. E8 {: F
9 i# E- O. O& _( a' ]
( q" E8 N$ J! a5 j% {+ ?
5 [% N9 f5 J& ?9 \4 p
% ~% f# d; V, [0 j
; F8 j0 i5 Y; F0 ]

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

+ x2 C, Z8 [3 s
2 m% D1 N, I2 v. `4 {5 f- W
E2 a5 A( h0 e

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

/ H1 o" A) I$ p+ d: A
2 s5 D2 M) w5 z0 B1 v. J3 J
0 l6 Q7 Z# {4 a. u* l( E

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

, U! E* H9 A! g9 ~
/ [ g0 ?6 S- y9 u
0 m2 n" E( ]7 u# \. j1 Q1 ]

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

7 n* X$ M, G+ {9 ~9 w7 M& L
, \$ w: {% H" ]4 Q7 K
& w% m0 H2 s+ t3 x
2 E) P7 S0 l! b
8 P0 p8 N' D5 l) J8 d
7 }+ E/ p" ]+ }

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

; ~$ ~* h# I4 W9 ~* \
& p7 G% S- T( V/ h
, F% T4 _& s, K% ^

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

+ L' v! {8 j+ E2 a E
4 b0 e1 h0 T2 Y4 K0 N7 v3 `- y8 N
8 @) ~& z8 ]* R6 [0 [$ \2 S: t

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

! c: h8 S' d# V. [/ U9 e6 D
. @1 k' U6 K& E
+ Z8 S+ ]# B8 W; @ H$ R
. ~' V( V: l! I( P
2 K4 X: \+ C( U. ^ X6 T
9 l0 q- @$ s, D6 g7 G$ R# `/ w

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

) C7 @: ^7 ^3 ~( y& F0 P1 l* B- u; P2 p
5 N) \' \. y }
) I7 M) c& L2 M1 ^% {

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

7 `% r& t! p6 ^1 Z8 Y
# t/ N: z, T _$ U7 E5 V
% e- ~) Z6 _9 G# h! L; S" M
6 F% `( w" E+ f& ~) o
. _3 {4 \, q- f4 T
; J y0 b" ]5 j

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

1 b0 r( h2 R4 |7 k6 D% d
% k( n- [+ e1 _5 {1 ~! Z- z
& S7 s/ Q0 P6 N! C+ y+ s

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

$ A. [) b/ v8 v, _+ M; M' e; {
& X$ {7 P; [6 z0 d0 R$ q# E
; o1 X6 H+ z) ]; N/ w0 f4 F

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

; a! x. f0 \4 N/ Q$ D- Y
$ @' |3 a; ~3 E
3 N! Z$ Q$ J6 t8 B5 i

激光雷达

( [0 k( Z6 I3 U# @1 Y% i
4 N1 K4 H" |! Q
( R& z, f$ c3 U! j

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

" l9 s% B' s. {; v7 `/ _2 n
; g& w. m! F& S& @& I
0 P7 K. W- ^/ z4 b: N3 s& L

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

; Q& ]8 \: l3 r3 _. Y5 ^/ q7 ^0 x
5 |1 o1 A- S8 D% Z# k- }
0 G; z3 e+ B1 W A. g8 L
3 b+ t3 b2 t& m+ t1 ^7 e
+ W- {& H2 s/ G- o1 q1 [: j
; i; f. v) M. n$ _# F4 b* Y

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

- ~% q9 z- N' i y
1 w0 P! Q/ ]) I) u; Z& L+ o) S- a
. ~' k7 c4 V. o7 z5 c

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

: s9 g! [; R, e% s! f T
1 h1 i, M! v, U" d7 o2 i/ Z
* q: o# k2 y }: W- Z6 V- t4 q

视觉 SLAM

$ l; ?* v% _/ o' H" c% r8 Q; `
2 m* U Z' a! C. e4 l
5 e4 S4 Z8 K ~5 m7 t9 N1 V' ?! y

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

4 ~! x F; y% ~+ i( w6 @5 @
/ d* K; Q) C" A' I( t) \2 V
6 S' H* ?: g& g& o( d( r

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

- M/ h, X( f; c, u- [: D# {
1 M( D, S: Z5 c0 X; \
5 U O$ A5 A. K, F% Y

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

$ V% T0 w5 z7 }' [% o
: b7 P. ?& `$ b
/ l3 P9 H b- a2 X( w" z

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

' c- J7 b+ M) l2 F% c! U8 m3 }
. F1 B1 v& l) F7 P
- s- w2 r/ w* z% t8 c3 |* `* I: ~
8 c- Q- D& T: N1 Y
8 j+ B! V' o1 m+ x
3 z0 N( o' A3 p/ [! W

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

; O3 u# }3 n9 W" A' N
4 k$ o3 ] v( g4 }& d
. M% O5 S4 k- X

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

1 v) g4 ]9 t9 S9 X1 I- f9 n
1 f i- E, m5 k. N. K2 z d$ i3 D
B8 f) G8 x- @+ {

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

) M1 `4 D* K: B% ]' Q8 q( A( h
" B {2 o: s6 i8 ^' d' M, c
# f' a2 i; p/ g0 g0 ^( P

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

# j: B4 s0 o6 L; Z2 l
! _- u# f/ |4 P
2 ]* A$ L- N. w5 } G! i( ?# d

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

2 t3 z7 v3 f3 h
. h/ k, ~! F4 ~8 B$ R, u% W
3 @! F$ Y* x2 I6 W6 F
) [9 J7 r, w; a R2 m$ l, Z
! r0 Z1 a! C9 o: O4 V" d; s
1 }4 w8 D5 p5 `5 r6 r

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

1 P1 a* U8 z3 J1 z9 F
' A4 R2 _# B8 p# R
' a. I5 ?: j! w4 h7 ^4 h/ h4 t

OD

: W1 |7 a) d; F% Y
" q5 o4 [& U5 i5 s" G5 O
$ a+ N2 Y) e6 t1 b2 E
举报/反馈
- J! q8 A$ F! ], s
) j; i) [9 S- w/ z8 ^ 5 x' m: y3 Z1 D/ g- Q+ u' m6 k: X; f; }* r % Y6 \6 V0 ]2 S1 t! A ! G: a% U" X3 T; h
回复

举报 使用道具

相关帖子

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