CS336视觉伺服

2023-11-11

笔记

动力学模型

机械臂动力学的研究方法:拉格朗日,牛顿-欧拉,高斯,凯恩方法。机械臂的动力学主要是两个问题:正向运动学和逆向运动学。

视觉伺服

视觉伺服的基本思想

基于视觉的伺服控制方法的目的是最小化一个图像误差,该误差可以定义为:
e ( t ) = s ( m ( t ) , a ) − s ∗ e(t)=s(m(t), a)-s^{*} e(t)=s(m(t),a)s

其中 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随时间的变化率与摄像机运动速度的关系,设摄像机在摄像机坐标系下的瞬时速度为 v c = ( v c , ω c ) \mathbf{v}_{c}=\left(v_{c}, \omega_{c}\right) vc=(vc,ωc)

则图像特征随时间的变化率 s ˙ \dot{s} s˙与摄像机速度 v c \mathbf{v}_{c} vc 的关系可以表示为:
s ˙ = J s v c \dot{s}=\mathbf{J}_{s} \mathbf{v}_{c} s˙=Jsvc

其中 J s ∈ R k × 6 \mathbf{J}_{s} \in \mathbb{R}^{k \times 6} JsRk×6为图像雅克比矩阵。在未知相机参数和特征点深度信息条件下,定义图像雅克比矩阵为:

J ( k ) = [ ∂ S 1 ( k ) ∂ r 1 ( k ) ⋯ ∂ S 1 ( k ) ∂ r n s ( k ) ⋮ ⋱ ⋮ ∂ S m ( k ) ∂ r 1 ( k ) ⋯ ∂ S m ( k ) ∂ r n s ( k ) ] m × n s = [ j 11 ⋯ j 1 n s ⋮ ⋱ ⋮ j m 1 ⋯ j m n s ] m × n s J(k)=\left[\begin{array}{ccc} \frac{\partial S_{1}(k)}{\partial r_{1}(k)} & \cdots & \frac{\partial S_{1}(k)}{\partial r_{n_{s}}(k)} \\ \vdots & \ddots & \vdots \\ \frac{\partial S_{m}(k)}{\partial r_{1}(k)} & \cdots & \frac{\partial S_{m}(k)}{\partial r_{n_{s}}(k)} \end{array}\right]_{m \times n_{s}}=\left[\begin{array}{ccc} j_{11} & \cdots & j_{1 n_{s}} \\ \vdots & \ddots & \vdots \\ j_{m 1} & \cdots & j_{m n_{s}} \end{array}\right]_{m \times n_{s}} J(k)=r1(k)S1(k)r1(k)Sm(k)rns(k)S1(k)rns(k)Sm(k)m×ns=j11jm1j1nsjmnsm×ns

将式(2)代入(1)可得:
e ˙ = J e v c \dot{e}=\mathbf{J}_{e} \mathbf{v}_{c} e˙=Jevc

其中 J e = J s \mathbf{J}_{e}=\mathbf{J}_{s} Je=Js ,考虑将 v c \mathbf{v}_{c} vc 作为机械臂速度控制的输入,并保证图像误差的指数型下降,则可以通过对公式(3)中的雅克比矩阵求逆得到:
v c = − λ J e + e \mathbf{v}_{c}=-\lambda \mathbf{J}_{e}^{+} \mathbf{e} vc=λJe+e

在实际的视觉伺服系统中,在控制阶段的每一时刻获得精确的 J e \mathbf{J}_{e} Je或者 J e + \mathbf{J}_{e}^{+} Je+ 是十分困难的。因此需要对图像雅克比矩阵进行估计。因此实际的视觉伺服控制方程应改写为:

v c = − λ J ^ e + e \mathbf{v}_{c}=-\lambda \hat{\mathbf{J}}_{e}^{+} \mathbf{e} vc=λJ^e+e

视觉伺服的基本架构

在这里插入图片描述

基于图像的视觉伺服

传统的基于图像的视觉伺服方式使用一系列特征点作为图像控制特征来定义 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}。根据之前坐标概论中图像坐标与相机坐标的关系:

