首页 > 其他分享 >空间变换

空间变换

时间:2023-10-18 17:24:17浏览次数:39  
标签:cos 变换 beta bmatrix 空间 alpha sin gamma

整理自机器人学导论第二章空间描述和变换

描述

位置描述

用三个正交单位矢量表示一个坐标系{A},如\(X_A,Y_A,Z_A\)
对坐标系中的任何点进行定位,用一个矢量来表示该点的位置,如\(P_A\),矢量的哥哥元素用下标x,y,z表示,即\(P^A=(p_x,p_y,p_z)\)

姿态描述:

\(X_B,Y_B,Z_B\)是\(B\)坐标系主轴方向的单位向量
\(X_B^A,Y_B^A,Z_B^A\)是\(B\)坐标系三个主轴方向的单位向量在坐标系\(A\)中的表示
则旋转矩阵

\[R_B^A=[X_B^A,Y_B^A,Z_B^A]= \begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\ r_{31}&r_{32}&r_{33}\\ \end{bmatrix}\]

也即

\[X_B=X_Ar_{11}+Y_Ar_{21}+Z_Ar_{31}=[X_A,Y_A,Z_A](X_B^A)^T\\Y_B=X_Ar_{12}+Y_Ar_{22}+Z_Ar_{32}=[X_A,Y_A,Z_A](Y_B^A)^T\\Z_B=X_Ar_{13}+Y_Ar_{23}+Z_Ar_{33}=[X_A,Y_A,Z_A](Z_B^A)^T \]

每个标量\(r_{ij}\)都可以用两组标准正交基中对应向量点积(点积均表示为\(X\cdot Y\))表示,例如
\(X_A\cdot X_B=X_A\cdot (X_Ar_{11}+Y_Ar_{21}+Z_Ar_{31})=r_{11}\)
因此旋转矩阵可以表示为

\[R_B^A=[X_B^A,Y_B^A,Z_B^A]= \begin{bmatrix} X_A\cdot X_B&X_A\cdot Y_B&X_A\cdot Z_B\\ Y_A\cdot X_B&Y_A\cdot Y_B&Y_A\cdot Z_B\\ Z_A\cdot X_B&Z_A\cdot Y_B&Z_A\cdot Z_B\\ \end{bmatrix}\]

从中也可以看出,旋转矩阵的每一行是单位矢量{\(A\)}在{\(B\)}中的表示,每一列是单位矢量{\(B\)}在{\(A\)}中的表示。
因此\(R_A^B=(R_B^A)^T\),这表明旋转矩阵的逆等于他的转置

坐标系描述

为了完整描述坐标系的信息,需要使用该坐标系原点相对于另一坐标系的位置,用向量\(P_B^A\)表示,和坐标系的姿态,用\(R_B^A\)表示。即

\[\{B\}=\{R_B^A,P_B^A\} \]

映射:坐标系到坐标系的变换

平移坐标系的映射

\[P^A=P_B+P_B^A \]

旋转坐标系的映射

\[P^A=R_B^AP^B \]

一般坐标系的映射

\[P^A=R_B^AP_B+P_B^A \]

写成变换矩阵的形式

\[\begin{bmatrix}P^A\\ 0\end{bmatrix}=\begin{bmatrix} R_B^A&P_B^A\\ 0&1\\ \end{bmatrix}\begin{bmatrix}P^B\\ 0\end{bmatrix}\]

从映射的角度看,原矢量\(P\)在空间中没有改变,只是求出了这个矢量相对于另一个坐标系的新的描述

算子:点的平移、旋转和变换

平移算子

\[P_2^A=D_QP_1^A \]

\[D_Q=\begin{bmatrix} 1&0&0&q_x\\ 0&1&0&q_y\\ 0&0&1&q_z\\ 0&0&0&1\\ \end{bmatrix}\]

旋转算子

\[P_2^A=R_K(\theta)P_1^A \]

\(R_K(\theta)\)表示绕\(K\)轴旋转\(\theta\)角的旋转矩阵
绕坐标轴的齐次旋转矩阵形式

\[R_X(\theta)=\begin{bmatrix} 1&0&0&0\\ 0&\cos\theta&-\sin\theta&0\\ 0&\sin\theta&\cos\theta&0\\ 0&0&0&1\\ \end{bmatrix}\]

\[R_Y(\theta)=\begin{bmatrix} \cos\theta&0&\sin\theta&0\\ 0&1&0&0\\ -\sin\theta&0&\cos\theta&0\\ 0&0&0&1\\ \end{bmatrix}\]

