Fix compass heading direction, add magnetic declination and heading offset
- Fix atan2 sign bug: atan2(-yHeading, xHeading) per Freescale AN4248 eq.22. The previous atan2(yHeading, xHeading) produced counter-clockwise angles, causing East/West to be swapped relative to compass convention. - Add imuSetMagneticDeclination() (T:146, field "decl") to correct the offset between magnetic north and true north (iPhone shows true north). Value is persisted in imuConfig.json across reboots. - Add imuSetHeadingOffset() (T:147, field "off") to compensate for sensor mounting orientation on the rover. Also persisted. - Persist decl and hOff in imuConfig.json (version 2, backwards compatible). - Fix calibration feedback for web interface: T:126 now includes calDone=1 (success) or calDone=0 (fail) once after calibration completes, plus decl and hOff fields. Calibration start message explains polling procedure. - Remove duplicate #include <nvs_flash.h> and unused Adafruit ICM20948 includes that caused build failures when libraries were not installed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
6f1391d1e9
commit
9b0a5a9926
+15
-9
@@ -59,14 +59,20 @@ void jsonCmdReceiveHandler(){
|
||||
case CMD_FEEDBACK_FLOW_INTERVAL:
|
||||
setFeedbackFlowInterval(
|
||||
jsonCmdReceive["cmd"]);break;
|
||||
case CMD_UART_ECHO_MODE:
|
||||
setCmdEcho(
|
||||
jsonCmdReceive["cmd"]);break;
|
||||
case CMD_CALI_MAG_START:
|
||||
startMagCalibration();break;
|
||||
case CMD_ARM_CTRL_UI: RoArmM2_uiCtrl(
|
||||
jsonCmdReceive["E"],
|
||||
jsonCmdReceive["Z"],
|
||||
case CMD_UART_ECHO_MODE:
|
||||
setCmdEcho(
|
||||
jsonCmdReceive["cmd"]);break;
|
||||
case CMD_CALI_MAG_START:
|
||||
startMagCalibration();break;
|
||||
case CMD_SET_MAG_DECLINATION:
|
||||
setMagDeclination(
|
||||
jsonCmdReceive["decl"]);break;
|
||||
case CMD_SET_HEADING_OFFSET:
|
||||
setHeadingOffset(
|
||||
jsonCmdReceive["off"]);break;
|
||||
case CMD_ARM_CTRL_UI: RoArmM2_uiCtrl(
|
||||
jsonCmdReceive["E"],
|
||||
jsonCmdReceive["Z"],
|
||||
jsonCmdReceive["R"]
|
||||
);break;
|
||||
|
||||
@@ -515,4 +521,4 @@ void serialCtrl() {
|
||||
receivedData = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user