kinavis
The navigation algorithms of KINAVIS:
compass corrections, the sailings, dead reckoning, position fixing, passage
planning and guidance, tides, the sun, and a Kalman filter over the
navigation state — with no panics, no unsafe and no allocation.
[]
= "1"
use convert_compass_course_to_true_course;
use ;
// A swing: deviation observed on every tenth of the compass, 000° to 350°.
let table = from_deviations?;
// True course made good steering 003° by compass, variation 2.7°W.
let solution = convert_compass_course_to_true_course?;
assert_eq!;
# Ok::
A compass course cannot be passed where a true one belongs, and knots cannot be mistaken for metres per second: every angle carries its reference frame in the type, and every quantity its unit.
What is inside
| Area | Modules |
|---|---|
Value types (from kinavis-kernel) |
angle, units, position, time, geodesy, local, observation, gnss, event, environment |
| The compass | deviation, navigation_solutions |
| Position | sailings, dead_reckoning, fix, gnss_intake |
| Passage | route, turning, guidance, schedule, composite, clearance |
| Surroundings | relative_motion, anchor, mob, conditions, tides, sun |
| Estimation | estimator, observations, state, snapshot |
The guide walks through all of it with examples that are compiled and run as tests.
Features
| Feature | Default | What it does |
|---|---|---|
std |
yes | the standard library's floating point maths; implies alloc |
alloc |
via std |
Vec-returning companions of the *_into calls |
libm |
pure-Rust maths for no_std targets |
|
serde |
serialisation, with deserialisation through the constructors |
For a bare-metal target with no allocator:
= { = "1", = false, = ["libm"] }
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.