// called at 50hz void Sub::update_GPS(void) { static uint32_t last_gps_reading[GPS_MAX_INSTANCES]; // time of last gps message bool gps_updated = false; gps.update(); // log after every gps message for (uint8_t i=0; i<gps.num_sensors(); i++) { if (gps.last_message_time_ms(i) != last_gps_reading[i]) { last_gps_reading[i] = gps.last_message_time_ms(i); // log GPS message if (should_log(MASK_LOG_GPS) && !ahrs.have_ekf_logging()) { DataFlash.Log_Write_GPS(gps, i); } gps_updated = true; } } if (gps_updated) { // set system time if necessary set_system_time_from_GPS(); #if CAMERA == ENABLED camera.update(); #endif } }
void Rover::update_GPS(void) { gps.update(); if (gps.last_message_time_ms() != last_gps_msg_ms) { last_gps_msg_ms = gps.last_message_time_ms(); // set system time if necessary set_system_time_from_GPS(); #if CAMERA == ENABLED camera.update(); #endif } }
// called at 50hz void Copter::update_GPS(void) { static uint32_t last_gps_reading[GPS_MAX_INSTANCES]; // time of last gps message bool gps_updated = false; gps.update(); // log after every gps message for (uint8_t i=0; i<gps.num_sensors(); i++) { if (gps.last_message_time_ms(i) != last_gps_reading[i]) { last_gps_reading[i] = gps.last_message_time_ms(i); // log GPS message if (should_log(MASK_LOG_GPS)) { DataFlash.Log_Write_GPS(gps, i, current_loc.alt); } gps_updated = true; } } if (gps_updated) { // set system time if necessary set_system_time_from_GPS(); //Added by sdb to rewrite PID parameters when switch from RTK-> GPS & Baro if (gps.status() < AP_GPS::GPS_OK_FIX_3D){ g.p_alt_hold.kP(1.0f); g.p_pos_xy.kP(1.0f);} if (gps.status() == AP_GPS::GPS_OK_FIX_3D_RTK){ g.p_alt_hold.kP(1.4f); g.p_pos_xy.kP(2.6f);} // checks to initialise home and take location based pictures if (gps.status() >= AP_GPS::GPS_OK_FIX_3D) { #if CAMERA == ENABLED if (camera.update_location(current_loc) == true) { do_take_picture(); } #endif } } }
// called at 50hz void Copter::update_GPS(void) { static uint32_t last_gps_reading[GPS_MAX_INSTANCES]; // time of last gps message bool gps_updated = false; gps.update(); // log after every gps message for (uint8_t i=0; i<gps.num_sensors(); i++) { if (gps.last_message_time_ms(i) != last_gps_reading[i]) { last_gps_reading[i] = gps.last_message_time_ms(i); // log GPS message if (should_log(MASK_LOG_GPS)) { DataFlash.Log_Write_GPS(gps, i, current_loc.alt); } gps_updated = true; } } if (gps_updated) { // set system time if necessary set_system_time_from_GPS(); // checks to initialise home and take location based pictures if (gps.status() >= AP_GPS::GPS_OK_FIX_3D) { #if CAMERA == ENABLED if (camera.update_location(current_loc, copter.ahrs) == true) { do_take_picture(); } #endif } } }