{ u = ( f ⋅ X ) / Z v = ( f ⋅ Y ) / Z \left\{\begin{array}{c} u= (f \cdot X) / Z \\ v =(f \cdot Y) / Z \end{array}\right. {u=(fX)/Zv=(fY)/Z


{ x = ( u Z ) / f y = ( v Z ) / f (1) \left\{\begin{array}{c} x= (uZ) / f \\ y =(vZ) / f \end{array}\right. \tag{1} {x=(uZ)/fy=(vZ)/f(1)

求导
{ u ˙ = f ⋅ z x ˙ − x z ˙ z 2 v ˙ = f ⋅ z y ˙ − y z ˙ z 2 (2) \left\{\begin{array}{l} \dot{u}=f \cdot \frac{z \dot{x}-x \dot{z}}{z^{2}} \\ \dot{v}=f \cdot \frac{z \dot{y}-y \dot{z}}{z^{2}} \end{array}\right. \tag{2} {u˙=fz2zx˙xz˙v˙=fz2zy˙yz˙(2)

根据速度的定义
{ x ˙ = z w y − y w z + v x y ˙ = x w z − z w x + v y z ˙ = y w x − x w y + v z (3) \left\{\begin{array}{l} \dot{x}=z w_{y}-y w_{z}+v_{x} \\ \dot{y}=x w_{z}-z w_{x}+v_{y} \\ \dot{z}=y w_{x}-x w_{y}+v_{z} \end{array}\right. \tag{3} x˙=zwyywz+vxy˙=xwzzwx+vyz˙=ywxxwy+vz(3)

将公式1代入公式3中可得
{ x ˙ = z w y − v z f w z + v x y ˙ = u z f w z − z w x + v y z ˙ = z f ( v w x − u w y ) + v z (4) \left\{\begin{array}{l} \dot{x}=z w_{y}-\frac{v z}{f} w_{z}+v_{x} \\ \dot{y}=\frac{u z}{f} w_{z}-z w_{x}+v_{y} \\ \dot{z}=\frac{z}{f}\left(v w_{x}-u w_{y}\right)+v_{z} \end{array}\right. \tag{4} x˙=zwyfvzwz+vxy˙=fuzwzzwx+vyz˙=fz(vwxuwy)+vz(4)

将公式2代入公式4中可得
{ u ˙ = f z v x − u z v z − u v f w x + f 2 + u 2 f w y − v w z v ˙ = f z v y − v z v z + u v f w y − f 2 + u 2 f w x + u w z \left\{\begin{array}{l} \dot{u}=\frac{f}{z} v_{x}-\frac{u}{z} v_{z}-\frac{u v}{f} w_{x}+\frac{f^{2}+u^{2}}{f} w_{y}-v w_{z} \\ \dot{v}=\frac{f}{z} v_{y}-\frac{v}{z} v_{z}+\frac{u v}{f} w_{y}-\frac{f^{2}+u^{2}}{f} w_{x}+u w_{z} \end{array}\right. {u˙=zfvxzuvzfuvwx+ff2+u2wyvwzv˙=zfvyzvvz+fuvwyff2+u2wx+uwz

用矩阵表示
[ u ˙ v ˙ ] = [ f z 0 − u z − u v f f 2 + u 2 f − v 0 f z − v z − f 2 + u 2 f u v f u ] [ v x v y v z w x w y w z ] \left[\begin{array}{c} \dot{u} \\ \dot{v} \end{array}\right]=\left[\begin{array}{cccccc} \frac{f}{z} & 0 & -\frac{u}{z} & -\frac{u v}{f} & \frac{f^{2}+u^{2}}{f} & -v \\ 0 & \frac{f}{z} & -\frac{v}{z} & -\frac{f^{2}+u^{2}}{f} & \frac{u v}{f} & u \end{array}\right]\left[\begin{array}{l} v_{x} \\ v_{y} \\ v_{z} \\ w_{x} \\ w_{y} \\ w_{z} \end{array}\right] [u˙v˙]=[zf00zfzuzvfuvff2+u2ff2+u2fuvvu]vxvyvzwxwywz

上式反映了某点在图像坐标系下与相机坐标系下运动之间的关系

图像雅克比矩阵的预估方法

对于图像雅克比矩阵的估计问题,传统方法采用Broyden估计器进行估计,近年来还出现了KF算法PF算法神经网络等方法。

在这里插入图片描述

基于位置的视觉伺服

基于位置的视觉伺服,其反馈信号在三维任务空间中以直角坐标形式定义。基本原理是通过对图像特征的提取,并结合已知的目标几何模型及摄像机模型,三维笛卡尔坐标系中对目标位姿进行估计,然后由机械手当前位姿与目标位姿(这里的目标位姿指的不是目标物体的位姿,而是下一步机械臂末端的期望位姿)之差,进行轨迹规划并计算出控制量,驱动机械手向目标运动,最终实现定位、抓取功能。

L e = [ − I 3 [ c t o ] x 0 L θ a ] \mathbf{L}_{e}=\left[\begin{array}{cc} -\mathbf{I}_{3} & {\left[{ }^{c} \mathbf{t}_{o}\right]_{\mathrm{x}}} \\ 0 & \mathbf{L}_{\theta \mathbf{a}} \end{array}\right] Le=[I30[cto]xLθa]

L θ u = I 3 − θ 2 [ u ] x + ( 1 − sin ⁡ c θ sin ⁡ c 2 θ 2 ) [ u ] × 2 \mathbf{L}_{\theta_{u}}=I_{3}-\frac{\theta}{2}[\mathbf{u}]_{x}+\left(1-\frac{\sin c \theta}{\sin c^{2} \frac{\theta}{2}}\right)[\mathbf{u}]_{\times}^{2} Lθu=I32θ[u]x+(1sinc22θsincθ)[u]×2

L ^ e − 1 = [ − I 3 [ c t o ] × L θ u − 1 0 L θ u − 1 ] \hat{\mathbf{L}}_{e}^{-1}=\left[\begin{array}{cc} -\mathbf{I}_{3} & {\left[{ }^{c} \mathbf{t}_{o}\right]_{\times} \mathbf{L}_{\theta \mathbf{u}}^{-1}} \\ 0 & \mathbf{L}_{\theta \mathbf{u}}^{-1} \end{array}\right] L^e1=[I30[cto]×Lθu1Lθu1]

v c = − λ L ^ e − 1 e \boldsymbol{v}_{c}=-\lambda \hat{L}_{e}^{-1} \boldsymbol{e} vc=λL^e1e

{ v c = − λ ( ( c ˙ t o − c t o ) + [ c t o ] x θ u ) ω c = − λ θ u \left\{\begin{array}{c} v_{c}=-\lambda\left(\left(\dot{c} \mathbf{t}_{o}-{ }^{c} \mathbf{t}_{o}\right)+\left[{ }^{c} \mathbf{t}_{o}\right]_{\mathrm{x}} \theta \mathbf{u}\right) \\ \omega_{c}=-\lambda \theta \mathbf{u} \end{array}\right. {vc=λ((c˙tocto)+[cto]xθu)ωc=λθu

图的搜索算法

正向搜索和反向搜索,常见的正向搜索算法是A*,反向搜索算法RTT。

如何选择正向搜索和反向搜索算法?

现在我们这样来定义这个问题, f ( v , d ) f(v,d) f(v,d)表示一组节点的集合,其它节点距离节点v的距离都小于距离 d d d。现在假设起始节点为 s s s,目标节点为 t t t
那么,当 f ( s , d ) < f ( t , d ) f(s,d) < f(t,d) f(s,d)<f(t,d) forward search更好,也就是起始节点附近满足距离d的节点数小于目标节点附近满足距离d的节点数;
f ( s , d ) > f ( t , d ) f(s,d) > f(t,d) f(s,d)>f(t,d) backward search更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CS336视觉伺服 的相关文章

  • eruda/vconsole 手机端调试利器

    0 对比 edura 相比 vconsole 可以看css样式 1 edura 1 1 function var script document createElement script script src cdn jsdelivr ne
  • 判断OBject对象为空(包括null ,““)的方法

    这篇文章主要介绍了Java判断对象是否为空 包括null 的方法 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友们下面随着小编来一起学习学习吧 目录标题 对象之间判断需要了解的 代码示例 问题原因 注

随机推荐

  • Python爬虫从入门到精通:(25)scrapy框架02_scrapy框架的基本使用_Python涛哥

    scrapy的基本使用 创建一个工程 命令 scrapy startproject ProName 比如这里我创建一个工程 名字叫demoPro 打开终端 输入 scrapy startprojiect demoPro 目录结构 这里先介绍
  • 等保2.0.2021版综合测评得分计算实例

    文章目录 公式回顾 单个测评对象的计算 多个测评对象的计算 小结 未经许可 严禁转载 公式输入请参考 在线Latex公式 接上篇的 等保2 0 2021版等级测评报告模板修订总结 这次根据一个实际案例来看看2021版综合测评得分如何计算 2
  • 搭建学校oj平台-后端设置JWT与用户操作

    后端设置JWT与用户操作 gitee仓库代码在文章尾部 Mysql新建user表 create table user id int auto increment username varchar 100 null password varc
  • 【unity3D】TimeLine(详细图解)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇关于unity的TimeLine TimeLine 介绍 打开TimeLine面板的方式 创建TimeLine 创建Track的两种方式 Track的详解 Ti
  • win10使用技巧02--系统端口被占用怎么查看

    1 打开命令提示符 管理员模式 2 输入netstat ano命令 回车后 能看到所有端口的情况 3 如果我们知道具体的端口号的话 输入netstat aon findstr 8080 其中8080加英文双引号 按回车键就可以找到占用808
  • Spark环境搭建(保姆级教程)

    文章目录 一 环境准备 二 Spark环境搭建 1 Spark部署方式 2 安装spark 1 下载Spark 关于版本的选择 2 安装Spark 上传安装包 解压并创建软链接 Spark的目录结构 配置环境变量 配置Hadoop信息 修改
  • 飞行姿态解算(三)

    继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情
  • CSS响应式设计——(视口/网格视图/媒体查询/图像/视频)看这一篇就够了

    目录 响应式网页设计 简介 什么是响应式网页设计 为所有用户获得最佳体验的设计 响应式网页设计 视口 什么是视口 设置视口 把内容调整到视口的大小 响应式网页设计 网格视图 什么是网格视图 构建响应式网格视图 实例 CSS CSS HTML
  • windows 使用 wget——Wget for windows

    wget是一个强力方便的命令行下的下载工具 windows 如果使用需要安装 Wget for windows 地址 Link 下载压缩包 ZIP 解压到一个常用的安装位置 然后按照下面的步骤 配置环境变量 系统属性 此电脑右击选择属性 左
  • Vim安装配置和常用技巧

    第一章 安装 在命令行运行vim 如果找不到程序 需要自己安装 1 1 下载 从官方网站ftp ftp vim org pub vim unix 中选择一个版本下载 我这里使用的是vim 7 3 tar bz2 1 2 解压程序 tar x
  • 如何用js动态添加css

    转自 微点阅读 https www weidianyuedu com 为了节省代码和写出更兼容的代码 有时我们需要用Javascript动态的增加CSS样式 IE下 我们可以使用 document createStyleSheet 方法 而
  • C/C++实现strstr函数、KMP算法查找子串

    C C 实现strstr KMP算法查找子串 目录 C C 实现strstr KMP算法查找子串 1 字符串形式 2 字节流形式 1 字符串形式 代码实现 char my strstr const char src const char d
  • 反射改进简单工厂(含代码)

    一 简单工厂代码 父类Car public class Car public void CreateCar 子类ElectricityCar public class ElectricityCar extends Car Override
  • 使用mysql数据库与go进行交互

    database sql database sql是golang的标准库之一 它提供了一系列接口方法 用于访问关系数据库 它并不会提供数据库特有的方法 那些特有的方法交给数据库驱动去实现 database sql库提供了一些type 这些类
  • 线性代数(2)——矩阵

  • [完]机器学习实战 第十四章 利用SVD简化数据

    本章内容 SVD矩阵分解 推荐引擎 利用SVD提升推荐引擎的性能 餐馆可分为很多类别 不同的专家对其分类可能有不同依据 实际中 我们可以忘掉专家 从数据着手 可对记录用户关于餐馆观点的数据进行处理 并从中提取出其背后的因素 这些因素可能会与
  • 快速排序算法 (c/c++)

    快速排序 QuickSort Code 1 中间元素为基准 Code 1示例结果 Code 2 第一元素为基准 Code 2示例结果 算法分析 QuickSort 通过一趟排序将要排序的数据分隔成独立的两部分 其中一部分的所有数据都要比另一
  • Mental ray 渲染器常用设置

    Mental ray 渲染器常用设置 Mental ray是一个专业的3D渲染引擎 它可以生成令人难以置信的高质量真实感图象 现在你可以在3D Studio的高性能网络渲染中直接控制Mental ray 它在电影领域得到了广泛的应用和认可
  • 用python怎样做学生管理系统用类的形式-Python配置管理的几种方式

    一 为什么要使用配置 如果我们在较复杂的项目中不使用配置文件 我们可能会面临下面的情况 你决定更改你的项目中数据库的 host 因为你要将项目从测试环境转移到实际的上产环境中 如果你的项目中多个位置用到了这个 host 那你不得不一个一个找
  • CS336视觉伺服

    笔记 动力学模型 机械臂动力学的研究方法 拉格朗日 牛顿 欧拉 高斯 凯恩方法 机械臂的动力学主要是两个问题 正向运动学和逆向运动学 视觉伺服 视觉伺服的基本思想 基于视觉的伺服控制方法的目的是最小化一个图像误差 该误差可以定义为 e t