ardupilot开发 --- 视觉伺服 篇

风驰电掣云端飘,相机无法对上焦

  • 1.视觉伺服分类
  • 2.视觉伺服中的坐标系
  • 3.成像模型推导
  • 4.IBVS理论推导
  • 5.IBVS面临的挑战
  • 6.visp 实践
  • 参考文献

1.视觉伺服分类

控制量是在图像空间中推导得到还是在欧式空间中推导得到,视觉伺服又可以分类为基于位置(PBVS)和基于图像的(IBVS)视觉伺服。
在这里插入图片描述

2.视觉伺服中的坐标系

  • 概述
    世界坐标系W:用于测量(估计)飞机、机器人的位姿(位置和姿态)。
    飞机机体坐标系B:最终运动控制量应转换到这个坐标系。
    目标机体坐标系O:用于描述目标物体与相机间的位姿,用于描述相机坐标系和目标物体机体坐标系之间的位姿关系。
    相机坐标系C:是推导IBVS最重要的坐标系。
    图像坐标系I:是描述特征点运动状态的坐标系。
    像素坐标系P:最终的图像数据最终以该坐标系的形式存储信息。
  • 表示
    W 即 world,表示世界坐标系,E即 end,表示末端坐标系,类似还有I表示 image,O表示 object,C 表示 Camera等。而各种坐标系齐次变换矩阵T的左上标表示转换后的坐标系,右下标表示转换前的坐标系。如 c T e ^{c}T_e cTe c V e ^{c}V_e cVe表示从末端坐标系E到相机坐标系C的坐标变换矩阵或称为齐次变换矩阵(齐次变换矩阵即旋转变换和位移变换融合到了一个矩阵当中)。
    在这里插入图片描述

