A feature release adding state estimation, feedback control, wheeled kinematics, and
waypoint paths, plus a prelude and one-call entry points for the calculus core.
Added
- Const-evaluable solver constructors, AutoDiff
new(), and Gaussian quadrature node
tables /nodes. @rtmongold (#168) - Add
Vector/Matrixget/get_mut,Matrix::try_row/try_column, and
Matrix::as_mut_slice_rows. @rtmongold (#185) - Kinematics. A
kinematicsmodule withDifferentialDrive, a unicycle model, and
dead-reckoning odometry, plus akinematicsdemo. @kmolan (#170) - State estimation. An
estimationmodule withKalmanFilterand
ExtendedKalmanFilter(the latter differentiating its nonlinear models for the
Jacobians each step), aCovarianceUpdatechoice for how the covariance is recomputed,
cross-validation fixtures, and anestimationdemo. @kmolan (#175) - Particle filter. A bootstrap/SIR
ParticleFilterwith pluggable resampling and
measurement likelihood, behind theallocfeature. @kmolan (#188) - Control. A
controlmodule withPid, a one-pole derivative filter
(OnePoleLowPass), and the pure-pursuit path-following law. @kmolan (#179) - Follow-the-gap. A reactive obstacle-avoidance controller in
control, with an
avoidancedemo. @kmolan (#188) - Waypoint paths. A
motionmodule withPolylinePathand its arc-length,
closest-point, and lookahead queries. @kmolan (#179) - Random numbers. A
randommodule with theRandomSourcetrait and the seedable
Pcg32generator, giving uniform and normal draws without a heap orstd. @kmolan (#188) - Prelude and one-call functions.
multicalc::preludefor the traits and short
functions worth importing together, plusderivative,second_derivative,partial,
andintegral, which need no configured backend. @kmolan (#198) - General N×N determinant and inverse. Sizes past 4×4 now factor through LU instead of
being unsupported; small sizes keep their closed forms. @kirloo (#184) - 3D surface flux integral.
flux_integral_3dandflux_integral_3d_custom.
@mubasharameen485-cloud (#172) - Property tests that LU and QR factorizations reconstruct their input matrix.
@yvoolab (#189) - A localization and obstacle-avoidance lap demo, with simulated lidar, an occupancy grid,
a particle-filter localizer, latency benchmarks, and embedded smoke fixtures.
@kmolan (#192) - docs.rs now builds with all features so gated items appear in the published docs.
@kmolan (#197)
Fixed
- Iterative integrators return
IntegrateError::LimitsIllDefinedinstead ofNaN
ifclassifyfails after validation. @rtmongold (#171) - RK45 now handles zero-dimensional states without producing NaN norms.
@terminalchai (#174) - 2×2/3×3/4×4
Matrix::inversereject near-singular inputs via an
EPSILON-scaled det check instead of exactdet == 0. @rtmongold (#181) - Spatial small-angle Taylor cutoffs use
30 · EPSILONand(30 · EPSILON)²
instead of fixed1e-6/1e-12. @rtmongold (#190) - The iterative and Gaussian integrators check their samples and return
IntegrateError::NonFinite, instead of letting a blown-up integrand propagate into a
garbage result. @SAY-5 (#180) - The multi-variable integrators bounds-check the variable index and return the new
IntegrateError::IndexOutOfRange. @Devil1716 (#178)
Changed
- Keep panicking
Index/IndexMutas the ergonomic Matrix/Vector access path.
Remove panickingrow/column(usetry_row/try_column). @rtmongold (#185) - Vector-field functions renamed and re-exported.
curl::get_2d,
line_integral::get_2d, and the rest are nowcurl_2d,line_integral_2d, and so on,
imported straight fromvector_field. @kmolan (#199) - Kalman filter takes a
KalmanModel. The four model matrices are one named struct
instead of four positional constructor arguments. @kmolan (#198) - The crate root re-exports the differentiation, integration, and approximation types, so
they can be named without their module paths. @kmolan (#198) - Rewrote the test suite for readability: table-driven cases, named expectations, and
shared helpers. @kmolan (#200) - Golden fixture regeneration runs from a script in a local virtualenv with locked,
hash-checked dependencies and a pinned timestamp, so a rerun produces the same bytes.
@kmolan (#201) - Dropped CI caching, which was causing flaky pipeline failures. @kmolan (#173)