机器人基础之姿态矩阵

  • 概述
  • 绕单个坐标轴旋转某一角度的旋转矩阵
    • 用MATLAB实现上述矩阵
  • 坐标系绕多个坐标轴转动的姿态矩阵
  • 等效转轴与等效转角

概述

机器人学中使用姿态矩阵来描述坐标系之间的角度关系。通常坐标系固连在刚体上,因此姿态矩阵也可以用来描述刚体之间的角度关系。

绕单个坐标轴旋转某一角度的旋转矩阵

X轴旋转 θ \theta θ角度的旋转矩阵为: [ 1 0 0 0 cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ ] (n) \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{matrix} \right] \tag{n} ⎣⎡​100​0cosθsinθ​0−sinθcosθ​⎦⎤​(n)
Y轴旋转 θ \theta θ角度的旋转矩阵为: [ cos ⁡ θ 0 sin ⁡ θ 0 1 0 − sin ⁡ θ 0 cos ⁡ θ ] (n) \left[ \begin{matrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{matrix} \right] \tag{n} ⎣⎡​cosθ0−sinθ​010​sinθ0cosθ​⎦⎤​(n)
需特别矩阵左下角的 sin ⁡ θ \sin \theta sinθ 没有负号。
Z轴旋转 θ \theta θ角度的旋转矩阵为: [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] (n) \left[ \begin{matrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta& 0 \\ 0 & 0 & 1 \end{matrix} \right] \tag{n} ⎣⎡​cosθsinθ0​−sinθcosθ0​001​⎦⎤​(n)

用MATLAB实现上述矩阵

function rot_X_matrix = rotX(theta)
% 计算绕X轴旋转的矩阵
rot_X_matrix = [1, 0, 0;0, cos(theta), -sin(theta);0, sin(theta), cos(theta)];
function rot_Y_matrix = rotY(theta)
% 计算绕Y轴旋转的矩阵
rot_Y_matrix = [cos(theta), 0, sin(theta);0, 1, 0;-sin(theta), 0, cos(theta);];
function rot_Z_matrix = rotZ(theta)
% 计算绕Z轴旋转的矩阵
rot_Z_matrix = [cos(theta), -sin(theta), 0;sin(theta), cos(theta), 0;0, 0, 1;];

坐标系绕多个坐标轴转动的姿态矩阵

这里的多个坐标系分为两类:固定坐标系和动坐标系。
对于固定坐标系,姿态矩阵依次向左乘。
对于动坐标系,姿态矩阵依次向右乘。
对此,我的记忆方法是:固左(即利用谐音“顾左右而言他”)。

等效转轴与等效转角

之前在理论力学中学过刚体定点运动的位移定理,即达朗贝尔-欧拉定理。
该定理叙述如下:定点运动刚体的任意有限位移,可以绕通过固定点O的某一轴经过一次转动来实现。
姿态矩阵是一个正交矩阵,它存在一个大小为1的特征值,对应于该特征值的特征向量的方向即为等效转轴的方向。
等效转角可用以下公式计算。 θ = a r c c o s [ 1 2 ( t r A − 1 ) ] \theta=arccos[\frac{1}{2}(trA-1)] θ=arccos[21​(trA−1)]
其中,trA为矩阵A的迹。
下面举例在MATLAB中编程进行计算。

% 举例计算等效转轴和等效转角
thetaX = 30 / 180 * pi;
thetaY = 60 / 180 * pi;
thetaZ = 50 / 180 * pi;R = rotX(thetaX) * rotY(thetaY) * rotZ(thetaZ);
[V, D] = eig(R)
theta = acos(0.5 * (trace(R) - 1)) / pi * 180

特征向量矩阵V、特征值矩阵D和等效转角 θ \theta θ的输出结果如下。

V =-0.2232 + 0.5348i  -0.2232 - 0.5348i   0.5730 + 0.0000i0.6193 + 0.0000i   0.6193 + 0.0000i   0.4826 + 0.0000i-0.2581 - 0.4626i  -0.2581 + 0.4626i   0.6624 + 0.0000iD =-0.0103 + 0.9999i   0.0000 + 0.0000i   0.0000 + 0.0000i0.0000 + 0.0000i  -0.0103 - 0.9999i   0.0000 + 0.0000i0.0000 + 0.0000i   0.0000 + 0.0000i   1.0000 + 0.0000itheta =90.5910

可见,等效转轴的方向向量为(0.573, 0.4826, 0.6624),等效转角约为90.6度。

机器人基础之姿态矩阵相关推荐

  1. GNSS/INS组合导航(1)-- 姿态矩阵

    对于开始接触惯性导航的人来说,姿态矩阵是必经之路.我在开始学习惯导的过程中,只是用姿态矩阵,但没具体去研究其对应欧拉角旋转方式,最近把自己绕晕了,所以推导完后记录一下自己对欧拉角与旋转矩阵理解,重点针 ...

  2. 机器人基础之运动学逆解

    机器人基础之运动学逆解 概述 求解腕点位置 求解腕部方位 z-y-z欧拉角 具体求解 算例 MATLAB实现 概述 运动学逆解是指已知机器人末端位姿,求解各运动关节的位置,它是机器人运动规划和轨迹控制 ...

  3. 有限元基础: Jacobian 矩阵和高斯积分

    有限元基础(一) Jacobian 矩阵和高斯积分_battlestar的博客-CSDN博客_有限元高斯积分 有限元的二维热传导_fpga&matlab的博客-CSDN博客_二维热传导

  4. matlab中服从高斯分布的矩阵_推荐基础算法之矩阵分解PMF

    推荐基础算法之矩阵分解PMF 大多数存在的协同过滤算法不能处理以下两种情况: 1. 不能处理大规模数据 2.不能处理评分非常少的用户数据 概率矩阵分解模型可以解决大规模.稀疏且不平衡的数据.这篇文章主 ...

  5. 推荐系统基础03:矩阵分解与FM

    推荐系统基础03:矩阵分解与FM 1. 隐语义模型与矩阵分解 2. 隐语义模型(LFM) 隐语义 隐特征矩阵 3.矩阵分解模型 4. 矩阵分解算法的求解 Basic SVD FunkSVD(又称RSV ...

  6. 【机器人基础】阻抗/导纳控制深度解析

    之前写过一篇阻抗控制的文章,[机器人基础]机器人阻抗控制概念写的比较浅也不是很专业,最近上了桂凯博士的动力学课程之后有了更深入的认识,认真整理总结了一下,这次详细地分析一下阻抗/导纳控制. 1.柔顺控 ...

  7. 两个卡方分布之和_推荐基础算法之矩阵分解PFM

    推荐基础算法之矩阵分解PFM PFM被称为概率因子模型(Probabilistic Factor Model)或泊松因子模型(Poission factor model).PFM本质上和概率矩阵分解( ...

  8. 线代基础第二讲——矩阵

    基础知识结构 求矩阵的逆: 1.定义 2.用伴随矩阵求逆矩阵 3.用初等变换求逆矩阵 这就是读者对矩阵的初步认识--表达系统信息(systematical information) 再看一个矩阵: 重 ...

  9. 示教器重定位下机器人动作_ABB机器人基础应用练习题

    ABB机器人基础应用练习题 ABB Engineering Shanghai Ltd.3BCN700000Issued by DivisionDateLanguageRevisionPageFlexi ...

最新文章

  1. 在Win10下如何实现VS下工程代码的开机自启功能
  2. SAP MM 物料主数据里的‘Packaging Material Type‘字段
  3. linux qt检测u盘热插拔,【QT】动态监测U盘插拔
  4. MongoDB基础教程系列--目录结构
  5. 如何使用Oracle的外部表查询警告日志文件
  6. python学习之最常用的内置函数
  7. visual studio2019的安装以及使用
  8. 病毒传播数学建模matlab分析,数学建模MATLAB之分析法(一)
  9. socketserver 模块的构成
  10. 【大数据部落】文本挖掘:twitter推特LDA主题情感分析
  11. 给宝宝的固态硬盘装机教程
  12. android 如何调用 无线投影,无线投影仪怎么连接?答案在此,效率快得没话说
  13. python爬取新浪博客_Python爬取韩寒全部新浪博客
  14. 新计算机分区,新电脑如何分区 新电脑怎么分盘
  15. tensorflow-gpu运行测试代码,卡在 I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu
  16. vue简单实现多功能弹幕(比上一个好)
  17. 抖音不做真人出镜,打造百万粉运营攻略!
  18. 第二章 第二节课 等效电路 惠斯通电桥 等效变换
  19. 链表:两个链表的第一个重合节点
  20. Android源码百度网盘下载

热门文章

  1. UVA 10006(卡迈克尔数+素数打表)
  2. [微信小程序开发者工具] × #initialize-error: Error: ENOENT: no such file or directory, open
  3. 先进PID控制Matlab仿真第4版-pdf课本+仿真程序
  4. Hank的无线802.11学习笔记--2
  5. CSS样式属性margin,padding详解
  6. ☆ZigBee的碎片化
  7. 解放拖动屏幕的双手——用xrandr配置多屏显示
  8. mathtype部分功能不可用
  9. java断路器原理_Netflix Hystrix断路器原理分析
  10. sql实现查询学习了所有课程的学生信息