diff --git a/lib/services/sensor_fusion_service.dart b/lib/services/sensor_fusion_service.dart index 825806d..7dc908b 100644 --- a/lib/services/sensor_fusion_service.dart +++ b/lib/services/sensor_fusion_service.dart @@ -74,13 +74,13 @@ class SensorFusionService { final gy = event.y * (180.0 / math.pi); _currentPitch += gx * dt; - _currentRoll += gy * dt; + _currentRoll -= gy * dt; }); _accelSub = accelerometerEventStream(samplingPeriod: const Duration(milliseconds: 20)).listen((AccelerometerEvent event) { // Calculate roll/pitch from accelerometer (accounting for gravity) // Assuming phone is mounted roughly vertical or horizontal, we calculate basic roll - final accelRoll = math.atan2(event.x, math.sqrt(event.y * event.y + event.z * event.z)) * (180.0 / math.pi); + final accelRoll = -math.atan2(event.x, math.sqrt(event.y * event.y + event.z * event.z)) * (180.0 / math.pi); final accelPitch = math.atan2(-event.y, event.z) * (180.0 / math.pi); // Complementary filter: Combine integrated gyro with absolute accel