基于人工标识的机器人定位方法
\qquad
在机器人视觉导航任务中,常常需要通过识别人工标识获得机器人在世界坐标系中的位姿。它的原理是通过匹配人工标识中特征点的世界坐标和图像坐标,从而估算机器人坐标系与世界坐标系
之间的转换矩阵(相机需要提前标定)。人工标识的种类很多,常见的比如QR码、Aruco码等。
下面是两个使用人工标识进行机器人定位的例子:
波士顿动力的Atlas:
大疆的Robomaster S1:
1、定位原理
一般情况下,我们使用的人工标识大多是方形的,标识内的编码与标识的世界坐标相对应,而标识
与相机的相对位姿则由标识的四个特征点(角点)提供。我们已知标识的四个角点在世界坐标系的三维坐标和在图像坐标系中的二维坐标,如何推测标识与相机的相对位姿呢?这个问题被称作
P
N
P
PNP
PNP问题,
现在已经可以在OpenCV中调用相应的函数求解。
为了更清晰地解释
P
N
P
PNP
PNP问题,下面将它公式化:
s
[
u
1
v
1
1
]
=
[
R
t
]
[
X
Y
Z
1
]
=
[
t
1
t
2
t
3
t
4
t
5
t
6
t
7
t
8
t
9
t
10
t
11
t
12
]
[
X
Y
Z
1
]
s \begin{bmatrix} u_1\\v_1\\1 \end{bmatrix}= \begin{bmatrix} R&t \end{bmatrix} \begin{bmatrix} X\\Y\\Z\\1 \end{bmatrix}= \begin{bmatrix} t_1&t_2&t_3&t_4\\ t_5&t_6&t_7&t_8\\ t_9&t_{10}&t_{11}&t_{12} \end{bmatrix} \begin{bmatrix} X\\Y\\Z\\1 \end{bmatrix}
s⎣⎡u1v11⎦⎤=[Rt]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤=⎣⎡t1t5t9t2t6t10t3t7t11t4t8t12⎦⎤⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
其中,
s
s
s是尺度因子,
[
u
1
,
v
1
]
[u_1,v_1]
[u1,v1]是特征点的相机坐标系坐标(不是像素坐标,需要根据相机参数转换),
[
X
,
Y
,
Z
]
[X,Y,Z]
[X,Y,Z]是特征点的世界坐标系坐标。上面的方程组消去尺度因子后会得到两个方程,而未知数总共有6个(旋转矩阵需满足正交性),所以至少需要三个特征点
P
N
P
PNP
PNP问题才能求解。这里可以通过SVD分解求解超定方程。
通过不同人工标识标识进行机器人定位除了标识的识别方法不同,获取特征点的像素坐标的方式也不尽相同。下面介绍基于QR码和Aruco码的机器人位姿估计方法。
2、基于QR码的机器人位姿估计
QR码的功能主要是存储信息,并不是专用的定位码,所以定位精度并不好。获取QR码的四个角点像素坐标主要是利用了QR码的图案的轮廓特性。在获取到三个定位图案外轮廓后,需要通过一系列的几何约束确定角点的相对位置,而第四个角点则是通过拟合边界直线的交点得到。
3、基于Aruco码的机器人位姿估计
Aruco码是专用的定位码,已经集成到了OpenCV中。相较于QR码,它的内部编码只能用于区分ID而不能存储信息。它角点像素坐标是轮廓近似四边形的角点坐标,而相对位置通过内部编码确定。Aruco码定位速度块、精度高,是理想的定位码。
有评论就更~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)