什么是姿态角(Euler角)pitch yaw roll

本文详细介绍了姿态角(Euler角)的概念及其在飞行器姿态描述中的应用。包括俯仰角(pitch)、偏航角(yaw)和滚转角(roll)的具体定义及机体坐标系与地面坐标系之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是姿态角(Euler角)pitch yaw roll 
2014-01-14 19:03:18   来源:   评论:5 点击:8514

Z轴正方向为前进方向pitch():俯仰,将物体绕X轴旋转(localRotationX)

百度上居然搜不到俯仰滚转和偏航的定义,可见大家的浮躁了,没事摇一摇都不干正事了,整理了一下资料,公布给大家。
要了解飞机姿态,需要首先知道什么是地面坐标系和机体坐标系。
■地面坐标系(earth-surface inertial reference frameSg--------Oxgygzg


①在地面上选一点Og
②使xg轴在水平面内并指向某一方向
zg轴垂直于地面并指向地心
yg轴在水平面内垂直于xg轴,其指向按右手定则确定

■机体坐标系(Aircraft-body coordinate frame)Sb-------oxyz



①原点O取在飞机质心处,坐标系与飞机固连
x轴在飞机对称平面内并平行于飞机的设计轴线指向机头
y轴垂直于飞机对称平面指向机身右方
z轴在飞机对称平面内,与x轴垂直并指向机身下方
■欧拉角/姿态角(Euler Angle
 
机体坐标系与地面坐标系的关系是三个Euler角,反应了飞机相对地面的姿态。
俯仰角θ(pitch)机体坐标系X轴与水平面的夹角。当X轴的正半轴位于过坐标原点的水平面之上(抬头)时,俯仰角为正,否则为负。
\
偏航角ψ(yaw)
机体坐标系xb轴在水平面上投影与地面坐标系xg轴(在水平面上,指向目标为正)之间的夹角,由xg轴逆时针转至机体xb的投影线时,偏航角为正,即机头右偏航为正,反之为负。
\
滚转角Φ(roll):
机体坐标系zb轴与通过机体xb轴的铅垂面间的夹角,机体向右滚为正,反之为负。
\

void Get_Angles_ICM(void) { // 存储四元数的四个分量 float q0,q1,q2,q3; // 获取ICM42688陀螺仪加速度计数据 Get_Acc_ICM42688(); // 获取ICM42688陀螺仪陀螺仪数据 Get_Gyro_ICM42688(); // 陀螺仪数据滤波和转化为实际物理值 Get_Values_ICM(); // 使用陀螺仪和加速度计的数据更新AHRS(姿态和航向参考系统)算法得到当前的四元数 Update_AHRS_ICM(icm_data.gyro_x, icm_data.gyro_y, icm_data.gyro_z, icm_data.acc_x, icm_data.acc_y, icm_data.acc_z); // 从更新后的姿态信息中获取四元数的四个分量 q0 = q_info.q0; q1 = q_info.q1; q2 = q_info.q2; q3 = q_info.q3; // 四元数计算欧拉 euler_angle.pitch = asin(-2 * q1 * q3 + 2 * q0 * q2) * 180 / M_PI - 180;//俯仰,对应y轴 euler_angle.roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2 * q2 + 1) * 180 / M_PI;//横滚,对应x轴 euler_angle.yaw = atan2(2 * q1 * q2 + 2 * q0 * q3, -2 * q2 * q2 - 2 * q3 * q3 + 1) * 180 / M_PI;//偏航,对应z轴 // 姿态限制 if (euler_angle.pitch > 0) { euler_angle.pitch = 180 - euler_angle.pitch; } else if (euler_angle.pitch < 0) { euler_angle.pitch = -(180 + euler_angle.pitch); } if (euler_angle.roll > 0) { euler_angle.roll = 180 - euler_angle.roll; } else if (euler_angle.roll < 0) { euler_angle.roll = -(180 + euler_angle.roll); } if (euler_angle.yaw > 360) { euler_angle.yaw -= 360; } else if (euler_angle.yaw < 0) { euler_angle.yaw += 360; } }用这个代码算出来的pitch,显示的数据变化非常慢
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值