robotics 0.1.5

Rust implementation of robotics algorithms
Documentation
# RustRobotics

This package is a rust implementation of robotics algorithms. So far, the main source is the book [Probabilistic Robotics](https://mitpress.mit.edu/9780262201629/probabilistic-robotics/). I plan to have algorithms implementations in the `src` folder and the algorithms use cases in the `examples` folder. I plan to have python bindings using [pyo3](https://github.com/PyO3/pyo3)/[maturin](https://github.com/PyO3/maturin). I am also implementing the algorithms in python using [JAX](https://jax.readthedocs.io/en/latest/) in this [repo](https://github.com/jgsimard/jaxrobot).

## Table of Contents

- [RustRobotics](#rustrobotics)
  - [Table of Contents](#table-of-contents)
  - [Localization](#localization)
    - [Extended Kalman Filter](#extended-kalman-filter)
    - [Unscented Kalman Filter](#unscented-kalman-filter)
    - [Extended Kalman Filter With Landmarks](#extended-kalman-filter-with-landmarks)
    - [Particle Filter With Landmarks](#particle-filter-with-landmarks)
  - [Mapping](#mapping)
    - [Pose Graph Optimization](#pose-graph-optimization)
  - [Sources](#sources)

<!-- * Unscented Kalman filter -->
<!-- * Information filter -->
<!-- * Particle filter -->
<!-- * Hisstogram filter -->
<!-- * Mapping -->
  <!-- * Gaussian Grid -->
  <!-- * Ray Casting Grid -->
  <!-- * Lidar to Grid -->
  <!-- * K-means clustering -->
  <!-- * Gaussian Mixture Model -->
  <!-- * Rectangle Fitting -->
<!-- * SLAM -->
  <!-- * Iterative Closest Point -->
  <!-- * EKF-SLAM -->
  <!-- * GraphSlam -->
  <!-- * SEIF-SLAM -->
  <!-- * FastSLAM 1.0 -->
  <!-- * FastSLAM 2.0 -->
<!-- * Path Planning -->
<!-- * Grid Based Search -->
<!-- * Dijkstra -->
<!-- * A-star -->
<!-- * D-star -->
<!-- * D-star lite -->
<!-- * Potential Field -->
<!-- * Rapidly-Exploring Random Trees (RRT) -->
<!-- * RRT-star -->
<!-- * RRT-star with reeds-shepp path -->
<!-- * Polynomial -->
<!-- * Order 3 -->
<!-- * Order 5 -->

## Localization

### Extended Kalman Filter

[Algorithm](src/localization/extended_kalman_filter.rs), [Example](examples/localization/extended_kalman_filter.rs)

```bash
cargo run --example ekf
```

### Unscented Kalman Filter

[Algorithm](src/localization/unscented_kalman_filter.rs), [Example](examples/localization/unscented_kalman_filter.rs)

```bash
cargo run --example ukf
```

### Extended Kalman Filter With Landmarks

[Algorithm](src/localization/extended_kalman_filter.rs), [Example](examples/localization/extended_kalman_filter_landmarks.rs)

```bash
cargo run --example ekf_lm
```

### Particle Filter With Landmarks

[Algorithm](src/localization/particle_filter.rs), [Example](examples/localization/particle_filter.rs)

```bash
cargo run --example pf_lm
```

## Mapping

### Pose Graph Optimization

This algorithm uses the sparse solver in [Russel](https://github.com/cpmech/russell/tree/main/russell_sparse) so follow the installation instructions. [Algorithm](src/mapping/pose_graph_slam.rs), [Example](examples/mapping/pose_graph_optimization.rs), [Source](https://www.researchgate.net/profile/Mohamed-Mourad-Lafifi/post/What_is_the_relationship_between_GraphSLAM_and_Pose_Graph_SLAM/attachment/613b3f63647f3906fc978272/AS%3A1066449581928450%401631272802870/download/A+tutorial+on+graph-based+SLAM+_+Grisetti2010.pdf)

```bash
cargo run --example pose_graph_optimization
```

## Sources

[Probabilistic Robotics](https://mitpress.mit.edu/9780262201629/probabilistic-robotics/)
[PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics)
[Underactuated Robotics](https://underactuated.mit.edu/index.html)
[Probabilistic-Robotics-Algorithms](https://github.com/ChengeYang/Probabilistic-Robotics-Algorithms)
[A tutorial on Graph-Based SLAM](https://www.researchgate.net/profile/Mohamed-Mourad-Lafifi/post/What_is_the_relationship_between_GraphSLAM_and_Pose_Graph_SLAM/attachment/613b3f63647f3906fc978272/AS%3A1066449581928450%401631272802870/download/A+tutorial+on+graph-based+SLAM+_+Grisetti2010.pdf)