From 4c40b44563ff64f5918e7339ff3c081d723bdb90 Mon Sep 17 00:00:00 2001
From: Randy Mackay <rmackay9@yahoo.com>
Date: Sat, 2 Feb 2013 10:59:58 +0900
Subject: [PATCH] Copter: limit max ahrs trim to 10degrees

Limit is applied as trims from accelerometer calibration are copied to
the ahrs object.
---
 ArduCopter/GCS_Mavlink.pde | 2 ++
 ArduCopter/setup.pde       | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/ArduCopter/GCS_Mavlink.pde b/ArduCopter/GCS_Mavlink.pde
index 8e24b1d24..44be364e7 100644
--- a/ArduCopter/GCS_Mavlink.pde
+++ b/ArduCopter/GCS_Mavlink.pde
@@ -1100,6 +1100,8 @@ void GCS_MAVLINK::handleMessage(mavlink_message_t* msg)
                 // this blocks
                 ins.calibrate_accel(mavlink_delay, flash_leds, gcs_send_text_fmt, setup_wait_key, trim_roll, trim_pitch);
                 // reset ahrs's trim to suggested values from calibration routine
+                trim_roll = constrain(trim_roll, ToRad(-10.0f), ToRad(10.0f));
+                trim_pitch = constrain(trim_pitch, ToRad(-10.0f), ToRad(10.0f));
                 ahrs.set_trim(Vector3f(trim_roll, trim_pitch, 0));
             }
             result = MAV_RESULT_ACCEPTED;
diff --git a/ArduCopter/setup.pde b/ArduCopter/setup.pde
index e1c414fe1..c8c844fe9 100644
--- a/ArduCopter/setup.pde
+++ b/ArduCopter/setup.pde
@@ -292,6 +292,8 @@ setup_accel_scale(uint8_t argc, const Menu::arg *argv)
              delay, flash_leds, &timer_scheduler);
     ins.calibrate_accel(delay, flash_leds, setup_printf_P, setup_wait_key, trim_roll, trim_pitch);
     // reset ahrs's trim to suggested values from calibration routine
+    trim_roll = constrain(trim_roll, ToRad(-10.0f), ToRad(10.0f));
+    trim_pitch = constrain(trim_pitch, ToRad(-10.0f), ToRad(10.0f));
     ahrs.set_trim(Vector3f(trim_roll, trim_pitch, 0));
     report_ins();
     return(0);
-- 
GitLab