From 639a6e749836fb013e8448dfd14f79d2bf049f51 Mon Sep 17 00:00:00 2001 From: nekomona Date: Fri, 30 Jun 2023 06:04:18 +0800 Subject: [PATCH 1/5] Reduce update when angle not changing --- firmware/src/imu/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/firmware/src/imu/mod.rs b/firmware/src/imu/mod.rs index 775e0b58..274110ff 100644 --- a/firmware/src/imu/mod.rs +++ b/firmware/src/imu/mod.rs @@ -4,6 +4,7 @@ mod fusion; use defmt::{debug, info, trace, warn}; use embassy_executor::task; use firmware_protocol::ImuType; +use approx::AbsDiffEq; use crate::{ aliases::ඞ::{DelayConcrete, I2cConcrete}, @@ -46,6 +47,7 @@ pub async fn imu_task( info!("Initialized IMU!"); let mut i = 0; + let mut prev_q = Quat::identity(); loop { let q = match imu.next_data().await { Ok(q) => q.q, @@ -64,7 +66,10 @@ pub async fn imu_task( ); } i += 1; - quat_signal.signal(q); + if !q.abs_diff_eq(&prev_q, 0.0001) { + prev_q = q; + quat_signal.signal(q); + } } } From e35b0b209e6c97ca654b1250739908a4e1c152e4 Mon Sep 17 00:00:00 2001 From: nekomona Date: Fri, 30 Jun 2023 06:16:10 +0800 Subject: [PATCH 2/5] Fix missing dependency --- firmware/Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml index 83e2d931..6e0befd1 100644 --- a/firmware/Cargo.toml +++ b/firmware/Cargo.toml @@ -16,7 +16,7 @@ rust-version.workspace = true [features] default = [ "mcu-esp32c3", - "imu-stubbed", + "imu-mpu6050", "log-rtt", "net-wifi", "fusion-stubbed", @@ -213,6 +213,7 @@ nalgebra = { version = "0.31", default-features = false, features = [ "macros", "libm", ] } +approx = "0.5.1" fugit = "0.3" firmware_protocol = { path = "../networking/firmware_protocol", features = [ "nalgebra031", From 2484dfc37d2f1d38f4a99df7a0d30fa2fd6e55a3 Mon Sep 17 00:00:00 2001 From: Ryan Butler Date: Thu, 29 Jun 2023 20:28:10 -0400 Subject: [PATCH 3/5] Update firmware/Cargo.toml --- firmware/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml index 6e0befd1..618bb972 100644 --- a/firmware/Cargo.toml +++ b/firmware/Cargo.toml @@ -16,7 +16,7 @@ rust-version.workspace = true [features] default = [ "mcu-esp32c3", - "imu-mpu6050", + "imu-stubbed", "log-rtt", "net-wifi", "fusion-stubbed", From 2f9afbddc7f19f5c9a675a52a88093e870c7bac3 Mon Sep 17 00:00:00 2001 From: nekomona Date: Fri, 30 Jun 2023 11:29:00 +0800 Subject: [PATCH 4/5] Add modem sleep to save 40% power at idle --- firmware/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml index 6e0befd1..98a2b1d1 100644 --- a/firmware/Cargo.toml +++ b/firmware/Cargo.toml @@ -167,6 +167,7 @@ esp-wifi = { git = "https://github.com/esp-rs/esp-wifi.git", rev = "76ba312", fe "embedded-svc", "wifi", "embassy-net", + "ps-min-modem", ], optional = true } smoltcp = { version = "0.9", default-features = false, features = [ ], optional = true } From 617d7c3fcce0962a7501130828da7558086108bf Mon Sep 17 00:00:00 2001 From: nekomona Date: Fri, 30 Jun 2023 11:31:49 +0800 Subject: [PATCH 5/5] Fix fmt --- firmware/src/imu/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/src/imu/mod.rs b/firmware/src/imu/mod.rs index 274110ff..9b2f50bd 100644 --- a/firmware/src/imu/mod.rs +++ b/firmware/src/imu/mod.rs @@ -1,10 +1,10 @@ mod drivers; mod fusion; +use approx::AbsDiffEq; use defmt::{debug, info, trace, warn}; use embassy_executor::task; use firmware_protocol::ImuType; -use approx::AbsDiffEq; use crate::{ aliases::ඞ::{DelayConcrete, I2cConcrete},