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;
|
static uint8_t currentControlRateProfileIndex = 0;
|
||||||
controlRateConfig_t *currentControlRateProfile;
|
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)
|
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_min_sats = 5;
|
||||||
navConfig->inav.gps_delay_ms = 200;
|
navConfig->inav.gps_delay_ms = 200;
|
||||||
navConfig->inav.accz_unarmed_cal = 1;
|
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;
|
navConfig->inav.w_z_baro_p = 1.0f;
|
||||||
|
|
||||||
|
@ -521,7 +522,7 @@ static void resetConf(void)
|
||||||
masterConfig.gpsConfig.sbasMode = SBAS_AUTO;
|
masterConfig.gpsConfig.sbasMode = SBAS_AUTO;
|
||||||
masterConfig.gpsConfig.autoConfig = GPS_AUTOCONFIG_ON;
|
masterConfig.gpsConfig.autoConfig = GPS_AUTOCONFIG_ON;
|
||||||
masterConfig.gpsConfig.autoBaud = GPS_AUTOBAUD_ON;
|
masterConfig.gpsConfig.autoBaud = GPS_AUTOBAUD_ON;
|
||||||
masterConfig.gpsConfig.navModel = GPS_MODEL_LOW_G;
|
masterConfig.gpsConfig.navModel = GPS_MODEL_HIGH_G;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NAV
|
#ifdef NAV
|
||||||
|
|
|
@ -81,6 +81,7 @@ typedef struct navConfig_s {
|
||||||
#endif
|
#endif
|
||||||
uint8_t gps_min_sats;
|
uint8_t gps_min_sats;
|
||||||
uint8_t accz_unarmed_cal;
|
uint8_t accz_unarmed_cal;
|
||||||
|
uint8_t use_gps_velned;
|
||||||
uint16_t gps_delay_ms;
|
uint16_t gps_delay_ms;
|
||||||
|
|
||||||
float w_z_baro_p; // Weight (cutoff frequency) for barometer altitude measurements
|
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 */
|
/* 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);
|
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.X = gpsSol.velNED[0];
|
||||||
posEstimator.gps.vel.V.Y = gpsSol.velNED[1];
|
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;
|
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
|
posEstimator.gps.vel.V.Z = - gpsSol.velNED[2]; // NEU
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
#if defined(GPS) && defined(GPS_PROTO_UBLOX)
|
#if defined(GPS) && defined(GPS_PROTO_UBLOX)
|
||||||
|
|
||||||
#define GPS_PROTO_UBLOX_NEO7PLUS
|
//#define GPS_PROTO_UBLOX_NEO7PLUS
|
||||||
#define GPS_VERSION_DETECTION_TIMEOUT_MS 300
|
#define GPS_VERSION_DETECTION_TIMEOUT_MS 300
|
||||||
|
|
||||||
static const char * baudInitData[GPS_BAUDRATE_COUNT] = {
|
static const char * baudInitData[GPS_BAUDRATE_COUNT] = {
|
||||||
|
@ -587,7 +587,16 @@ static bool gpsConfigure(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: // Configure RATE
|
case 4: // Configure RATE
|
||||||
ubxTransmitAutoConfigCommands(ubloxInit_RATE_5Hz, sizeof(ubloxInit_RATE_5Hz));
|
#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;
|
break;
|
||||||
|
|
||||||
case 5: // SBAS
|
case 5: // SBAS
|
||||||
|
|
|
@ -564,6 +564,7 @@ const clivalue_t valueTable[] = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
{ "inav_accz_unarmedcal", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.navConfig.inav.accz_unarmed_cal, .config.lookup = { TABLE_OFF_ON }, 0 },
|
{ "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_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 },
|
{ "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