1、yaw(pan)/pitch(tilt)/roll

我认为,yaw/pitch/roll绕哪个轴旋转,是要看坐标系的朝向的,如果坐标系的轴如下图,则对应关系是yaw(z轴)、pitch(x轴)、roll(y轴)。

如果换个坐标系,比如下图,则是yaw(Y轴)、pitch(X轴)、roll(Z轴)。

2、yaw/pitch/roll的计算

工业上,一般的旋转顺序是yaw=>pitch=>roll的顺序。

所以,这个坐标系的旋转顺序是ZXY,则对应的旋转矩阵是下图的红色部分。

令旋转矩阵,则

m21 = sinx, x =asin(m21)=>pitch
m20 / m22 = -cosxsiny / cosxcosy = -siny / cosy = -tany, y = -atan2(m20, m22)=>roll
m01 / m11 = -cosxsinz / coszcosx = -sinz / cosz = -tanz, z = -atan2(m01, m11)=>yaw

3、yaw/pitch/roll的坐标系转换

设数据源的坐标系如下图(同2的计算),

数据目标的坐标系如下(都是右手坐标系),

则yaw的旋转与上一步计算相反,有

x =asin(m21)=>pitch

y = atan2(m01, m11)=>yaw

z = -atan2(m20, m22)=>roll

4、代码示例

import numpy as np
import math as math
from autolab_core import RigidTransform# pip install autolab_core# 写上用四元数表示的orientation和xyz表示的position
orientation = {'y': -0.6971278819736084, 'x': -0.716556549511624, 'z': -0.010016582945017661, 'w': 0.02142651612120239}
position = {'y': -0.26022684372145516, 'x': 0.6453529828252734, 'z': 1.179122068068349}rotation_quaternion = np.asarray([orientation['w'], orientation['x'], orientation['y'], orientation['z']])
translation = np.asarray([position['x'], position['y'], position['z']])
# 这里用的是UC Berkeley的autolab_core,比较方便吧,当然可以自己写一个fuction来计算,计算公式在https://www.cnblogs.com/flyinggod/p/8144100.html
m = RigidTransform(rotation_quaternion, translation)r = m.rotation# pitch, yaw, roll的计算公式
pitch = math.asin(r[2, 1])
yaw = -math.atan2(r[0, 1], r[1, 1])
roll = -math.atan2(r[2, 0], r[2, 2])pitch_ang = pitch * 180.0 / 3.1415926
yaw_ang = -yaw * 180.0 / 3.1415926 # yaw取反
roll_ang = roll * 180.0 / 3.1415926
print('----- ji result -------')
print('pitch: %f' % pitch_ang )
print('yaw: %f' % yaw_ang)
print('roll_ang: %f' % roll_ang)

yaw(pan)/pitch(tilt)/roll计算相关推荐

  1. IMU 计算 yaw,pitch 和roll

    IMU 计算 yaw,pitch 和roll IMU是机器人领域中一种很重要的传感器,可以用于许多不同的用途.在,视觉slam,机器人导航,VR头盔中都有它的身影. 不管要搞VSLAM还是机器人导航, ...

  2. 四元数转yaw、pitch、roll

    此计算公式基于内在旋转(intrinsic)与泰特-布莱恩角(Tait–Bryan angles). yaw = atan2(2.0*(qy*qz + qw*qx), qw*qw - qx*qx - ...

  3. 机器人行业中我们常说的roll、yaw、pitch是什么?

    标系建立: 载体坐标系与载体坐标系的关系是三个Euler角:yaw,pitch,roll,反应了载体相对基准面的姿态. pitch是围绕X轴旋转,也叫做俯仰角.当X轴的正半轴位于过坐标原点的水平面之上 ...

  4. 「 机器人学 」“姿态角 roll、yaw、pitch”讲解

    一.前言 载体坐标系与载体坐标系的关系是三个Euler角:yaw,pitch,roll,反应了载体相对基准面的姿态. 二.姿态角讲解 1. pitch是围绕X轴旋转,也叫做俯仰角.当X轴的正半轴位于过 ...

  5. UE4_关于Roll,Yaw,Pitch,Rotator的理解

    Roll,Yaw,Pitch,Rotator的理解: 1 Roll 是自身旋转 2 Yaw 是左右拐弯 3 pitch 是上下颠动

  6. 欧拉角Pitch、Roll、Yaw介绍

    欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度.这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋 ...

  7. cesium 获取当前屏幕视角的三维参数,x、y、z、heading、pitch、roll

    /*** 获取当前相机视角相关参数*/getCamera () {// console.log(this.modelConfig,'config')const camera = global3D.vi ...

  8. [UE4][BluePrint] 钳制 PawnController 的 Rotation Yaw 和 Pitch

    1. 竖直方向(Pitch) 1.1 总览 变量: 变量配置 完整蓝图: https://blueprintue.com/blueprint/mgyk1__5/ 截图: 1.2 分析 PawnCont ...

  9. 机器人中的yaw/pitch/roll

    1.yaw(pan)/pitch(tilt)/roll 我认为,yaw/pitch/roll绕哪个轴旋转,是要看坐标系的朝向的,如果坐标系的轴如下图,则对应关系是yaw(z轴).pitch(x轴).r ...

最新文章

  1. sublime设置tab为四个空格
  2. Eclipse安装Database Development插件。
  3. mysql数据库周考_周考三
  4. leetcode1144. 递减元素使数组呈锯齿状
  5. shuffle洗牌算法java_js打乱一个数组 的 洗牌(shuffle )算法
  6. WEB UI基础八:链接跳转到标准的工单界面
  7. 在Windows Mobile上隐藏你的应用程序
  8. 【TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】
  9. 操作文件的类 File demo3 小练习
  10. 大企崛起的唯一“真相”!
  11. ESP8266 (WEMOS D1 R1 ) + L9110S_FOUR 驱动直流电机
  12. 体系结构学习笔记二:指令间相关性、相关性导致的冒险和隐藏冒险的方法(持续更新)
  13. Unity3D|Animation:动画位置与对象位置不一致如何改正
  14. Need和Want有何不同?
  15. (七)苏世民:我的经验和教训:决策(34)
  16. 项目经理到底要不要考取PMP证书呢?
  17. LeetCode数据库题目汇总一(附答案)
  18. serialize()序列化
  19. 绿色版的谷歌浏览器chrome
  20. 数字化转型六图法:算法地图

热门文章

  1. 解决align-items失效,无法居中问题
  2. 《时空穿越者》--失败男人的幻觉
  3. obs媒体源没有声音_最常用的直播软件OBS使用教程图解
  4. HTML input 文本框添加提示文字的方法
  5. 《张量》的另一种理解
  6. 用特种兵椰子汁替代酒水,这次新人训练营完美收官
  7. Promise中的promisify
  8. git pull(拉取) push(上传)详解
  9. IDEA 项目结构出现 0%classes,0% lines covered解决方法
  10. 并发编程系列---【线程池七大核心参数】