Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hortovanyi/Unscented-Kalman-Filter-Rust
UKF written in Rust based on the C++ UKF from the Udacity SD Car Nanodegree
https://github.com/hortovanyi/Unscented-Kalman-Filter-Rust
Last synced: about 1 month ago
JSON representation
UKF written in Rust based on the C++ UKF from the Udacity SD Car Nanodegree
- Host: GitHub
- URL: https://github.com/hortovanyi/Unscented-Kalman-Filter-Rust
- Owner: hortovanyi
- Created: 2020-01-31T00:19:36.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-04-26T03:30:03.000Z (almost 3 years ago)
- Last Synced: 2024-09-24T16:09:48.335Z (5 months ago)
- Language: Rust
- Size: 275 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-rust-list - hortovanyi/Unscented-Kalman-Filter-Rust - Kalman-Filter-Rust?style=social"/> : UKF written in Rust based on the C++ UKF from the Udacity SD Car Nanodegree. (Signal Processing)
- awesome-rust-list - hortovanyi/Unscented-Kalman-Filter-Rust - Kalman-Filter-Rust?style=social"/> : UKF written in Rust based on the C++ UKF from the Udacity SD Car Nanodegree. (Signal Processing)
README
# Unscented-Kalman-Filter-Rust
UKF written in Rust based on the C++ UKF from the Udacity SD Car Nanodegree. The C++ project code this project is based on can be found at https://github.com/hortovanyi/CarND-Unscented-Kalman-Filter-Project.To build and run this project use
```
cargo run -- ./data/sample-laser-radar-measurement-data-1.txt output.txt -vv
```
in the project root directory after cloning it.The above command when run should produce a log with the following output
```
Feb 21 09:31:35.370 DEBG slog::Level::TRACE
Feb 21 09:31:35.371 TRCE app_setup
Feb 21 09:31:35.371 WARN output_path: output.txt will be overwritten
Feb 21 09:31:35.371 DEBG opening input for read: `./data/sample-laser-radar-measurement-data-1.txt`
Feb 21 09:31:35.371 DEBG creating output: `output.txt`
Feb 21 09:31:35.371 TRCE app_setup_complete
Feb 21 09:31:35.371 INFO processing_started
Feb 21 09:31:35.371 TRCE run_ukf start
Feb 21 09:31:35.372 INFO loading measurement data ....
Feb 21 09:31:35.395 TRCE creating ukf object
Feb 21 09:31:35.395 INFO processing measurement data ....
Feb 21 09:31:35.395 TRCE init_state_radar x:Matrix { data: [8.462918745489562, 0.24346236596519058, -3.04035, 0.0287602, 0.0] }
Feb 21 09:31:35.395 DEBG init x:
┌ ┐
│ 8.462918745489562 │
│ 0.24346236596519058 │
│ -3.04035 │
│ 0.0287602 │
│ 0 │
└ ┘Feb 21 09:31:35.395 DEBG init P:
┌ ┐
│ 1 0 0 0 0 │
│ 0 1 0 0 0 │
│ 0 0 1 0 0 │
│ 0 0 0 1 0 │
│ 0 0 0 0 1 │
└ ┘Feb 21 09:31:35.396 DEBG init lidar_sensor:LidarSensor { n_z: 2, std_laspx: 0.15, std_laspy: 0.15 }
Feb 21 09:31:35.396 DEBG init radar_sensor:RadarSensor { n_z: 3, std_radr: 0.3, std_radphi: 0.03, std_radrd: 0.3 }
Feb 21 09:31:36.438 INFO Accruacry - RMSE: [0.07726250037271036, 0.08179721812107782, 0.5892783492841654, 0.5742886905052718]
Feb 21 09:31:36.438 TRCE run_ukf finish
Feb 21 09:31:36.438 INFO processing_finished
```Note the `Accruacry - RMSE: [0.07726250037271036, 0.08179721812107782, 0.5892783492841654, 0.5742886905052718]`
This was my first attempt at a project using Rust. It was a great learning exercise. Compared to the c++ version, dynamic vectors & arrays were not used in favour of taking a more strongly typed position. Extensive use of Rust traits were used. The resultant code has abstracted some calculations down into the traits from the main UKF Fitler implmentation.