Skip to content

Commit 7794f4c

Browse files
committed
Fix level calibration issue after board rotation
1 parent 7bcb907 commit 7794f4c

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/module/sensor/sensor_hub.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,9 @@ void sensor_collect(void)
665665
if (imu_dev[0] != NULL) {
666666
if (sensor_gyr_measure(imu_dev[0], imu_data.gyr_B_radDs) == FMT_EOK
667667
&& sensor_acc_measure(imu_dev[0], imu_data.acc_B_mDs2) == FMT_EOK) {
668+
/* do board rotation */
669+
rotation(board_rot, &imu_data.gyr_B_radDs[0], &imu_data.gyr_B_radDs[1], &imu_data.gyr_B_radDs[2]);
670+
rotation(board_rot, &imu_data.acc_B_mDs2[0], &imu_data.acc_B_mDs2[1], &imu_data.acc_B_mDs2[2]);
668671
/* publish scaled imu data without calibration and filtering */
669672
mcn_publish(MCN_HUB(sensor_imu0_0), &imu_data);
670673
/* do calibration */
@@ -683,9 +686,6 @@ void sensor_collect(void)
683686
imu_data.acc_B_mDs2[0] = butter3_filter_process(imu_data.acc_B_mDs2[0], butter3_acc[0][0]);
684687
imu_data.acc_B_mDs2[1] = butter3_filter_process(imu_data.acc_B_mDs2[1], butter3_acc[0][1]);
685688
imu_data.acc_B_mDs2[2] = butter3_filter_process(imu_data.acc_B_mDs2[2], butter3_acc[0][2]);
686-
/* do board rotation */
687-
rotation(board_rot, &imu_data.gyr_B_radDs[0], &imu_data.gyr_B_radDs[1], &imu_data.gyr_B_radDs[2]);
688-
rotation(board_rot, &imu_data.acc_B_mDs2[0], &imu_data.acc_B_mDs2[1], &imu_data.acc_B_mDs2[2]);
689689
/* publish calibrated & filtered imu data */
690690
mcn_publish(MCN_HUB(sensor_imu0), &imu_data);
691691
}
@@ -695,6 +695,9 @@ void sensor_collect(void)
695695
if (imu_dev[1] != NULL) {
696696
if (sensor_gyr_measure(imu_dev[1], imu_data.gyr_B_radDs) == FMT_EOK
697697
&& sensor_acc_measure(imu_dev[1], imu_data.acc_B_mDs2) == FMT_EOK) {
698+
/* do board rotation */
699+
rotation(board_rot, &imu_data.gyr_B_radDs[0], &imu_data.gyr_B_radDs[1], &imu_data.gyr_B_radDs[2]);
700+
rotation(board_rot, &imu_data.acc_B_mDs2[0], &imu_data.acc_B_mDs2[1], &imu_data.acc_B_mDs2[2]);
698701
/* publish scaled imu data without calibration and filtering */
699702
mcn_publish(MCN_HUB(sensor_imu1_0), &imu_data);
700703
/* do calibration */
@@ -713,9 +716,6 @@ void sensor_collect(void)
713716
imu_data.acc_B_mDs2[0] = butter3_filter_process(imu_data.acc_B_mDs2[0], butter3_acc[1][0]);
714717
imu_data.acc_B_mDs2[1] = butter3_filter_process(imu_data.acc_B_mDs2[1], butter3_acc[1][1]);
715718
imu_data.acc_B_mDs2[2] = butter3_filter_process(imu_data.acc_B_mDs2[2], butter3_acc[1][2]);
716-
/* do board rotation */
717-
rotation(board_rot, &imu_data.gyr_B_radDs[0], &imu_data.gyr_B_radDs[1], &imu_data.gyr_B_radDs[2]);
718-
rotation(board_rot, &imu_data.acc_B_mDs2[0], &imu_data.acc_B_mDs2[1], &imu_data.acc_B_mDs2[2]);
719719
/* publish calibrated & filtered imu data */
720720
mcn_publish(MCN_HUB(sensor_imu1), &imu_data);
721721
}
@@ -734,14 +734,15 @@ void sensor_collect(void)
734734
/* Collect mag0 data */
735735
if (mag_dev[0] != NULL) {
736736
if (sensor_mag_measure(mag_dev[0], mag_data.mag_B_gauss) == FMT_EOK) {
737+
/* do board rotation */
738+
rotation(board_rot, &mag_data.mag_B_gauss[0], &mag_data.mag_B_gauss[1], &mag_data.mag_B_gauss[2]);
739+
/* publish scaled mag data without calibration and filtering */
737740
mcn_publish(MCN_HUB(sensor_mag0_0), &mag_data);
738741
/* do calibration */
739742
sensor_mag_correct(mag_dev[0], mag_data.mag_B_gauss, temp);
740743
mag_data.mag_B_gauss[0] = temp[0];
741744
mag_data.mag_B_gauss[1] = temp[1];
742745
mag_data.mag_B_gauss[2] = temp[2];
743-
/* do board rotation */
744-
rotation(board_rot, &mag_data.mag_B_gauss[0], &mag_data.mag_B_gauss[1], &mag_data.mag_B_gauss[2]);
745746
/* publish calibrated mag data */
746747
mcn_publish(MCN_HUB(sensor_mag0), &mag_data);
747748
}
@@ -750,14 +751,15 @@ void sensor_collect(void)
750751
/* Collect mag1 data */
751752
if (mag_dev[1] != NULL) {
752753
if (sensor_mag_measure(mag_dev[1], mag_data.mag_B_gauss) == FMT_EOK) {
754+
/* do board rotation */
755+
rotation(board_rot, &mag_data.mag_B_gauss[0], &mag_data.mag_B_gauss[1], &mag_data.mag_B_gauss[2]);
756+
/* publish scaled mag data without calibration and filtering */
753757
mcn_publish(MCN_HUB(sensor_mag1_0), &mag_data);
754758
/* do calibration */
755759
sensor_mag_correct(mag_dev[1], mag_data.mag_B_gauss, temp);
756760
mag_data.mag_B_gauss[0] = temp[0];
757761
mag_data.mag_B_gauss[1] = temp[1];
758762
mag_data.mag_B_gauss[2] = temp[2];
759-
/* do board rotation */
760-
rotation(board_rot, &mag_data.mag_B_gauss[0], &mag_data.mag_B_gauss[1], &mag_data.mag_B_gauss[2]);
761763
/* publish calibrated mag data */
762764
mcn_publish(MCN_HUB(sensor_mag1), &mag_data);
763765
}

0 commit comments

Comments
 (0)