Skip to content

This project uses Object Oriented Programming concepts in C++ and IO2D graphics library to render the map data into OpenStreetMap.

License

Notifications You must be signed in to change notification settings

ram-ravan/OpenStreetMap-RoutePlanner

Repository files navigation

Route Planning Project

This route planning project computes the shortest path between two points in a map using A* search algorithm. Solely, built using C++, this project is implemented making use of pointers, references, and Object Oriented Programming concepts of the C++ programming language. OpenStreetMap is used here, and to render the map data, a 2D graphic rendering library named IO2D is used. When user provides inputs as co-ordinates of starting and ending points, a shortest path is computed and renderd into the map as showing in the image below. The starter code for this project is provided by Udacity as a part of C++ nanodegree program.

Cloning

When cloning this project, be sure to use the --recurse-submodules flag.

Using HTTPS:

git clone https://github.com/ram-ravan/RoutePlanner-OpenStreetMap.git --recurse-submodules

or with SSH:

git clone git@github.com:ram-ravan/RoutePlanner-OpenStreetMap.git --recurse-submodules

Dependencies for Running Locally

Compiling and Running

Compiling

To compile the project, first, create a build directory and change to that directory:

mkdir build && cd build

From within the build directory, then run cmake and make as follows:

cmake ..
make

Running

The executable will be placed in the build directory. From within build, you can run the project as follows:

./OSM_A_star_search

Or to specify a map file:

./OSM_A_star_search -f ../<your_osm_file.osm>

Testing

The testing executable is also placed in the build directory. From within build, you can run the unit tests as follows:

./test

Troubleshooting

  • For MAC Users cmake issues: Comment these lines from CMakeLists.txt under P0267_RefImpl

  • Make sure you have downloaded this.

    if( NOT DEFINED IO2D_WITHOUT_SAMPLES )
         add_subdirectory(P0267_RefImpl/Samples)
    endif()
    

    And then run "ALL_Build" and "install" in XCode.

    If any packages are missing try to install packages using

    brew install pkg-config
    
  • For Ubuntu Linux IO2D installation errors, follow the given steps:

sudo apt update -y
sudo apt install build-essential -y 
sudo apt install cmake -y 
sudo apt install libcairo2-dev -y 
sudo apt install libgraphicsmagick1-dev -y 
sudo apt install libpng-dev -y
  
cd ~/Downloads 
git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
cd P0267_RefImpl
mkdir Debug

Then, gedit CMakeLists.txt and comment the following lines using #

if( NOT DEFINED IO2D_WITHOUT_SAMPLES )
 add_subdirectory(P0267_RefImpl/Samples)
endif()

After commenting, go ahead with the following steps.

cmake config "-DCMAKE_BUILD_TYPE=Debug" ..
cmake build .
sudo make install 
  • If you are working on windows and unable to install IO2D:

    • Enable WSL (Windows Subsystem for Linux) and use a distribution like Ubuntu.(available from the windows store):
    • Install the required dependencies (compiler, cmake etc.) in the WSL(as mentioned above for ubuntu)
    • Configure CLion to use the WSL toolchain
    • Use the WSL toolchain to build the project
    • If you are still facing errors, visit this link.
  • If you are facing errors with --config try to remove -- from the command.

About

This project uses Object Oriented Programming concepts in C++ and IO2D graphics library to render the map data into OpenStreetMap.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published