kinavis-ins
Strapdown inertial navigation over kinavis-kernel: NED mechanisation of an IMU and a 15-state error-state Kalman filter.
Strapdown— attitude, velocity and position integrated from gyros and accelerometers, including Earth rate, transport rate, gravity and Coriolis.InsFilter— position, velocity, attitude, gyro-bias and accelerometer-bias errors estimated from GNSS position or velocity, heading, or zero-velocity updates, and fed back into the mechanisation. Outputs position with error ellipse, velocity, roll/pitch/yaw with sigmas; no covariance matrix.InsMotion— the INS as a process model for the six-state estimator inkinavis.- No allocation, no panics. Filter consistency verified by Monte Carlo tests: NEES and NIS within χ² intervals.
use Duration;
use ;
use ;
// Alongside at 50°45.3'N, heading 037° by the gyrocompass, level.
let start = from_unix_seconds;
let berth = new;
let attitude = from_euler;
let still = new;
let mut ins = new;
// What the IMU reads at rest: the Earth turning, and minus gravity.
let latitude = 50.755_f64.to_radians;
let earth = ;
let gravity = ;
let sample = new?;
for _ in 0..10
ins.update_heading?;
ins.update_zero_velocity?;
assert!;
assert!;
# Ok::
Feature flags
std(default) — standard library maths in the kernel.libm— forno_stdtargets:--no-default-features --features libm.serde— serialisation of the value types.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.