首页 > 其他分享 >欧拉角位姿变换

欧拉角位姿变换

时间:2024-03-25 18:24:19浏览次数:26  
标签:0.813798 欧拉角 变换 rx ry rz 0.34202 位姿

欧拉角姿态变换

姿态B相对于姿态A的变换:

欧拉角为 rx, ry, rz, 绕 Z-Y-X 轴进行旋转。

那么姿态A相对于姿态B的变换:

欧拉角为 -rx, -ry, -rz, 绕 X-Y-Z 轴进行旋转。

  double rx, ry, rz, px, py, pz;
  rx = 10;
  ry = 20;
  rz = 30;
  px = 1;
  py = 2;
  pz = 3;

  std::cout << "rx: " << rx << " ry: " << ry << " rz: " << rz << "\n";
  std::cout << "px: " << px << " py: " << py << " pz: " << pz << std::endl;

  Eigen::AngleAxis roll1(rx / 180 * M_PI, Eigen::Vector3d::UnitX());
  Eigen::AngleAxis pitch1(ry / 180 * M_PI, Eigen::Vector3d::UnitY());
  Eigen::AngleAxis yaw1(rz / 180 * M_PI, Eigen::Vector3d::UnitZ());
  Eigen::Matrix3d matrix1 = (yaw1 * pitch1 * roll1).toRotationMatrix();
  std::cout << "matrix1: Z-Y-X" << "\n";
  std::cout << matrix1 << "\n" << std::endl;
  std::cout << "matrix1.inv: " << "\n";
  std::cout << matrix1.inverse() << "\n" << std::endl;

  rx *= -1;
  ry *= -1;
  rz *= -1;

  std::cout << "rx: " << rx << " ry: " << ry << " rz: " << rz << "\n";

  Eigen::AngleAxis roll2(rx / 180 * M_PI, Eigen::Vector3d::UnitX());
  Eigen::AngleAxis pitch2(ry / 180 * M_PI, Eigen::Vector3d::UnitY());
  Eigen::AngleAxis yaw2(rz / 180 * M_PI, Eigen::Vector3d::UnitZ());
  Eigen::Matrix3d matrix2 = (roll2 * pitch2 * yaw2).toRotationMatrix();
  std::cout << "matrix2: X-Y-Z" << "\n";
  std::cout << matrix2 << "\n" << std::endl;
  std::cout << "matrix2.inv: " << "\n";
  std::cout << matrix2.inverse() << "\n" << std::endl;

输出:

rx: 10 ry: 20 rz: 30
px: 1 py: 2 pz: 3
matrix1: Z-Y-X
 0.813798  -0.44097  0.378522
 0.469846  0.882564 0.0180283
 -0.34202  0.163176  0.925417

matrix1.inv: 
 0.813798  0.469846  -0.34202
 -0.44097  0.882564  0.163176
 0.378522 0.0180283  0.925417

rx: -10 ry: -20 rz: -30
matrix2: X-Y-Z
 0.813798  0.469846  -0.34202
 -0.44097  0.882564  0.163176
 0.378522 0.0180283  0.925417

matrix2.inv: 
 0.813798  -0.44097  0.378522
 0.469846  0.882564 0.0180283
 -0.34202  0.163176  0.925417

标签:0.813798,欧拉角,变换,rx,ry,rz,0.34202,位姿
From: https://www.cnblogs.com/Dyp-/p/18095023

相关文章

  • [矩阵分析] 一、线性空间与线性变换
    目录线性空间及其性质定义关键性质1.封闭性2.加法运算的性质3.标量乘法的性质4.线性组合、跨度和线性独立性5.子空间、基和维数6.核和像核(Kernel)像(Image)核与像的关系应用一些重要的性质通俗理解线性空间的维数、基与坐标维数(Dimension)基(Basis)坐......
  • NOJ南邮上机 矩阵变换问题 PROB1020 Python
    PROB1020   矩阵变换问题描述:给定一个 n×m的矩阵,对于 初始矩阵 中所有值为 1 的元素,重置其 所在行列 的所有元素为 0,最后输出整个修改后的矩阵。输入:输入共包含 1+n行。第一行包两个整数 n 和 m,分别表示矩阵的长和宽,题目保证 2≤n,m≤700且 4≤n×m......
  • DSTFT-STFT 离散短时傅里叶变换-短时傅里叶变换 详细解析
    目录STFT基本原理数学表达式STFT的数学定义STFT组件的理解时间-频率分辨率的权衡窗函数窗函数的作用常见的窗函数窗函数的选择DSTFT基本概念数学表达式DSTFT各组件的理解时间-频率分辨率权衡COLA条件COLA条件的基本定义数学表达重要性1.减少信息丢失2.......
  • 【高等几何】03 - 射影变换
    1.增补仿射空间1.1点透视的启发在第一篇中说到,圆锥面对于不同平面的截面构成了我们熟悉的二次曲线(圆、椭圆、抛物线、双曲线),因此它们也被称为圆锥曲线。至于为什么会是这样,最直观的证明就是著名的丹德林(Dandeline)双球模型。上一篇中圆柱截面为椭圆的证明,放在圆锥中依然适......
  • Antd ProTable 设置表格头,可拖动变换列宽度
    ProTable表格本身是不支持,列宽度可拖动的。1、按照一个插件( react-resizable)npm install --save react-resizable2、新建一个工具类ResizableTableUtil.jsimportReactfrom'react';import{Resizable}from'react-resizable';constResizableTitle=(props)=>......
  • Box-cox数据变换
    Box-coxTransformation背景有很多时候我们需要把右偏(长尾)分布的数据进行数值变换,将其变为接近正态分布的形式,好使用统计工具。Box-cox的原理其实就是用一系列f(y;lambda)对y做变换尝试,看看哪一个变换f(lambda)能够使得Y'=f(Y)变成正态分布,越正态越好。要注意,这里的transformati......
  • 击中击不中变换HMT
    简单来说击中-击不中运算常用于二值图像,它用于基于结构元素的配置,从图像中寻找具有某种像素排列特征的目标,如单个像素、颗粒中交叉或纵向的特征、直角边缘或其他用户自定义的特征等。计算时,只有当结构元素与其覆盖的图像区域完全相同时,中心像素的值才会被置为1,否则为0。下图给出了......
  • s2fft库介绍:可微分和加速球谐变换
    一、说明        科学和工程的许多领域都会遇到在球体上定义的数据。对此类数据进行建模和分析通常需要傅里叶变换的球面对应物,即球面谐波变换。我们简要概述了球谐变换,并提出了一种新的可微分算法,该算法专为GPU上的加速而定制[1]。该算法在最近......
  • 算法学习笔记(46): 离散余弦变换(DCT)
    前置知识:离散傅里叶变换傅里叶变换在上文中更多的是OI中的理解以及应用。但是傅里叶变换奥秘还很多。回顾\(\omega_n\)在傅里叶变换中的定义:\(e^{i\frac{2\pi}n}\),存在\(\omega_n^n=1\)的性质。意味着离散傅里叶变换实际上是周期性的,这也变相的解释了为什么存在循环......
  • 电路方案分析(十八)四开关buck-boost双向同步DC/DC变换器方案
    tip是:资料来自网络,仅供学习交流使用!1.概述4开关降压升压双向DC-DC电源转换器在很多应用中都有使用。作为一个同步降压或同步升压转换器,其中只有两个开关切换,开关损耗减少到一半。只有当直流母线和电池电压彼此接近,然后转换器作为一个同步降压-升压转换器,其中所有四个开关......