From 99072a2cc9136e623baa0c9dfb523ef4912fb9f0 Mon Sep 17 00:00:00 2001 From: asahtik Date: Thu, 19 Mar 2026 15:13:18 +0100 Subject: [PATCH 1/3] Add test to check for updates in each imu package --- .../ondevice_tests/pipeline/node/imu_test.cpp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/src/ondevice_tests/pipeline/node/imu_test.cpp b/tests/src/ondevice_tests/pipeline/node/imu_test.cpp index 9d46b71e9c..6837f50865 100644 --- a/tests/src/ondevice_tests/pipeline/node/imu_test.cpp +++ b/tests/src/ondevice_tests/pipeline/node/imu_test.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include "depthai/depthai.hpp" @@ -40,3 +41,33 @@ TEST_CASE("Test IMU, all sensors") { TEST_CASE("Test IMU, gyroscope 480 Hz") { basicIMUTest(480.0f, {dai::IMUSensor::GYROSCOPE_RAW}, 0.8f); // TODO(Morato) - debug why some devices need so much tolerance } + +TEST_CASE("At least one measurement should be updated") { + dai::Pipeline pipeline; + auto imu = pipeline.create(); + imu->enableIMUSensor(dai::IMUSensor::ACCELEROMETER_RAW, 400); + imu->enableIMUSensor(dai::IMUSensor::GYROSCOPE_RAW, 400); + + imu->setBatchReportThreshold(10); + imu->setMaxBatchReports(20); + + auto imuQueue = imu->out.createOutputQueue(50, false); + + pipeline.start(); + + auto start = std::chrono::steady_clock::now(); + + dai::IMUPacket previousPacket; + + while(pipeline.isRunning() && std::chrono::steady_clock::now() - start <= std::chrono::seconds(10)) { + auto imuData = imuQueue->get(); + if(imuData == nullptr) continue; + + for(const auto& imuPacket : imuData->packets) { + REQUIRE((imuPacket.acceleroMeter.sequence > previousPacket.acceleroMeter.sequence || imuPacket.gyroscope.sequence > previousPacket.gyroscope.sequence)); + previousPacket = imuPacket; + } + } + + pipeline.stop(); +} From fca55752a2e8266f2f7bfffc8fb21b323859e12e Mon Sep 17 00:00:00 2001 From: asahtik Date: Thu, 19 Mar 2026 15:21:41 +0100 Subject: [PATCH 2/3] RVC4 FW: Set sequences & handle spurious wakeups in IMU --- cmake/Depthai/DepthaiDeviceRVC4Config.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake index 9953f64898..7124fd7c58 100644 --- a/cmake/Depthai/DepthaiDeviceRVC4Config.cmake +++ b/cmake/Depthai/DepthaiDeviceRVC4Config.cmake @@ -3,4 +3,4 @@ set(DEPTHAI_DEVICE_RVC4_MATURITY "snapshot") # "version if applicable" -set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+b96987e20d3e015dae8854b5fa8faa599c8d5ea8") +set(DEPTHAI_DEVICE_RVC4_VERSION "0.0.1+40ac229a57372612e96393b2a6bf595a51b8ae88") From e755f0124690ffe6d50fd16ab79a2e17106f21e5 Mon Sep 17 00:00:00 2001 From: asahtik Date: Tue, 31 Mar 2026 11:42:44 +0200 Subject: [PATCH 3/3] Fix test --- tests/src/ondevice_tests/pipeline/node/imu_test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/src/ondevice_tests/pipeline/node/imu_test.cpp b/tests/src/ondevice_tests/pipeline/node/imu_test.cpp index 6837f50865..5c288adda7 100644 --- a/tests/src/ondevice_tests/pipeline/node/imu_test.cpp +++ b/tests/src/ondevice_tests/pipeline/node/imu_test.cpp @@ -59,15 +59,21 @@ TEST_CASE("At least one measurement should be updated") { dai::IMUPacket previousPacket; + uint32_t numMessages = 0; + while(pipeline.isRunning() && std::chrono::steady_clock::now() - start <= std::chrono::seconds(10)) { auto imuData = imuQueue->get(); if(imuData == nullptr) continue; + ++numMessages; + for(const auto& imuPacket : imuData->packets) { REQUIRE((imuPacket.acceleroMeter.sequence > previousPacket.acceleroMeter.sequence || imuPacket.gyroscope.sequence > previousPacket.gyroscope.sequence)); previousPacket = imuPacket; } } + REQUIRE(numMessages > 0); + pipeline.stop(); }