位姿变换线性变换与坐标变换

位姿,线性变换与坐标变换.yuque

内旋,外旋, 左乘,右乘很容易把人绕晕是因为缺少一种科学的符号。
自己的符号,如果经常变不稳定,对推理和理解都很不利。
一旦问题复杂起来, 直观和直觉靠不住, 只能靠代数符号来推理
约定
P1: A,B,C…是空间中的标准正交基
P2: [a1,a2,…an] 是系A的基, [b1,b2,…bn] 是系B的基,其中aj 和bj 都是n维列向量
一个坐标系可以用它的基表示,故A=[a1,a2,…an] B=[b1,b2…bn]。 aj 和 bj 的表示需要依赖世界系[e1,e2,…en]
P3:AP是点P在A系中的齐次坐标A [Px,Py,Pz,1]T或欧式坐标A[Px,Py,Pz]T ,根据上下文区分
P4: AT是A系的中的线性变换, 满足AP2=AT * AP1 (就是把P1变换到P2点)
P5: ABT 是B系在A系中的位姿,指的是系B的每一个基在系A的坐标表示即
[b1,b2…bn]=[a1,a2,…an] ABT
ABT * BAT =I
P6: 在线性代数中 T * 0=0 ,即所有系原点重合,但在齐次坐标中根本不存在[0,0,0,0]T, 而是用 [0,0,0,1]T 表示原点,所以齐次坐标可处理平移问题
P7: 常用的线性变换使用作用来描述,比如拉伸,旋转,平移,镜像,透视,而抽象的线性变换则只能使用矩阵来描述。
定理1: 坐标变换定理 AP= ABT BP
坐标变换定理描述了同一个点P在两个系中的关系
P1: B=[b1,b2…bn]=[a1,a2,…an]C=AC ; (C是过渡矩阵)
P2: AP=[p1,p1,…pn]T BP=[p1,p1,…pn,]T P=AAP=BBP=ACBP
P3: AP=CBP ; C就是ABT
P4: 如果P1中的A取I=[e1,e2…en] 则 B=C=ABT
定理2: 线性变换定理 AP2= ABT AP1
令 AT = ABT , 则 AP2= AT AP1
线性变换定理描述了在同一个系中两个点的关系 (线性变换的特点是左上角在一个系中)
AT 产生的作用就是A系到B系的作用
定理3: ACT=ABTBCT
虽然这个定理很好证明,但对它的不同解释延伸出了很多有意思的结论,内旋,外旋都来源于此
P1: AP= ABT BP =ACT CP BP= BCT CP
P2: AP= ABT BCT CP =ACT CP
P3: ABT BCT =ACT
定理4: 内外旋定理
该定理源于对公式 ACT=ABT
BCT 的两种解释
本地系的作用是内旋用右乘 , 世界系作用是外旋用左乘

达到上图的状态有两种方式
方式1: 运动系,内旋,右乘的解释
P1: ABC重合
P2: BC相对A运动ABT
P3: C相对B运动BcT
ACT=ABTBCT 可以看作ABT与BCT 的合成, 上面都是相对运动系作用
方式2: 世界系,外旋,左乘的解释
P1: ABC重合
P2: C相对AB运动BcT
P3: BC相对A运动ABT
ACT=ABTBCT 可以看作是先BcT作用后ABT作用, 上面都是相对世界系作用
例1: 在平面上,求绕点(x,y)逆时针旋转θ对应的线性变换
P1: A系为世界系
P2: B系由A系平移到(x,y)得到
P3: C系由B系逆时针旋转θ得到
P4: P1绕B系原点逆时针旋转θ到达P2 ,求在A系中P1到P2的线性变换

