ardupilot开发 --- 视觉伺服 篇

news2024/9/20 20:41:27

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

  • 视觉伺服分类
  • 视觉伺服中的坐标系
  • 成像模型推导
  • IBVS推导
  • 参考文献

视觉伺服分类

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

视觉伺服中的坐标系

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

成像模型推导

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

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

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

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

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

  • 像素系坐标与图像系坐标间的关系,(式1)
    在这里插入图片描述
    其中【u0,v0】是图像系原点在像素系中的坐标。px,py是图像系中 xy 轴的单位长度对应的像素个数。

  • 图像系坐标与相机系坐标间的关系,(式2)
    在这里插入图片描述
    其中,f 是相机焦距,Zc 是目标点(被拍摄的点)在相机系中的Z轴坐标值。

  • 相机内参
    上述提到的参数 u0,v0,px,py 被称为相机的内参,通过相机标定得到。

IBVS推导

在这里插入图片描述
世界3维空间中的一点P,
在相机系中的坐标表记作【X,Y,Z】;
在图像系中的坐标记作【x,y】;
在像素系中的坐标记作【u,v】;
记相机的6自由度运动状态(相机坐标系的运动)为:
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
根据物体的旋转运动和直线运动的经典公式,可得到下面 (式3)
在这里插入图片描述
将(式2)对时间求导可得 (式4)
在这里插入图片描述
将(式2)和(式3)代入(式4)可得 (式5)
在这里插入图片描述
写成矩阵形式 (式6)
在这里插入图片描述
其中Ls被称为图像雅可比矩阵或相互作用矩阵,s被称为视觉特征 (式7)
在这里插入图片描述
记视觉特征s的期望值为sd,则视觉特征误差为 (式8):
s e = s − s d s_e=s-s_d se=ssd
因为sd是常量因此有 (式9)
s ˙ d = 0 \.s_d=0 s˙d=0
将(式8)对时间求导,得到误差系统的状态空间方程 (式10)
s ˙ e = s ˙ − s ˙ d = L s V c \.s_e=\.s-\.s_d=L_sV_c s˙e=s˙s˙d=LsVc
设计一个控制律Vc使得(式10)表示的误差系统的全部状态可以随着时间呈指数衰减到0,即控制律使得最终的误差系统变成如下形式 (式11)
s ˙ e = − λ s e \.s_e=-\lambda s_e s˙e=λse
那么可以反推出控制律要满足 (式12)
V c = − λ L s + s e V_c=-\lambda L_s^+ s_e Vc=λLs+se
其中 L s + L_s^+ Ls+ L s L_s Ls的广义逆矩阵, λ \lambda λ是一个常量。

待续…

参考文献

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

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

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

相关文章

关于docker存储overlay2相关问题

报错如下: 报错原因:使用rm -rf 清理overlay2导致的,非正常清理。 正常清理命令如下: # 清理Docker的所有构建缓存 docker builder prune# 删除旧于24小时的所有构建缓存 docker builder prune --filter "until24h"#删…

node.js环境安装以及Vue-CLI脚手架搭建项目教程

目录 ▐ vue-cli 搭建项目的优点 ▐ 安装node.js环境 ▐ 搭建vue脚手架项目 ▐ 项目结构解读 ▐ 常用命令 ▐ 创建组件 ▐ 组件路由 ▐ vue-cli 搭建项目的优点 传统的前端项目架构由多个html文件,且每个html文件都是相互独立的,导入外部组件时需…

wireshark常用过滤命令

wireshark常用过滤命令 wireshark抓包介绍单机单点:单机多点:双机并行: wireshark界面认识默认布局调整布局(常用)显示FCS错误 wireshark常见列Time回包数据报对应网络模型 wireshark基本操作结束抓包再次开始抓包 **wireshark常用过滤命令**…

【实物资料包】基于STM32智能台灯设计

【实物资料包】基于STM32智能台灯设计 需要资料的请在文章结尾获取哦~~~~(如有问题私信我即可) 1.介绍 1 添加wifi模块模块,可通过wifi模块APP或者手动按钮切换自动/手动模式 2 自动模式下,台灯可以感应是否有人落座&#xff0…

【BSCP系列第2期】XSS攻击的深度剖析和利用(文末送书)

文章目录 前言一、官方地址二、开始(15个)1:Lab: DOM XSS in document.write sink using source location.search inside a select element2:Lab: DOM XSS in AngularJS expression with angle brackets and double quotes HTML-e…

猫头虎分享已解决Bug:Array Index Out of Bounds Exception

🐯 猫头虎分享已解决Bug:Array Index Out of Bounds Exception 🐯 摘要 大家好,我是猫头虎,今天我们要聊聊后端开发中经常遇到的一个问题:Array Index Out of Bounds Exception,即 java.lang.…

哪里找好用的商城系统源码?

