mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-23 16:25:26 +03:00
INAV: Option to disable usage of GPS VelNED information; GPS: Disable GPS version detection - some NEO-7Ms seem to lack support of the PVT message
This commit is contained in:
parent
7c1680ff34
commit
27c769888d
5 changed files with 18 additions and 6 deletions
|
@ -134,7 +134,7 @@ static uint32_t activeFeaturesLatch = 0;
|
|||
static uint8_t currentControlRateProfileIndex = 0;
|
||||
controlRateConfig_t *currentControlRateProfile;
|
||||
|
||||
static const uint8_t EEPROM_CONF_VERSION = 112;
|
||||
static const uint8_t EEPROM_CONF_VERSION = 113;
|
||||
|
||||
static void resetAccelerometerTrims(flightDynamicsTrims_t * accZero, flightDynamicsTrims_t * accGain)
|
||||
{
|
||||
|
@ -230,6 +230,7 @@ void resetNavConfig(navConfig_t * navConfig)
|
|||
navConfig->inav.gps_min_sats = 5;
|
||||
navConfig->inav.gps_delay_ms = 200;
|
||||
navConfig->inav.accz_unarmed_cal = 1;
|
||||
navConfig->inav.use_gps_velned = 1; // "Disabled" is mandatory with gps_nav_model = LOW_G
|
||||
|
||||
navConfig->inav.w_z_baro_p = 1.0f;
|
||||
|
||||
|
@ -521,7 +522,7 @@ static void resetConf(void)
|
|||
masterConfig.gpsConfig.sbasMode = SBAS_AUTO;
|
||||
masterConfig.gpsConfig.autoConfig = GPS_AUTOCONFIG_ON;
|
||||
masterConfig.gpsConfig.autoBaud = GPS_AUTOBAUD_ON;
|
||||
masterConfig.gpsConfig.navModel = GPS_MODEL_LOW_G;
|
||||
masterConfig.gpsConfig.navModel = GPS_MODEL_HIGH_G;
|
||||
#endif
|
||||
|
||||
#ifdef NAV
|
||||
|
|
|
@ -81,6 +81,7 @@ typedef struct navConfig_s {
|
|||
#endif
|
||||
uint8_t gps_min_sats;
|
||||
uint8_t accz_unarmed_cal;
|
||||
uint8_t use_gps_velned;
|
||||
uint16_t gps_delay_ms;
|
||||
|
||||
float w_z_baro_p; // Weight (cutoff frequency) for barometer altitude measurements
|
||||
|
|
|
@ -287,7 +287,7 @@ void onNewGPSData(void)
|
|||
|
||||
/* Use VELNED provided by GPS if available, calculate from coordinates otherwise */
|
||||
float gpsScaleLonDown = constrainf(cos_approx((ABS(gpsSol.llh.lat) / 10000000.0f) * 0.0174532925f), 0.01f, 1.0f);
|
||||
if (gpsSol.flags.validVelNE) {
|
||||
if (posControl.navConfig->inav.use_gps_velned && gpsSol.flags.validVelNE) {
|
||||
posEstimator.gps.vel.V.X = gpsSol.velNED[0];
|
||||
posEstimator.gps.vel.V.Y = gpsSol.velNED[1];
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ void onNewGPSData(void)
|
|||
posEstimator.gps.vel.V.Y = (posEstimator.gps.vel.V.Y + (gpsScaleLonDown * DISTANCE_BETWEEN_TWO_LONGITUDE_POINTS_AT_EQUATOR * (gpsSol.llh.lon - previousLon) / dT)) / 2.0f;
|
||||
}
|
||||
|
||||
if (gpsSol.flags.validVelD) {
|
||||
if (posControl.navConfig->inav.use_gps_velned && gpsSol.flags.validVelD) {
|
||||
posEstimator.gps.vel.V.Z = - gpsSol.velNED[2]; // NEU
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
#if defined(GPS) && defined(GPS_PROTO_UBLOX)
|
||||
|
||||
#define GPS_PROTO_UBLOX_NEO7PLUS
|
||||
//#define GPS_PROTO_UBLOX_NEO7PLUS
|
||||
#define GPS_VERSION_DETECTION_TIMEOUT_MS 300
|
||||
|
||||
static const char * baudInitData[GPS_BAUDRATE_COUNT] = {
|
||||
|
@ -587,7 +587,16 @@ static bool gpsConfigure(void)
|
|||
break;
|
||||
|
||||
case 4: // Configure RATE
|
||||
#ifdef GPS_PROTO_UBLOX_NEO7PLUS
|
||||
if (gpsState.hwVersion < 70000) {
|
||||
#endif
|
||||
ubxTransmitAutoConfigCommands(ubloxInit_RATE_5Hz, sizeof(ubloxInit_RATE_5Hz));
|
||||
#ifdef GPS_PROTO_UBLOX_NEO7PLUS
|
||||
}
|
||||
else {
|
||||
ubxTransmitAutoConfigCommands(ubloxInit_RATE_10Hz, sizeof(ubloxInit_RATE_10Hz));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 5: // SBAS
|
||||
|
|
|
@ -564,6 +564,7 @@ const clivalue_t valueTable[] = {
|
|||
#endif
|
||||
|
||||
{ "inav_accz_unarmedcal", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.navConfig.inav.accz_unarmed_cal, .config.lookup = { TABLE_OFF_ON }, 0 },
|
||||
{ "inav_use_gps_velned", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.navConfig.inav.use_gps_velned, .config.lookup = { TABLE_OFF_ON }, 0 },
|
||||
{ "inav_gps_delay", VAR_UINT16 | MASTER_VALUE, &masterConfig.navConfig.inav.gps_delay_ms, .config.minmax = { 0, 500 }, 0 },
|
||||
{ "inav_gps_min_sats", VAR_UINT8 | MASTER_VALUE, &masterConfig.navConfig.inav.gps_min_sats, .config.minmax = { 5, 10}, 0 },
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue