2 RRTS is a C++ library with implementation of RRT\* planning algorithm.
5 The project is published under [GNU GPLv3][1].
10 To build the project run the following commands:
22 cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../
31 There is basic RRT\* algorithm in `rrts.cc` file. To test different approaches
32 and upgrades to RRT, *extensions* are declared in `rrtext.h` and implemented in
33 `rrtextX.cc`, where `X` is the number of an extension.
35 ## Implemented extensions
36 There is a list of implemented extensions and what they include:
37 - `rrtext10.cc`: "cost" RS-B -- Reeds & Shepp (build), B-Spline paper (search)
38 - `rrtext9.cc`: "nn" 3D grid for nodes storage,
39 - `rrtext8.cc`: "nn" 3D [K-d tree][] for nodes storage,
40 - `rrtext7.cc`: "nn" 2D [K-d tree][] for nodes storage,
41 - `rrtext6.cc`: "cost" RS-RS -- Reeds & Shepp (build), Reeds & Shepp (search),
42 - `rrtext5.cc`: "cost" RS-E -- Reeds & Shepp (build), Euclidean (search),
43 - `rrtext4.cc`: "nn" 2D grid for nodes storage,
44 - `rrtext3.cc`: "path optimization" Dijkstra algorithm,
45 - `rrtext2.cc`: "collision" [cute c2][] for collision detection,
46 - `rrtext1.cc`: "cost" RS-H -- Reeds & Shepp (build), Matej's heur. (search).
48 [cute c2]: https://github.com/RandyGaul/cute_headers/blob/master/cute_c2.h
49 [K-d tree]: https://en.wikipedia.org/wiki/K-d_tree
51 ## Compound extensions
52 There is a list of classes with reference to extensions used:
53 - `RRTCE1`: RS-H, cute.
54 - `RRTCE2`: cute, RS-E.
55 - `RRTCE3`: cute, RS-RS.
56 - `RRTCE4`: RS-H, cute, 2D grid.
57 - `RRTCE5`: cute, 2D grid, RS-E.
58 - `RRTCE6`: cute, 2D grid, RS-RS.
59 - `RRTCE7`: cute, Dijkstra, 2D grid, RS-E.
60 - `RRTCE8`: cute, Dijkstra, 2D grid, RS-RS.
61 - `RRTCE9`: cute, Dijkstra, 2D grid, RS-H.
62 - `RRTCE10`: cute, Dijkstra, 2D tree, RS-RS.
63 - `RRTCE11`: cute, Dijkstra, 2D tree, RS-E.
64 - `RRTCE12`: cute, Dijkstra, 2D tree, RS-H.
65 - `RRTCE13`: cute, Dijkstra, 3D tree, RS-RS.
66 - `RRTCE14`: cute, Dijkstra, 3D tree, RS-H.
67 - `RRTCE15`: cute, Dijkstra, 3D grid, RS-RS.
68 - `RRTCE16`: cute, Dijkstra, 3D grid, RS-H.
71 Use [OneFlow][3] branching model and keep the [changelog][4].
73 Write [great git commit messages][5]:
74 1. Separate subject from body with a blank line.
75 2. Limit the subject line to 50 characters.
76 3. Capitalize the subject line.
77 4. Do not end the subject line with a period.
78 5. Use the imperative mood in the subject line.
79 6. Wrap the body at 72 characters.
80 7. Use the body to explain what and why vs. how.
82 When adding feature or hotfix, use [Test-driven development (TDD)][2]:
83 1. Add tests to `ut` folder, add methods declaration, basic structure.
84 2. Run tests (just `make` in `build` folder), check that tests *fail*.
85 3. Implement functionality.
86 4. Run tests, check that tests *pass*.
89 [2]: https://en.wikipedia.org/wiki/Test-driven_development
90 [3]: https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow
92 [5]: https://chris.beams.io/posts/git-commit/
95 The documentation is generated by Doxygen, at least version `1.8.15` is needed.
96 Just run `doxygen` in the project root directory.