Browse Source

Copter: pre-arm consistency check of accels

mission-4.1.18
Randy Mackay 11 years ago
parent
commit
59404c25e3
  1. 5
      ArduCopter/config.h
  2. 18
      ArduCopter/motors.pde

5
ArduCopter/config.h

@ -299,6 +299,11 @@ @@ -299,6 +299,11 @@
# define PREARM_MAX_VELOCITY_CMS 50.0f // vehicle must be travelling under 50cm/s before arming
#endif
// arming check's maximum acceptable accelerometer vector difference (in m/s/s) between primary and backup accelerometers
#ifndef PREARM_MAX_ACCEL_VECTOR_DIFF
#define PREARM_MAX_ACCEL_VECTOR_DIFF 1.0f // pre arm accel check will fail if primary and backup accelerometer vectors differ by 1m/s/s
#endif
//////////////////////////////////////////////////////////////////////////////
// EKF Checker
#ifndef EKFCHECK_THRESHOLD_DEFAULT

18
ArduCopter/motors.pde

@ -346,6 +346,24 @@ static void pre_arm_checks(bool display_failure) @@ -346,6 +346,24 @@ static void pre_arm_checks(bool display_failure)
return;
}
#if INS_MAX_INSTANCES > 1
// check all accelerometers point in roughly same direction
if (ins.get_accel_count() > 1) {
const Vector3f &prime_accel_vec = ins.get_accel();
for(uint8_t i=0; i<ins.get_accel_count(); i++) {
// get next accel vector
const Vector3f &accel_vec = ins.get_accel(i);
Vector3f vec_diff = accel_vec - prime_accel_vec;
if (vec_diff.length() > PREARM_MAX_ACCEL_VECTOR_DIFF) {
if (display_failure) {
gcs_send_text_P(SEVERITY_HIGH,PSTR("PreArm: Accels inconsistent"));
}
return;
}
}
}
#endif
// check gyros are healthy
if(!ins.get_gyro_health_all()) {
if (display_failure) {

Loading…
Cancel
Save