AP1=ABTBCTCP1
AP2=ABTBCTCP2
CP2=BCTCP1 ;(同时有BP2=BCTBP1)
AP2=MAP1
联立上面方程可解得 M=ABTBCTBAT (把前三个方程带入第4个方程)
将ABT= [ 1 0 x 0 1 y 0 0 1 ] \begin{bmatrix} 1 &0 & x \\ 0 & 1 & y \\ 0 & 0 &1 \end{bmatrix} 100010xy1 BCT= [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 &1 \end{bmatrix} cosθsinθ0sinθcosθ0001 BAT= [ 1 0 x 0 1 y 0 0 1 ] − 1 \begin{bmatrix} 1 &0 & x \\ 0 & 1 & y \\ 0 & 0 &1 \end{bmatrix} ^{-1} 100010xy1 1
带入上式得到
M= [ cos ⁡ θ − sin ⁡ θ ( 1 − c o s θ ) ∗ x + s i n θ ∗ y sin ⁡ θ cos ⁡ θ − s i n θ ∗ x + ( 1 − c o s θ ) ∗ y 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & (1-cos\theta)*x+sin\theta*y \\ \sin \theta & \cos \theta & -sin\theta*x+(1-cos\theta)*y \\ 0 & 0 &1 \end{bmatrix} cosθsinθ0sinθcosθ0(1cosθ)x+sinθysinθx+(1cosθ)y1
例1的过程可以自然的推广到三维中绕定轴旋转对应的线性变换

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

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

相关文章

GZ031 应用软件系统开发赛题第6套

2023年全国职业院校技能大赛 应用软件系统开发赛项(高职组) 赛题第6套 工位号: 2023年4月 竞赛说明 一、项目背景 党的二十大报告指出,要加快建设制造强国、数字中国,推动制造业高端化、智能化、…

kafka入门(二): 位移提交

位移提交: Kafka的每条消息都有唯一的 offset, 用来表示消息在分区中对应的位置。有的也称之为 “偏移量”。 消费者每次在 poll() 拉取消息,它要返回的是还没有消费过的消息集, 因此,需要记录上一次消费时的消费位…

[计算机网络]运输层概述

虽然我自己也不知道写在前面和前言有什么区别..... 这个系列其实是针对<深入浅出计算机网络>的简单总结,加入了一点个人的理解和浅薄见识,如果您有一些更好的意见和见解,欢迎随时协助我改正,感激不尽啦. 最近心态平和了不少, 和过去也完全做了个割舍吧,既然痛苦和压力的…

记录华为云服务器(Linux 可视化 宝塔面板)-- 安全组篇

文章目录 前言安全组说明安全组的特性安全组的应用场景 进入安全组添加基本规则添加自定义规则如有启发&#xff0c;可点赞收藏哟~ 前言 和windows防火墙类似&#xff0c;安全组是一种虚拟防火墙&#xff0c;具备状态检测和数据包过滤功能&#xff0c;可以对进出云服务器的流量…

typeof,instanceof

1.typeof typeof运算符返回的结果是以小写的字符串表示的变量的类型 2.instanceof instanceof运算符用于判断右边构造函数的原型对象是否在左边对象的原型链上 let arr[]let obj{}let datenew Dateconsole.log(arr instanceof Array)console.log(arr instanceof Object)conso…

Maven 简单配置阿里云镜像

配置步骤&#xff1a; 1、找到 maven 的安装目录&#xff0c;修改settings.xml 2、在文件中找到<mirrors>标签&#xff0c;然后再标签中添加阿里云配置即可 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共…

CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?

一、说说protobuf 是什么&#xff1f; Protocol Buffers&#xff08;简称为ProtoBuf&#xff09;是一种由Google开发的数据序列化格式。它是一种轻量级、高效且通用的数据交换格式&#xff0c;可用于各种编程语言和平台。 ProtoBuf使用结构化的消息定义语言&#xff08;IDL&a…

巧妙之中见真章:深入解析常用的创建型设计模式

设计模式之创建型设计模式详解 一、设计模式是什么&#xff1f;二、模板方法2.1、代码结构2.2、符合的设计原则2.3、如何扩展代码2.4、小结 三、观察者模式3.1、代码结构3.2、符合的设计原则3.3、如何扩展代码3.4、小结 四、策略模式4.1、代码结构4.2、符合的设计原则4.3、如何…

Pinctrl子系统和GPIO子系统

Pinctrl子系统&#xff1a; 借助Princtr子系统来设置一个Pin的复用和电气属性&#xff1b; pinctrl子系统主要做的工作是&#xff1a;1. 获取设备树中的PIN信息&#xff1b;2.根据获取到的pin信息来设置的Pin的复用功能&#xff1b;3.根据获取到的pin信息去设置pin的电气特性…

【机器学习 | 聚类】关于聚类最全评价方法大全,确定不收藏?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

访谈 破风之人毛京波,选择难而正确的路

“无论是在燃油时代还是电动时代&#xff0c;我们所做的一切&#xff0c;只为回归纯粹的驾驶乐趣。”履新路特斯中国总裁整整一年的毛京波&#xff0c;从不放过任何一个展示路特斯品牌驾驭精神的机会。 11月17日&#xff0c;广州车展开幕首日&#xff0c;位于5.2馆的路特斯“冠…

【理解ARM架构】 散列文件 | 重定位

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《理解ARM架构》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3d3;引出重定位&#x1f3d3;散列文件&#x1f3d3;可读可写数据段重定位&#…

C++ 基于Boost.Asio实现端口映射器

Boost.Asio 是一个功能强大的 C 库&#xff0c;用于异步编程和网络编程&#xff0c;它提供了跨平台的异步 I/O 操作。在这篇文章中&#xff0c;我们将深入分析一个使用 Boost.Asio 实现的简单端口映射服务器&#xff0c;该服务器能够将本地端口的数据包转发到指定的远程服务器上…

OSG编程指南<十一>:OSG几何体操作及三维地形创建

1、简化几何体 在 OSG 中&#xff0c;场景都是由基本的绘图基元构成的&#xff0c;基本的绘图基元构成简单的几何体&#xff0c;简单的几何体构成复杂的几何体&#xff0c;复杂的几何体最终构造成复杂的场景。当多个几何体组合时&#xff0c;可能 存在多种降低场景渲染效率的原…

220. 存在重复元素 III(滑动窗口+有序集合)

Problem: 220. 存在重复元素 III 文章目录 题目思路Code 题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j,abs(i - j) < indexDiffabs(nums[i] - nums[j]) < valueDiff 如果存在&#xff0c;返回…

Vue事件处理

Vue的事件处理与BOMDOMjs下的事件处理没有明显的差异&#xff0c;差别主要体现在规范化上。在模板或者DOM结构上绑定事件的指令是v-on或者符号。事件的处理函数除了直接指定处理函数之外&#xff0c;还增加了对事件简易处理函数的内联处理方式。在事件上&#xff0c;Vue增加了事…

JAVA小游戏“简易版王者荣耀”

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im…

06_正则与异常处理

正则表达式 基础演示 public class Test {public static void main(String[] args) {System.out.println(check("7029622989")); // true}public static boolean check(String userId) {return userId ! null && userId.matches("[1-9]\\d{5,19}&quo…

DPDK系列之三十七IO处理

一、介绍 如果一条通信链路要想达到最优的效果&#xff0c;一定是整体上每个环节都要有最佳的节奏协调控制而不一定是每个环节都是最优。这个在计算机的数据处理上就更是明显。一般来说&#xff0c;IO的速度是最低的&#xff0c;至少在可见的时光里要想超越CPU和内存还是很难的…

Scope 模块

Scope 模块可以连接任何类型的实数信号线 (不支持复数)。 波形显示界面主要包括两个部分: Scope 独有的工具栏、波形显示区域。 波形显示界面默认是黑色背景, 当有单个信号输入时, 信号线是黄色的。 Scope 模块也有菜单栏, 只不过默认将其句柄和显示都隐藏起来, 可以通过下面…