视觉伺服 订阅
视觉伺服(visual servo)的概念,常见于机器人技术方面的研究,是由hill和park于1979年提出的。“伺服”—词源于希腊语“奴隶”的意思 。人们想把“伺服机构”当个得心应手的驯服工具,服从控制信号的要求而动作。在讯号来到之前,转子静止不动;讯号来到之后,转子立即转动;当讯号消失,转子能即时自行停转。由于它的“伺服”性能,因此而得名—伺服系统。 视觉伺服,一般指的是,通过光学的装置和非接触的传感器自动地接收和处理一个真实物体的图像,通过图像反馈的信息,来让机器系统对机器做进一步控制或相应的自适应调整的行为。 展开全文
视觉伺服(visual servo)的概念,常见于机器人技术方面的研究,是由hill和park于1979年提出的。“伺服”—词源于希腊语“奴隶”的意思 。人们想把“伺服机构”当个得心应手的驯服工具,服从控制信号的要求而动作。在讯号来到之前,转子静止不动;讯号来到之后,转子立即转动;当讯号消失,转子能即时自行停转。由于它的“伺服”性能,因此而得名—伺服系统。 视觉伺服,一般指的是,通过光学的装置和非接触的传感器自动地接收和处理一个真实物体的图像,通过图像反馈的信息,来让机器系统对机器做进一步控制或相应的自适应调整的行为。
信息
提出时间
1979年
提出者
hill和park
中文名
视觉伺服
外文名
visual servo
视觉伺服发展背景
上个世纪60年代,由于机器人和计算机技术的发展,人们开始研究具有视觉功能的机器人。但在这些研究中,机器人的视觉与机器人的动作,严格上讲是开环的。机器人的视觉系统通过图像处理,得到目标位姿,然后根据目标位姿,计算出机器运动的位姿,在整个过程中,视觉系统一次性地“提供”信息,然后就不参与过程了。在1973年,有人将视觉系统应用于机器人控制系统,在这一时期把这一过程称作视觉反馈(visual feedback)。直到1979年,hill和park提出了“视觉伺服”(visual servo)概念。很明显,视觉反馈的含义只是从视觉信息中提取反馈信号,而视觉伺服则是包括了从视觉信号处理,到机器人控制的全过程,所以视觉伺服比视觉反馈能更全面地反映机器人视觉和控制的有关研究内容。上个世纪80年以来,随着计算机技术和摄像设备的发展,机器人视觉伺服系统的技术问题吸引了众多研究人员的注意。到了90 年代,随着计算机能力的增强和价格下降,以及图像处理硬件和 CCD 摄像机的快速发展,机器视觉系统吸引了众多研究人员的注意 [1]  。去的几年里,机器人视觉伺服无论是在理论上还是在应用方面都取得了很大进展。在许多学术会议上,视觉伺服技术经常列为会议的一个专题。视觉伺服已逐渐发展为跨机器人、自动控制和图像处理等技术领域的一门独立技术。最早基于视觉的机器人系统, 采用的是静态look and move 形式。即先由视觉系统采集图像并进行相应处理, 然后通过计算估计目标的位置来控制机器人运动。这种操作精度直接与视觉传感器、机械手及控制器的性能有关,这使得机器人很难跟踪运动物体。到80年代,计算机及图像处理硬件得到发展,使得视觉信息可用于连续反馈,于是人们提出了基于视觉的伺服( v isual servoing ) 控制形式。这种方式可以克服模型( 包括机器人、视觉系统、环境) 中存在的不确定性,提高视觉定位或跟踪的精度。 [1] 
收起全文
精华内容
下载资源
问答
  • 目录内容说明基础概念视觉伺服基于图像IBVS几何解释双目系统基于位置PBVS 待研究 内容说明 本文主要为 HAL Id: inria-00350283的学习记录 感谢原作者 该系列文章使用伺服回路中的计算机视觉数据来控制机器人的运动。...
  • 为了实现手眼关系无标定情况下的机械臂末端定位,针对单目手眼系统,设计并实现了一个基于图像的无标定视觉伺服系统。进行模块化的系统设计,使用卡尔曼滤波器在线估计关节-图像雅可比矩阵,根据关节-图像速度数学...
  • MATLAB代码,实现六自由度机器人的视觉伺服控制,代码运行前需要配置机器人工具箱
  • 机器人视觉伺服综述

    2021-01-15 15:41:12
    系统论述了机器人视觉伺服发展的历史和现状。从不同角度对机器人视觉控制系统进行分类, 重点介绍了基于位置的视觉伺服系统和基于图像的视觉伺服系统。对人工神经网络在机器人视觉伺服 方面的应用情况作了...
  • 视觉伺服技术在诸多工业场景中都有相当大的应用前景。传统的视觉伺服方法,通常要求使用高帧率的相机来实现高精度的视觉伺服。高帧率相机的成本之高,使得一般工业用户望而却步。提出了一种新的视觉伺服控制方法,该...
  • 使用开源Visp库实现基于图像的视觉伺服(IBVS) 该存储库包含使用-自适应增益连续增益实现基于图像的视觉伺服的代码。 要运行代码-确保已安装VISP库,要了解有关visp的更多信息,请访问 运行命令-qtcreator ...
  • MATLAB代码,实现六自由度机器人的视觉伺服控制,代码运行前需要配置机器人工具箱
  • 本文为塔式起重机重力补偿系统提出了一种视觉伺服框架,该框架广泛用于各种航空地面测试中。 在此框架下,提出了一种实时检测算法来测量目标的位置。 使用该算法,首先在设计合理的校准步骤中标记目标的原始位置,...
  • 将特征点的深度信息和像素坐标作为视觉特征, 提出一种视觉伺服准最小最大模型预测控制(MPC) 方法. 与传统方法相比, 机器人控制信号可通过在线求解线性矩阵不等式的凸优化问题获得, 其可行解可保证系统的闭环 ...
  • ViSP:开源视觉伺服平台 平台 建置状态 Linux和OS X 视窗 手臂 该项目是一个跨平台的库(Linux,Windows,Mac),允许使用视觉跟踪和视觉伺服技术进行原型设计和开发应用程序,这是Inria 现在以及2018年之前所做...
  • 本文以固高公司的GPM系列2—DOF并联机器人为执行机构,根据机器人视觉伺服系统精度高、实时性强的要求,研究并设计了一套基于DSP的智能机器人视觉伺服系统。 论文重点研究了智能机器人视觉识别技术,提出了基于...
  • 视觉伺服控制过程中无法精确地标定摄像机和机器人运动学模型,而当前的无标定视觉伺服控制技术或者只能针对静态的目标,或者针对动态目标但无法摆脱大偏差的影响.针对此问题,提出一种动态无标定的视觉伺服控制方法:...
  • 针对使用的摄像机建立了...然后介绍了视觉伺服系统的双环模型,外环为图像环,利用图像信息进行闭环,内环为机器人关节位置环,利用关节处的编码器数据进行闭环。为了提高位置环的响应速度和控制精度,针对辨识得到的位...
  • 机器人视觉伺服系统的研究是机器人领域中的重要内容之一,其研究成果可以直接用于机器人自动避障、轨迹线跟踪和运动目标跟踪等问题中。本文针对机器人视觉伺服系统要求快速准确的特点,设计了基于TMS320C6201的...
  • 针对眼在手上的六自由度机械臂系统,提出一种基于图像的视觉伺服控制.通过图像矩和矢量积法,建立机器人正向、逆向运动学模型,引入雅可比矩阵解决机器人逆运动学解析问题.建立了图像矩特征变化量和笛卡尔空间的关节...
  • 将基于显微视觉伺服的机械手的装配位姿调整归结为使其末端执行器上三点运动到指定空间三点的问题。规定其中一点沿直线运动到目标位置,其余两点则以绕该点旋转的方法运动到它们对应的目标位置,避免部件的运动干涉与...
  • 滚动对象的视觉伺服算法。 /创建人:Rithhiman Raut,Mithun P. / /电子邮件ID:/ 脚步: 将软件包从存储库下载到工作区中的src文件夹中。 运行catkin_make。 浏览至ur5_control_nodes文件夹。 在终端中运行ls以查看...
  • 工业实践中不可能精确地标定摄像机和机器人模型,但当前的视觉伺服控制都需要标定系统模型。针对这 一现象,提出一种新颖的、能应用于“眼在手上”视觉伺服控制结构的动态无标定的视觉伺服控制算法,无需标定摄 像机和...
  • 针对机器人三自由度平动的视觉定位问题,建立全局有效的非线性视觉映射关系模型,并设计人工神经网络(ANN)对其拟合,从而实现无标定视觉伺服.伺服系统的物理结构采用单目视觉和眼在手上(eye-in-hand)构型.机器人系统...
  • #资源达人分享计划#
  • 通过视觉伺服同时进行多无人机导航和控制
  • 设计了无标定视觉伺服的仿人智能控制器,仿真完成了无标定双目视觉下机械臂的五自由度运动空间定位。选取点特征作为双目视觉图像特征,设计了视觉特征模型与多模态视觉伺服控制器,并在Matlab平台下设计了五自由度...
  • 机器人视觉伺服研究进展:视觉系统与控制策略.pdf
  • 针对眼在手上的六自由度机械臂系统,提出一种基于图像的视觉伺服控制.通过图像矩和矢量积法,建立机器人正向、逆向运动学模型,引入雅可比矩阵解决机器人逆运动学解析问题.建立了图像矩特征变化量和笛卡尔空间的...
  • 搭建了由移动机器人、机械臂、摄像头组成的家庭服务机器人视觉伺服系统,建立了此系统的运动学模型并对安装在机械臂末端执行器上的视觉系统进行了内外参数标定,通过分解世界平面的单应来获取目标物品的位姿参数,...
  • 机器人视觉伺服综述pdf,机器人视觉伺服综述
  • 基于图像的视觉伺服与基于位置的视觉伺服 ** 首先说,基于图像的视觉伺服与基于位置的视觉伺服主要表现形式在于图像雅可比矩阵的构建机器表现形式。 其实,关于视觉伺服的一些知识,还是有必要了解的。不然文章和...

    **

    基于图像的视觉伺服与基于位置的视觉伺服

    **

    有关于机械手位姿问题的理解,可以去看我关于机械手正逆运动学分析的文章

    首先说,基于图像的视觉伺服与基于位置的视觉伺服主要表现形式在于图像雅可比矩阵的构建及其表现形式。
    其实,关于视觉伺服的一些知识,还是有必要了解的。不然文章和方法看了好多,最后还不知道人家用的是基于图像的方法,还是基于位置的方法,这样你会在圈里转,单纯通过数学的方法理解人家给出的雅可比矩阵,我相信在座的各位没几个有那个本事,所以如果是新手,还是建议看完这个。彻底理解这两个概念在去看论文,看代码。

    1. 基础知识—视觉伺服的基本思想

    ------基于视觉的伺服控制方法的目的是最小化一个图像误差,该误差可以定义为:
    --------------------------------- e ( t ) = s ( m ( t ) , a ) − s ∗ e(t)=s(m(t),a)-s^{*} e(t)=s(m(t),a)s --------------------------- (1)
    ------式(1)为视觉伺服控制方法的通用形式。其中 m ( t ) m(t) m(t)是一系列的图像特征,如图像点特征、形状特征、位姿特征或频域特征等。 s ( m ( t ) , a ) s(m(t),a) s(m(t),a)表示通过特征 m ( t ) m(t) m(t)与一些额外的系统参数构成的映射函数。将提取的特征 m ( t ) m(t) m(t)映射至目标特征 s ∗ s^{*} s的空间中,并与 s ∗ s^{*} s进行比较,当两者差为零时,即系统误差 e ( t ) e(t) e(t)为零,系统迗到稳定的收敛位置。
    ------视觉伺服方法的不同主要体现在设计不同的目标图像特征 s s s。其中最经典的方法包括基于图像的视觉伺服以及基于位置的视觉伺服。基于图像的视觉伺服方法通过从图像中获取的特征点直接控制机械臂的运动,而基于位置的伺服方法首先通过图像特征点计算目标的位姿,再根据机械臂与目标物体的相对位姿规划运动方案。一旦确定了图像特征 s s s的选择,即可确定控制器的设计形式。最筒单的控制方法是设计一个速度控制器来控制机械臂的移动。为了得到图像特征 s s s随时间的变化率与摄像机运动速度的关系,设摄像机在摄像机坐标系下的瞬时速度为 v c = ( v c , ω c ) \mathbf{\mathbf{}v}_{c}=(v_{c},\omega _{c}) vc=(vc,ωc),其中 v c v_{c} vc为在摄像机坐标系下的瞬时线速度, ω c \omega _{c} ωc为摄像机坐标系下的瞬时角速度。则图像特征随时间的变化率 s ˙ \dot{s} s˙与摄像机速度 v c \mathbf{\mathbf{}v}_{c} vc的关系可以表示为:
    ------------------------------------ s ˙ = L s v c \dot{s}=\mathbf{L}_{s}\mathbf{v}_{_{c}} s˙=Lsvc ---------------------------- (2)

    ------其中 L s ∈ R k × 6 \mathbf{L}_{s}\in \mathbb{R}^{k\times 6} LsRk×6为图像雅克比矩阵。将式(2)代入(1)可得:
    ----------------------------------- e ˙ = L e v c \dot{e}=\mathbf{L}_{e}\mathbf{v}_{c} e˙=Levc ---------------------------- (3)

    ------其中 L e = L s \mathbf{L}_{e}=\mathbf{L}_{s} Le=Ls,考虑将 v c \mathbf{v}_{c} vc作为机械臂速度控制的输入,并保证图像误差的指数型下降,则可以通过对公式(3)中的雅克比矩阵求逆得到:
    --------------------------------- v c = − λ L e + e \mathbf{v}_{c}=-\lambda\mathbf{L}_{e}^{+}\mathbf{e} vc=λLe+e--------------------(4)
    ------其中 L e + ∈ R 6 × k \mathbf{L}_{e}^{+}\in \mathbb{R}^{6\times k} Le+R6×k L e \mathbf{L}_{e} Le的伪逆,即当矩阵 L e \mathbf{L}_{e} Le为非方阵或奇异时, L e + = ( L e T L e ) − 1 L e T \mathbf{L}_{e}^{+}=(\mathbf{L}_{e}^{T}\mathbf{L}_{e})^{-1}\mathbf{L}_{e}^{T} Le+=(LeTLe)1LeT。在实际的视觉伺服系统中,在控制阶段的每一时刻获得精确的 L e \mathbf{L}_{e} Le或者 L e + \mathbf{L}_{e}^{+} Le+是十分困难的。因此需要对图像雅克比矩阵进行估计。因此实际的视觉伺服控制方程应改写为:
    --------------------------------- v c = − λ L ^ e + e \mathbf{v}_{c}=-\lambda\mathbf{\hat{L}}_{e}^{+}\mathbf{e} vc=λL^e+e--------------------(5)
    式(5)为视觉伺服控制的基本公式,在此公式的基础上,仅需要考虑三个问题来设计视觉伺服控制的方程:(1)如何选择图像特征 s s s。(1)基于图像特征 s s s的雅克比矩阵 L s \mathbf{L}_{s} Ls如何推导;(3) L ^ e + e \mathbf{\hat{L}}_{e}^{+}\mathbf{e} L^e+e如何估计

    好了,这些都是小意思,下面开始讲重点了。

    2. 基于图像的视觉伺服

    ------基于图像的视觉伺服,其误差信号直接用图像特征来定义图象平面坐标(非任务空间坐标)的函数。其基本原理是由该误差信号计算出控制量,并将其变换到机器人运动空间中去,从而驱动机械手向目标运动,完成伺服任务。对于抓取静止目标的任务,该误差仅是机械手图像特征的函数;对于运动目标,误差还是运动目标图像特征的函数。该方法无需估计目标在笛卡儿坐标系中的位姿,减少了计算时延,并可克服摄像机标定误差及关节位置传感器误差对定位精度的影响。然而,为了将图像特征参数的变化同机器人位姿变化联系起来,该方法必须计算图像雅可比矩阵(Image Jacobian Matrix)及其逆矩阵。基于图像的视觉伺服本质上是把伺服任务放在图像特征参数空间中进行描述和控制。
    ------基于图像的视觉伺服系统的定位精度对摄像机标定误差不敏感。与基于位置的视觉伺服相比, 具有较少的计算量。 文献通过仿真与实验表明, 对于 eye in hand 构型的机器人视觉伺服系统,在存在图像量化误差、摄像机标定误差和图像噪声的情况下,基于图像的伺服方式比基于位置的伺服方式有更好的定位与跟踪效果。

    ------传统的基于图像的视觉飼服方式使用一系列特征点作为图像控制特征来定义 s s s。对图像的测量 m ( t ) m(t) m(t)通常是对应特征点对在图像上的像素距离,而系统参数 a a a为摄像机的内参数。基于这祥的设定,可定义在摄像机坐标系下的空间点 X = { X , Y , Z } \mathbf{X}=\left \{ X ,Y,Z\right \} X={X,Y,Z},它在摄像机二维成像平面上所映射的点为 x = { x , y } \mathbf{x}=\left \{ x,y\right \} x={x,y}。则可以得到:
    在这里插入图片描述
    -----------------------------------------------------------------------------------------(6)
    ------其中 m = ( u , v ) m=(u,v) m=(u,v)表示在图像坐标系下以像素为单位的点, a = { c u , c v , f , α } a=\left \{ c_{u} ,c_{v} ,f,\alpha \right \} a={cu,cv,f,α}为摄像机的内参数。 c u c_{u} cu c u c_{u} cu分别表示图像坐标系下光心点的 x x x轴方向与 y y y轴方向的坐标, f f f表示摄像机的焦距, α \alpha α是摄像机像素长宽比因子。令 s = x = ( x , y ) s=\mathbf{x}=(x,y) s=x=(x,y),即以图像坐标系下特征点的坐标作为图像控制特征。对式(6)进行求导有:
    在这里插入图片描述
    --------------------------------------------------------------------------------------------------(7)
    -------将三维空间点的速度与摄像机的速度联系起来有:
    在这里插入图片描述
    ----------------------------------------------------------------------------------------------------------(8)
    将式(8)代入式(7)可整理得到:
    在这里插入图片描述
    -----------------------------------------------------------------------------------------------------------(9)
    基于上式的控制方程可写为:
    ------------------------------------------ x ˙ = L x v c \mathbf{\dot{x}}=\mathbf{L_{x}}\mathbf{v_{c}} x˙=Lxvc----------------------------------------------------------(10)
    其中关于图像特征 x \mathbf{x} x的图像雅克比矩阵为:

    在这里插入图片描述
    -----------------------------------------------------------------------------------(11)
    ------在图像雅克比矩阵中,Z的值是特征点在摄像机坐标系下的深度。因此,任何使用基于图像特征点的视觉伺服控制方法均需要对Z进行估计。另一方面, x x x y y y的计算涉及到了摄像机的内参数,因此不能直接将式(11)代入式(4)形成控制方程,而需要对 x ˙ \mathbf{\dot{x}} x˙进行估计获得 L x ^ \hat{\mathbf{L_{x}}} Lx^
    ------为了控制机械臂的六个自由度,至少需要三个特征点组成秩为6的图像雅克比矩阵。例如使用特征向量 x = ( x 1 , x 2 , x 3 ) \mathbf{x}=\left ( x_{1},x_{2}, x_{3}\right ) x=(x1,x2,x3),则可获得图像雅克比矩阵:
    在这里插入图片描述
    ------------------------------------------------------------------------(12)
    ------但在这种情况下,当控制点特征运动到特定位置时图像雅克比矩阵会出现奇异性问题。另外,对于仅依靠3个图像特征点的控制,在这个运动空间中存在4个全局最小值,并且难以相互区分。因此在实际应用中常考虑采用特征点的数目大于3。
    ------选择好控制特征后,另一个核心问题是如何估计控制方程中的 L ^ e + \mathbf{\hat{L}}_{e}^{+} L^e+,最理想的情况是令 L ^ e + = L e + \mathbf{\hat{L}}_{e}^{+}=\mathbf{L}_{e}^{+} L^e+=Le+,根据式(11)所得结果,需要在迭代控制过程中的每一步估计当前特征点深度的值Z。但在每次迭代时估计Z的值是十分耗时的方式,因此在设计控制方程时可以选择近似的图像雅克比矩阵。
    ------常用的雅克比矩阵估计的选择有:(1) L ^ e + = L e ∗ + \mathbf{\hat{L}}_{e}^{+}=\mathbf{L}_{{e}^{*}}^{+} L^e+=Le+其中 L e ∗ + \mathbf{L}_{{e}^{*}}^{+} Le+是当机械臂运动到基准位置时 L e \mathbf{L}_{e}^{} Le的值,即 e = e ∗ = 0 e=e^{*}=0 e=e=0 L ^ e + = 1 / 2 ( L e + L e ∗ ) + \mathbf{\hat{L}}_{e}^{+}=1/2{(\mathbf{L_{e}+L_{{e^{*}}}})}^{+} L^e+=1/2(Le+Le)+,虽然这种方法提供了更好的运动轨迹,但由于方程中包含了 L e \mathbf{L_{e}} Le因此需要在每步迭代过程中估计目标特征点的深度信息。

    3. 基于位置的视觉伺服

    ------基于位置的视觉伺服,其反馈信号在三维任务空间中以直角坐标形式定义。基本原理是通过对图像特征的提取,并结合已知的目标几何模型及摄像机模型,三维笛卡尔坐标系中对目标位姿进行估计,然后由机械手当前位姿目标位姿(这里的目标位姿指的不是目标物体的位姿,而是下一步机械臂末端的期望位姿)之差,进行轨迹规划并计算出控制量,驱动机械手向目标运动,最终实现定位、抓取功能。目前,多数视觉伺服系统采用基于位置的控制方式
    ------基于位置的视觉伺服控制系统的定位精度在很大程度上依赖于目标位姿的估计精度,但位姿计算与手眼系统参数标定有关,因此要保证这一估计过程的准确度是十分困难的。在某些情况下,基于位置的控制对标定参数误差十分敏感。

    ------基于位置的视觉伺服方法利用摄像机与物体的相对位姿作为控制特征 s s s(该例子以eye in hand为例讲解)。因此控制特征 s s s可以参数化的表示为相机相对于目标物体的相对位姿。由于对位姿的估计需要目标物体的三维模型以及相机的内参数,因此基于位置的视觉伺服中的系统参数 a a a包含这两个部分。为表述方便,令当前相机坐标系为 F c \mathbf{{F}_{c}} Fc,期望的相机坐标系为 F c ∗ \mathbf{{F}_{{c}^{*}}} Fc以及与目标物体坐标系为 F o \mathbf{{F}_{o}} Fo。并采用标准的坐标系相关表示法对变换矩阵进行定义。令 c t o _{}^{c}\textrm{t}_{o} cto c ∗ t o _{}^{{c}^{*}}\textrm{t}_{o} cto分别表示相对于当前摄像机坐标系与期望的摄像机坐标系下,观测到的目标物体坐标系的平动向量。同时,令 R = c ∗ R c \mathbf{R}=\mathbf{_{}^{{c^{*}}}\textrm{R}_{c}} R=cRc表示相机坐标系与基坐标系之间的旋转矩阵。
    ------在此基准下,可定义 s = ( t , θ u ) \mathbf{s}=\left ( \mathbf{t } ,\mathbf{\theta u }\right ) s=(t,θu)其中 t \mathbf{t } t是平移向量, θ u \mathbf{\theta u } θu是旋转角的参数化表示。若将 t \mathbf{t } t定义为相机坐标系对于物体坐标系之间的距离,则 s = ( c t o , θ u ) \mathbf{s}=\left ( \mathbf{_{}^{c}\textrm{t}_{o}} ,\mathbf{\theta u }\right ) s=(cto,θu) s ∗ = ( c ∗ t o , 0 ) \mathbf{s}^{*}=\left ( \mathbf{_{}^{{c}^{*}}\textrm{t}_{o}} ,\mathbf{0}\right ) s=(cto,0) e = ( c t 0 − c ∗ t 0 , θ u ) \mathbf{e= (_{}^{c}\textrm{t}_{0}-_{}^{{c}^{*}}\textrm{t}_{0},\theta u)} e=(ct0ct0,θu)。关于误差 e e e的图像雅克比矩阵可以表示为:
    在这里插入图片描述
    -----------------------------------------------------------------------------------------(13)
    其中, I 3 \mathbf{I}_{3} I3为3x3单位矩阵则通过罗德里格斯公式推导得到:
    在这里插入图片描述
    --------------------------------------------------------------------------------------------------(14)
    ------其中, s i n c sinc sinc函数的定义为; x s i n c x = s i n x xsincx=sinx xsincxsinx s i n c 0 = 1 sinc0=1 sinc0=1。根据式(4)的形式可得基于位置视觉伺服的控制方程为:
    在这里插入图片描述
    由于图像雅克比矩阵为一个秩为6的方阵,可以直接计算图像雅克比矩阵的逆:
    在这里插入图片描述
    -----------------------------------------------------------------------------------------------------------(15)
    由于 L θ u − 1 = θ u \mathbf{L_{\theta u}^{-1}=\theta u} Lθu1=θu,因此可以推得线速度与角速度的离散表达形式
    在这里插入图片描述
    ------由此可见,视觉伺服技术的核心思想是通过选定一组特定的图像特征,并推导选定的图像特征与摄像机运动速度之间的关系,即图像雅克比矩阵,到图像特征达到基准的状态时,摄像机的运动速度也同时收敛至零,这时机械臂运动到指定的目标位置。基于图像特征点的视觉伺服方法虽然不需要估计目标物体的位姿,仅通过特征点的匹配即可控制相机的移动,但过于依赖特征点的获取,对于低纹理的目标难以适用。基于位置的视觉伺服方法重点在于目标物体位姿识别的一致性,若对不同的图像特征下的目标物体识别出同样的位姿,则会导致基于位置的视觉伺服的失败。

    参考文献

    [1]Chaumette F , Hutchinson S . Visual servo control, Part I: Basic approaches[J]. IEEE Robotics & Automation Magazine, 2006, 13.

    展开全文
  • 视觉伺服控制完整解析

    万次阅读 多人点赞 2019-06-03 22:08:26
    视觉伺服控制(Visual servo control)简单来说,就是利用计算机视觉得到的数据来控制机器人的移动。一般来说,根据相机的位置不同又分为两种,一种是直接将相机放置在机器人或者机械臂上,另一种是将相机固定在工作...

    视觉伺服控制简介

    视觉伺服控制(Visual servo control)简单来说,就是利用计算机视觉得到的数据来控制机器人的移动。一般来说,根据相机的位置不同又分为两种,一种是直接将相机放置在机器人或者机械臂上,另一种是将相机固定在工作空间的某个位置,前者也被称作eye-in-hand。

    相关符号及概念的说明

    坐标变换

    我们都知道三维空间下刚体的运动可以分解为两个部分,平移和旋转。平移没什么好说的,直接用一个向量 t \mathbf{t} t就可以表示。对于旋转,一般情况下,我们都采用一个 3 × 3 3 \times 3 3×3的旋转矩阵来表示。在数学中,旋转矩阵的集合有一个单独的定义,称为特殊正交群,记为
    S O ( 3 ) = { R ∈ ℜ 3 × 3 ∣ R R T = I , d e t ( R ) = 1 } SO(3) = \{ \mathbf{R} \in \Re^{3\times 3}\mid \mathbf{R} \mathbf{R}^T = \mathbf{I}, det( \mathbf{R}) = 1\} SO(3)={R3×3RRT=I,det(R)=1}这里的 R R R表示旋转矩阵。
    当然了,我们都知道,一次旋转只有三个自由度,而旋转矩阵有9个变量,那么很明显存在很多的冗余项。理想情况下只需要三个量就能表示一次旋转,比如欧拉角,但是欧拉角表示法存在万向锁问题,为了解决这个问题,人们又发明了一种新的表示方法,四元数。四元数简单的理解就是用一些规则记录旋转轴和旋转角,这并不是这篇博客的重点,大家感兴趣可以自行搜索。
    既然知道了平移和旋转,那么坐标变换就可以写为
    a ′ = R a + t \mathbf{a'} = \mathbf{R}\mathbf{a} + \mathbf{t} a=Ra+t为了写成齐次坐标的形式,引入齐次坐标系,将上式写成如下形式
    [ a ′ 1 ] = [ R t 0 T 1 ] [ a 1 ] = T [ a 1 ] \begin{bmatrix} \mathbf{a'} \\1 \end{bmatrix}=\begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \begin{bmatrix} \mathbf{a} \\1 \end{bmatrix} =\mathbf{T}\begin{bmatrix} \mathbf{a} \\1 \end{bmatrix} [a1]=[R0Tt1][a1]=T[a1]类似于旋转矩阵 R \mathbf{R} R,变换矩阵 T \mathbf{T} T也可以组成一个集合,称做特殊欧式群,记为
    S E ( 3 ) = { T = [ R t 0 T 1 ] ∈ ℜ 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ ℜ 3 } SE(3)=\{\mathbf{T}=\begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \in \Re^{4\times 4}\mid \mathbf{R} \in \mathbf{SO}(3), \mathbf{t}\in \Re^3\} SE(3)={T=[R0Tt1]4×4RSO(3),t3}机器人的工作空间记为 T = S E ( 3 ) \mathcal{T}=SE(3) T=SE(3)
    记点 P P P相对于参考系 x x x的坐标为 x P ^{x}\mathbf{P} xP,参考系 y y y相对于 x x x的旋转矩阵记为 x R y ^x\mathbf{R}_y xRy,同理,坐标原点之间的平移变换记为 x t y ^x\mathbf{t}_y xty,同时包含平移和旋转的变换记为 x x y ^x\mathbf{x}_y xxy。即
    x P = x x y ( y P ) = x R y y P + x t y ^x\mathbf{P}= {^x\mathbf{x}_y}(^y\mathbf{P})={^x\mathbf{R}_y} ^y\mathbf{P}+{^x\mathbf{t}_y} xP=xxy(yP)=xRyyP+xty坐标变换之间满足结合律,即
    x P = x x y ( y P ) = x x y ( y x z ( z P ) ) = ( x x y ∘ y x z ) ( z P ) = x x z ( z P ) ^x\mathbf{P}= {^x\mathbf{x}}_y(^y\mathbf{P})={^x\mathbf{x}_y} (^y\mathbf{x}_z(^z\mathbf{P}))=({^x\mathbf{x}_y} \circ ^y\mathbf{x}_z)(^z\mathbf{P})={^x\mathbf{x}_z}(^z\mathbf{P}) xP=xxy(yP)=xxy(yxz(zP))=(xxyyxz)(zP)=xxz(zP)由简单的刚体运动可知,坐标系变换存在如下关系
    x R z = x R y y R z ^x\mathbf{R}_z= {^x\mathbf{R}_y}^y\mathbf{R}_z xRz=xRyyRz x t z = x R y y t z + x t y ^x\mathbf{t}_z= {^x\mathbf{R}_y}^y\mathbf{t}_z+{^x\mathbf{t}_y} xtz=xRyytz+xty对不同参考系,如无特殊说明,均默认为世界参考系,常用参考系角标如下

    记号对应参考系
    e e e机器人末端执行机构(end-effector)
    t t t目标物体(target)
    c i c_i ci i i i个相机(camera)

    刚体运动

    假设考虑末端执行器的工作空间 T ∈ S E ( 3 ) \mathcal{T}\in SE(3) TSE(3) P \mathbf{P} P的坐标为 ( x , y , z ) (x, y,z) (x,y,z)。在世界参考系下,对应的角速度和速度为
    Ω ( t ) = [ ω x ( t ) , ω y ( t ) , ω z ( t ) ] \mathbf{\Omega}(t)=[\omega_x(t),\omega_y(t),\omega_z(t)] Ω(t)=[ωx(t),ωy(t),ωz(t)] T ( t ) = [ T x ( t ) , T y ( t ) , T z ( t ) ] \mathbf{T}(t)=[T_x(t),T_y(t),T_z(t)] T(t)=[Tx(t),Ty(t),Tz(t)]根据刚体运动学关系,有
    x ˙ = z ω y − y ω z + T x \dot{x}=z\omega_y -y\omega_z +T_x x˙=zωyyωz+Tx y ˙ = x ω z − z ω w + T y \dot{y}=x\omega_z -z\omega_w +T_y y˙=xωzzωw+Ty z ˙ = y ω x − x ω y + T z \dot{z}=y\omega_x -x\omega_y +T_z z˙=yωxxωy+Tz写成矩阵形式
    P ˙ = Ω × P + T \mathbf{\dot{P}}=\Omega\times \mathbf{P}+\mathbf{T} P˙=Ω×P+T事实上,向量积可以用一个反对称阵(skewsymmetric,也有翻译成斜对称阵)替换,定义
    s k ( P ) = [ 0 − z y z 0 − x − y x 0 ] sk(\mathbf{P})=\begin{bmatrix} 0 &-z &y \\ z & 0 & -x \\ -y & x &0 \end{bmatrix} sk(P)=0zyz0xyx0 P ˙ = − s k ( P ) Ω + T \mathbf{\dot{P}}=-sk(\mathbf{P})\Omega +\mathbf{T} P˙=sk(P)Ω+T定义速度向量
    r ˙ ( t ) = [ T x ( t ) , T y ( t ) , T z ( t ) , ω x ( t ) , ω y ( t ) , ω z ( t ) ] T \mathbf{\dot{r}}(t)=[T_x(t),T_y(t),T_z(t),\omega_x(t),\omega_y(t),\omega_z(t)]^T r˙(t)=[Tx(t),Ty(t),Tz(t),ωx(t),ωy(t),ωz(t)]T A ( P ) = [ I 3 ∣ − s k ( P ) ] \mathbf{A(P)}=[I_3 \mid -sk(\mathbf{P})] A(P)=[I3sk(P)]原式可写作
    P ˙ = A ( P ) r ˙ \mathbf{\dot{P}}=\mathbf{A(P)}\dot{\mathbf{r}} P˙=A(P)r˙同样的,对速度向量,在不同参考系下的刚体运动有如下关系
    r ˙ = [ t Ω ] = [ R e e T − R e e Ω × t e R e e Ω ] \dot{\mathbf{r}}=\begin{bmatrix} \mathbf{t} \\ \mathbf{\Omega} \end{bmatrix} = \begin{bmatrix} \mathbf{R}_e {^e\mathbf{T}}-\mathbf{R}_e {^e\mathbf{\Omega}}\times \mathbf{t}_e \\ \mathbf{R}_e {^e\mathbf{\Omega}} \end{bmatrix} r˙=[tΩ]=[ReeTReeΩ×teReeΩ]

    相机模型

    一般对相机模型的划分大致包括几类,透视投影(perspective projection),正交投影(orthographic projection)和仿射投影(affine projection),正交投影也可以看做仿射投影的特例。其中,最常见的就是透视投影模型。透视模型的一般形式如下:
    π ( x , y , z ) = [ u v ] = λ z [ x y ] \pi(x,y,z)=\begin{bmatrix} u \\ v\end{bmatrix}=\frac{\lambda}{z} \begin{bmatrix} x \\ y\end{bmatrix} π(x,y,z)=[uv]=zλ[xy]对相机捕获的图像,我们用 f = [ f 1 , f 2 , . . . , f k ] k ∈ F \mathbf{f}=[f_1,f_2,...,f_k]^k \in \mathcal{F} f=[f1,f2,...,fk]kF表示图像特征参数, F \mathcal{F} F为图像特征空间。定义从工作空间到图像特征空间的函数映射如下:
    f : T → F \mathbf{f}:\mathcal{T}\rightarrow\mathcal{F} f:TF

    视觉伺服控制理论

    关于视觉伺服控制主要有两个问题

    • 控制结构是否分层,即视觉系统提供设定点作为机器人控制器的输入,还是视觉控制器直接计算机器人控制器输入。
    • 误差是定义在3D参考系下还是2D参考系下

    如果控制结构是分层的,则称为dynamic look-and-move,否则称为direct visual servo。如果误差定义在3D参考系,则称为基于位置(position-based),否则称为基于图像(image-based)。因此根据上述两个问题,视觉伺服控制可以分为四大类。

    • Dynamic position-based look-and-move
    • Dynamic image-based look-and-move
    • Direct position-based visual servo
    • Direct image-based visual servo

    下图展示了Dynamic position-based look-and-move的框架,如果是非分层的,则没有Joint controllers这一层,如果是image-based,则没有Pose estimation这一项。
    在这里插入图片描述
    虽然分层控制看上去多了一个处理步骤,但实际中的视觉伺服大都采用分层控制,主要有以下几个原因

    • 一般来说,控制器的频率大于1KHZ是很常见的,但是图像采样频率达到1KHZ是比较难的,因此直接控制没法满足高频的控制要求。
    • 对许多机器人来说,在3D空间下的姿态和位移甚至速度加速度都很容易通过自身或附加的传感器得到,而且精度较图像高。
    • 对于单纯的机器人定点运动,有许多成熟的方法可以直接运用。

    关于基于位置和基于图像,简单来讲,基于图像,误差就是当前特征在图像的位置和在目标图像的位置,而基于位置,则要先将图像特征转换到工作空间三维坐标系,然后计算在三维空间下当前位置和目标位置的误差。

    考虑一个例子,用机器手去抓一个杯子。假设,我们的相机就在机器手上,什么意思呢?就是这个相机没法捕捉到完整的机器手,只能捕捉到目标。那这个时候怎么判断杯子是否抓稳了呢?比如说,我们以杯子的中心在视野中央当作抓稳的判断条件。这样可能会出现什么问题呢?当相机有误差时,也就是说,杯子实际上并不在机器手中央,但是由于相机的偏移或者其他误差导致杯子显示在捕捉到的图像中央。注意,这时候,无论是基于图像还是基于位置,都无法自己发现这个误差并纠正。那什么样的做法比较合理呢?对,把相机换个位置,换到能同时观察到机器手和杯子的位置,这样就算有偏移,也能知道是否抓稳。

    这个例子不一定恰当,有点像控制中引入反馈的意思?我们为了区分这两种情况,将能同时观察到执行机构和目标的系统称为终点闭环(endpoint closed-loop,ECL)系统,反之,称为终点开环(endpoint open-loop,EOL)系统。理论上闭环效果更好,但是闭环意味着引入了更多的计算量(需要同时识别并追踪更多的特征),所以这也是一个trade off。

    基于位置的视觉伺服控制

    基于位置的视觉伺服控制,首先从图像中提取特征,然后基于这些特征估计目标相对于相机的位姿,将该位姿与预期的目标位姿进行对比,当误差为0或者小于 δ \delta δ时,认为控制任务完成。简单起见,下述讨论时我们默认采用比例控制。考虑将末端执行机构上的某个点 e P ^e \mathbf{P} eP移动到固定参考系下的另一个点 S \mathbf{S} S,称该过程为点到点(point-to-point)。我们先考虑只有平动的情况,即 T = ℜ 3 \mathcal{T} = \Re^3 T=3,如果相机是固定的话,则可以定义如下误差函数
    E p p ( x e ; S , e P ) = x e ( e P ) − S \mathbf{E}_{pp}\mathbf{(x_e;S,{^eP})=x_e(^eP)-S} Epp(xe;S,eP)=xe(eP)S当然,很多时候并不是能够轻易地获得目标的全局位置,更多是知道相对于相机的位置,因此,我们的控制律可以写为
    u 3 = − k E p p ( x ^ e ; x ^ c ( c S ^ ) , e P ) = − k ( x ^ e ( e P ) − x ^ c ( c S ^ ) ) \mathbf{u}_3=-k \mathbf{E}_{pp}(\mathbf{\hat{x}}_e;\mathbf{\hat{x}}_c(^c\mathbf{\hat{S}}),{^e\mathbf{P}})=-k(\mathbf{\hat{x}}_e(^e\mathbf{P})-\mathbf{\hat{x}}_c(^c\mathbf{\hat{S}})) u3=kEpp(x^e;x^c(cS^),eP)=k(x^e(eP)x^c(cS^))实际相机都需要事先进行标定,但误差不可避免,因此这里的 x ^ \mathbf{\hat{x}} x^表示对应的估计值。如果相机是固定在机器人上的某个位置,则相机相对末端执行机构的变换是已知的,有
    u 3 = − k x ^ c ( c P ^ − c S ^ ) \mathbf{u}_3=-k\mathbf{\hat{x}}_c(^c\mathbf{\hat{P}}-{^c\mathbf{\hat{S}})} u3=kx^c(cP^cS^) e u 3 = − k e x ^ c ( c P ^ − c S ^ ) ^e\mathbf{u}_3=-k^e\mathbf{\hat{x}}_c(^c\mathbf{\hat{P}}-{^c\mathbf{\hat{S}})} eu3=kex^c(cP^cS^)注意,上述两个式子等于0的条件时一样的。 ( c P ^ − c S ^ ) = 0 (^c\mathbf{\hat{P}}-{^c\mathbf{\hat{S}})}=0 (cP^cS^)=0。也就是说,这个收敛条件并不依赖于机器人执行机构的准确性或者相机标定结果。
    更进一步地,考虑平动+转动的情况,即 T ⊆ S E 3 \mathcal{T} \subseteq SE^3 TSE3,此时的控制输入 u ∈ ℜ 6 \mathbf{u} \in \Re^6 u6。但是我们上面定义的误差函数是3维的,怎么解决维数不一致的问题呢?在刚体运动那一小节中,我们得到了一个式子 P ˙ = A ( P ) r ˙ \mathbf{\dot{P}}=\mathbf{A(P)}\dot{\mathbf{r}} P˙=A(P)r˙,结合该式可以得到
    P ˙ = u 3 = A ( P ) u \mathbf{\dot{P}}=\mathbf{u}_3=\mathbf{A(P)}\mathbf{u} P˙=u3=A(P)u为了得到 u \mathbf{u} u,理论上,我们只需要解上述这个方程即可,那么问题来了,如果 A ( P ) \mathbf{A(P)} A(P)是方阵当然万事大吉,但是很显然这里不是。不要慌,伟大的数学家早已经看穿了一切,这里就要引进一个重要的概念,PM广义逆,具体定义感兴趣的朋友可以去找本矩阵论看看。这里主要用到如下结论
    矩阵 A ∈ C m × n A \in \mathbb{C}^{m \times n} ACm×n r a n k ( A ) = r rank(A)=r rank(A)=r,则
    在这里插入图片描述
    上面的 A + A^+ A+就是广义逆,而且注意到 A ( P ) \mathbf{A(P)} A(P)的定义中含有一个单位阵,因此它一定是行满秩的。
    那刚才的那个问题就很好解答了
    u = A ( P ) + u 3 \mathbf{u}=\mathbf{A(P)}^+\mathbf{u}_3 u=A(P)+u3在刚才的基础上更进一步,假设现在不是把末端执行机构移动到某个位姿,而是把他移到某两个点的连线上。首先要重新定义一个误差函数,这个误差函数必须满足三点共线时值为0,且偏离角度越大值越大。那我们自然就会想到向量积。
    E p l ( x e ; S 1 , S 2 , e P ) = ( S 2 − S 1 ) × ( x e ( e P ) − S 1 ) × ( S 2 − S 1 ) \mathbf{E}_{pl}\mathbf{(x_e;S_1,S_2,{^eP})}=(\mathbf{S}_2-\mathbf{S}_1)\times (\mathbf{x}_e(^e\mathbf{P})-\mathbf{S}_1) \times (\mathbf{S}_2-\mathbf{S}_1) Epl(xe;S1,S2,eP)=(S2S1)×(xe(eP)S1)×(S2S1)我们刚才考虑的是把末端执行机构的一个点移动到一条线上,这个动作即使不考虑旋转,单纯的平动就可以做到。如果同时考虑把两个点移动到同一条线上,那么很显然,除非一开始这两条线就是平行的,否则无法通过单纯的平动实现该目标。
    u = ( T , Ω ) \mathbf{u=(T,\Omega)} u=(T,Ω),利用向量积很容易表述两个向量之间的差异
    k = ( S 2 − S 1 ) × R e ( e P 2 − P 1 ) \mathbf{k}=(\mathbf{S}_2-\mathbf{S}_1) \times \mathbf{R_e}(^e\mathbf{P}_2-\mathbf{P}_1) k=(S2S1)×Re(eP2P1)这里 k \mathbf{k} k的方向表示旋转轴,模长正比于夹角, R e \mathbf{R_e} Re表示旋转矩阵。此时
    Ω = − k 1 k \mathbf{\Omega}=-k_1\mathbf{k} Ω=k1k此时的平动肯定不是简单的 − k 2 E p l -k_2\mathbf{E}_{pl} k2Epl,因为发生了旋转,结合我们在刚体运动小节介绍的结果,很容易得到
    T = − k 2 ( S 2 − S 1 ) × ( x e ( e P 1 ) − S 1 ) × ( S 2 − S 1 ) − Ω × ( x e ( e P 1 ) ) \mathbf{T}=-k_2(\mathbf{S}_2-\mathbf{S}_1)\times (\mathbf{x}_e(^e\mathbf{P}_1)-\mathbf{S}_1) \times (\mathbf{S}_2-\mathbf{S}_1)-\mathbf{\Omega}\times(\mathbf{x}_e(^e\mathbf{P}_1)) T=k2(S2S1)×(xe(eP1)S1)×(S2S1)Ω×(xe(eP1))上述讨论都是基于单相机的情况,实际上,在进行估计时,采用多传感器是很常见的减小误差的方法,下面我们简单讨论一下多相机的情况。令 a x c 1 ^a\mathbf{x}_{c1} axc1表示相机相对于任意一个参考系 a a a的位姿, a P = [ x , y , z ] T ^a\mathbf{P}=[x,y,z]^T aP=[x,y,z]T,则有
    p 1 = [ u 1 v 1 ] = λ z a P + t z [ x a P + t x y a P + t y ] \mathbf{p}_1=\begin{bmatrix} u_1 \\ v_1\end{bmatrix}=\frac{\lambda}{\mathbf{z}{^a\mathbf{P}}+t_z} \begin{bmatrix} \mathbf{x}{^a\mathbf{P}}+t_x \\ \mathbf{y}{^a\mathbf{P}}+t_y\end{bmatrix} p1=[u1v1]=zaP+tzλ[xaP+txyaP+ty]其中, x , y , z \mathbf{x},\mathbf{y},\mathbf{z} x,y,z是旋转矩阵 c 1 R a ^{c1}\mathbf{R}_a c1Ra的对应行向量, t x , t y , t z t_x,t_y,t_z tx,ty,tz同理。简单化简可得
    A 1 ( p 1 ) a P = b 1 ( p 1 ) A_1(\mathbf{p}_1)^a\mathbf{P}=b_1(\mathbf{p}_1) A1(p1)aP=b1(p1)其中
    A 1 ( p 1 ) = [ λ x − u 1 z λ y − v 1 z ] , b 1 ( p 1 ) = [ u 1 t z − λ t x v 1 t z − λ t y ] A_1(\mathbf{p}_1)=\begin{bmatrix} \lambda \mathbf{x}-u_1 \mathbf{z} \\ \lambda \mathbf{y}-v_1 \mathbf{z}\end{bmatrix},b_1(\mathbf{p}_1)=\begin{bmatrix} u_1 \mathbf{t}_z-\lambda t_x \\ v_1 \mathbf{t}_z-\lambda t_y\end{bmatrix} A1(p1)=[λxu1zλyv1z],b1(p1)=[u1tzλtxv1tzλty]同理,对另一个相机 a x c 2 ^a\mathbf{x}_{c2} axc2我们也有如上结果,写成矩阵形式
    [ A 1 ( p 1 ) A 2 ( p 2 ) ] a P = [ b 1 ( p 1 ) b 2 ( p 2 ) ] \begin{bmatrix}A_1(\mathbf{p}_1) \\ A_2(\mathbf{p}_2)\end{bmatrix}{^a\mathbf{P}}=\begin{bmatrix}b_1(\mathbf{p}_1) \\ b_2(\mathbf{p}_2)\end{bmatrix} [A1(p1)A2(p2)]aP=[b1(p1)b2(p2)]很显然,当多个相机方程联立的时候,方程个数会大于未知数个数,当然引入多个相机的目的就是为了防止某个相机的误差对结果影响过大,上述方程通过最小二乘的方法很容易得到一个解,这里不加赘述。
    基于位置的视觉伺服控制的基本理论主要都介绍了,总的来说,基于位置控制的优点就是将目标从二维图像转换到三维空间,对机器手来说,从(1,2,3)到(3,4,5)显然比从图上的(1,2)到(3,4)更好理解一些。缺点的话,引进从图像到空间的变换自然也引进了新的误差,因此,基于位置的方法都对相机的标定结果比较敏感。另一个问题就是在重复计算坐标变换的过程,需要许多额外的计算量。

    基于图像的视觉伺服控制

    首先引入图像雅可比矩阵的概念,定义 r \mathbf{r} r r ˙ \mathbf{\dot{r}} r˙分别表示末端执行机构的位姿和速度, f \mathbf{f} f f ˙ \mathbf{\dot{f}} f˙表示图像特征的参数和这些参数的变化率。定义
    f ˙ = J v ( r ) r ˙ \mathbf{\dot{f}}=\mathbf{J}_v(\mathbf{r})\mathbf{\dot{r}} f˙=Jv(r)r˙其中,
    在这里插入图片描述
    J v \mathbf{J}_v Jv称为图像雅克比矩阵。举个例子来说明如何求解图像雅可比矩阵。利用前面的运动学公式,有
    P ˙ = Ω × P + T \mathbf{\dot{P}}=\Omega\times \mathbf{P}+\mathbf{T} P˙=Ω×P+T结合
    [ u v ] = λ z [ x y ] \begin{bmatrix} u \\ v\end{bmatrix}=\frac{\lambda}{z} \begin{bmatrix} x \\ y\end{bmatrix} [uv]=zλ[xy]
    x ˙ = z ω y − u z λ ω z + T x \dot{x}=z\omega_y -\frac{uz}{\lambda}\omega_z +T_x x˙=zωyλuzωz+Tx y ˙ = u z λ ω z − z ω w + T y \dot{y}=\frac{uz}{\lambda}\omega_z -z\omega_w +T_y y˙=λuzωzzωw+Ty z ˙ = z λ ( v ω x − u ω y ) + T z \dot{z}=\frac{z}{\lambda}(v\omega_x -u\omega_y )+T_z z˙=λz(vωxuωy)+Tz把上述结果代入
    u ˙ = λ z x ˙ − x z ˙ z 2 \dot{u}=\lambda \frac{z\dot{x}-x\dot{z}}{z^2} u˙=λz2zx˙xz˙化简得
    u ˙ = λ z T x − u z T z − u v λ ω x + λ 2 + u 2 λ ω y − v ω z \dot{u}=\frac{\lambda}{z}T_x-\frac{u}{z}T_z-\frac{uv}{\lambda}\omega_x+\frac{\lambda^2+u^2}{\lambda}\omega_y-v\omega_z u˙=zλTxzuTzλuvωx+λλ2+u2ωyvωz同理有
    v ˙ = λ z T y − v z T z + u v λ ω y − λ 2 + v 2 λ ω x + u ω z \dot{v}=\frac{\lambda}{z}T_y-\frac{v}{z}T_z+\frac{uv}{\lambda}\omega_y-\frac{\lambda^2+v^2}{\lambda}\omega_x+u\omega_z v˙=zλTyzvTz+λuvωyλλ2+v2ωx+uωz写成矩阵形式
    在这里插入图片描述
    需要注意的是,雅克比矩阵是同深度 z z z相关的。
    现在我们知道了雅克比矩阵,理论上只要知道 r ˙ \dot{r} r˙就能知道 f ˙ \dot{f} f˙,知道 f ˙ \dot{f} f˙就能知道 r ˙ \dot{r} r˙,那这里又回到了之前的问题,雅克比矩阵是否一定可逆?如果同时有多组特征怎么办?还是老办法,利用最小二乘和广义逆,这里给出通解
    r ˙ = J v + f ˙ + ( I − J v + J v ) b \mathbf{\dot{r}}=\mathbf{J}_v^+\mathbf{\dot{f}}+(\mathbf{I}-\mathbf{J}_v^+\mathbf{J}_v)\mathbf{b} r˙=Jv+f˙+(IJv+Jv)b现在我们回到实践中去,基于图像的最大问题是什么呢?少了一个维度,这是很致命的,三维空间从一个点到另一个点是唯一的,但是我们都知道,相机平面上的一个点实际对应三维的一条线,举个例子
    在这里插入图片描述
    怎么解决呢?很简单,没有什么是加一个相机解决不了的,如果有
    在这里插入图片描述
    假设点 P \mathbf{P} P S \mathbf{S} S在左右相机平面的投影分别为 [ u l , v l ] T [u^l,v^l]^T [ul,vl]T [ u r , v r ] T [u^r,v^r]^T [ur,vr]T [ u s l , v s l ] T [u^l_s,v^l_s]^T [usl,vsl]T [ u s r , v s r ] T [u^r_s,v^r_s]^T [usr,vsr]T f = [ u l , v l , u r , v r ] T f=[u^l,v^l,u^r,v^r]^T f=[ul,vl,ur,vr]T f d = [ u s l , v s l , u s r , v s r ] T f_d=[u^l_s,v^l_s,u^r_s,v^r_s]^T fd=[usl,vsl,usr,vsr]T,则误差函数可定义为
    e p p ( f ) = f − f d \mathbf{e}_{pp}(\mathbf{f})=\mathbf{f}-\mathbf{f}_d epp(f)=ffd同样的,上述讨论的是点对点的运动,如果基于图像来考虑点到线的运动呢?我们刚才提到点对点会出现二维一致三维不一致的情况,同样的,由于缺少深度信息,将点移动到一条线上也会出现这个问题,因此同样需要在两个或者多个平面内达到共线。回忆我们前面利用空间向量积来判断共线,类似的
    在这里插入图片描述
    上式为0当且仅当共线的时候。
    从而构造误差函数如下
    e ( f ) = [ e p l l ( [ u l , v l ] T ) e p l r ( [ u r , v r ] T ) ] \mathbf{e(f)}=\begin{bmatrix} e^l_{pl}([u^l,v^l]^T) \\ e^r_{pl}([u^r,v^r]^T)\end{bmatrix} e(f)=[epll([ul,vl]T)eplr([ur,vr]T)]
    我们前面也提到了,基于位置的方法很多时候对相机标定参数比较敏感,反过来讲,基于图像的优点就是不依赖于相机标定参数。因为只要误差是收敛到0的,说明在不同相机视野里都是趋近目标位置的,即使标定参数有误差也没有关系。值得注意的是,假设我们要完全控制六个自由度,那么我们至少需要选取三组特征 [ u 1 , v 1 ] , [ u 2 , v 2 ] , [ u 3 , v 3 ] [u_1,v_1],[u_2,v_2],[u_3,v_3] [u1,v1],[u2,v2],[u3,v3],对应的图像雅克比为 J v 1 , J v 2 , J v 3 \mathbf{J}_{v1},\mathbf{J}_{v2},\mathbf{J}_{v3} Jv1,Jv2,Jv3,记 J v = [ J v 1 , J v 2 , J v 3 ] T \mathbf{J}_{v}=[\mathbf{J}_{v1},\mathbf{J}_{v2},\mathbf{J}_{v3}]^T Jv=[Jv1,Jv2,Jv3]T,那么可能会出现该矩阵为奇异的情况,因此,更多情况下,选取图像特征的维数都大于所要控制的自由度。

    关于图像雅可比矩阵,我们上述解方程默认都是已知的,但是前面也提到了,雅可比矩阵需要知道深度,那么最理想的情况当然每个时刻都能获取到深度信息。假设,为了减少计算量,只选择若干个点,事先计算好对应相机的雅可比矩阵,那么应该怎么选取?其中一种常见的方法是选取 e = 0 \mathbf{e=0} e=0的位置。1

    参考文献

    1. Seth Hutchinson, “A Tutorial on Visual Servo Control,” IEEE TRANSACTIONS O N ROROTLCS AND AUTOMATION, VOL. 12, NO. 5 , OCTOBER 1996
    2. Seth Hutchinson,“Visual Servo Control Part I: Basic Approaches”,IEEE Robotics & Automation Magazine,DECEMBER 2006

    1. B. Espiau, F. Chaumette, and P. Rives, “A new approach to visual servoing in robotics,” IEEE Trans. Robotics and Automation, vol. 8, pp.313–326, June 1992 ↩︎

    展开全文
  • 旋翼飞行机械臂的混合视觉伺服和分层控制方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,343
精华内容 937
关键字:

视觉伺服

友情链接: 工作文档_20201210.zip