机器人--欧拉角--旋转矩阵

基础概念

欧拉角的内旋和外旋

旋转矩阵和变换矩阵

欧拉角---->旋转矩阵

转换公式推导

旋转矩阵就是交接确认绕各个轴旋转所得的旋转矩阵相乘之后得到的 的一个3*3的矩阵而已。

我们要推导的案例是 ZYX欧拉角(内旋) 的转换公式:

  • 旋转顺序:先绕Z轴转 rz得到旋转矩阵R_z,再绕Y轴转 ry旋转矩阵R_y,最后绕X轴转 rx旋转矩阵R_x

  • 对应旋转矩阵:R = R_z(rz) * R_y(ry) * R_x(rx)

  • 已知旋转矩阵元素 r11, r12, ..., r33,求 rx, ry, rz

基本旋转矩阵:

复制代码
# 绕X轴旋转rx
R_x(rx) = [1,     0,       0;
           0, cos(rx), -sin(rx);
           0, sin(rx),  cos(rx)]

# 绕Y轴旋转ry  
R_y(ry) = [cos(ry), 0, sin(ry);
              0,    1,    0;
          -sin(ry), 0, cos(ry)]

# 绕Z轴旋转rz
R_z(rz) = [cos(rz), -sin(rz), 0;
           sin(rz),  cos(rz), 0;
               0,       0,    1]

组合旋转矩阵:

R = R_z(rz) * R_y(ry) * R_x(rx)

让我们一步步计算这个乘积。

得到完整的旋转矩阵:

复制代码
R = [r11, r12, r13;
     r21, r22, r23;
     r31, r32, r33]
     
其中:
r11 = cos(rz)*cos(ry)
r12 = cos(rz)*sin(ry)*sin(rx) - sin(rz)*cos(rx)
r13 = cos(rz)*sin(ry)*cos(rx) + sin(rz)*sin(rx)

r21 = sin(rz)*cos(ry)
r22 = sin(rz)*sin(ry)*sin(rx) + cos(rz)*cos(rx)
r23 = sin(rz)*sin(ry)*cos(rx) - cos(rz)*sin(rx)

r31 = -sin(ry)
r32 = cos(ry)*sin(rx)
r33 = cos(ry)*cos(rx)

旋转矩阵--->欧拉角

转换公式推导

旋转矩阵就是交接确认绕各个轴旋转所得的旋转矩阵相乘之后得到的 的一个3*3的矩阵而已,所以得到这个矩阵之后,只需要逆运算就可以算的三个欧拉角。

反向求解欧拉角:

现在我们从矩阵元素反向求解 rx, ry, rz

1. 求解 ry

r31 = -sin(ry) 得:

复制代码
sin(ry) = -r31

但是仅凭这个无法唯一确定 ry,因为 sin(ry) = -r31 有两个解(ry 和 π-ry)。

我们需要更多信息。观察 r11r21

复制代码
r11 = cos(rz)*cos(ry)
r21 = sin(rz)*cos(ry)

于是:

复制代码
r11² + r21² = cos²(rz)*cos²(ry) + sin²(rz)*cos²(ry)
           = cos²(ry)*(cos²(rz) + sin²(rz))
           = cos²(ry)

所以:

复制代码
cos(ry) = ±√(r11² + r21²)

结合 sin(ry) = -r31,我们可以用 atan2 函数:

复制代码
ry = atan2(-r31, √(r11² + r21²))

这里用 atan2(y, x) 同时考虑了正弦和余弦,给出了正确的象限。

2. 求解 rz

相关推荐
具身智能之心19 小时前
Sunday的ACT-1分享!未使用任何机器人本体数据训练的VLA,解决超长时程任务
机器人·vla模型·长时程任务
阿基米东19 小时前
基于 C++ 的机器人软件框架(具身智能)开源通信库选型分析
c++·机器人·开源
辰尘_星启21 小时前
[最优控制]MPC模型预测控制
线性代数·机器学习·机器人·概率论·控制·现代控制
啵啵鱼爱吃小猫咪1 天前
机器人工具箱Matlab Robotics Toolbox:下载、安装及使用指南
开发语言·matlab·机器人
企业老板ai培训1 天前
从九尾狐AI案例看智能矩阵的AI获客架构设计
人工智能·线性代数·矩阵
aigcapi1 天前
2026年企业级矩阵系统架构评测:矩阵系统哪家好?
线性代数·矩阵·系统架构
byzh_rc1 天前
[数学建模从入门到入土] 预测模型
人工智能·深度学习·线性代数·数学建模·回归·ar
林深现海1 天前
二、如何在 ROS 2 仿真中实现四足机器人的 VLA(视觉-语言-动作)控制链路
linux·vscode·yolo·ubuntu·机器人
星辰亦晓1 天前
px4+ubuntu22.04+ros2开发记录
机器人·无人机
好奇龙猫1 天前
大学院-筆記試験練習:线性代数和数据结构(18)
数据结构·线性代数