From 3ceab28d72099418c84157c37b4dbcc7f3cbb3f9 Mon Sep 17 00:00:00 2001 From: Mark Nolan Date: Tue, 28 Jul 2026 23:43:31 +0100 Subject: [PATCH 1/3] Update gen-2 default alignment matrices to match revised firmware seed LSM6DSV accel/gyro: [0,-1,0, 0,0,1, -1,0,0] -> [0,1,0, 0,0,1, 1,0,0] LIS2MDL mag: [0,1,0, 0,0,1, -1,0,0] -> [1,0,0, 0,0,1, 0,1,0] LIS2DW12 unchanged. Determinant/third-column invariants still hold (accel/gyro proper rotations, mag left-handed, chip +Z -> common +Y). Co-Authored-By: Claude Fable 5 --- src/devices/verisense/calibrationDefaults.ts | 6 +++--- tests/verisense/calibrationDefaults.test.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/devices/verisense/calibrationDefaults.ts b/src/devices/verisense/calibrationDefaults.ts index a9be742..742251b 100644 --- a/src/devices/verisense/calibrationDefaults.ts +++ b/src/devices/verisense/calibrationDefaults.ts @@ -119,14 +119,14 @@ const CALIBRATION_SENSORS_GEN2: VerisenseCalibrationSensor[] = [ id: CalibSensorId.LSM6DSV_ACCEL, label: 'Accelerometer (LSM6DSV)', unit: 'LSB/(m/s²)', - align: [0, -1, 0, 0, 0, 1, -1, 0, 0], + align: [0, 1, 0, 0, 0, 1, 1, 0, 0], ranges: ACCEL_RANGES, }, { id: CalibSensorId.LSM6DSV_GYRO, label: 'Gyroscope (LSM6DSV)', unit: 'LSB/dps', - align: [0, -1, 0, 0, 0, 1, -1, 0, 0], + align: [0, 1, 0, 0, 0, 1, 1, 0, 0], ranges: GYRO_RANGES, }, { @@ -140,7 +140,7 @@ const CALIBRATION_SENSORS_GEN2: VerisenseCalibrationSensor[] = [ id: CalibSensorId.LIS2MDL_MAG, label: 'Magnetometer (LIS2MDL)', unit: 'LSB/Gauss', - align: [0, 1, 0, 0, 0, 1, -1, 0, 0], + align: [1, 0, 0, 0, 0, 1, 0, 1, 0], ranges: [{ code: 0, label: '±49.152Ga', sens: 667 }], }, ]; diff --git a/tests/verisense/calibrationDefaults.test.ts b/tests/verisense/calibrationDefaults.test.ts index bf1b701..5ff8add 100644 --- a/tests/verisense/calibrationDefaults.test.ts +++ b/tests/verisense/calibrationDefaults.test.ts @@ -142,7 +142,7 @@ describe('buildDefaultVerisenseCalibrationSet', () => { const accel2g = set.getImu(CalibSensorId.LSM6DSV_ACCEL, 0)!; expect(accel2g.bias).toEqual([0, 0, 0]); expect(accel2g.sens[0]).toBe(Math.fround(1671.665922915)); - expect(accel2g.align).toEqual([0, -1, 0, 0, 0, 1, -1, 0, 0]); + expect(accel2g.align).toEqual([0, 1, 0, 0, 0, 1, 1, 0, 0]); expect(set.blocks.every((b) => b.isDefault)).toBe(true); }); }); From d95647436e09da0037470522acd2f05460f82c05 Mon Sep 17 00:00:00 2001 From: Mark Nolan Date: Wed, 29 Jul 2026 00:26:55 +0100 Subject: [PATCH 2/3] Pin all four gen-2 default alignments in the round-trip test Addresses Copilot review: the seed round-trip test only pinned the LSM6DSV accel alignment, so drift in the gyro / LIS2DW12 / LIS2MDL defaults would not have been caught. Co-Authored-By: Claude Fable 5 --- tests/verisense/calibrationDefaults.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/verisense/calibrationDefaults.test.ts b/tests/verisense/calibrationDefaults.test.ts index 5ff8add..8ce13b6 100644 --- a/tests/verisense/calibrationDefaults.test.ts +++ b/tests/verisense/calibrationDefaults.test.ts @@ -142,7 +142,13 @@ describe('buildDefaultVerisenseCalibrationSet', () => { const accel2g = set.getImu(CalibSensorId.LSM6DSV_ACCEL, 0)!; expect(accel2g.bias).toEqual([0, 0, 0]); expect(accel2g.sens[0]).toBe(Math.fround(1671.665922915)); + // pin every gen-2 default alignment so drift in any sensor's seed is caught. expect(accel2g.align).toEqual([0, 1, 0, 0, 0, 1, 1, 0, 0]); + expect(set.getImu(CalibSensorId.LSM6DSV_GYRO, 0)!.align).toEqual([0, 1, 0, 0, 0, 1, 1, 0, 0]); + expect(set.getImu(CalibSensorId.LIS2DW12_ACCEL, 0)!.align).toEqual([ + 1, 0, 0, 0, 0, 1, 0, -1, 0, + ]); + expect(set.getImu(CalibSensorId.LIS2MDL_MAG, 0)!.align).toEqual([1, 0, 0, 0, 0, 1, 0, 1, 0]); expect(set.blocks.every((b) => b.isDefault)).toBe(true); }); }); From 186b8b4e01736719417ebbe2eccfdf3d86143e38 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 29 Jul 2026 07:05:47 +0000 Subject: [PATCH 3/3] Fix lint: remove unused generateInfoMem import in rtc-config-write.test.ts --- tests/dock/rtc-config-write.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dock/rtc-config-write.test.ts b/tests/dock/rtc-config-write.test.ts index 5784596..4f6a866 100644 --- a/tests/dock/rtc-config-write.test.ts +++ b/tests/dock/rtc-config-write.test.ts @@ -10,7 +10,7 @@ import { type UartRxPacket, } from '../../src/devices/dock/protocol.js'; import { UART_PACKET_CMD } from '../../src/devices/dock/constants.js'; -import { generateInfoMem, parseInfoMem, INFOMEM_SIZE } from '../../src/devices/infomem/index.js'; +import { parseInfoMem, INFOMEM_SIZE } from '../../src/devices/infomem/index.js'; import type { InfoMemContext } from '../../src/devices/infomem/index.js'; const dec = (u8: Uint8Array): string => new TextDecoder().decode(u8);