]> rtime.felk.cvut.cz Git - hubacji1/rrts.git/blobdiff - README.md
Update documentation
[hubacji1/rrts.git] / README.md
index 13e581d140bfd632440701d1d3627eab09c3e6e2..0d4b31517cb1f5021a460fb9743471018d8a3484 100644 (file)
--- a/README.md
+++ b/README.md
-# RRT\* algorithm
+RRT\* algorithm
+===============
+
 RRTS is a C++ library with implementation of RRT\* planning algorithm.
 
 RRTS is a C++ library with implementation of RRT\* planning algorithm.
 
-# License
+License
+-------
+
 The project is published under [GNU GPLv3][1].
 
 [1]: ./LICENSE
 
 The project is published under [GNU GPLv3][1].
 
 [1]: ./LICENSE
 
-# Build
+Dependencies
+------------
+
+- `libbcar` (as submodule)
+- `libjsoncpp-dev`
+
+Build
+-----
+
 To build the project run the following commands:
 To build the project run the following commands:
-```
-mkdir build
-cd build
-cmake ../
-make
-```
+
+    mkdir build
+    cd build
+    cmake ../
+    make
 
 To build with ninja:
 
 To build with ninja:
-```
-mkdir build
-cd build
-cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../
-ninja -v
-```
-
-## Dependencies
-- `libbcar`
-- `libjsoncpp-dev`
 
 
-# RRT Extensions
-There is basic RRT\* algorithm in `rrts.cc` file. To test different approaches
-and upgrades to RRT, *extensions* are declared in `rrtext.h` and implemented in
-`rrtextX.cc`, where `X` is the number of an extension.
-
-## Implemented extensions
-There is a list of implemented extensions and what they include. The extension
-number accomply to file `src/rrtextN.cc` where `N` is:
-
-1.  "cost" RS-M -- Reeds & Shepp (build), Matej's heur. (search).
-2.  "collision" [cute c2][] for collision detection,
-3.  "path optimization" Dijkstra algorithm,
-4.  "nn" 2D grid for nodes storage,
-5.  "cost" RS-E -- Reeds & Shepp (build), Euclidean (search),
-6.  "cost" RS-RS -- Reeds & Shepp (build), Reeds & Shepp (search),
-7.  "nn" 2D [K-d tree][] for nodes storage,
-8.  "nn" 3D [K-d tree][] for nodes storage,
-9.  "nn" 3D grid for nodes storage,
-10. "cost" RS-H -- Reeds & Shepp (build), B-Spline paper (search)
-11. "goal zone" gz -- Use drivable of libbcar to check if goal found.
-12. "steer" -- Use random control input for `steer1`, use R&S for `steer2`.
-13. "path optimization" -- Dijkstra algorithm, goal zone for interesting nodes.
-14. "sampling" -- uniform sampling in circle between init, goal (rad = edist)
-15. "log" -- log goal cc each iteration.
-
-[cute c2]: https://github.com/RandyGaul/cute_headers/blob/master/cute_c2.h
-[K-d tree]: https://en.wikipedia.org/wiki/K-d_tree
-
-## Compound extensions
-There is a list of classes with reference to extensions used. The extensio
-number accomply to class `RRTCEn` where `n` is:
-
-1.  cute, gz, Dijkstra, RS-M.
-2.  cute, gz, Dijkstra, RS-E.
-3.  cute, gz, Dijkstra, RS-RS.
-4.  RS-M, cute, 2D grid.
-5.  cute, 2D grid, RS-E.
-6.  cute, 2D grid, RS-RS.
-7.  cute, Dijkstra, 2D grid, RS-E.
-8.  cute, Dijkstra, 2D grid, RS-RS.
-9.  cute, Dijkstra, 2D grid, RS-M.
-10. cute, Dijkstra, 2D tree, RS-RS.
-11. cute, Dijkstra, 2D tree, RS-E.
-12. cute, Dijkstra, 2D tree, RS-M.
-13. cute, Dijkstra, 3D tree, RS-RS.
-14. cute, Dijkstra, 3D tree, RS-M.
-15. cute, Dijkstra, 3D grid, RS-RS.
-16. cute, Dijkstra, 3D grid, RS-M.
-17. cute, gz, Dijkstra, RS-H.
-
-18. cute, gz, Dijkstra, 2D grid, RS-RS
-19. cute, gz, Dijkstra, 2D grid, RS-E
-20. cute, gz, Dijkstra, 2D grid, RS-M
-21. cute, gz, Dijkstra, 2D grid, RS-H
-
-22. cute, gz, Dijkstra, 2D tree, RS-RS
-23. cute, gz, Dijkstra, 2D tree, RS-E
-24. cute, gz, Dijkstra, 2D tree, RS-M
-25. cute, gz, Dijkstra, 2D tree, RS-H
-
-26. cute, gz, Dijkstra, 3D grid, RS-RS
-27. cute, gz, Dijkstra, 3D grid, RS-E
-28. cute, gz, Dijkstra, 3D grid, RS-M
-29. cute, gz, Dijkstra, 3D grid, RS-H
-
-30. cute, gz, Dijkstra, 3D tree, RS-RS
-31. cute, gz, Dijkstra, 3D tree, RS-E
-32. cute, gz, Dijkstra, 3D tree, RS-M
-33. cute, gz, Dijkstra, 3D tree, RS-H
-
-34. cute, gz, Dijkstra, 3D tree, RS-H, diff. steer
-
-# Contribute
-Use [OneFlow][3] branching model and keep the [changelog][4].
+    mkdir build
+    cd build
+    cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../
+    ninja -v
+
+Contribute
+----------
 
 Write [great git commit messages][5]:
 
 Write [great git commit messages][5]:
+
 1. Separate subject from body with a blank line.
 2. Limit the subject line to 50 characters.
 3. Capitalize the subject line.
 1. Separate subject from body with a blank line.
 2. Limit the subject line to 50 characters.
 3. Capitalize the subject line.
@@ -111,18 +46,24 @@ Write [great git commit messages][5]:
 6. Wrap the body at 72 characters.
 7. Use the body to explain what and why vs. how.
 
 6. Wrap the body at 72 characters.
 7. Use the body to explain what and why vs. how.
 
-When adding feature or hotfix, use [Test-driven development (TDD)][2]:
-1. Add tests to `ut` folder, add methods declaration, basic structure.
-2. Run tests (just `make` in `build` folder), check that tests *fail*.
-3. Implement functionality.
-4. Run tests, check that tests *pass*.
-5. Refactor.
-
-[2]: https://en.wikipedia.org/wiki/Test-driven_development
-[3]: https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow
-[4]: ./CHANGELOG.md
 [5]: https://chris.beams.io/posts/git-commit/
 
 [5]: https://chris.beams.io/posts/git-commit/
 
-# Documentation
+Documentation
+-------------
+
 The documentation is generated by Doxygen, at least version `1.8.15` is needed.
 Just run `doxygen` in the project root directory.
 The documentation is generated by Doxygen, at least version `1.8.15` is needed.
 Just run `doxygen` in the project root directory.
+
+
+RRT Extensions
+==============
+
+There is basic RRT\* algorithm in `rrts.cc` file. To test different approaches
+and upgrades to RRT, _extensions_ are declared in `rrtext.hh` and implemented in
+`src/rrtextN.cc`, where `N` is the number of an extension.
+
+For more information, see the `incl/rrtext.hh` header file or the generated
+documentation.
+
+RRT extensions are not to be used as the final planner. Instead, the _RRT*
+planners_ declared in `incl/rrtsp.hh` are to be used as the final planner.