很多企业在挑选商城系统时,由于不懂源码,很难选择到高质量源码的商城系统,那么哪里找好用的商城系统源码?如何选择?接下来就跟着启山智软小编一起来看看吧,以下为选择源码时的四看: 1.一看源码公司行业动态 可以查…

【linux】详解——库

目录 概述 库 库函数 静态库 动态库 制作动静态库 使用动静态库 如何让系统默认找到第三方库 lib和lib64的区别 /和/usr/和/usr/local下lib和lib64的区别 环境变量 配置相关文件 个人主页:东洛的克莱斯韦克-CSDN博客 简介:C站最萌博主 相关…

[FreeRTOS 内部实现] 信号量

文章目录 基础知识创建信号量获取信号量释放信号量信号量 内部实现框图 基础知识 [FreeRTOS 基础知识] 信号量 概念 创建信号量 #define queueQUEUE_TYPE_BINARY_SEMAPHORE ( ( uint8_t ) 3U ) #define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) #define xSe…

C++精解【6】

文章目录 eigenMatrix基础例编译时固定尺寸运行指定大小 OpenCV概述 eigen Matrix 基础 所有矩阵和向量都是Matrix模板类的对象。向量也是矩阵&#xff0c;单行或单列。Matrix模板类6个参数&#xff0c;常用就3个参数&#xff0c;其它3个参数有默认值。 Matrix<typename…

LGY-110G零序电压继电器 导轨安装 约瑟JOSEF

110系列零序电压电流继电器 系列型号: LGY-110零序过电压继电器&#xff1b;LGY-110/AC零序过电压继电器&#xff1b; LGL-110零序过电流继电器&#xff1b;LGL-110/AC零序过电流继电器&#xff1b; 1 应用 DY-110 型低电压继电器用于判别线路和电力设备的电压降低&#xf…

达梦数据守护集群部署

接上篇 达梦8单机规范化部署 https://blog.csdn.net/qq_25045631/article/details/139898690 1. 集群规划 在正式生产环境中&#xff0c;两台机器建议使用统一配置的服务器。使用千兆或千兆以上网络。 两台虚拟机各加一块网卡&#xff0c;仅主机模式&#xff0c;作为心跳网卡…

伸展树(数据结构篇)

数据结构之伸展树 伸展树 概念&#xff1a; 伸展树是一颗对任意一个节点被访问后&#xff0c;就经过一系列的AVL树的旋转操作将该节点放到根上的特殊二叉查找树。伸展树能保证对树操作M次的时间复杂度为O(MlogN)&#xff0c;而当一个查找树的一个节点刚好处于查找树最坏的情…

Vite: 关于预构建的毫秒级响应

概述 在我们的项目代码中&#xff0c;我们所说的模块代码其实分为两部分 一部分是源代码&#xff0c;也就是业务代码另一部分是第三方依赖的代码&#xff0c;即 node_modules 中的代码 Vite 是一个提倡 no-bundle 的构建工具&#xff0c;相比于传统的 Webpack能做到开发时的模…

主机游戏也可以上云桌面玩了?

最近steam夏季促销活动也快到了&#xff0c;对于很多钟情于主机游戏的小伙伴们&#xff0c;是不是也在摩拳擦掌了&#xff1f; 但有时候现实想愉快地玩到自己想玩的游戏实在是太难了&#xff01; 当你一直关注的新游戏终于上线Steam时&#xff0c;你的钱包是这样的… 而游戏的…

elementUI相关知识及搭建使用过程

​​​​​​ 目录 ​​​​​​ 一.elementUI相关的知识 1.什么是elementUI 2.如何在创建的项目中使用elementUI的组件(1)安装 ​ (2)在项目的main.js中引入elementUI (3)使用elementui里的组件 一.elementUI相关的知识 1.什么是elementUI Element&#xff0c;一套为开…

【管理咨询宝藏136】RB大型卡车集团供应链体系优化设计方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏136】RB大型卡车集团供应链体系优化设计方案 【格式】PDF版本 【关键词】罗兰贝格、供应链管理、运营提升 【核心观点】 - 针对前两个模块&…

Charles配置与API数据抓取

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。https://blog.c…

基于STM32的智能健康监测手表

目录 引言环境准备智能健康监测手表系统基础代码实现&#xff1a;实现智能健康监测手表系统 4.1 数据采集模块4.2 数据处理与分析4.3 通信模块实现4.4 用户界面与数据可视化应用场景&#xff1a;健康监测与管理问题解决方案与优化收尾与总结 1. 引言 智能健康监测手表通过使…

美团SaaS技术部测开,复捞我开摆

美团SaaS技术部测开&#xff0c;复捞我开摆 4.3 80min 项目实习你主要承担的部分你做的项目技术实现是什么样的&#xff0c;前后端是怎么做出来的自动登录功能的架构软件测试全流程你有了解吗搭建测试环境是否可有可无哪些举措是你牵头做的发现了什么问题在代码核验阶段你如何…