咸阳住房和城乡建设局网站,慧聪网登录,wordpress目录重写,滨海住房和城乡建设局网站基础理解#xff0c;参照#xff1a;https://www.cnblogs.com/Estranged-Tech/p/16903025.html
欧拉角、万向节死锁#xff08;锁死#xff09;理解
一、欧拉角理解
举例讲解
欧拉角用三次独立的绕确定的轴旋转角度来表示姿态。如下图所示 经过三次旋转#xff0c;旋…基础理解参照https://www.cnblogs.com/Estranged-Tech/p/16903025.html
欧拉角、万向节死锁锁死理解
一、欧拉角理解
举例讲解
欧拉角用三次独立的绕确定的轴旋转角度来表示姿态。如下图所示 经过三次旋转旋转角度分别为、和 由初始的坐标系得到了最终的‴‴‴ 坐标系。这就是欧拉角来表示姿态的方法。 如图所示为航空航天中常用的欧拉角图中的、和 对应于上图中的、和 。
顺规、内旋与外旋
上面所举的例子中旋转的顺序是按照 −− 的顺序来进行旋转的并且每一次旋转都是绕自身轴运动轴进行的 这只是欧拉角的一种表示方式。欧拉角共有12种表示方式。
顺规 顺规即欧拉角三次转动的顺序规定欧拉角一共有12种顺规
三个轴只用两个的Proper Euler angles (z−x−z, x−y−x, y−z−y, z−y−z, x−z−x, y−x−y
三个轴全都用的Tait-Bryan angles (x−y−z, y−z−x, z−x−y, x−z−y, z−y−x, y−x−z上文举例所用的 −−是三个轴都用的一种顺规即 先绕轴旋转再绕轴旋转最后绕轴旋转。、
内旋与外旋 根据绕旋转轴的不同可以分为内旋和外旋。
内旋 Intrinsic rotations绕运动轴
外旋 Extrinsic rotations绕固定轴上文所举的例子每次旋转都是绕上一次旋转所新产生的坐标轴旋转的这句话有点绕比如第二次旋转绕的是″而不是固定的坐标轴。所以是绕运动轴即内旋。
如下图所示每一次旋转都是绕蓝色的固定轴旋转
如下图所示每一次旋转都是绕红色第一张图、绿色第二张图、紫色第三张图的运动轴旋转 在绕轴旋转的时候顺规有12种内外旋有2种但是一般情况下欧拉角都是说的绕自身轴运动轴旋转即 内旋 。所以欧拉角共有 1×1212种表示方式。
小结 首先说一个很有意思却很不直观的结论三次绕固定轴旋转的最终姿态和以相反顺序三次绕运动轴旋转的最终姿态相同。 一般情况下每一个领域有自己默认的欧拉角定义也就是24种的其中之一。比如经典力学中使用量子力学使用的是航空航天使用或。所以在跨行业或者跨模块协作的时候一定要问清楚对方是哪一种欧拉角。
二、数学公式 三、万向节死锁理解
说明 欧拉角表示姿态的时候会出现万向节死锁的情况当我使用传感器维特智能WT901c-485读取角度的时候在的顺规下当pitch角度为90或-90的时候roll和yaw角度会乱飘这就是遇到了万向节的死锁。不同的顺规死锁的情况不一样本文仅以说明死锁的情况。形象表示 我们以手机为例说明一下万向节死锁的情况 注意欧拉角表示姿态时只能旋转三次这是理解死锁的前提 首先这是一个手机我们对其建立坐标系平行于手机长边是 轴平行于手机短边是 轴垂直于桌面是 轴。我们按照 --的顺规对手机进行旋转 1.首先先绕 轴旋转得到 ′′′坐标系如图中绿色所示 2.然后对 ′′′ 绕 ′轴旋转-90°得到 ″″″ 如图中蓝色所示此时旋转后的 ″ 轴轴与旋转之前的 ′轴重合 3.最后将 ″″″ 绕 ″轴旋转得到 ‴‴‴ 坐标系如图中黄色所示。 这时候重点来了
我们发现这样旋转过后手机的长边是与桌面地面垂直的手机的短边是与桌面地面平行的。并且无论第一步转 轴转了多少度第三步转 轴转了多少度手机长边与短边都是这个状态。 这就是欧拉角表示角度时的“万向节死锁”现象按理说欧拉角可以表示三个自由度即三个方向的旋转。但是在这种情况下只要±90°无论 与怎么取值手机最终的长边都会与地面垂直这就好像少了一个自由度只有2个自由度所以称之为“万向节死锁”。
那么为什么会出现这种情况呢
一种感性的理解是这样我们在第二步旋转的时候将旋转后的 ″ 轴与旋转之前的 ′ 轴重合这个我在上面旋转演示的时候加粗说明了。而第一步旋转是绕 ′ 轴旋转的第三步旋转是绕 ″轴旋转的所以两轴重合意味着两次旋转绕的是同一个轴所以说三个自由度变为了两个自由度。
数学解释
欧拉角与旋转矩阵转换中的相关问题
先出结论
# ea(人为给定的)转rotmat 再转ea后两个ea的值存在不一致且含义不一致主要出现在y角度在一定范围时时但两个不同的ea可以得到相同的旋转矩阵。
# rotmat转ea再转rotmat前后rotmat一致再转ea 前后ea含义是一致的说明相同的rotmat可以获得一致的ea
# rotmat转ea再转rotmat 前后rotmat是一致的# 以上说明rotmat到ea是多射但使用函数进行rotmat转换ea时可以获得一致的ea结果ea到rotmat是单射。以上说明虽存在多设情况但不影响我们场景的使用。再验证下import torch
import mathdef euler_to_rotation_matrix(euler_angles):将欧拉角转为旋转矩阵。欧拉角采用 Z-Y-X顺序 的内旋旋转与X-Y-Z 的外旋一致参数euler_angles欧拉角形状为 (batch_size, 3)返回rotation_matrix旋转矩阵形状为 (batch_size, 3, 3)# 将欧拉角转为弧度x, y, z euler_angles[:, 0], euler_angles[:, 1], euler_angles[:, 2]x, y, z x * torch.pi / 180, y * torch.pi / 180, z * torch.pi / 180# 计算旋转矩阵c_x, s_x torch.cos(x), torch.sin(x)c_y, s_y torch.cos(y), torch.sin(y)c_z, s_z torch.cos(z), torch.sin(z)rotation_matrix_x torch.stack([torch.ones_like(c_x), torch.zeros_like(c_x), torch.zeros_like(c_x),torch.zeros_like(c_x), c_x, -s_x,torch.zeros_like(c_x), s_x, c_x], dim1).reshape(-1, 3, 3)rotation_matrix_y torch.stack([c_y, torch.zeros_like(c_y), s_y,torch.zeros_like(c_y), torch.ones_like(c_y), torch.zeros_like(c_y),-s_y, torch.zeros_like(c_y), c_y], dim1).reshape(-1, 3, 3)rotation_matrix_z torch.stack([c_z, -s_z, torch.zeros_like(c_z),s_z, c_z, torch.zeros_like(c_z),torch.zeros_like(c_z), torch.zeros_like(c_z), torch.ones_like(c_z)], dim1).reshape(-1, 3, 3)rotation_matrix rotation_matrix_z rotation_matrix_y rotation_matrix_xreturn rotation_matrixdef rotation_matrix_to_euler(rotation_matrix):将旋转矩阵转为欧拉角, 欧拉角采用 Z-Y-X顺序 的内旋旋转与X-Y-Z 的外旋一致参数rotation_matrix旋转矩阵形状为 (batch_size, 3, 3)返回euler_angles欧拉角形状为 (batch_size, 3)# 计算欧拉角sy torch.sqrt(rotation_matrix[:, 0, 0] ** 2 rotation_matrix[:, 1, 0] ** 2)x torch.atan2(rotation_matrix[:, 2, 1], rotation_matrix[:, 2, 2])y torch.atan2(-rotation_matrix[:, 2, 0], sy)z torch.atan2(rotation_matrix[:, 1, 0], rotation_matrix[:, 0, 0])# 将弧度转为角度x, y, z x * 180 / torch.pi, y * 180 / torch.pi, z * 180 / torch.pi# 组合ea torch.stack((x, y, z), dim1)return eaea1torch.tensor([[ 0., 75., 90.],[ 0., 78., 90.],[ 0., 105., 90.],[ 0., 102., 90.],[ 0., -75., 90.],[ 0., -105., 90.],[ 0., -65., 90.],[ 0., -125., 90.]])
rm1euler_to_rotation_matrix(ea1)ea2rotation_matrix_to_euler(rm1)print(有false)
print(ea1ea2) # 有falserm2euler_to_rotation_matrix(ea2)
print(全true)
print(rm1-rm2 0.0001) # q全true 文章转载自: http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn http://www.morning.nckzt.cn.gov.cn.nckzt.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn http://www.morning.gfqjf.cn.gov.cn.gfqjf.cn http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn http://www.morning.gagapp.cn.gov.cn.gagapp.cn http://www.morning.bsjpd.cn.gov.cn.bsjpd.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.cwpny.cn.gov.cn.cwpny.cn http://www.morning.aishuxue.com.cn.gov.cn.aishuxue.com.cn http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn http://www.morning.slwfy.cn.gov.cn.slwfy.cn http://www.morning.cmcjp.cn.gov.cn.cmcjp.cn http://www.morning.bqrd.cn.gov.cn.bqrd.cn http://www.morning.pwmm.cn.gov.cn.pwmm.cn http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.tgczj.cn.gov.cn.tgczj.cn http://www.morning.jlxqx.cn.gov.cn.jlxqx.cn http://www.morning.rglzy.cn.gov.cn.rglzy.cn http://www.morning.zfkxj.cn.gov.cn.zfkxj.cn http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn http://www.morning.gxcym.cn.gov.cn.gxcym.cn http://www.morning.xnfg.cn.gov.cn.xnfg.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn http://www.morning.htmhl.cn.gov.cn.htmhl.cn http://www.morning.hlhqs.cn.gov.cn.hlhqs.cn http://www.morning.rglp.cn.gov.cn.rglp.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.tkchm.cn.gov.cn.tkchm.cn http://www.morning.czgfn.cn.gov.cn.czgfn.cn http://www.morning.dcccl.cn.gov.cn.dcccl.cn http://www.morning.gypcr.cn.gov.cn.gypcr.cn http://www.morning.qytpt.cn.gov.cn.qytpt.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn http://www.morning.tndxg.cn.gov.cn.tndxg.cn http://www.morning.knzmb.cn.gov.cn.knzmb.cn http://www.morning.smkxm.cn.gov.cn.smkxm.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.hgbzc.cn.gov.cn.hgbzc.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.dbsch.cn.gov.cn.dbsch.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.jpdbj.cn.gov.cn.jpdbj.cn http://www.morning.qgkcs.cn.gov.cn.qgkcs.cn http://www.morning.fpxms.cn.gov.cn.fpxms.cn http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.wqtzs.cn.gov.cn.wqtzs.cn http://www.morning.jqrp.cn.gov.cn.jqrp.cn http://www.morning.ampingdu.com.gov.cn.ampingdu.com http://www.morning.nrbqf.cn.gov.cn.nrbqf.cn http://www.morning.kmcby.cn.gov.cn.kmcby.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.znqfc.cn.gov.cn.znqfc.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.tsmxh.cn.gov.cn.tsmxh.cn