关于旋转矩阵的理解,以及左乘和右乘的区别

news2024/11/20 6:20:04

一、对左乘一个旋转矩阵的理解

左乘旋转矩阵的旋转是相对与一个固定的坐标系的,这个坐标系不会因相应的向量或坐标的改变而改变,通常坐标系的初始位置就是固定坐标系的位置。

1)相对于固定坐标系单次向量的旋转

这里的“单次”指的是绕RPY角的某个方向旋转某个角度。

以三维坐标为例,对于一个坐标系下的向量$\begin{bmatrix}R{x} & R{y} &R_{z} \end{bmatrix}^{T}$

根据旋转角度 θ 左乘一个对应的旋转矩阵,就能得到旋转θ角后的向量。

这里说到“对应”的旋转矩阵,就是绕x轴旋转(roll轴)、绕y轴旋转(pitch轴)和绕z轴旋转(yaw轴)对应的矩阵,其矩阵对应旋转角度θ的关系如下:

很多文章中的公式中的sin和这里是相反的,也是很多人容易弄混的,事实上对于向量的旋转就是上面这个公式,sin取负值(事实上是θ取负值)对应的是矩阵的旋转,因为矩阵旋转相对于向量旋转是相反方向的嘛,所以如果按矩阵旋转的方式理解,在上述矩阵前面加上负号就可以了。

关于矩阵相乘这里就不多说了。

2)相对于固定坐标系单次坐标轴的旋转

向量往某个方向旋转某个角度,也可以看成是坐标系往反方向旋转了相应的角度。向量的方向不变,但是相对于坐标系的方向改变了。

公式即为上述公式中θ取负数。

在完成云台激光项目的时候,就应用到了这里,将云台旋转后识别到的点的坐标转换成固定坐标系下点的坐标,以此方便计算角度。

3)关于多角度的旋转

如果向量的偏移不是沿着RPY角度的,而是对多个角度都有分量,那么就要左乘多个旋转矩阵。

左乘旋转矩阵的顺序不同,会导致结果出现偏差。也就是说先pitch轴旋转再yaw轴旋转和先yaw轴旋转再pitch轴旋转的结果是不相同的。因此需要根据实际情况确定旋转的顺序。

在左乘多个旋转矩阵时,𝑣 ′ = 𝑅 𝑦 ( 𝜙 ) ( 𝑅 𝑥 ( 𝜃 ) 𝑣 ) = ( 𝑅 𝑦 ( 𝜙 ) 𝑅 𝑥 ( 𝜃 ) ) 𝑣

二、对右乘一个旋转矩阵的理解

右乘旋转矩阵表示旋转矩阵与向量相乘,旋转是相对于向量所在的空间中的局部坐标系(即局部坐标系)。

相对于自身的坐标系坐标轴的旋转

左乘是相对于固定坐标系下的旋转,而右乘则是关于自身当前状态下的坐标系来旋转的。比如一个坐标先沿pitch角度旋转,再沿旋转后的坐标系的yaw轴角度旋转。

对应角度的旋转矩阵如下:(与上面的坐标轴旋转是相同的)

三、总结及应用

基于固定坐标系的旋转变换左乘旋转矩阵,基于自身坐标系的旋转变换右乘旋转矩阵。

  • 左乘:将对象绕固定的参考框架旋转。左乘通常适用于多维数据分析、图像处理、和物理仿真中,其中参考框架是不变的。

  • 右乘:将对象绕自身参考框架旋转。右乘通常适用于机械臂、机器人、和局部坐标系的变换中。

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

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

相关文章

使用 Bing 的 Chat 初体验

前言 下载好 Edge 浏览器,并且通过 ModHeader 插件的设置才能访问外边的功能完善的 edge ,但是想要进行 chat 需要通过申请才行,网上很多教程我就不赘述了。 正文 我的申请刚刚通过,但是使用 Chat 的效果一般,感觉很…

Threejs-06、利用lil-GUI调试3D效果

1、 引入lil.gui // 引入lil.gui import { GUI } from "three/examples/jsm/libs/lil-gui.module.min.js";2、创建GUI const gui new GUI();3、添加按钮 let eventObj {// 全屏事件Fullscreen:function(){// 全屏document.body.requestFullscreen();console.lo…

先导桌面式小型数控加工中心更有利于教学投入使用

桌面式 小型数控加工中心 VMC220是先导一款特色的产品,它体积小,占地面积不足1立方,精忠160KG左右,配工业级数控提供,机身选用优质铸铁铸造,采用工业级研磨滚珠丝杆,使用主轴伺服电机。 某高校选…

Redisson 实现分布式锁

