ICM20948+madgwickフィルター 地磁気は不使用で6軸のみ使用 最初5s静置してジャイロのオフセットを求めキャリブレーション 地磁気を測らないためヨー軸ドリフトがあるが,緩やかに動かせば2,3分程度はヨー軸も正しい値を測定できた

Dependencies:   mbed MadgwickFilter

main.cpp

Committer:
hiramitsu
Date:
2021-10-18
Revision:
0:ce9707156696

File content as of revision 0:ce9707156696:

#include "mbed.h"
#include "ICM20948.hpp"
#include "MadgwickFilter.hpp"

Serial pc(USBTX, USBRX);

int main()
{
    pc.baud(115200);
    ICM20948 imu;
    MadgwickFilter madgwick = MadgwickFilter();
    
    imu.whoAmI();
    imu.init();
    float acc[3];
    float gyro[3];
    float eulerVals[3];
    int count = 0;

    while(1) {
        //imu.getAccGyro(acc, gyro);
        //pc.printf("Acc: %f %f %f, Gyro: %f %f %f\n\r", acc[0], acc[1], acc[2], gyro[0], gyro[1], gyro[2]);
        //wait_ms(500);
        imu.getAccGyro(acc, gyro);
        madgwick.MadgwickAHRSupdateIMU(gyro[0], gyro[1], gyro[2], acc[0], acc[1], acc[2]);
        count++;
        if(count == 100){
            madgwick.getEulerAngle(eulerVals);
            pc.printf("r: %f, p: %f, y: %f\n\r", eulerVals[0], eulerVals[1], eulerVals[2]);
            count = 0;
        }
        wait_ms(10);
    }
}