无人机在三维空间中的转动问题

news2024/11/18 11:51:11

前提

这篇博客是对最近一个有关无人机拍摄图像项目中所学到的新知识的一个总结,比较杂乱,没有固定的写作顺序。

无人机坐标系旋转问题

在这里插入图片描述
上图是无人机坐标系,绕x轴是翻滚(Roll),绕y轴是俯仰(Pitch),绕z轴是偏航(Yaw)。在初始位置,无人机坐标系和世界坐标系是对齐的,在坐标系中存在一个原始点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0),那么当无人机翻滚、俯仰、偏航后,此时的原始点被转动到了哪个位置处?
首先是绕x轴的翻滚,翻滚角为u,旋转矩阵为:
R x ( u ) = [ 1 0 0 0 c o s ( u ) − s i n ( u ) 0 s i n ( u ) c o s ( u ) ] R_x(u)=\begin{bmatrix} 1 & 0 & 0 \\ 0 & cos(u) & -sin(u) \\ 0 & sin(u) & cos(u) \end{bmatrix} Rx(u)= 1000cos(u)sin(u)0sin(u)cos(u)
可以看到,这个旋转矩阵和三维空间中某一点绕x轴旋转的旋转矩阵一样。
旋转后的坐标则为:
[ x 1 y 1 z 1 ] = R x ( u ) [ x 0 y 0 z 0 ] \begin{bmatrix} x_1 \\ y_1 \\ z_1 \end{bmatrix}= R_x(u)\begin{bmatrix} x_0 \\ y_0 \\ z_0 \end{bmatrix} x1y1z1 =Rx(u) x0y0z0
接下来是绕y轴的俯仰,俯仰角为v,旋转矩阵为:
R y ( v ) = [ c o s ( v ) 0 s i n ( v ) 0 1 0 − s i n ( v ) 0 c o s ( v ) ] R_y(v)=\begin{bmatrix} cos(v) & 0 & sin(v) \\ 0 & 1 & 0 \\ -sin(v) & 0 & cos(v) \end{bmatrix} Ry(v)= cos(v)0sin(v)010sin(v)0cos(v)
可以看到,这个旋转矩阵和三维空间中某一点绕y轴旋转的旋转矩阵一样。
旋转后的坐标则为:
[ x 2 y 2 z 2 ] = R y ( u ) [ x 1 y 1 z 1 ] \begin{bmatrix} x_2 \\ y_2 \\ z_2 \end{bmatrix}= R_y(u)\begin{bmatrix} x_1 \\ y_1 \\ z_1 \end{bmatrix} x2y2z2 =Ry(u) x1y1z1

接下来是绕z轴的偏航,偏航角为w,旋转矩阵为:
R z ( v ) = [ c o s ( w ) − s i n ( w ) 0 s i n ( w ) c o s ( w ) 0 0 0 1 ] R_z(v)=\begin{bmatrix} cos(w) & -sin(w) & 0 \\ sin(w) & cos(w) & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(v)= cos(w)sin(w)0sin(w)cos(w)0001
可以看到,这个旋转矩阵和三维空间中某一点绕z轴旋转的旋转矩阵一样。
旋转后的坐标则为:
[ x 3 y 3 z 3 ] = R z ( u ) [ x 2 y 2 z 2 ] \begin{bmatrix} x_3 \\ y_3 \\ z_3 \end{bmatrix}= R_z(u)\begin{bmatrix} x_2 \\ y_2 \\ z_2 \end{bmatrix} x3y3z3 =Rz(u) x2y2z2
将三个旋转矩阵结合起来就就是:
[ x 3 y 3 z 3 ] = R z ( w ) × R y ( v ) × R x ( u ) [ x 0 y 0 z 0 ] \begin{bmatrix} x_3 \\ y_3 \\ z_3 \end{bmatrix}= R_z(w)\times R_y(v)\times R_x(u)\begin{bmatrix} x_0 \\ y_0 \\ z_0 \end{bmatrix} x3y3z3 =Rz(w)×Ry(v)×Rx(u) x0y0z0
可以看到这里面有很重要的一点就是: R z ( w ) 、 R y ( v ) 、 R x ( u ) R_z(w)、R_y(v)、R_x(u) Rz(w)Ry(v)Rx(u)相乘时的顺序不能发生改变,一旦发生改变(矩阵相乘没有交换律),则结果也会发生变化。
对上面进行总结,整体上如下图所示:
在这里插入图片描述
已知在无人机坐标系下的一点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0),求无人机在翻滚u度,俯仰v度,偏航w度后的点坐标 ( x 3 , y 3 , z 3 ) (x_3,y_3,z_3) (x3,y3,z3)。计算公式如上所示。

