姿态估计(互补滤波)

本文介绍了无人机姿态估计中使用四元数和互补滤波器的方法。首先,通过施密特正交化建立NED坐标系下的旋转矩阵并转换为四元数进行初始化。接着,利用磁力计和加速度计的数据,结合GPS信息进行校准和误差修正。通过PI控制和一阶龙格库塔方法更新四元数,以实现稳定姿态估计。
摘要由CSDN通过智能技术生成

参考材料:
A Complementary Filter for Attitude Estimation of a Fixed-Wing UAV
mahony 互补滤波器
px4源码v1.7.3

四元数姿态解算

一边看程序一边讲原理:

AttitudeEstimatorQ::init()

得到初始四元数的过程:
1、首先建立在NED系下的旋转矩阵
k⃗  k → 为z轴,方向为D向,竖直向下

    // Rotation matrix can be easily constructed from acceleration and mag field vectors
    // 'k' is Earth Z axis (Down) unit vector in body frame

    Vector<3> k = -_accel;
    k.normalize();

i⃗  i → 是NED坐标系下的x轴,由施密特正交化得出:

    //'i' is Earth X axis (North) unit vector in body frame, orthogonal with 'k'
    Vector<3> i = (_mag - k * (_mag * k));
    i.normalize();

施密特正交化:

β2=α2(α2,β1)(β1,β1)β1 β 2 = α 2 − ( α 2 , β 1 ) ( β 1 , β 1 ) ⋅ β 1

k⃗  k → 已经归一化所以分母为1

j⃗  j → 是NED坐标系下的y轴,由 i⃗  i → k⃗  k → 叉乘得到垂直向量

    // 'j' is Earth Y axis (East) unit vector in body frame, orthogonal with 'k' and 'i'
    Vector<3> j = k % i;

2、填充旋转矩阵,并且转换为四元数:

    // Fill rotation matrix
    Matrix<3, 3> R;
    R.set_row(0, i);
    R.set_row(1, j);
    R.set_row(2, k);

    // Convert to quaternion
    _q.from_dcm(R)

四元数 Q Q 与旋转矩阵 R 的转换关系

q0=12(1+r11+r22+r33)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值