坐标系

右手坐标系:把右手拇指食指中指伸直并正交,拇指X,食指Y,中指Z。一般无特殊说明,都是右手坐标系。

右手坐标系的旋转正方向:从轴的正方向看向原点,逆时针方向即是旋转正向。或者,伸出右手,拇指指向旋转轴正向,四指弯曲,四指指向的旋转方向就是正向。

世界坐标系之NED坐标:X轴向北,Y轴向东,Z轴向下

世界坐标系之ENU坐标:X轴向东,Y轴向北,Z轴向上

世界坐标系之NWU坐标:X轴向北,Y轴向西,Z轴向上(这个坐标系最符合人类想象)

自身坐标系之FRD坐标:X轴向前,Y轴向右,Z轴向下。

自身坐标系之FLU坐标:X轴向前,Y轴向左,Z轴向上。(这个坐标系最符合人类想象)

FRD和NED配合:当自身面北平放的时候,FRD坐标系和NED坐标系重合。

FLU和ENU配合:当自身面东平放的时候,FLU坐标系和ENU坐标系重合。

FLU和NWU配合:当自身面北平放的时候,FLU坐标系和NWU坐标系重合。(最佳配合)

建议:当做一个系统的时候,要先统一系统内部的坐标系,优先统一到FLU+NWU。输入的坐标,在输入的时候,就要转为内部坐标系;输出的坐标,在输出的时候,根据用户的要求转为相应的外部坐标系。

yaw, pitch, roll

yaw:偏航角。是沿世界坐标系的Z轴旋转的角度。0表示面向世界坐标系的X轴正向。

在NED坐标下,0度是面向正北。在ENU做坐标下,0度是面向正东。

面向正北,在NED下,是0度,在ENU下,则是PI/2弧度。

面向正北偏东1度(0.01745弧度),在NED坐标系下,yaw=0.01745,在ENU坐标系中,yaw=PI/2-0.01745

所以,可以推算出来,yaw从END坐标系转到ENU坐标系的转换公式为:yaw_ENU = PI/2 - yaw_END

pitch:俯仰角。就是抬头或低头,和大地水平面的夹角。换句话说,是沿自身坐标系(X轴向前的坐标系)的Y轴旋转的角度。

抬头1度,在FRD坐标系下,pitch=0.01745,在FLU坐标系中,pitch=-0.01745。

所以,可以推算出来,pitch从FRD坐标系转到FLU坐标系的转换公式为:pitch_FLU = - pitch_FRD

roll:翻滚角。就是左倾或右倾,和大地水平面的夹角。换句话说,是沿自身坐标系(X轴向前的坐标系)的X轴旋转的角度。

右倾1度,在FRD坐标系下,roll=0.01745,在FLU坐标系中,roll=0.01745。

所以,可以推算出来,roll从FRD坐标系转到FLU坐标系的转换公式为:roll_FLU = - roll_FRD

注意,不同的惯导设备,采用的坐标系是不同的,有的用FRD,有的用FLU。例如ROS就缺省使用FLU,如果需要将某个FRD设备的数据发布到ROS,就需要做一个转换。

欧拉角

用3次连续转角来描述2个坐标系之间的旋转关系。

设xyz 为全局坐标,保持不动

设XYZ 为局部坐标,随着物体一起运动

那么zXZ的欧拉角为:

1) 物体绕全局的 z 轴旋转 alpha 角

2) 继续绕自己的 X 轴旋转 beta 角

3) 最后绕自己的 Z 轴旋转 gamma 角

Z-Y-X欧拉角

参考 Introduction to Robotics Machanics and Control.pdf P43

ZYX欧拉角是yaw-pitch-roll次序。

1) 先沿着Z轴旋转一个yaw角

2) 再沿着自己的Y轴旋转一个pitch角

3) 再沿着自己的X轴旋转一个roll角

设R为3*3的旋转矩阵,则R = R_yaw * R_pitch * R_roll

R_yaw是旋转后z不变的阵,R_pitch是旋转后y不变的阵,R_roll是旋转后x不变的阵。

求一个点在另一个坐标系中的坐标

参考 Introduction to Robotics Machanics and Control.pdf P27 Mappings involving general frames 公式2.19

设有2个坐标系 A 和 B,现在有一个点P,它在B坐标系中的坐标是P_b,那么求它在A坐标系中的坐标P_a。

已知B的原点在A坐标系中的坐标是O_ba,已知B相对于A的旋转矩阵是R_ab。

那么,我们可以先保持B的原点不动,把B旋转为B1,和A同向。此时该点P的坐标在B1里面是P_b1。而P_a = P_b1 + O_ba。

所以有 P_a = R_ab P_b + O_ba(2.17)

以上的公式,可以写成更酷的一个公式:

[P_a, 1]T = T_ab [P_b, 1] (2.19)

其中,T_ab为1个4*4的矩阵,左上角是R_ab,右上角是O_ba,左下角是 0 0 0,右下角是1。

四元数用于旋转

四元数有x,y,z,w这4个分量。错误的理解是:x,y,z表示旋转轴,w表示旋转角度。但实际上,如果ax,ay,az是旋转轴向量,theta是旋转角度的话,四元数实际是:

