-
Notifications
You must be signed in to change notification settings - Fork 510
EKF does not account for IMU->CoG offset when returning NED acceleration #621
Comments
Just below the https://github.com/PX4/ecl/blob/e1751188fd15b799cbfae86bd7373bb91206069b/EKF/ekf.cpp#L512-L519 Is the IMU position offset intentionally not used with IMU delta velocity or is it an omission? https://github.com/PX4/ecl/blob/e1751188fd15b799cbfae86bd7373bb91206069b/EKF/ekf.cpp#L480-L491 |
The acceleration returned is at the sensor frame. The only way to return acceleration at the body origin would be to use angular accelerations which is problematic due to the issues associated with differentiating rate gyro noise. This was tried in the past using the downsampled data available to the EKF but the resulting data product was noisy when engine vibration was present. It may be possible if we do the differentiation and filtering in the sensor driver on the high rate data before downsampling. This rate acceleration would then be need to be added to the sensor topic used by the EKF. |
If anyone is interested in pursuing this we're now in a much better position to give it a try with the newer IMU drivers and sensor pipeline. |
Could be a good time to add this before the control loop designers start adding acceleration feedback. This feature will impact on tuning of acceleration feedback loops. Sometimes not correcting for the c.g. offset of the IMU can be an advantage, eg having an IMU in front of the c.g. that gives some phase lead for a tail controlled rocket. |
From ekf2_main in PX4 firmware
https://github.com/PX4/Firmware/blob/38da0f95aad2068645213d783e49663ab4105dbf/src/modules/ekf2/ekf2_main.cpp#L1296-L1301
But this is not true. The function
get_vel_deriv_ned
returns the accelerations in the IMU frame not the body frame. (It does not account for the distance between IMU and CoG or compensates for the centripetal force)The text was updated successfully, but these errors were encountered: