On boot, before the main loop, sample 1000 gyro readings (~1s) while board is held still. Compute per-axis mean offset (sensor-frame raw LSBs) and subtract from all subsequent readings in mpu6000_read(). - mpu6000_calibrate(): LED1+LED2 solid ON during 1s sample window, resets filter state to zero once bias is known - mpu6000_is_calibrated(): gate; main loop blocks arming and USB streaming until calibration completes - Bias subtracted in sensor frame before CW270 axis transform + scale, so all three axes (pitch/roll/yaw rate) benefit - config.h: GYRO_CAL_SAMPLES=1000 - No flash storage — recalibrate fresh each boot (bias varies with temp) Closes #21 (3.5°/s yaw drift), #23 (gyro bias calibration on boot). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge pull request 'feat(bd-a2j): Sensor driver integration — RealSense D435i + RPLIDAR A1M8' (#17) from sl-perception/bd-a2j-sensor-drivers into main
Description
SaltyLab self-balancing bot firmware (STM32F722)
Languages
Python
67.1%
C
11.4%
JavaScript
9.2%
OpenSCAD
7.8%
HTML
1.5%
Other
2.9%