Based on the minimum width sum greedy recursive method outlined in the paper by Yan Li et al.
For detailed documentation, click here.
None. But it is not standard for compilers to provide atof() under the cctype header so it may throw an error depending on the system. If this is a problem, replace calls to atof() with std::stof().
- Make sure not to forget the O2 flag when calling the compiler to enable compiler optimizations since it's free speed
- To compile on Windows, open the developer command prompt from Visual Studio and type cl \O2 main.cpp
- To compile on UNIX systems, just use g++ or clang
Make sure all files are present in their expected paths and run the executable. To use naive path generation with no decomposition, pass the optional argument naive
when calling the executable. This will generate a predictable East-West sweep that does not attempt to stay within the boundary of the search area. To use path generation with decomposition, pass no argument or pass the optional argument decomp
.
To configure behavior, edit Config.h.
Note: Make sure to recompile for changes to take effect.
- To change the output file path, change the #define statement for OUT_FILE
- To change the MissionPointsParsed file path, change the #define statement for MISSION_FILE
- To change the BoundaryPointsParsed file path, change the #define statement for BOUNDS_FILE
- To change the SearchGridPoints file path, change the #define statement for SEARCH_FILE
- To change the output altitude in feet, change the #define statement for ALTITUDE
- To change the assumed turn radius (in METERS) of the drone, change the #define statement for RADIUS
- To change the offset spacing between each parallel sweep of a traversal (in METERS), change the #define statement for OFFSET
- To change the distance waypoints are scaled inward to avoid exiting the boundary, change the #define statement for CORRECTION
- In the case that lines from mission files overflow the character buffer used in main.cpp, increase the value of the #define statement for BUFF_MAX
- main.cpp is the main driver and handles file I/O and calls the necessary functions for search path generation
- Conversions.cpp contains functions for handling conversions from GPS lat long coordinates to 2-D Cartesian coordinates and vis versa
- Polygon.cpp contains structs and functions for implementing polygon decomposition and search path generation. The most relevant functions for client code are searchPath(), naivePath(), and pathTo()