图像相关问题

视场角

一般来说,相机的视场角(FOV)有三个,H FOV(水平视场角)、V FOV(垂直视场角),D FOV(对角视场角),如下图所示,一目了然。
在这里插入图片描述

图像的单应性变换

单应性的一个不严谨定义是:用无镜头畸变的相机从不同位置拍摄同一平面物体的图像之间存在单应性,可以用透视变换表示。
在这里插入图片描述
也就是说,给Right view的图像上的点经过透视变换可以变到left view图像上对应位置,透视变换也就是一个矩阵,我们称之为单应性矩阵。
这里不对单应性矩阵进行详细介绍,只是说求解单应性矩阵有8个参数,因此需要四组对应点。
一种常见的方法是寻找两张图像中的相似特征点,然后用来求解单应性矩阵,参考此链接中有相关代码,以及对单应性矩阵的具体介绍。

findHomography函数和getPerspectiveTransform函数

两个函数都可以用来求单应性矩阵,结果一样。但getPerspectiveTransform只会拿四组点去计算,findHomography会拿多组点(大于等于4组)点去计算。

参考链接

  1. https://danceswithcode.net/engineeringnotes/rotations_in_3d/rotations_in_3d_part1.html
  2. https://www.sohu.com/a/657116799_121116014
  3. https://zhuanlan.zhihu.com/p/74597564
  4. https://blog.csdn.net/Sunshine_in_Moon/article/details/45478351

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

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

相关文章

微信小程序(二十三)获取页面栈及当前页面实例

注释很详细,直接上代码 上一篇 新增内容: 1.页面栈的定义 2.获取当前页面实例 页面栈 当我们从A页面跳到B页面再跳到C页面时,页面栈则是由三个页面的实例组成的数组,A在下标为0的数组中,C在下标为2的数组中 当然&#…

【JaveWeb教程】(30)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(3)员工管理的实现

目录 SpringBootWeb案例033. 员工管理3.1 分页查询3.1.1 基础分页3.1.1.1 需求分析3.1.1.2 接口文档3.1.1.3 思路分析3.1.1.4 功能开发3.1.1.5 功能测试3.1.1.6 前后端联调 3.1.2 分页插件3.1.2.1 介绍3.1.2.2 代码实现3.1.2.3 测试 3.2 分页查询(带条件)3.2.1 需求3.2.2 思路分…

[答疑]张学友和Neal Ford的区别

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 albert 2024-1-22 16:43 如果base合适,不出差也可以演讲。比如base北京,每周在北京讲3到4场,一年150到200,十五二十年就累积够了。 我看新闻&…

【Sql Server】新手一分钟看懂在已有表基础上增加字段和说明

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

【时间安排】