\[R_Z(\theta)=\begin{bmatrix} \cos\theta&-\sin\theta&0&0\\ \sin\theta&\cos\theta&0&0\\ 0&0&1&0\\ 0&0&0&1\\ \end{bmatrix}\]

变换算子

\[P_2^A=T_AP_1^A \]

和映射中的数学描述相同

变换算法

混合变换

\[P_B=T_C^BP^C \]

\[P_A=T_B^AP_B \]

\[P_A=T_B^AT_C^BP^C \]

因此

\[T_C^A=T_B^AT_C^B \]

逆变换

旋转矩阵中

\[R_A^B=(R_B^A)^T \]

将\(P_B^A\)转换为在{B}中的描述

\[(P_B^A)^B=R_A^BP_B^A+P_A^B \]

所以

\[P_A^B=-R_A^BP_B^A=-(R_B^A)^TP_B^A \]

因此

\[T_A^B=\begin{bmatrix} (R_B^A)^T&-(R_B^A)^TP_B^A\\ 0&1\\ \end{bmatrix}\]

姿态其他描述方法

X-Y-Z固定坐标系

\[(R_B^A)_{XYZ}(\alpha,\beta,\gamma)=R_Z(\gamma)R_Y(\beta)R_X(\alpha)\\= \begin{bmatrix} \cos\gamma&-\sin\gamma&0\\ \sin\gamma&\cos\gamma&0\\ 0&0&1\\ \end{bmatrix} \begin{bmatrix} \cos\beta&0&\sin\beta\\ 0&1&0\\ -\sin\beta&0&\cos\beta\\ \end{bmatrix} \begin{bmatrix} 1&0&0\\ 0&\cos\alpha&-\sin\alpha\\ 0&\sin\alpha&\cos\alpha\\ \end{bmatrix}\]

\[=\begin{bmatrix} \cos\beta\cos\gamma&\cos\gamma\sin\alpha\sin\beta-\cos\alpha\sin\gamma&\sin\alpha\sin\gamma+\cos\alpha\cos\gamma\sin\beta\\ \cos\beta\sin\gamma&\cos\alpha\cos\gamma+\sin\alpha\sin\beta\sin\gamma&\cos\alpha\sin\beta\sin\gamma-\cos\gamma\sin\alpha\\ -\sin\beta&\cos\beta\sin\alpha&\cos\alpha\cos\beta\\ \end{bmatrix} \]

Z-Y-X欧拉角

\[R_B^A=R_{B'}^AR_{B''}^{B'}R_{B}^{B''} \]

