姿态角(Euler角):yaw pitch roll

本文详细介绍了姿态角(Euler角)的概念,包括yaw(偏航角)、pitch(俯仰角)和roll(翻滚角),并解释了它们在地面坐标系和机体坐标系中的应用。

姿态角和自由度相关联;

姿态角在控制,机械领域广泛使用;

这里,简单了解一下:

什么是姿态角(Euler角)?

yaw,pitch,roll的识别?

姿态角(Euler角):yaw pitch roll步骤阅读

百度经验:jingyan.baidu.com

工具/原料

  • 阅读器

  • 右手笛卡尔坐标

百度经验:jingyan.baidu.com

方法/步骤

  1. 1

    姿态角,首先知道什么是地面坐标系和机体坐标系?

    地面坐标系(earth-surface inertial reference frame)

    ①在地面上选一点Og

    ②使xg轴在水平面内并指向某一方向

    ③zg轴垂直于地面并指向地心

    ④yg轴在水平面内垂直于xg轴,其指向按右手定则确定

    如图所示:

    姿态角(Euler角):yaw pitch roll步骤阅读

  2. 2

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

    ①原点O取在飞机质心处,坐标系与飞机固连

    ②x轴在飞机对称平面内并平行于飞机的设计轴线指向机头

    ③y轴垂直于飞机对称平面指向机身右方

    ④z轴在飞机对称平面内,与x轴垂直并指向机身下方

    如图所示:

    姿态角(Euler角):yaw pitch roll步骤阅读

    姿态角(Euler角):yaw pitch roll步骤阅读

  3. 3

    欧拉角/姿态角(Euler Angle)

    机体坐标系与地面坐标系的关系是三个Euler角:yaw,pitch,roll,

    反应了飞机相对地面的姿态。

    姿态角(Euler角):yaw pitch roll步骤阅读

    姿态角(Euler角):yaw pitch roll步骤阅读

    姿态角(Euler角):yaw pitch roll步骤阅读

  4. 4

    俯仰角θ(pitch):

    机体坐标系X轴与水平面的夹角。

    当X轴的正半轴位于过坐标原点的水平面之上(抬头)时,俯仰角为正,否则为负。

     

    pitch是围绕X轴旋转,也叫做俯仰角,

    如图所示:

    姿态角(Euler角):yaw pitch roll步骤阅读

  5. 5

    偏航角ψ(yaw):

    机体坐标系xb轴在水平面上投影与地面坐标系xg轴(在水平面上,指向目标为正)之间的夹角,

    由xg轴逆时针转至机体xb的投影线时,偏航角为正,即机头右偏航为正,

    反之为负。

     

    yaw是围绕Y轴旋转,也叫偏航角,

    如图所示。

    姿态角(Euler角):yaw pitch roll步骤阅读

  6. 6

    翻滚角Φ(roll):

    机体坐标系zb轴与通过机体xb轴的铅垂面间的夹角,机体向右滚为正,

    反之为负。

     

    roll是围绕Z轴旋转,也叫翻滚角,

    如图所示:

    姿态角(Euler角):yaw pitch roll步骤阅读

  7. 7

    模型引用:

    头模型的姿态角,标注

    如图所示:

    姿态角(Euler角):yaw pitch roll

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值