视觉伺服就是在已知系统(机器人)的期望状态
s
∗
s^*
s∗的条件下,通过控制系统(机器人)的运动使得系统(机器人)的实际状态
s
s
s与期望状态之间的误差
e
=
s
−
s
∗
e=s-s^*
e=s−s∗小于固定的阈值,与传统的开环控制方法(已知初始状态和期望状态,规划好控制策略后直接执行,中间过程中不再调整)不同,视觉伺服是通过多次迭代的方式逐步缩小误差
e
e
e,也就是在执行过程中根据当前状态与期望状态之间的差异,不断更新控制策略。
机器人的实际运行状态
s
=
[
m
(
t
)
,
a
]
s=[m(t),a]
s=[m(t),a]是一个与图像测量值
m
(
t
)
m(t)
m(t)和系统参数
a
a
a有关的函数,视觉伺服的设计主要就是在于
s
s
s的设计。经典的视觉伺服方法可以分为基于图像的视觉伺服控制(IBVS)和基于位置的视觉伺服控制(PBV
S),IBVS中
s
s
s由表示图像特征的变量构成,PBVS 中
s
s
s由表示相机姿态的变量构成。
我们以eye in hand (也就是相机安装在机械臂上,相机状态和机械臂终端的状态相同)的IBVS为例,假设
s
∗
s^*
s∗是恒定的,如我们希望让一个特征点处于图像中心,如下图
而当前的状态
s
s
s特征点处于偏离了图像中心,如下图
s
s
s的变化只与相机的运动有关,所以我们通过控制相机的运动,使得相机的状态
s
s
s变成期望状态
s
∗
s^*
s∗。
确定了
s
s
s的构成方式之后,就是要设计控制方案了,最简单的控制方案就是速度控制,通过改变速度
v
=
(
v
c
,
w
c
)
v=(v_c,w_c)
v=(vc,wc),
v
c
v_c
vc表示线速度,
w
c
w_c
wc表示角速度,那么
s
s
s关于时间的导数和速度之间的关系可以表示为
s
˙
=
L
s
v
\dot{s}=L_sv
s˙=Lsv
L
s
L_s
Ls称为图像雅可比矩阵,也称交互矩阵
误差
e
e
e关于时间的导数和速度之间的关系为
e
˙
=
L
e
v
\dot{e}=L_ev
e˙=Lev,因为
e
=
s
−
s
∗
e=s-s^*
e=s−s∗,且
s
∗
s^*
s∗是与时间无关的常值,所以
L
e
=
L
s
L_e=L_s
Le=Ls,如果希望误差
e
e
e呈指数函数下降,也就是误差
e
e
e的导数与它自身相关,即
e
˙
=
−
λ
e
\dot{e}=-\lambda e
e˙=−λe,则
v
=
−
λ
L
e
+
e
v=-\lambda L_e^+e
v=−λLe+e,
L
e
+
L_e^+
Le+表示
L
e
L_e
Le的广义逆矩阵。实际情况中不能得到
L
e
+
L_e^+
Le+或者
L
e
L_e
Le的准确值,只能对其进行近似和估计,用
L
e
+
^
\hat{L_e^+}
Le+^表示
L
e
+
L_e^+
Le+的近似,则对于速度的控制方案可以表示为
v
=
−
λ
L
e
+
^
e
=
−
λ
L
e
+
^
(
s
−
s
∗
)
v=-\lambda \hat{L_e^+}e=-\lambda \hat{L_e^+}(s-s^*)
v=−λLe+^e=−λLe+^(s−s∗)
假设特征点在相机坐标系中的坐标为
X
=
(
X
,
Y
,
Z
)
X=(X,Y,Z)
X=(X,Y,Z),图像物理坐标系中的坐标为
(
x
,
y
)
(x,y)
(x,y),像素坐标系中的坐标为
(
u
,
v
)
(u,v)
(u,v),则可以得到以下关系
计算上式关于时间的导数可得
特征点的速度和相机的速度之间满足以下对应关系
结合上面的式子可得
即
则图像雅可比矩阵
L
x
L_x
Lx可以表示为
如果要控制一个6自由度的机械臂,就需要要求
L
e
+
^
\hat{L_e^+}
Le+^的秩大于等于6,而一个特征点只能之多提供秩为2的雅可比矩阵,因此需要至少3个特征点,才能满足控制要求。而且雅可比矩阵中的
Z
Z
Z通常是未知的,需要通过估计的方式来获取。而视觉伺服的过程就是按照一定的时间间隔,不断根据当前状态估计
L
e
+
^
\hat{L_e^+}
Le+^,计算出当前状态下的速度,然后在完成本次运动后再次根据更新后的状态估计
L
e
+
^
\hat{L_e^+}
Le+^,计算下一个时间间隔内的速度,最终使得当前状态与期望状态之间的误差小于一定的阈值。
视觉伺服的个人理解
最新推荐文章于 2025-04-09 10:50:40 发布