其中\(B''\)和\(B''\)都是中间坐标系,\(B'\)绕\(Z\)轴旋转\(\gamma\)角,\(B''\)绕\(Y\)轴旋转\(\beta\)角,\(B\)绕\(X\)轴旋转\(\alpha\)角

\[(R_B^A)_{ZYX}(\gamma,\beta,\alpha)=R_Z(\gamma)R_Y(\beta)R_X(\alpha)\\ = \begin{bmatrix} \cos\gamma&-\sin\gamma&0\\ \sin\gamma&\cos\gamma&0\\ 0&0&1\\ \end{bmatrix} \begin{bmatrix} \cos\beta&0&\sin\beta\\ 0&1&0\\ -\sin\beta&0&\cos\beta\\ \end{bmatrix} \begin{bmatrix} 1&0&0\\ 0&\cos\alpha&-\sin\alpha\\ 0&\sin\alpha&\cos\alpha\\ \end{bmatrix}\]

\[=\begin{bmatrix} \cos\beta\cos\gamma&\cos\gamma\sin\alpha\sin\beta-\cos\alpha\sin\gamma&\sin\alpha\sin\gamma+\cos\alpha\cos\gamma\sin\beta\\ \cos\beta\sin\gamma&\cos\alpha\cos\gamma+\sin\alpha\sin\beta\sin\gamma&\cos\alpha\sin\beta\sin\gamma-\cos\gamma\sin\alpha\\ -\sin\beta&\cos\beta\sin\alpha&\cos\alpha\cos\beta\\ \end{bmatrix} \]

即三次绕固定轴的旋转最终姿态和以相反顺序绕运动坐标轴的旋转最终姿态相同

四元数

由等效旋转轴和等效旋转角定义

\[q=\begin{bmatrix} q_1\\ q_2\\ q_3\\ q_4\\ \end{bmatrix}=\begin{bmatrix} n_x\sin\frac{\theta}{2}\\ n_y\sin\frac{\theta}{2}\\ n_z\sin\frac{\theta}{2}\\ \cos\frac{\theta}{2}\\ \end{bmatrix}\]

其中\(\theta\)是旋转角,\(n_x,n_y,n_z\)是旋转轴的方向余弦,满足\(q_1^2+q_2^2+q_3^2+q_4^2=1\)

标签:cos,变换,beta,bmatrix,空间,alpha,sin,gamma
From: https://www.cnblogs.com/wangerblog/p/17772880.html

相关文章

  • 关于 K 维空间中整点之间曼哈顿距离最短路径计数问题
    约定\(K\)维空间中,整点的坐标以\(K\)个整数表示,形如\[Point\left(X_1,X_2,\cdots,X_k\right)\]定义两个点的曼哈顿距离为每一维坐标差的绝对值之和,记为\[MD\left(A,B\right)=\sum_{i=1}^{K}\left|{X_{i_A}-X_{i_B}}\right|\]定义两个点\(A\),\(B\)相邻当且仅当......
  • 分享10个非常好看的QQ空间特效代码
    以下是10种常见的QQ空间特效代码,这些代码可以在QQ空间中实现不同的视觉效果: 1.飘雪特效```javascript:void(newImage().src="http://img.t.sinajs.cn/t35/style/images/common/face/02.gif?v=3.848");```2.彩虹特效```javascript:void(newImage().src="http://img.t.sin......
  • 统计Hadoop空间增量
    #!/bin/bash#设置Hadoop路径hadoop_path="/path/to/hadoop"#获取当前日期current_date=$(date+%Y-%m-%d)#获取Hadoop集群中各个目录的总空间大小,并保存到文件$hadoop_path/bin/hdfsdfs-du-s-h/user>current_space.txt#用awk命令提取目录名称和空间大小,并保......
  • 统计es每天增加的索引和空间使用情况
    #!/bin/bash#Elasticsearch集群的URLes_url="http://localhost:9200"#索引名称的前缀(假设索引名称为"logs-2023.06.15")index_prefix="logs-"#获取当前日期current_date=$(date+%Y.%m.%d)#获取前一天的日期previous_date=$(date-d"yesterday"+......
  • 【gdb】在匿名空间设置断点
    在匿名空间设置断点1.例子namespaceFoo{voidfoo(){}}namespace{voidbar(){}}在gdb中,如果要对namespaceFoo中的foo函数设置断点,可以使用如下命令:(gdb)bFoo::foo如果要对匿名空间中的bar函数设置断点,可以使用如下命令:(gdb)b(anonymousnames......
  • 线性空间与线性基(genshining)
    各代数结构定义群对于一个集合\(G\)和运算\(\times\),若其满足:封闭性、结合律,具有单位元,对于每个元素都有逆元,则称呼\((G,\times)\)为一个群。阿贝尔群,或交换群是运算满足交换律的群的称呼。半群是运算满足封闭性、结合律加上一个集合的代数结构。域对于一个集合\(K\)......
  • OpenGL入门——矩阵变换与坐标系统
    一、OpenGL的数学库GLM向量和矩阵的运算就不作说明了,直接介绍OpenGL中如何使用矩阵变换。GLM(官网:OpenGLMathematics(g-truc.net))是OpenGL Mathematics的缩写,它是一个只有头文件的库,也就是说只需包含对应的头文件就行了,不用链接和编译。把头文件的根目录复制到项目的includes......
  • win11清理磁盘空间方法
    win11清理磁盘空间的方法:1、首先,按键盘上的Win键,或点击任务栏上的开始菜单,再选择已固定应用下的设置。2、当前路径为:系统》存储,可以看到各部分空间的占用情况,存储管理下,可以将存储感知(自动释放空间,删除临时文件,并管理本地可用的云内容)打开。3、......
  • 极空间新款NAS来了:超大八盘位 性能登峰造极
    极空间新款NAS来了,极空间私有云2023新品发布会现已定档10月19日举行。据了解,此次极空间新款NAS至少有两款,其中一款是八盘位旗舰款,也将是极空间首款八盘位NAS,如果每个盘位支持22TB空间,那么意味着满配将提供176TB的空间。另外还有一款四盘位版。极空间暗示,新款NAS主机将不止搭载N......
  • C语言 通过union共存体释放常量指针指向的堆空间
    union共存体中所有成员占用相同的内存空间。因为free函数参数是void*,常量指针是constvoid*,所以free函数释放常量指针时会因类型不同而失败。#include<stdio.h>#include<malloc.h>#include<string.h>typedefunion_const_ptr{constvoid*cp;void*vp;}co......