第8期 从零造一台 ESP32 自平衡小车|欧拉角计算

1 欧拉角概念

欧拉角(Euler Angles)是用三个独立的角度来描述三维空间中刚体姿态(朝向)的一种方法,得名于数学家欧拉。把一个三维旋转分解为绕三个坐标轴依次旋转的组合,这三个旋转角就是欧拉角。以最常用的 ZYX (泰特-布莱恩角(Tait-Bryan)顺序(偏航→俯仰→滚转) 为例,三个角的标准取值范围如下:

角度

符号

范围(角度制)

范围(弧度制)

X 滚转角 Roll

φ

(-180°, +180°]

(-π, +π]

Y 俯仰角 Pitch

θ

[-90°, +90°]

[-π/2, +π/2]

Z 偏航角 Yaw

ψ

(-180°, +180°]

(-π, +π]

致命缺点:万向锁(Gimbal Lock)

当 Pitch 俯仰角达到 ±90° 时,X 轴、Z 轴旋转会重合,丢失一个自由度,姿态计算错乱、角度跳变。

举例子:无人机机头垂直朝上(Pitch=90°),此时左右转向(Yaw)和机身侧翻(Roll)变成同一个旋转,无法区分,数据剧烈抖动。

解决办法:高端姿态系统改用四元数(Quaternion),MPU DMP 同时输出四元数,规避万向锁。

2 三角函数arctan 与 arctan2 的区别

返回值:(-90°-+90°)只能分辨 1、4 象限。

返回值:(-180°-+180°)可以分辨全部 4 个象限

工程、机器人、MPU6050 姿态解算几乎都用 arctan2

3 MPU6050 欧拉角计算

前提条件:假设小车静止 MPU6050 Y轴方向是小车前后方向, X 轴是小车的车左右方向,加速度计测量的只有重力,没有运动加速度。实际的欧拉角计算公式要根据MPU6050实际安装方向调整。

陀螺仪积分求角度(纯积分,高频好,随时间漂移):

陀螺仪输出是角速度,角度 = 角速度对时间积分 

(绕 Y 轴)

(饶 X 轴)

(饶 Z 轴)

缺点:陀螺仪零点偏移,几分钟角度就飘到几十度,不能单独使用

加速度计直接计算角度(纯加速度,噪声大,无积分漂移,震荡严重):

利用重力矢量,只算 Pitch、Roll,加速度计无法得到 Yaw(重力没有水平分量)

(饶 X 轴)

(绕 Y 轴)

缺点:小车加速、颠簸时,加速度不全是重力,角度直接炸掉,不能单独用来做平衡控制,只能做角度初始校准。

发表评论