You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A tool for visualizing numerous pathfinding algorithms.
5
+
A tool for visualizing numerous pathfinding algorithms in two dimensions.
8
6
9
-
Current implementation of the project involves four search-based planning algorithms: BFS, DFS, DIJKSTRA and A-Star, and two sampling-based planning algorithms: RRT and RRT*. The project extensively uses SFML and Modern C++ features such as smart pointers, lamda expressions along with multi-threading concepts.
7
+
This project involves minimal implementations of the popular planning algorithms, including both graph-based and sampling-based planners. We provide an easy-to-use GUI to control the animation process and explore different planner configurations. This is an ongoing work and current implementation of the project only involves four search-based planning algorithms: BFS, DFS, DIJKSTRA and A-Star. The project extensively uses SFML, ImGui and Modern C++ features such as smart pointers, lamda expressions along with multi-threading concepts.
10
8
11
-

9
+

12
10
13
11
## How to use
14
12
15
13
- to place/remove obstacle cells (`left-CLICKED`)
16
14
- to change starting cell (`left-SHIFT + left-CLICKED`)
17
15
- to change end cell (`left-CTRL + left-CLICKED`)
18
16
19
-
## Dependencies
20
-
21
-
* cmake >= 2.8
22
-
* All OSes: [click here for installation instructions](https://cmake.org/install/)
23
-
* make >= 4.1 (Linux, Mac), 3.81 (Windows)
24
-
* Linux: make is installed by default on most Linux distros
25
-
* Mac: [install Xcode command line tools to get make](https://developer.apple.com/xcode/features/)
26
-
* Windows: [Click here for installation instructions](http://gnuwin32.sourceforge.net/packages/make.htm)
27
-
* SFML >= 2.5.1
28
-
* All OSes: [click here for installation instructions](https://www.sfml-dev.org/tutorials/2.5/#getting-started)
29
-
* Linux: Details installation instructions are provided below.
30
-
* gcc/g++ >= 5.4
31
-
* Linux: gcc / g++ is installed by default on most Linux distros
32
-
* Mac: same deal as make - [install Xcode command line tools](https://developer.apple.com/xcode/features/)
33
-
* Windows: recommend using [MinGW](http://www.mingw.org/)
34
-
35
17
## Basic Build Instructions
36
18
19
+
The project depends on [SFML](https://github.com/SFML/SFML), [Dear ImGui](https://github.com/ocornut/imgui) and [ImGui-SFML](https://github.com/eliasdaler/imgui-sfml). However, you are not required to install external dependencies by yourself. The following build instructions will manage all the necessary external dependencies for you.
20
+
37
21
1. Clone this repo.
38
22
2. Make a build directory in the top level project directory: `mkdir build && cd build`
39
23
3. Compile: `cmake .. && make`
40
24
4. Run it: `./main`.
41
25
42
-
## SFML Installation on Linux
43
-
44
-
There are different approaches to the installation of SFML on Linux. For example, on Debian you would do:
45
-
46
-
`sudo apt-get install libsfml-dev`
47
-
48
-
>Please note that the minimum version of SFML required in this project is 2.5.1. and at the time of writing you can only install sfml-v2.5.1 directly from debain distribution's package repository for Ubuntu 20.04, otherwise please install it from source.
49
-
50
-
### SFML Installation from source
51
-
52
-
For Ubuntu versions less than 20.04., SFML v2.5.1. can only be installed from source. There is a linker error when attempting to compile and link a C++ program with the SFML libraries from souce. You can follow this [thread](https://en.sfml-dev.org/forums/index.php?topic=20638.0) to build SFML. I have also described the same installation instructions below.
53
-
54
-
1. Download the [SFML source code](https://www.sfml-dev.org/files/SFML-2.5.1-sources.zip). Unpack it. Navigate to the root directory of the unzipped source code.
55
-
56
-
2. Open the CMakeLists.txt file in the path */src/SFML/Graphics/CMakeLists.txt*.
57
-
58
-
3. Add the following lines at the end of the file.
59
-
60
-
```
61
-
if(SFML_COMPILER_GCC AND BUILD_SHARED_LIBS)
62
-
message(WARNING "Applying workaround for https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1568899")
63
-
list(APPEND GRAPHICS_EXT_LIBS "-lgcc_s -lgcc")
64
-
endif()
65
-
```
66
-
67
-
4. Then **cd** to root dir of unpacked source.
68
-
69
-
5. Install with the steps below.
70
-
71
-
```
72
-
cmake .
73
-
make all
74
-
sudo make install
75
-
```
76
-
77
-
> Note that if you have errors during the `cmake` command, please read the section below which is from [official SFML documentation](https://www.sfml-dev.org/tutorials/2.5/compile-with-cmake.php).
78
-
79
-
SFML depends on a few other libraries, so before starting to configure you must have their development files installed.
80
-
81
-
On Windows and macOS, all the required dependencies are provided alongside SFML so you won't have to download/install anything else. Building will work out of the box.
82
-
83
-
On Linux however, nothing is provided. SFML relies on you to install all of its dependencies on your own. Here is a list of what you need to install before building SFML:
84
-
85
-
- freetype
86
-
- x11
87
-
- xrandr
88
-
- udev
89
-
- opengl
90
-
- flac
91
-
- ogg
92
-
- vorbis
93
-
- vorbisenc
94
-
- vorbisfile
95
-
- openal
96
-
- pthread
97
-
98
-
The exact name of the packages may vary from distribution to distribution. Once those packages are installed, don't forget to install their development headers as well.
99
-
100
26
## TODO
101
27
102
28
### Search-based planners
@@ -109,15 +35,18 @@ The exact name of the packages may vary from distribution to distribution. Once
109
35
-[ ] LPA*
110
36
111
37
### Sampling-based planners
112
-
-[x] RRT
38
+
-[] RRT
113
39
-[ ] RRT-Connect
114
-
-[x] RRT*
40
+
-[] RRT*
115
41
-[ ] Informed-RRT*
116
42
-[ ] FMT*
117
43
-[ ] BIT*
118
44
-[ ] ABIT*
119
45
-[ ] AIT*
120
46
121
47
## Related Publications
48
+
-[DIJKSTRA](https://ir.cwi.nl/pub/9256/9256D.pdf): A Note on Two Problems in Connexion with Graphs
49
+
-[A*](https://ieeexplore.ieee.org/abstract/document/4082128?casa_token=0ltx8josfO0AAAAA:nA2z0T2qvr00C6rIhIM3Z7GhWJTQpFrYsdzpY9xc_VicZ0DZr5Q9KcclJT1215N3If6pae87MXRHHd0): A Formal Basis for the Heuristic Determination of Minimum Cost Paths
0 commit comments