mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-09 17:38:32 -04:00
AP_AHRS: removed the AHRS_GPS_DELAY parameter
the best value has turned out to be 1, and tweaking it has not turned out to be useful, so this simplifies the code in preparation for adding the anti-aliasing handling with multiple accelerometers
This commit is contained in:
parent
6b9e1edf38
commit
0b45d2bc06
@ -108,13 +108,8 @@ const AP_Param::GroupInfo AP_AHRS::var_info[] PROGMEM = {
|
|||||||
// @User: Advanced
|
// @User: Advanced
|
||||||
AP_GROUPINFO("GPS_MINSATS", 11, AP_AHRS, _gps_minsats, 6),
|
AP_GROUPINFO("GPS_MINSATS", 11, AP_AHRS, _gps_minsats, 6),
|
||||||
|
|
||||||
// @Param: GPS_DELAY
|
// NOTE: index 12 was for GPS_DELAY, but now removed, fixed delay
|
||||||
// @DisplayName: AHRS GPS delay steps
|
// of 1 was found to be the best choice
|
||||||
// @Description: number of GPS samples to delay accels for synchronisation with the GPS velocity data
|
|
||||||
// @Range: 0 5
|
|
||||||
// @Increment: 1
|
|
||||||
// @User: Advanced
|
|
||||||
AP_GROUPINFO("GPS_DELAY", 12, AP_AHRS, _gps_delay, 1),
|
|
||||||
|
|
||||||
#if AP_AHRS_NAVEKF_AVAILABLE
|
#if AP_AHRS_NAVEKF_AVAILABLE
|
||||||
// @Param: EKF_USE
|
// @Param: EKF_USE
|
||||||
|
@ -461,48 +461,9 @@ AP_AHRS_DCM::drift_correction_yaw(void)
|
|||||||
*/
|
*/
|
||||||
Vector3f AP_AHRS_DCM::ra_delayed(const Vector3f &ra)
|
Vector3f AP_AHRS_DCM::ra_delayed(const Vector3f &ra)
|
||||||
{
|
{
|
||||||
if (_ra_delay_length != _gps_delay.get()) {
|
|
||||||
// the AHRS_GPS_DELAY setting has changed
|
|
||||||
|
|
||||||
// constrain it between 0 and 5
|
|
||||||
if (_gps_delay.get() > 5) {
|
|
||||||
_gps_delay.set(5);
|
|
||||||
}
|
|
||||||
if (_gps_delay.get() < 0) {
|
|
||||||
_gps_delay.set(0);
|
|
||||||
}
|
|
||||||
if (_ra_delay_buffer != NULL) {
|
|
||||||
delete[] _ra_delay_buffer;
|
|
||||||
_ra_delay_buffer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// allocate the new buffer
|
|
||||||
_ra_delay_length = _gps_delay.get();
|
|
||||||
if (_ra_delay_length != 0) {
|
|
||||||
_ra_delay_buffer = new Vector3f[_ra_delay_length];
|
|
||||||
}
|
|
||||||
_ra_delay_next = 0;
|
|
||||||
if (_ra_delay_buffer != NULL) {
|
|
||||||
// on size change prefill the buffer with the current value
|
|
||||||
for (uint8_t i=0; i<_ra_delay_length; i++) {
|
|
||||||
_ra_delay_buffer[i] = ra;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_ra_delay_buffer == NULL) {
|
|
||||||
// we're not doing any delay
|
|
||||||
return ra;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get the old element, and then fill it with the new element
|
// get the old element, and then fill it with the new element
|
||||||
Vector3f ret = _ra_delay_buffer[_ra_delay_next];
|
Vector3f ret = _ra_delay_buffer;
|
||||||
_ra_delay_buffer[_ra_delay_next] = ra;
|
_ra_delay_buffer = ra;
|
||||||
|
|
||||||
// move to the next element
|
|
||||||
_ra_delay_next++;
|
|
||||||
if (_ra_delay_next == _ra_delay_length) {
|
|
||||||
_ra_delay_next = 0;
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,9 +111,7 @@ private:
|
|||||||
|
|
||||||
// variables to cope with delaying the GA sum to match GPS lag
|
// variables to cope with delaying the GA sum to match GPS lag
|
||||||
Vector3f ra_delayed(const Vector3f &ra);
|
Vector3f ra_delayed(const Vector3f &ra);
|
||||||
uint8_t _ra_delay_length;
|
Vector3f _ra_delay_buffer;
|
||||||
uint8_t _ra_delay_next;
|
|
||||||
Vector3f *_ra_delay_buffer;
|
|
||||||
|
|
||||||
// P term gain based on spin rate
|
// P term gain based on spin rate
|
||||||
float _P_gain(float spin_rate);
|
float _P_gain(float spin_rate);
|
||||||
|
Loading…
Reference in New Issue
Block a user