最近刚刚回到家,到家就是会有各种事情干扰,心里变乱人变懒的,而要做的事情也要继续,写论文,改简历,学习新技能。。 明天后天两天写论文改简历 周一(早上去城市书房,可能吵一点戴个耳…

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理等等

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理 1 安装 scrcpy 地址 https://github.com/Genymobile/scrcpy 转到 relese 下载 我这里下载的是linux系统 v2.3.1 版本 scrcpy-2.3.1.tar.gz 下载 scrcpy-server v2.3.1 版本 scrcpy-server-v2.3.1 解压scrcpy-2.3…

uni-app 开发

一、uni-app 简介 uni-app 是一个使用 Vue.js 开发所有前端应用的框架 。开发者编写一套代码,可发布到 iOS 、 Android 、 H5 、以及各种小程序(微信 / 支付宝 / 百度 / 头条 /QQ/ 钉钉 / 淘宝)、快应用等多个平台。 详细的 uni-app 官方…

mysql注入联合查询

环境搭建 下载复现漏洞的包 下载小皮面板 将下载好的文件解压在小皮面板的phpstudy_pro\WWW路径下 将这个文件phpstudy_pro\WWW\sqli-labs-php7-master\sql-connections\db-creds.inc 中的密码更改为小皮面板中的密码 选择php版本 在小皮中启动nginx和数据库 使用环回地址访…

python爬虫demo——爬取历史平均房价

简单爬取历史房价 需求 爬取的网站汇聚数据的城市房价 https://fangjia.gotohui.com/ 功能 选择城市 https://fangjia.gotohui.com/fjdata-3 需要爬取年份的数据,等等 https://fangjia.gotohui.com/years/3/2018/ 使用bs4模块 使用bs4模块快速定义需要爬取的…

c#之构值类型和引用类型

值类型:(整数/bool/struct/char/小数) 引用类型:(string/ 数组 / 自定义的类 / 内置的类) 值类型只需要一段单独的内存,用于存储实际的数据 引用类型需要两段内存(第一段存储实际的数据,他总是位于 堆中第二段是一个引用,指向数据在堆中的存放位置) 当使用引用类型赋值的时…

AV Foundation 视频播放中的可视拖拽进度条

引言 在视频播放软件中,通过拖拽进度条来调整播放进度几乎已成为不可或缺的功能。这一功能使用户能够精确指定视频播放的时间点。近年来,视频播放器在原有的拖拽进度条基础上进行了更加人性化的性能提升,引入了可视化拖拽条。这一创新为用户…

2023年CSDN年终总结:长风破浪会有时,风物长宜放眼量

目录 0 回首20231 打造垂类专栏2 个人技术成长3 首发SCI期刊4 生活中的美好5 新年新flag 0 回首2023 这是去年flag的完成情况,很惊喜地发现全部顺利完成了。 CSDN坚持垂类写作,完结机器学习和ROS机器人专栏,开启深度学习新篇章 粉丝数希望突…

TS学习笔记十二:项目配置

本节介绍ts项目配置相关内容,包括项目配置文件tsconfig.json的说明及编译选项的内容介绍。 讲解视频 TS学习笔记二十五:TS项目配置 B站视频 TS学习笔记二十五:TS项目配置 西瓜视频 https://www.ixigua.com/7327847796814709288 一、tsconf…

GUN/Linux时间同步服务之ntp配置管理

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任,图解仅供参考,请悉知!相关配置操作是在一个全新的演示环境下进行的,演示环境中没有任何有价值的数据,但这并不代表摆在你面前的环境也是如此。生产环境…

超声波清洗机可以洗哪些东西?性价比比较高的超声波清洗机推荐

超声波清洗机现在作为一个相对来说比较方便快捷的清洁工具,其应用范围也是非常广泛的。无论是生活中的小物件,像眼镜还是耳钉这些,还是工业生产中的大型设备,超声波清洗机都能发挥出其独特的清洗效果,能够非常的省事的…

Docker容器引擎(4)

目录 一.搭建本地私有仓库 运行 registry 容器: Docker容器的重启策略如下: 为镜像打标签: 上传到私有仓库: 列出私有仓库的所有镜像: 列出私有仓库的 centos 镜像有哪些tag: 二.Docker--harbor私有…

【LeetCode: Z 字形变换 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

(28)Linux 信号保存 信号处理 不可重入函数

首先介绍几个新的概念: 信号递达(Delivery):实际执行信号的处理动作。信号未决(Pending):信号从产生到递达之间的状态。信号阻塞(Block):被阻塞的信号产生时将保持在未决状态,直达解除对该信号的阻塞,才执…

Mac本上快速搭建redis服务指南

文章目录 前言1. 查看可用版本2.安装指定版本的redis3.添加redis到PATH3.1 按照执行brew install命令后输出的提示信息执行如下命令将redis添加到PATH3.2 执行命令要添加的redis环境信息生效: 4. 增加密码4.1 在文件中找到requirepass所在位置4.2 去掉注释并将requirepass值替换…

如何免费从 Android 恢复丢失/删除的数据

随着手机的广泛使用,手机中可以存储的数据越来越多,这给我们带来了便利,但也在一定程度上给我们带来了一些麻烦。 通常,手机中存储着我们的亲朋好友的联系方式、商务消息、私人聊天、音频文件、搞笑视频、生活照片等个人信息。不…