Browse Source

Copter: integrate automatic roll and pitch trims

mission-4.1.18
Randy Mackay 12 years ago committed by rmackay9
parent
commit
6601bd37cf
  1. 6
      ArduCopter/GCS_Mavlink.pde
  2. 7
      ArduCopter/setup.pde

6
ArduCopter/GCS_Mavlink.pde

@ -1227,9 +1227,13 @@ void GCS_MAVLINK::handleMessage(mavlink_message_t* msg)
trim_radio(); trim_radio();
} }
if (packet.param5 == 1) { if (packet.param5 == 1) {
float trim_roll, trim_pitch;
// this blocks // this blocks
AP_InertialSensor_UserInteractStream interact(hal.console); AP_InertialSensor_UserInteractStream interact(hal.console);
ins.calibrate_accel(flash_leds, &interact); if(ins.calibrate_accel(flash_leds, &interact, trim_roll, trim_pitch)) {
// reset ahrs's trim to suggested values from calibration routine
ahrs.set_trim(Vector3f(trim_roll, trim_pitch, 0));
}
} }
result = MAV_RESULT_ACCEPTED; result = MAV_RESULT_ACCEPTED;
break; break;

7
ArduCopter/setup.pde

@ -288,13 +288,18 @@ static void setup_wait_key(void)
static int8_t static int8_t
setup_accel_scale(uint8_t argc, const Menu::arg *argv) setup_accel_scale(uint8_t argc, const Menu::arg *argv)
{ {
float trim_roll, trim_pitch;
cliSerial->println_P(PSTR("Initialising gyros")); cliSerial->println_P(PSTR("Initialising gyros"));
ahrs.init(); ahrs.init();
ins.init(AP_InertialSensor::COLD_START, ins.init(AP_InertialSensor::COLD_START,
ins_sample_rate, ins_sample_rate,
flash_leds); flash_leds);
AP_InertialSensor_UserInteractStream interact(hal.console); AP_InertialSensor_UserInteractStream interact(hal.console);
ins.calibrate_accel(flash_leds, &interact); if(ins.calibrate_accel(flash_leds, &interact, trim_roll, trim_pitch)) {
// reset ahrs's trim to suggested values from calibration routine
ahrs.set_trim(Vector3f(trim_roll, trim_pitch, 0));
}
report_ins(); report_ins();
return(0); return(0);
} }

Loading…
Cancel
Save