#imu #accelerometer #kalman #quaternions #madgwick

无std ahrs

Sebastian Madgwick的AHRS算法的Rust移植版

14个版本

0.6.0 2023年1月13日
0.5.0 2022年2月9日
0.4.0 2021年10月4日
0.3.0 2020年10月25日
0.1.3 2016年11月17日

算法 中排名 934

Download history 15/week @ 2024-03-11 4/week @ 2024-03-18 15/week @ 2024-03-25 36/week @ 2024-04-01 2/week @ 2024-04-08 18/week @ 2024-04-15 22/week @ 2024-04-22 3/week @ 2024-04-29 8/week @ 2024-05-13 25/week @ 2024-05-20 17/week @ 2024-05-27 16/week @ 2024-06-03 15/week @ 2024-06-10 6/week @ 2024-06-17 31/week @ 2024-06-24

每月下载量 69
3 包(2个直接使用)中使用

MIT 许可证

24KB
408

ahrs-rs

crates.io Build Status

Sebastian Madgwick的AHRS算法的Rust移植版。

文档

用法

将ahrs-rs添加到您的 Cargo.toml

[dependencies]
ahrs = "0.6"

以下是一个示例,演示如何使用任意传感器数据更新滤波器状态

use ahrs::{Ahrs, Madgwick};
use nalgebra::Vector3;
use std::f64;

fn main() {
    // Initialize filter with default values
    let mut ahrs = Madgwick::default();

    // Obtain sensor values from a source
    let gyroscope = Vector3::new(60.1, 30.2, 20.3);
    let accelerometer = Vector3::new(0.1, 0.2, 0.3);
    let magnetometer = Vector3::new(0.5, 0.6, 0.7);

    // Run inputs through AHRS filter (gyroscope must be radians/s)
    let quat = ahrs
        .update(
            &(gyroscope * (f64::consts::PI / 180.0)),
            &accelerometer,
            &magnetometer,
        )
        .unwrap();
    let (roll, pitch, yaw) = quat.euler_angles();

    // Do something with the updated state quaternion
    println!("pitch={}, roll={}, yaw={}", pitch, roll, yaw);
}

需要Crate nalgebra 作为依赖项,用于其代数类型 Vector3Quaternion

功能标志

field_access

提供对通常未公开的内部算法结构字段的可变访问。公开的API目前被视为不稳定,但仍然是一个有用的功能。例如

use ahrs::Madgwick;

let mut ahrs = Madgwick::default();

#[cfg(feature = "field_access")]
{
    let sample_period: &mut f64 = ahrs.sample_period_mut();
    *sample_period = 0.5;
}

许可证

MIT

依赖项

~3MB
~65K SLoC