1、相关配置 Component public class RedissonDistributedLock {Autowiredprivate RedissonClient redissonClient;public boolean tryLock(String lockKey, long expireTime, long waitTime) throws InterruptedException {RLock lock redissonClient.getLock(lockKey);retu…

Compshare平台使用体验分享

一、引言 随着AI技术的飞速发展,对高性能计算资源的需求也在不断增加。为了满足广大AI研究者和开发者的需求,各类算力共享平台应运而生。其中,Compshare平台凭借其卓越的性能和便捷的操作,迅速成为用户关注的焦点。本文将通过对隶…

安全防护与隐私保护:淘宝在线扭蛋机用户数据安全的深度解析

淘宝在线扭蛋机作为一种集购物与娱乐于一体的新型平台,用户数据的安全性至关重要。本文将深入探讨如何采取有效措施,确保在线扭蛋机用户数据的安全性,防止数据泄露和滥用。 一、构建多层次安全防护体系 为了应对复杂的网络安全威胁&#xf…

【Excel技巧】Excel打开密码的两种设置方法!

excel文件打开密码可以再打开文件时输入密码查看文件内容,这样就可以保护文件内容不被任何人查看了,今天分享excel打开密码的两种设置方法给大家。 方法一: 点击excel中的【文件】功能,找到【信息】-【保护工作表】-【用密码进行…

HarmonyOS未来五年的市场展望

一、引言 随着科技的不断进步和消费者对于智能化设备需求的日益增长,操作系统作为连接硬件与软件的核心平台,其重要性愈发凸显。HarmonyOS(鸿蒙系统),作为华为自主研发的分布式操作系统,自诞生以来便备受瞩…

【PowerDesigner】创建和管理CDM之新建和使用域

目录 🌊1. PowerDesigner简介 🌍1.1 常用模型文件 🌍1.2 PowerDesigner使用环境 🌊2. 创建和管理CDM 🌍​​​​​​2.1 新建CDM 🌍2.2 新建和使用域 🌊3. 研究心得 🌊1. Pow…

【Three.js】知识梳理二:Three.js引用和环境搭建

1.文件包下载和目录简介 1.1 文件包下载 a. 官方网站下载: 访问 Three.js 的官方网站(threejs.org/)并点击 "Download" 按钮,下载最新版本的文件包。 b. GitHub仓库下载: 访问 Three.js 的 GitHub 仓库&a…

代码随想录算法训练营第36期DAY57

DAY57 今天的好消息&#xff1a;能去华五。 1143最长公共子序列 Code: class Solution {public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> dp(text1.size()1,vector<int>(text2.size()1,0)); f…

LeetCode-day09-419. 甲板上的战舰

LeetCode-day09-419. 甲板上的战舰 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ &#xff0c;返回在甲板 board 上放置…

软件设计,建模及需求分析

文章目录 设计原则建模及需求分析UML画图工具原型图画图工具 重构 设计原则 SOLID原则 单一职责 开闭 &#xff08;扩展开放&#xff0c;修改关闭&#xff09; 里氏替换 &#xff08;父类出现地方都可以用子类替换&#xff09; 接口隔离 依赖倒置&#xff08;高层模块不依…

理解dispatch_async

Submits a block for asynchronous execution on a dispatch queue and returns immediately. 提交一个块以在调度队列上异步执行并立即返回。 code showing 以一个最简单的demo开始 // 创建一个同步队列 dispatch_queue_t syncQueue dispatch_queue_create("io.sqi.My…

CSS之块浮动

在盒子模型的基础上就可以对网页进行设计 不知道盒子模型的可以看前面关于盒子模型的内容 而普通的网页设计具有一定的原始规律,这个原始规律就是文档流 文档流 标签在网页二维平面内默认的一种排序方式,块级标签不管怎么设置都会占一行,而同一行不能放置两个块级标签 行级…

Java面试八股之子类可以从父类继承哪些内容

Java子类可以从父类继承哪些内容 Java子类可以从父类继承以下内容&#xff1a; 属性&#xff08;Fields/Variables&#xff09;&#xff1a; public&#xff1a;子类可以继承父类所有的public修饰的属性。 protected&#xff1a;子类可以继承父类所有的protected修饰的属性…

1052 卖个萌(测试点1,2)

solution 想要输出\需要用\\才能输出&#xff0c;即 cout << "Are you kidding me? \\/" << endl;测试点1&#xff0c;2&#xff1a;输入序号小于1的非法情况 #include<iostream> #include<string> #include<map> using namespace…

XX食品有限公司智能制造汇报材料(71页PPT)

材料介绍&#xff1a; 本食品有限公司为应对市场需求变化&#xff0c;提高生产效率与产品质量&#xff0c;降低运营成本&#xff0c;特制定此智能制造规划。本规划旨在通过引入先进的智能制造技术和管理模式&#xff0c;推动公司向数字化、网络化、智能化方向发展&#xff0c;…

强烈推荐!Windows 11 24H2 版本系统下载(新功能多多)

微软向 Windows 11 Version 24H2 用户推送了 KB5036908 更新&#xff0c;标志着 24H2 版本的首次累积更新&#xff0c;更新后用户的系统版本号将升级至 26100.268。在新版本中&#xff0c;最显著的变化包括对文件资源管理器的改进、整合的 Copilot 功能、编辑 PNG 文件元数据的…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第38课-密室逃脱 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…