IMU: fix mounted_position handling

This commit is contained in:
Thomas Farstrike
2025-12-07 14:56:56 +01:00
parent e581843469
commit 219f55f310
3 changed files with 7 additions and 8 deletions
@@ -85,7 +85,6 @@ class CalibrateIMUActivity(Activity):
btn_cont.set_height(lv.SIZE_CONTENT)
btn_cont.set_style_border_width(0, 0)
btn_cont.set_flex_flow(lv.FLEX_FLOW.ROW)
btn_cont.set_style_pad_all(1,0)
btn_cont.set_style_flex_main_place(lv.FLEX_ALIGN.SPACE_BETWEEN, 0)
# Action button
@@ -135,7 +134,7 @@ class CalibrateIMUActivity(Activity):
"""Update UI based on current state."""
if self.current_state == CalibrationState.READY:
self.status_label.set_text("Place device on flat, stable surface\n\nKeep device completely still during calibration")
self.detail_label.set_text("Calibration will take ~2 seconds\nUI will freeze during calibration")
self.detail_label.set_text("Calibration will take ~1 seconds\nUI will freeze during calibration")
self.action_button_label.set_text("Calibrate Now")
self.action_button.remove_state(lv.STATE.DISABLED)
self.progress_bar.add_flag(lv.obj.FLAG.HIDDEN)
@@ -187,7 +186,7 @@ class CalibrateIMUActivity(Activity):
if self.is_desktop:
stationarity = {'is_stationary': True, 'message': 'Mock: Stationary'}
else:
stationarity = SensorManager.check_stationarity(samples=30)
stationarity = SensorManager.check_stationarity(samples=25)
if stationarity is None or not stationarity['is_stationary']:
msg = stationarity['message'] if stationarity else "Stationarity check failed"
@@ -206,12 +205,12 @@ class CalibrateIMUActivity(Activity):
gyro = SensorManager.get_default_sensor(SensorManager.TYPE_GYROSCOPE)
if accel:
accel_offsets = SensorManager.calibrate_sensor(accel, samples=100)
accel_offsets = SensorManager.calibrate_sensor(accel, samples=50)
else:
accel_offsets = None
if gyro:
gyro_offsets = SensorManager.calibrate_sensor(gyro, samples=100)
gyro_offsets = SensorManager.calibrate_sensor(gyro, samples=50)
else:
gyro_offsets = None
+1 -1
View File
@@ -116,7 +116,7 @@ import mpos.sensor_manager as SensorManager
# Initialize with no I2C bus - will detect MCU temp if available
# (On Linux desktop, this will fail gracefully but set _initialized flag)
SensorManager.init(None)
SensorManager.init(None, mounted_position=SensorManager.FACING_EARTH)
print("linux.py finished")
@@ -87,7 +87,7 @@ def init(i2c_bus, address=0x6B, mounted_position=FACING_SKY):
Returns:
bool: True if initialized successfully
"""
global _i2c_bus, _i2c_address, _initialized, _has_mcu_temperature
global _i2c_bus, _i2c_address, _initialized, _has_mcu_temperature, _mounted_position
_i2c_bus = i2c_bus
_i2c_address = address
@@ -226,7 +226,7 @@ def read_sensor(sensor):
if sensor.type == TYPE_ACCELEROMETER:
if _imu_driver:
ax, ay, az = _imu_driver.read_acceleration()
if _mounted_position == SensorManager.FACING_EARTH:
if _mounted_position == FACING_EARTH:
az += _GRAVITY
return (ax, ay, az)
elif sensor.type == TYPE_GYROSCOPE: