AHRS
Dependencies: Eigen
Diff: AHRS.cpp
- Revision:
- 22:495a419e474c
- Parent:
- 21:31e01d3e0143
- Child:
- 23:71996bfe68eb
diff -r 31e01d3e0143 -r 495a419e474c AHRS.cpp --- a/AHRS.cpp Mon Oct 21 17:14:27 2019 +0000 +++ b/AHRS.cpp Mon Oct 28 07:52:43 2019 +0000 @@ -5,7 +5,7 @@ using namespace std; //OLD: AHRS::AHRS(uint8_t filtertype, float TS) : RPY_filter(TS), csAG(PA_15),csM(PD_2), spi(PC_12, PC_11, PC_10), imu(&spi, &csM, &csAG), thread(osPriorityBelowNormal, 4096){ -AHRS::AHRS(uint8_t filtertype, float TS, bool calib) : imu(PC_9, PA_8, 0xD6, 0x3C), ekf(TS), Mahony_filter(TS), ekf_rp(TS), ekf_rpy(TS)//, dout3(PA_10) +AHRS::AHRS(uint8_t filtertype, float TS, bool calib) : imu(PC_9, PA_8, 0xD6, 0x3C), ekf(TS), Mahony_filter(TS), cf_yaw(1.0f,TS), ekf_rp(TS), ekf_rpy(TS)//, dout3(PA_10) { /* setup storage */ this->Ts = TS; @@ -75,11 +75,14 @@ raw_mx2mx.setup( 0.9982f,0.2054f); raw_my2my.setup( 1.0574f,0.1912f); raw_mz2mz.setup(-0.9444f,-0.1385f); // achtung, bei b0(3) Vorzeichen drehen!!! + //raw_mx2mx.setup( 1.0f,0.0f); + //raw_my2my.setup( 1.0f,0.0f); + //raw_mz2mz.setup( 1.0f,0.0f); // achtung, bei b0(3) Vorzeichen drehen!!! this->magnet_cal_0[0] = raw_mx2mx(magnet[0]); this->magnet_cal_0[1] = raw_my2my(magnet[1]); this->magnet_cal_0[2] = raw_mz2mz(magnet[2]); // set EKF_RPY magnet values now: - ekf_rpy.set_m0(this->magnet_cal_0[0],this->magnet_cal_0[1],this->magnet_cal_0[2]); + //ekf_rpy.set_m0(this->magnet_cal_0[0],this->magnet_cal_0[1],this->magnet_cal_0[2]); local_time = 0.0; this->filtertype = filtertype; @@ -95,8 +98,11 @@ switch(filtertype){ case 1: ekf.update(data.sens_gyr[0],data.sens_gyr[1],data.sens_gyr[2],data.sens_acc[0],data.sens_acc[1],data.sens_acc[2]); + cf_yaw.update(data.sens_gyr[2],data.sens_mag[0],data.sens_mag[1],data.sens_mag[2]); data.est_RPY[0] = ekf.get_est_state(0); data.est_RPY[1] = ekf.get_est_state(1); + data.est_Vxyz[0] = ekf.get_est_state(4); + data.est_Vxyz[1] = ekf.get_est_state(5); break; case 2: Mahony_filter.update(data.sens_gyr[0],data.sens_gyr[1],data.sens_gyr[2],data.sens_acc[0],data.sens_acc[1],data.sens_acc[2],0.0f,0.0f,0.0f); @@ -150,6 +156,9 @@ data.sens_mag[0] = raw_mx2mx(imu.magX); data.sens_mag[1] = raw_my2my(imu.magY); data.sens_mag[2] = raw_mz2mz(imu.magZ); + data.sens_mag_raw[0] = raw_mx2mx(imu.magX); + data.sens_mag_raw[1] = raw_my2my(imu.magY); + data.sens_mag_raw[2] = raw_mz2mz(imu.magZ); } // ------------------- start controllers ---------------- void AHRS::start_loop(void){