-
Notifications
You must be signed in to change notification settings - Fork 19.2k
Description
Bug report
Issue details
Certain devices exposed through EAHRS, like the MicroStrain7, supply data that is already temperature compenstated.
https://s3.amazonaws.com/files.microstrain.com/GQ7+User+Manual/external_content/dcp/Data/sensor_data/data/mip_field_sensor_scaled_mag.htm
https://s3.amazonaws.com/files.microstrain.com/GQ7+User+Manual/external_content/dcp/Data/sensor_data/data/mip_field_sensor_scaled_accel.htm
When the External AHRS driver posts data to sensor libraries, they perform temperature compenstation on it again, as long as HAL_INS_TEMPERATURE_CAL_ENABLE
is defined, which is based on board size.
Please describe the problem
This causes double temperature compensation, leading to incorrect values.
Proposed Solution
Add bool is_temperature_compensated;
to AP_ExternalARHS::ins_data_message_t
, and then add the necessary hooks in AP_InertialSensor::handle_external(const AP_ExternalAHRS::ins_data_message_t &pkt)
to stop doing temperature compensation if the supplied value is already temp-compensated.
See ryanf55:eahrs-precompensated-sensors
for a prototype fix (WIP)
Version
master 1e644d56a51806b63dcd68d5e6566ec0f10248fc
Platform
[ x] All
[ ] AntennaTracker
[ ] Copter
[ ] Plane
[ ] Rover
[ ] Submarine
Metadata
Metadata
Assignees
Type
Projects
Status