From e11904c42f746d97943a3912d89251818d8c7e49 Mon Sep 17 00:00:00 2001 From: Oleg Semyonov Date: Sun, 18 Dec 2011 01:34:45 +0200 Subject: [PATCH] CameraStab: change ResponseTime type from float to int16 --- flight/Modules/CameraStab/camerastab.c | 7 ++++--- shared/uavobjectdefinition/camerastabsettings.xml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/flight/Modules/CameraStab/camerastab.c b/flight/Modules/CameraStab/camerastab.c index fce2f70d9..87f07e079 100644 --- a/flight/Modules/CameraStab/camerastab.c +++ b/flight/Modules/CameraStab/camerastab.c @@ -154,14 +154,15 @@ static void attitudeUpdated(UAVObjEvent* ev) break; case CAMERASTABSETTINGS_STABILIZATIONMODE_AXISLOCK: input_rate = accessory.AccessoryVal * cameraStab.InputRate[i]; - if (abs(input_rate) > cameraStab.MaxAxisLockRate) + if (fabs(input_rate) > cameraStab.MaxAxisLockRate) csd->inputs[i] = bound(csd->inputs[i] + input_rate * csd->dT / 1000.0f, cameraStab.InputRange[i]); break; default: PIOS_Assert(0); } - csd->inputs_filtered[i] = (cameraStab.ResponseTime[i] / (cameraStab.ResponseTime[i] + csd->dT)) * csd->inputs_filtered[i] - + (csd->dT / (cameraStab.ResponseTime[i] + csd->dT)) * csd->inputs[i]; + float rt = (float)cameraStab.ResponseTime[i]; + csd->inputs_filtered[i] = (rt / (rt + csd->dT)) * csd->inputs_filtered[i] + + (csd->dT / (rt + csd->dT)) * csd->inputs[i]; } } } diff --git a/shared/uavobjectdefinition/camerastabsettings.xml b/shared/uavobjectdefinition/camerastabsettings.xml index 27ba09536..3208b9f24 100644 --- a/shared/uavobjectdefinition/camerastabsettings.xml +++ b/shared/uavobjectdefinition/camerastabsettings.xml @@ -4,7 +4,7 @@ - +