3.成像模型推导

  • 相关概念:透视投影模型。

  • 关于透视投影这篇文章讲的很好: 深蓝AI:经典干货|相机模型与张氏标定。参考了这篇文章。

  • 小孔成像模型
    光心位于成像平面的前方,成倒立的像,这样不方便IBVS的推导。
    在这里插入图片描述

  • 透视投影模型
    光心位于成像平面的后方,成正立的实像,更符合实际成像过程,方便IBVS的推导。
    在这里插入图片描述

  • 世界系、相机系、图像系、像素系的轴向、原点位置示意图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    相机系记作Oc-XcYcZc.
    图像系记作o-xy.
    像素系记作o-uv.
    相机系的原点在光心,Xc轴水平向,Yc轴竖直向,Zc轴水平向
    图像坐标系的原点在Zc轴与成像平面的交点处,x、y轴分别与Xc、Yc轴同向
    像素坐标系的原点在成像平面的左上角,u、v轴分别与图像系的x、y轴同向
    图像系原点在像素系中的坐标为【u0,v0】,也被称为主点坐标。
    相机系原点到成像平面的距离为 f,即焦距

  • 像素系坐标与图像系坐标间的关系
    { u = x d x + u 0 = p x + u 0 v = x d x + u 0 = p x + u 0 (式 1 ) \begin{cases} u=\frac x {dx}+u_0=p_x+u_0 \\ v=\frac x {dx}+u_0=p_x+u_0 \end{cases}(式1) {u=dxx+u0=px+u0v=dxx+u0=px+u0(式1
    其中:
    [u0,v0]是图像系原点在像素系中的坐标;
    px,py是图像系中 xy 轴的单位长度对应的像素个数;
    uv是像素系中的坐标;
    xy是图像系中的坐标。

  • 图像系坐标与相机系坐标间的关系
    { x = f Z X y = f Z Y (式 2 ) \begin{cases} x=\frac f {Z}X \\ y=\frac f {Z}Y \end{cases}(式2) {x=ZfXy=ZfY(式2
    其中:
    f f f 是相机焦距;
    x y xy xy 是图像系中的坐标;
    X Y Z XYZ XYZ 是目标点在相机系中的坐标。

  • 相机内参
    (式1)、(式2) 提到的参数 u 0 , v 0 , p x , p y u_0,v_0,px,p_y u0,v0,px,py 被称为相机的内参,通过相机标定得到。

4.IBVS理论推导

在这里插入图片描述
问题描述:
假设在世界3维空间中有一点P,
在相机系中的坐标记作 [ X , Y , Z ] [X,Y,Z] [X,Y,Z]
在图像系中的坐标记作 [ x , y ] [x,y] [x,y]
在像素系中的坐标记作 [ u , v ] [u,v] [u,v]
记相机的6自由度运动速度矢量(相机坐标系的速度矢量)为:
V c = [ v x , v y , v z , w x , w y , w z ] T (式 3 ) V_c=[v_x,v_y,v_z,w_x,w_y,w_z]^T(式3) Vc=[vx,vy,vz,wx,wy,wz]T(式3

根据物体的旋转运动和直线运动的经典理论公式,可得到点P在相机系中的运动方程为:
[ X ˙ Y ˙ Z ˙ ] = − [ v x v y v z ] − [ w x w y w z ] × [ X Y Z ] (式 4 ) \begin{bmatrix} \dot{X} \\ \dot{Y} \\ \dot{Z} \end{bmatrix} = - \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} - \begin{bmatrix} w_x \\ w_y \\ w_z \end{bmatrix} \times \begin{bmatrix} {X} \\ {Y} \\ {Z} \end{bmatrix}(式4) X˙Y˙Z˙ = vxvyvz wxwywz × XYZ (式4
注意:因为 V c = [ v x , v y , v z , w x , w y , w z ] T V_c=[v_x,v_y,v_z,w_x,w_y,w_z]^T Vc=[vx,vy,vz,wx,wy,wz]T是相机的速度矢量,正好与点P的速度矢量相反,因此(式4)右边取的是负号!!
将(式2)对时间求导可得:
{ x ˙ = X ˙ / Z − X Z ˙ / Z 2 y ˙ = Y ˙ / Z − Y Z ˙ / Z 2 (式 5 ) \begin{cases} \dot{x}=\dot{X}/Z-X\dot{Z}/Z^2\\ \dot{y}=\dot{Y}/Z-Y\dot{Z}/Z^2\\ \end{cases}(式5) {x˙=X˙/ZXZ˙/Z2y˙=Y˙/ZYZ˙/Z2(式5
将(式2)和(式4)代入(式5)可得:
{ x ˙ = − v x / Z + x v z / Z + x y w x − ( 1 + x 2 ) w y + y w z y ˙ = − v y / Z + y v z / Z − x y w y + ( 1 + y 2 ) w x − x w z (式 6 ) \begin{cases} \dot{x}=-v_x/Z+xv_z/Z+xyw_x-(1+x^2)w_y+yw_z\\ \dot{y}=-v_y/Z+yv_z/Z-xyw_y+(1+y^2)w_x-xw_z\\ \end{cases}(式6) {x˙=vx/Z+xvz/Z+xywx(1+x2)wy+ywzy˙=vy/Z+yvz/Zxywy+(1+y2)wxxwz(式6
写成矩阵形式:
s ˙ = [ x ˙ y ˙ ] = L s V c (式 7 ) \dot{s}= \begin{bmatrix} \dot{x} \\ \dot{y} \end{bmatrix} =L_sV_c(式7) s˙=[x˙y˙]=LsVc(式7
其中 s s s 被称为视觉特征, L s L_s Ls被称为图像雅可比矩阵相互作用矩阵
L s = [ − 1 / Z 0 x / Z x y − ( 1 + x 2 ) y 0 − 1 / Z y / Z 1 + y 2 − x y − x ] (式 8 ) L_s= \begin{bmatrix} -1/Z&0&x/Z&xy&-(1+x^2)&y \\ 0&-1/Z&y/Z&1+y^2&-xy&-x \end{bmatrix} (式8) Ls=[1/Z001/Zx/Zy/Zxy1+y2(1+x2)xyyx](式8
记视觉特征 s s s的期望值为 s d s_d sd,则视觉特征误差为:
s e = s − s d (式 9 ) s_e=s-s_d(式9) se=ssd(式9
因为 s d s_d sd是常量因此有:
s ˙ d = 0 (式 10 ) \.s_d=0(式10) s˙d=0(式10
将(式9)对时间求导,得到误差系统的状态空间方程:
s ˙ e = s ˙ − s ˙ d = L s V c (式 11 ) \.s_e=\.s-\.s_d=L_sV_c(式11) s˙e=s˙s˙d=LsVc(式11
设计一个控制律 V c Vc Vc使得(式11)表示的误差系统的全部状态随着时间呈指数衰减到0,即控制律使得最终的误差系统变成如下形式:
s ˙ e = − λ s e (式 12 ) \.s_e=-\lambda s_e(式12) s˙e=λse(式12
那么可以反推出控制律:
V c = − λ L s + s e (式 13 ) V_c=-\lambda L_s^+ s_e(式13) Vc=λLs+se(式13
其中 L s + L_s^+ Ls+ L s L_s Ls的广义逆矩阵, λ \lambda λ是一个常量。

待续…

5.IBVS面临的挑战

  • 计算 L s + L_s^+ Ls+时会产生奇异值。
  • L s L_s Ls不容易得到, L s L_s Ls的几种计算方式请参考:https://zhuanlan.zhihu.com/p/422634446
  • 待续…

6.visp 实践

  • cJc :相机坐标系的运动控制自由度,可以看作是运动控制自由度雅可比矩阵。
  • L:图像雅可比矩阵,相互作用矩阵
  • J1:task雅可比矩阵
  • signInteractionMatrix:相互作用矩阵的符号,1 for eye-in-hand, -1 for eye-to-hand
  • inversionType:指定求广义逆矩阵还是求转置矩阵
  • Transpose matrix:转置矩阵
  • Inverse matrix:逆矩阵
  • task Jacobian 是什么?J1???
    V c = − λ L ^ s + e V_c = -\lambda {\widehat {\bf L}}^{+}_{s} {\bf e} Vc=λL s+e,得到的控制律 V c V_c Vc是相机系的运动矢量!
    V e = − λ ( L ^ s c V e ∗ e J e ) + e {V_e }= -\lambda \left( {{\widehat {\bf L}}_{s} {^c}{\bf V}_e* {^e}{\bf J}_e} \right)^{+} {\bf e} Ve=λ(L scVeeJe)+e,得到的控制律 V e V_e Ve是终端系的运动矢量!
    其中 L ^ s \widehat {L}_s L s L s L_s Ls的估计值!
    why ??
    推导如下:
    s ˙ = L s V c \dot{s}=L_sV_c s˙=LsVc
    记终端系的速度矢量为 V e V_e Ve,终端系到相机系的坐标变换矩阵为 c V e ^cV_e cVe,允许控制的速度矢量自由度记为 e J e ^eJe eJe,则:
    s ˙ = L s V c = L s c V e e J e V e \dot{s}=L_sV_c=L_s^cV_e{^eJe}V_e s˙=LsVc=LscVeeJeVe
    那么控制率就变成了:
    V e = − λ ( L s c V e e J e ) − 1 V_e=-\lambda (L_s{^cV_e}^eJe)^{-1} Ve=λ(LscVeeJe)1
    对于无人机视觉伺服, c V e ^cV_e cVe即飞机机体坐标系FRD到相机系RDF的齐次变换矩阵(坐标变换)!!!!

参考文献

https://zhuanlan.zhihu.com/p/422634446
https://zhuanlan.zhihu.com/p/389903710
深蓝AI:经典干货|相机模型与张氏标定
硕士论文:基于无标定视觉伺服的定位研究-王博

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink 状态管理

一、状态 流式计算分为无状态和有状态两种情况。无状态的计算观察每个独立事件,并且根据最后一个事件输出结果。例如,流处理应用程序从传感器接收温度读数,并在温度超过90度时发出告警。有状态的计算则会基于多个事件输出结果。例如&#xf…

一款开源、高颜值的AI物联网数据平台

介绍 AIOT人工智能物联网平台是一站式物联网开发基础平台,帮助企业快速实现数字化、精细化数据管理。核心系统为:物联网平台 数据中台(数据底座) AI。 同时支持文生图、语音合成等。大模型支持陆续也会慢慢开发。 物联系统介绍…

CLIP 计算过程图解

CLIP 计算过程图解 CLIP模型是OpenAI开发的一种多模态学习模型,它通过学习文本和图像之间的关联,实现了跨模态的语义理解。下面是CLIP模型计算过程的简化描述: 1 数据准备 选取包含文本和图像对的mini-batch,例如"big tab…

【快速入门】Transformer: Attention Is All You Need

Transformer → \to → 【知名应用】BERT (unsupervised trained Transformer) Transformer :seq2Seq model with self-attention, 后续会主要说明 self-attentionTransformer的组成: Self-attention是 Attention变体,擅长捕获数据/特征的内…

完整代码Python爬取豆瓣电影详情数据

完整代码Python爬取豆瓣电影详情数据 引言 在数据科学和网络爬虫的世界里,豆瓣电影是一个丰富的数据源。在本文中,我们将探讨如何使用Python语言,结合requests和pyquery库来爬取豆瓣电影的详情页面数据。我们将通过一个具体的电影详情页面作…

oracle11.2.0.4 RAC 保姆级静默安装(一) GI集群软件

一、响应文件准备 我们直接使用软件解压后的response文件夹中的响应文件模板进行修改 选择当前服务器的主机名,产品目录是在已存在的/u01/app目录基础上自动创建的无需提前创建oraInventory 按需选择语言,具体语言配置参考表格 一般rac默认选择安装类型为CRS_CONFIG 对应正…

借助 NGINX Unit 在服务器端使用 WebAssembly

原文作者:Liam Crilly of F5 原文链接:借助 NGINX Unit 在服务器端使用 WebAssembly 转载来源:NGINX 中文官网 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn WebAssembly(缩写为 Wasm)可为 Web 应用领域提供…

C++ 教程 - 06 类的封装、继承、多态

文章目录 封装继承多态 封装 在private/protected 模块放置数据或者底层算法实现&#xff1b;在public块提供对外接口&#xff0c;实现相应的功能调用&#xff1b;类的封装案例 #include <iostream> using namespace std;// 类的定义 一般放在头文件 class Stu {public…

uniapp——上传图片获取到file对象而非临时地址——基础积累

最近在看uniapp的代码&#xff0c;遇到一个需求&#xff0c;就是要实现上传图片的功能 uniapp 官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 上传图片有对应的API&#xff1a; uni.chooseImage方法&#xff1a;https://uniapp.dcloud.net.cn/api/media/image.html#choo…

没有手机怎么办呐!高考成绩出来了:请不要吹灭别人的灯——早读(逆天打工人爬取热门微信文章解读)

结婚的时候红包随礼随多少呢 引言Python 代码第一篇 洞见 高考成绩出来了&#xff1a;请不要吹灭别人的灯第二篇结尾 为什么是这个标题呢&#xff1f; 是因为摸鱼看足球直播 主播好兄弟结婚 他老婆问他要红包 引言 今天早上停电了 大概是在3点多的时候 我本身一直都没有开空调…

Javac编译器

Java语言的编译器是一段不确定的操作过程&#xff0c;可能是讲Java文件转变为class文件的过程&#xff0c;也可能是指虚拟机的后端编译&#xff0c;讲字节码转换为机器码的过程&#xff0c;还肯是静态提前编译器直接讲Java文件编译为本地机器代码的过程。 前端编译器&#xff…

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.ne…

数字化转型第三步:数字化业务创新与发展,提升收入和利润

引言&#xff1a;之前笔者的文章发布了企业数字化转型业务部分&#xff0c;如【开源节流】如何通过数字化转型增强盈利能力&#xff1f;企业供应链数字化转型如何做&#xff1f;让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…

基于jeecgboot-vue3的Flowable流程-自定义业务表单处理(二)-挂接自定义业务表单

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、增加一个根据服务名称动态寻找对应自定义表单组件的hooks import { ref, reactive, computed, markRaw, onMounted, defineAsyncComponent } from vue; import { listCustomForm } fro…

Redis之优惠券秒杀

文章目录 全局ID生成器添加优惠券实现优惠券秒杀下单超卖问题悲观锁和乐观锁相关文章乐观锁执行逻辑乐观锁解决超卖问题 一人一单功能超卖问题相关文章一人一单执行逻辑代码实现集群模式下锁失效 分布式锁基于Redis的分布式锁Redis实现分布式锁流程实现分布式锁初级版本分布式锁…

RabbitMQ(消息队列)

RabbitMQ 它是消息中间件&#xff0c;是在消息的传输过程中保存消息的容器&#xff0c;实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP&#xff08;二进制传输&#xff0c;支持多种语言&#xff09;、JMS&#xff08;HTTP传输&#xff0c;只支持J…

要离职了,记录一下个人在用的 Mac 应用

大家好&#xff0c;我是楷鹏。 通用 飞书 说起来不信&#xff0c;第一个推荐的是【飞书】&#xff0c;飞书是目前用过最舒服的项目管理应用了。 单拎出来一个飞书文档&#xff0c;功能和体验远超市面上腾讯文档、石墨文档、语雀等等。 现在飞书还支持个人版&#xff0c;No…

【系统架构设计师】六、信息系统基础知识(定义|分类|企业信息化系统|生命周期|建设原则|开发方法)

目录 一、信息系统的定义 二、信息系统的分类 三、企业使用的信息化系统 四、信息系统的生命周期 五、信息系统建设原则 六、信息系统的开发方法 6.1 结构化方法 6.2 原型法 6.3 构件化开发方法 6.4 面向服务的方法 6.5 面向对象的方法 6.6 敏捷方法 历年真题考情&#x…

还是国产大模型靠谱!这里有一个OpenAI API用户特别搬家计划

近日&#xff0c;一场风波在科技圈引起了广泛的关注。6月25日凌晨&#xff0c;OpenAI向大量开发者发送邮件&#xff0c;通知他们&#xff1a;“您的组织有流量来自来OpenAl目前不支持的地区。从7月9日起&#xff0c;我们将采取额外措施&#xff0c;停止OpenAI不支持的国家和地区…

iOS开发者模式自带弱网测试工具

弱网测试的思路 弱网功能测试&#xff1a;2G/3G/4G、高延时、高丢包 无网状态测试&#xff1a;断网功能测试、本地数据存储 用户体验关注&#xff1a;响应时间、页面呈现、超时文案、超时重连、安全及大流量风险 网络切换测试&#xff1a;WIFI → 4G/3G/2G → 网多状态切换…