{"id":14991926,"url":"https://github.com/jgsimard/RustRobotics","last_synced_at":"2025-09-25T14:30:34.991Z","repository":{"id":112589855,"uuid":"595354805","full_name":"jgsimard/RustRobotics","owner":"jgsimard","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-23T00:39:05.000Z","size":4156,"stargazers_count":14,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-11T23:38:45.464Z","etag":null,"topics":["graph-slam","kalman-filter","localization","pose-graph-optimization","robotics","rust","slam"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jgsimard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-01-30T22:51:02.000Z","updated_at":"2024-12-27T14:05:06.000Z","dependencies_parsed_at":"2024-03-23T01:39:38.895Z","dependency_job_id":"60f57bdb-4450-4a8a-8f82-59f38cbfffb5","html_url":"https://github.com/jgsimard/RustRobotics","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgsimard%2FRustRobotics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgsimard%2FRustRobotics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgsimard%2FRustRobotics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jgsimard%2FRustRobotics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jgsimard","download_url":"https://codeload.github.com/jgsimard/RustRobotics/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234200154,"owners_count":18795139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graph-slam","kalman-filter","localization","pose-graph-optimization","robotics","rust","slam"],"created_at":"2024-09-24T15:00:36.052Z","updated_at":"2025-09-25T14:30:33.796Z","avatar_url":"https://github.com/jgsimard.png","language":"Rust","readme":"# RustRobotics\n\nThis 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).\n\n## Table of Contents\n\n- [RustRobotics](#rustrobotics)\n  - [Table of Contents](#table-of-contents)\n  - [Localization](#localization)\n    - [Extended Kalman Filter + Unscented Kalman Filter + Particle Filter](#extended-kalman-filter--unscented-kalman-filter--particle-filter)\n    - [EKF/PF With Landmarks](#ekfpf-with-landmarks)\n  - [Mapping](#mapping)\n    - [Pose Graph Optimization](#pose-graph-optimization)\n  - [Todo](#todo)\n  - [Sources](#sources)\n\n## Localization\n\n### Extended Kalman Filter + Unscented Kalman Filter + Particle Filter\n\n[EKF](src/localization/extended_kalman_filter.rs), [UKF](src/localization/unscented_kalman_filter.rs), [PF](src/localization/particle_filter.rs), [Example](examples/localization/bayesian_filter.rs)\n\n```bash\ncargo run --example localization\n```\n\n### EKF/PF With Landmarks\n\n[Example](examples/localization/localization_landmarks.rs)\n\n```bash\ncargo run --example localization_landmarks\n```\n\n## Mapping\n\n### Pose Graph Optimization\n\nThis algorithm uses the sparse solver in [Russel](https://github.com/cpmech/russell/tree/main/russell_sparse) which wraps [SuiteSparse](https://people.engr.tamu.edu/davis/suitesparse.html) so follow the installation instructions. [Algorithm](src/mapping/pose_graph_optimization.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)\n\n```bash\ncargo run --example pose_graph_optimization\n```\n\n## Todo\n\n- Bayesian Filters\n  - Information filter\n  - Histogram filter\n- Pose Graph Optimization\n  - PGO on manifold (3D)\n  - Robust Kernels / Adaptive Kernels\n- Mapping\n  - Occupancy Grid\n  - Iterative Closest Point\n  - EKF-SLAM\n  - FastSLAM 1.0\n  - FastSLAM 2.0\n- Camera Calibration\n  - Direct Linear Transform (DLT)\n  - Zhang’s Method\n  - Projective 3-Point (P3P)\n- Bundle Adjustement\n- Triangulation\n- Optimal Control\n  - LQR\n  - LQG\n- etc\n\n## Sources\n\n- [Probabilistic Robotics](https://mitpress.mit.edu/9780262201629/probabilistic-robotics/)\n- [PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics)\n- [Underactuated Robotics](https://underactuated.mit.edu/index.html)\n- [Probabilistic-Robotics-Algorithms](https://github.com/ChengeYang/Probabilistic-Robotics-Algorithms)\n- [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)\n- [A tutorial on SE(3) transformation parameterizations and on-manifold optimization](https://arxiv.org/abs/2103.15980)\n- [Courses from Dr. Cyrill Stachniss](https://www.ipb.uni-bonn.de/teaching)\n\n## Compilation issues\n\nFor plotters\n\n```bash\nsudo apt install fontconfig libfontconfig libfontconfig1-dev\n```\n\nFor Russel\n\n```bash\nsudo apt install liblapacke-dev libmumps-seq-dev libopenblas-dev libsuitesparse-dev\n```\n","funding_links":[],"categories":["Summary"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgsimard%2FRustRobotics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjgsimard%2FRustRobotics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjgsimard%2FRustRobotics/lists"}