ArduPilot/ardupilot

EAHRS is performing duplicate temperature compenstation

開放

#25,792 建立於 2023年12月18日

 (6 則留言) (1 個反應) (0 位負責人)C++ (15,603 個分叉)batch import
BUGExternalAHRSgood first issue

倉庫指標

星標
 (9,336 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南