【四足机器人】学习笔记 欧拉角与旋转矩阵之间的转化关系

【四足机器人】学习笔记 欧拉角与旋转矩阵之间的转化

在研究四足机器人站立姿态的时候,需要将通过IMU模块采集到的欧拉角数据信息转变为旋转矩阵R,关于如何将获取的欧拉角转换为旋转矩阵,博主在这里进行了说明。

欧拉角定义:以经典直角坐标系为例,经典直角坐标系包含x轴、y轴、z轴,而绕这三个轴旋转的的角度总称为欧拉角

我们通过IMU模块可以得到三个角度信息,分别是Roll(翻滚角),Pitch(俯仰角)和Yaw(偏航角),翻滚角、俯仰角和偏航角的定义如下:

定义物体运动的右、上、前三个方向构成右手系
绕上方向轴的角度是Yaw偏航角
绕右方向轴的角度是Pitch俯仰角
绕前方向轴的角度是Roll翻滚角

关于如何在ubuntu16.04下通过ROS快速有效地得到IMU数据信息,博主在之前的文章中已经说明过了,链接如下,需要的小伙伴可以去查看
链接: https://blog.csdn.net/weixin_45417246/article/details/115801106.

一、基础旋转矩阵

在了解欧拉角与旋转矩阵之间的转换关系之前,什么是右手坐标系,什么是左手坐标系,它们的定义如下图
在这里插入图片描述
基础旋转矩阵的定义是绕某单一坐标轴进行旋转时对应的矩阵,绕轴旋转时,以顺时针方向为正,但是进行旋转时,所朝向的方向一定为坐标原点,根据得到的欧拉角(p,h,b)信息,p,h,b对应于Roll(翻滚角),Pitch(俯仰角)和Yaw(偏航角),则可以计算得到在右手坐标系下的基础旋转矩阵

//在右手系中绕X轴旋转p° 对应的矩阵Rx
        | 1    0       0 |
  Rx=   | 0   cosp  -sinp|
        | 0   sinp   cosp|
//在右手系中绕Y轴旋转h° 对应的矩阵Ry
        | cosh   0   sinh|
  Ry=   |  0     1     0 |
        |-sinh   0   cosh|
//在右手系中绕Z轴旋转b° 对应的矩阵Rz
        |cosb  -sinb   0 |
  Rz=   |sinb   cosb   0 |
        |  0     0     1 |

同理,在左手坐标系下的基础旋转矩阵包括以下三个矩阵

//在左手系中绕X轴旋转p° 对应的矩阵Rx
        | 1     0        0 |
  Rx=   | 0    cosp    sinp|
        | 0   -sinp    cosp|
//在左手系中绕Y轴旋转h° 对应的矩阵Ry
        | cosh   0   -sinh|
  Ry=   |  0     1      0 |
        | sinh   0    cosh|
//在左手系中绕Z轴旋转b° 对应的矩阵Rz
        |cosb    sinb   0 |
  Rz=   |-sinb   cosb   0 |
        |  0      0     1 |

对于在经典直角坐标系中向量的单一旋转,一般只需要乘以对应的旋转矩阵就可以得到旋转后的向量

  AB=[0,0,1| //向量AB
以右手坐标系为例,进行变换,绕x轴顺时针旋转90°
        | 1   0   0 |
  Rx=   | 0   0  -1 |
        | 0   1   0 |
  AB=AB*Rx=[0, 1, 0]
以右手坐标系为例,进行变换,绕y轴顺时针旋转90°
        | 0   0   1|
  Ry=   | 0   1   0|
        |-1   0   0|
  AB’‘=AB*Ry=[-1, 0, 0]
  以右手坐标系为例,进行变换,绕z轴顺时针旋转90°
        |0  -1   0 |
  Rz=   |1   0   0 |
        |0   0   1 |
  AB’’‘=AB*Ry=[0, 0, 1]

通过一个最简单的旋转式子,可以看到计算结果符合基础旋转矩阵的定义,左手坐标系同理。

二、组合旋转矩阵

组合旋转矩阵的定义是多次旋转组合对应的矩阵,参考旋转变换的性质,物体绕轴旋转对应的矩阵具有可累乘的性质,即多一次旋转就是多一次矩阵乘法。
以Z-X-Y顺规的欧拉角对应的组合矩阵就是R = RzRxRy,XYZ的顺序决定了旋转矩阵的定义式,当欧拉角的顺规改变时,旋转矩阵的计算公式也需相应改变。在坐标变换关系中,顺规的顺序组合一共有12种,分别是XYZXZYYZXYXZZXYZYXXYXYXYZXZXZXYZYZYZ,相对应的旋转矩阵也有12种。

//欧拉角(p,h,b)在右手系中对应的旋转矩阵(Z-X-Y顺规)
               |cosbcosh-sinbsinpsinh  -sinbcosp  cosbsinh+sinbsinpcosh|
R = Rz*Rx*Ry = |sinbcosh+cosbsinpsinh   cosbcosp  sinbsinh-cosbsinpcosh|
               |     -cospsinh            sinp           cospcosh      |
//欧拉角(p,h,b)在右手系中对应的旋转矩阵(Z-X-Y顺规)
                |cosbcosh+sinbsinpsinh   sinbcosp  -cosbsinh+sinbsinpcosh|
R1 = Rz*Rx*Ry = |-sinbcosh+cosbsinpsinh  cosbcosp   sinbsinh+cosbsinpcosh|
                |      cospsinh            -sinp           cospcosh      |

这样我们就得到了顺规对应的旋转矩阵,实现了把IMU模块得到的欧拉角信息转换为旋转矩阵的形式。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值