fast_slam_project

2.2 KBMD
README.md
2.2 KB54 lines • markdown
1# Fast slam project
2
3This repo is an implementation of the [fast slam v2.0 algorithm](http://robots.stanford.edu/papers/Montemerlo03a.pdf). The goal for this implementation is versatility over, but including efficiency. This was tested with ros humble and gazebo harmonic.
4
5## Project layout
6
7### [fast_slam]
8
9This is where the algorithm lives
10
11### [fast_slam_gz]
12- **[fast_slam_gz_plugins]**  
13Simple gazebo plugins that publish fake landmarks in the vicinity based on the obstacle locations.
14    - `FakeLandmarkLines`
15    - `FakeLandmarkPoses`
16    - `FakeLandmarkPoints`
17
18
19- **[fast_slam_gz_description]**  
20A simple description of a differential drive robot and a simple world with arbitrary landmarks.
21
22### [fast_slam_ros]
23- **[fast_slam_ros_core]**  
24The fast slam ros interface. It takes the fake landmarks updates the robot pose with a call to the `update` and broadcasts the drift correction of the diff drive odometry (map->odom transform).
25
26- **[fast_slam_ros_msgs]**  
27Additional message defintions for this project. This includes lines and arrays that are not covered by standard message packages.
28    - `LineLandmark.msg`
29    - `LineLandmarkArray.msg`
30    - `LineLandmarkStamped.msg`
31    - `PointArray.msg`
32
33- **[fast_slam_ros_visualization]**  
34This repo includes rviz plugins for the message descriptions.  
35    - `LineLandmarkDisplay`
36    - `PointArrayDisplay`
37
38
39## Roadmap
40
41In no particular order
42
43- Add support of combined association with different types of measurements
44- Keep kd tree alive for nn search, dynamically update when map tree is changing
45- Maybe replace binary tree with kd tree directly, but for localization directly for sure. [see iterative dynamic kd trees](https://arxiv.org/pdf/2102.10808.pdf)
46- Add support for direct localization without map building
47- Add multithreading support for particle updates
48- Add global localization by sampling in ROI
49- Add proper motion model to the particle set
50- Add propagation without update
51- Add conditional update
52- Add a dense version using scan matching [see iris lama scan-matching for efficient implementation](https://github.com/iris-ua/iris_lama)
53- Make the ros interface dynamically switch between dense and sparse localization
54