Skip to content

Search path algorithm using convex polygon decomposition for Cal Poly Pomona AUVSI

Notifications You must be signed in to change notification settings

hlin91/cppauvsi_searchpath_2019-2020

Repository files navigation

Search Path Algorithm for Cal Poly Pomona AUVSI 2019-2020

Based on the minimum width sum greedy recursive method outlined in the paper by Yan Li et al.

Table of Contents

  1. Documentation
  2. Dependencies
  3. Compilation Notes
  4. Usage
  5. Configuration
  6. Notes for Debugging

Documentation

For detailed documentation, click here.

Dependencies

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().

Compilation Notes

  • 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

Usage

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.

Configuration

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

Notes for Debugging

  • 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()

About

Search path algorithm using convex polygon decomposition for Cal Poly Pomona AUVSI

Resources

Stars

Watchers

Forks