The MAMBA F722S mounts MPU6000 at CW270 (clockwise 270°) which applies rotation matrix R = [[0,1,0],[-1,0,0],[0,0,1]] to transform sensor axes to board axes (Betaflight convention). Firmware (mpu6000.c): - accel_pitch: was atan2(ax, az) → now atan2(ay, az) board_forward = sensor_Y, so ay drives pitch not ax - accel_roll: was atan2(ay, az) → now atan2(-ax, az) board_right = -sensor_X, so -ax drives roll not ay - gyro_pitch_rate: was +raw.gx → now -raw.gx board_gy (pitch) = -sensor_gx after R_CW270 transform - gyro_roll_rate: raw.gy unchanged (board_gx = sensor_gy ✓) - gyro_yaw_rate: raw.gz unchanged ✓ UI (index.html) rotation sign fixes: - roll → -rotation.z: Three.js +z = CCW from camera = left bank; our convention is right-bank-positive so negate - yaw → -rotation.y: Three.js +y = CCW from above; sensor_Z points down on MAMBA (az ≈ +1g when level) so gz+ = CW physical; negate - pitch → +rotation.x: correct as-is (Three.js +x tilts nose up ✓) Closes #15. 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%