Skip to content

Commit 5fda0e6

Browse files
committed
Add menu config of SensorFusion.
1 parent 948c36f commit 5fda0e6

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

Firmware/RTK_Surveyor/NVM.ino

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ void recordSystemSettingsToFile()
139139
settingsFile.println("dynamicModel=" + (String)settings.dynamicModel);
140140
settingsFile.println("lastState=" + (String)settings.lastState);
141141
settingsFile.println("throttleDuringSPPCongestion=" + (String)settings.throttleDuringSPPCongestion);
142+
settingsFile.println("enableSensorFusion=" + (String)settings.enableSensorFusion);
142143
settingsFile.println("autoIMUmountAlignment=" + (String)settings.autoIMUmountAlignment);
143144
settingsFile.println("enableResetDisplay=" + (String)settings.enableResetDisplay);
144145
settingsFile.println("resetCount=" + (String)settings.resetCount);
@@ -404,6 +405,8 @@ bool parseLine(char* str) {
404405
settings.lastState = (SystemState)d;
405406
else if (strcmp(settingName, "throttleDuringSPPCongestion") == 0)
406407
settings.throttleDuringSPPCongestion = d;
408+
else if (strcmp(settingName, "enableSensorFusion") == 0)
409+
settings.enableSensorFusion = d;
407410
else if (strcmp(settingName, "autoIMUmountAlignment") == 0)
408411
settings.autoIMUmountAlignment = d;
409412
else if (strcmp(settingName, "enableResetDisplay") == 0)

Firmware/RTK_Surveyor/menuBase.ino

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,14 @@ void menuSensorFusion()
237237
else if (i2cGNSS.packetUBXESFSTATUS->data.fusionMode == 3)
238238
Serial.println(F("Disabled"));
239239

240-
Serial.print(F("1) Toggle Automatic IMU-mount Alignment: "));
240+
if (settings.enableSensorFusion == true && settings.dynamicModel != DYN_MODEL_AUTOMOTIVE)
241+
Serial.println(F("Warning: Dynamic Model not set to Automotive. Sensor Fusion is best used with the Automotive Dynamic Model."));
242+
243+
Serial.print(F("1) Toggle Sensor Fusion: "));
244+
if (settings.enableSensorFusion == true) Serial.println(F("Enabled"));
245+
else Serial.println(F("Disabled"));
246+
247+
Serial.print(F("2) Toggle Automatic IMU-mount Alignment: "));
241248
if (settings.autoIMUmountAlignment == true) Serial.println(F("Enabled"));
242249
else Serial.println(F("Disabled"));
243250

@@ -246,6 +253,11 @@ void menuSensorFusion()
246253
int incoming = getNumber(menuTimeout); //Timeout after x seconds
247254

248255
if (incoming == 1)
256+
{
257+
settings.enableSensorFusion ^= 1;
258+
setSensorFusion(settings.enableSensorFusion); //Enable/disable sensor fusion
259+
}
260+
else if (incoming == 2)
249261
{
250262
settings.autoIMUmountAlignment ^= 1;
251263
}
@@ -262,3 +274,15 @@ void menuSensorFusion()
262274

263275
while (Serial.available()) Serial.read(); //Empty buffer of any newline chars
264276
}
277+
278+
//Enable or disable sensor fusion using keys
279+
void setSensorFusion(bool enable)
280+
{
281+
if (getSensorFusion() != enable)
282+
i2cGNSS.setVal8(UBLOX_CFG_SFCORE_USE_SF, enable, VAL_LAYER_ALL);
283+
}
284+
285+
bool getSensorFusion()
286+
{
287+
return (i2cGNSS.getVal8(UBLOX_CFG_SFCORE_USE_SF, VAL_LAYER_RAM, 1200));
288+
}

Firmware/RTK_Surveyor/settings.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,8 @@ struct struct_settings {
332332
SystemState lastState = STATE_ROVER_NOT_STARTED; //For Express, start unit in last known state
333333
bool throttleDuringSPPCongestion = true;
334334
ubxConstellation ubxConstellations; //Constellations monitored/used for fix
335-
bool autoIMUmountAlignment = true;
335+
bool enableSensorFusion = false; //If IMU is available, avoid using it unless user specifically selects automotive
336+
bool autoIMUmountAlignment = true; //Allows unit to automatically establish device orientation in vehicle
336337
bool enableResetDisplay = false;
337338
uint8_t resetCount = 0;
338339
} settings;

0 commit comments

Comments
 (0)