w = cos(theta/2)

x = ax * sin(theta/2)

y = ay * sin(theta/2)

z = az * sin(theta/2)

这样定义很不直观,但好处是可以可以插值。

给定两个四元数p和q,分别代表旋转P和Q,则乘积pq表示两个旋转的合成(即旋转了Q之后再旋转P)

举个例子,我们要把一个enu的航向角yaw,转成nwu的yaw,就可以直接用一个表示旋转的四元数乘它既可:

tf::Quanterion enu2nwu;

enu2nwu.setRPY(0, 0, -M_PI_2); // 以目标坐标nwu为基准,看源坐标enu在目标坐标中,是沿z轴正方向旋转了-PI/2。

yaw_nwu = enu2nwu * yaw_enu; // yaw本身表示一个旋转,左边乘以enu2nwu,表示先旋转坐标系得到新的坐标系,然后再旋转本身。

yaw公式_坐标系和yaw, pitch, roll等基础概念相关推荐

  1. grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...

    此专栏文章随时更新编辑,如果你看到的文章还没写完,那么多半是作者正在更新或者上一次没有更新完,请耐心等待,正常的频率是每天更新一篇文章. 该文章是"深度学习(Deep Learning)&q ...

  2. pyqt5程序发生错误不中断_关于Windows页面错误的一些基础概念

    很少被开发者关注的页面错误 今天我们会说说关于虚拟内存处理中最为常见的一个问题:页面错误(Page Fault). 什么情况下会发生一个页面错误呢? 当应用程序请求的页面地址不在当前的内存驻留页面(M ...

  3. python核心理念_《三天搞定Python基础概念之第一天》中文版

    前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用.实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原 ...

  4. ce查找人物基址_关于CE找基址的一些基础概念

    本文纯粹是和想学习这方面知识的新手做简单的技术讨论(咱也算和软件逆向工程沾边了). 作为一个文科生,"基址"到底是个什么东西,这个概念我就折腾了很久,做培训的老师们不会详细讲,网上 ...

  5. 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图

    文章目录 ①. 电商系统基本模式 ②. 分布式基础概念 ③. 微服务架构图详解 ④. 微服务划分图 ①. 电商系统基本模式 ①. B2C模式 就是我们经常看到的供应商直接把商品卖给用户,即" ...

  6. learnpythonthehardway中文版_《三天搞定Python基础概念之第一天》中文版

    前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用.实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原 ...

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

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

  8. Yaw Pitch Roll的变换顺序问题

    今天花了不少时间去理解Yaw Pitch Roll的变换顺序 比如给定一个旋转(15, 30, 60),那么物体应该先围绕哪个轴转呢?总得有个顺序吧? 解决这个问题的第一个天坑就是:网上的资料坐标系都 ...

  9. UE中FRotator和Pitch(Roll,Yaw)以及相对朝向的关系

    前几天,看人宅的塔防视频教程,他使用了塔的成员变量rotator.我可能在哪里少写了,所以,老是朝向不对. 跟踪调试了下,发现FRotator是由pitch,roll,yaw三个部分组成,而pitch ...

最新文章

  1. 用户信息检索另一台服务器,客户机上一用户访问另一台机器上的informix数据库...
  2. java环境变量用不用jre_为什么安装jdk时,会安装两个jre?不用配置jre的环境变量...
  3. 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)
  4. Ecshop:后台添加新功能栏目以及管理权限设置
  5. 集合之ArrayList(含JDK1.8源码分析)
  6. 1634C. OKEA
  7. python控制语句字符串截取_菜鸟python---流程控制语句
  8. [渲染层错误] multipolyline.styles: 样式id_【译】关于 SPA,你需要掌握的 4 层
  9. MFC开发IM-第八篇、调整各个控件的上下tab顺序
  10. JS实践与写博客-序
  11. 林权抵押贷款政策出台 将实现林业资源变资本
  12. android ui设计 面试问题,2019新版UI设计面试题汇总附答案
  13. win10修改dns服务器命令,win10怎么修改DNS服务器?win10修改DNS服务器的方法
  14. Busybox 1.17.4 编译及错误解决方案
  15. Oracle ORA-00955名称已由现有对象使用
  16. kettle启动时报错:Maximum wait time of 10 seconds exceed while acquiring lock
  17. 2021支付宝集五福活动开启啦,集卡攻略来啦
  18. MySQL简单入门教程
  19. Struts框架实战精讲 struts1(2)- 登录案例
  20. 清华大学胡事民是计算机视觉,清华团队将Transformer用到3D点云分割上后,效果好极了丨开源...

热门文章

  1. Draw Triangel 1. HackerRank SQL Problem
  2. Android高新面试题2017汇总(带答案)
  3. php 公众号微信支付流程,微信公众号支付完整流程案例
  4. Linux的基本指令(图文并茂,一目了然)
  5. 关于处理非法集资,非法中介屡禁不绝的一些建议
  6. 云计算(二)——云计算、大数据与人工智能三者的关系【转载】
  7. C++20 协程coroutine
  8. 【备战校招】阅文集团Java实习生笔试题
  9. goJs 关于Modified和isModified
  10. SnackBar 简单使用