Finish documention until someone change something

This commit is contained in:
2022-02-15 20:12:50 +01:00
parent 3a2e51713b
commit c8e3344b27
50 changed files with 991 additions and 223 deletions
+123 -3
View File
@@ -1,7 +1,7 @@
/**
* @file navigation.h
* @author Alexander Klein (alex@kleiax.de)
* @brief
* @brief Contains a class which navigate an object by the given route
* @version 0.1
* @date 2022-01-10
*
@@ -18,33 +18,153 @@
#include "route.h"
/**
* @brief The minimal distance between Points
*
* This is a very critical option. It have to be
* around the half accuracy of the positioning system
*
*/
#define MIN_DISTANCE_BETWEEN_POINTS 1
/**
* @brief This struct inherits the result of the navigation
*
* The drive get objects of this struct and should
* correct the direction in dependency on this.
*
*/
struct CourseCorrection {
int16_t correction;
double distance;
};
/**
* @brief This class navigate an object
*
* The class use the given Route and the gps device
* to tell the driver in which direction he have to
* be drive and the distance to the next checkpoint.
*
*/
class Navigation {
public:
/**
* @brief Construct a new Navigation object
*
* @param rx pin to the gps device
* @param tx pin to the gps device
* @param route with which to navigate
*/
Navigation(uint8_t rx, uint8_t tx, Route* route = nullptr);
/**
* @brief Destroy the Navigation object
*
*/
~Navigation();
/**
* @brief Decodes new GPS information
*
* Should be called ever main loop.
*/
void loop();
/**
* @brief creates a new empty route
*
*/
void newRoute();
/**
* @brief Tries to start the route
*
* For example the route can not be started
* if there are no Points or wrong Points.
*
* @return true route is started
* @return false route can not be started
*/
bool startNavigation();
/**
* @brief Get the Course Correction object
*
* This should be called by the driver to get new instructions.
*
* @return CourseCorrection
*/
CourseCorrection getCourseCorrection();
/**
* @brief Tries to add the current Position to the route
*
* This can be go wrong if there is no valid GPS signal
*
* @return true successful added point
* @return false no point added to route
*/
bool addCurrentPosToRoute();
/**
* @brief Returns the GPS object
*
* @return TinyGPSPlus*
*/
TinyGPSPlus* getGPS() { return this->gps; }
/**
* @brief Get the Route Info object
*
* This object contains information about the route.
* For example the stored points.
*
* @return RouteInfo
*/
RouteInfo getRouteInfo() const { return this->route->getRouteInfo(); }
private:
/**
* @brief Returns the current Location
*
* @return Point
*/
Point currentLocation();
/**
* @brief Set the next point as target
*
* @return true
* @return false
*/
bool nextPoint();
/**
* @brief Set the target point
*
* @param target
* @return true
* @return false
*/
bool setTargetPoint(Point target);
static double distanceBetwenn(Point p1, Point p2);
/**
* @brief Calculate the distance between to points
*
* @param p1 point 1
* @param p2 point 2
* @return double distance in meter
*/
static double distanceBetween(Point p1, Point p2);
/**
* @brief Calculates the course from point1 to point2
*
* @param p1 point 1
* @param p2 point 2
* @return double degree north = 0° west = 270°
*/
static double courseTo(Point p1, Point p2);
TinyGPSPlus* gps;
@@ -57,4 +177,4 @@ class Navigation {
bool navigationFinished = false;
};
#endif // NAVIGATION_H
#endif // NAVIGATION_H