8个版本
使用旧的Rust 2015
0.2.2 | 2020年6月12日 |
---|---|
0.2.1 | 2018年9月5日 |
0.1.5 | 2018年9月4日 |
#618 在 嵌入式开发
在icm42688中使用
54KB
1K SLoC
dcmimu
融合低成本三轴MEMS陀螺仪和加速度计测量的算法。
原始版本的无std Rust移植。
注意:libm
仍然不能与溢出检查一起工作,因此您必须使用--release
编译项目。在相关问题中留下评论以提高认识。
证书
Heikki Hyyti和Arto Visala,“低成本MEMS IMU的基于DCM的姿态估计算法”,国际导航与观测杂志,第2015卷,文章ID 503814,18页,2015.
用法
# Create DCMIMU:
let mut dcmimu = DCMIMU::new();
let mut prev_t_ms = now();
loop {
# get gyroscope and accelerometer measurement from your sensors:
let gyro = sensor.read_gyro();
let accel = sensor.read_accel();
# Convert measurements to SI if needed.
# Get time difference since last update:
let t_ms = now();
let dt_ms = t_ms - prev_t_ms
prev_t_ms = t_ms
# Update dcmimu states (don't forget to use SI):
let (dcm, _gyro_biases) = dcmimu.update((gyro.x, gyro.y, gyro.z),
(accel.x, accel.y, accel.z),
dt_ms.seconds());
println!("Roll: {}; yaw: {}; pitch: {}", dcm.roll, dcm.yaw, dcm.pitch);
# Measurements can also be queried without updating:
println!("{:?} == {}, {}, {}", dcmimu.all(), dcmimu.roll(), dcmimu.yaw(), dcmimu.pitch());
}
查看mpu9250以获取加速度计/陀螺仪传感器驱动程序。
文档
可通过docs.rs获取。
许可证
依赖项
~435KB