refactor all autopilot stuff
This commit is contained in:
@@ -116,40 +116,40 @@ bool Navigation::startNavigation() {
|
||||
return this->navigationStarted;
|
||||
}
|
||||
|
||||
CourseCorrection Navigation::getCourseCorrection() {
|
||||
bool Navigation::getCourseCorrection(CourseCorrection& correction) {
|
||||
//TODO: Check accuracy befor make something
|
||||
CourseCorrection courseCorrection = {0, 0};
|
||||
correction.correction = 0;
|
||||
correction.distance = 0;
|
||||
|
||||
int16_t targetCourse = this->currentPosition.courseTo(this->targetPoint);
|
||||
double distance = this->currentPosition.distanceTo(this->targetPoint);
|
||||
|
||||
if (distance < 0 || this->navigationFinished)
|
||||
return courseCorrection;
|
||||
return false;
|
||||
|
||||
// Check if I need a new Point
|
||||
if (distance < MIN_DISTANCE_TO_REACH_POINT) {
|
||||
bool goOn = this->nextPoint();
|
||||
if (!goOn) {
|
||||
if (!this->nextPoint()) {
|
||||
this->navigationFinished = true;
|
||||
this->navigationStarted = false;
|
||||
return courseCorrection; // End of navigation
|
||||
return false; // End of navigation
|
||||
}
|
||||
}
|
||||
|
||||
// correction = targetCourse - currentCourse
|
||||
int16_t signedAzimuth = this->azimuth > 180 ? this->azimuth - 360 : this->azimuth;
|
||||
int16_t correction = targetCourse - signedAzimuth;
|
||||
if (correction > 180)
|
||||
correction -= 360;
|
||||
else if (correction < -180)
|
||||
correction += 360;
|
||||
int16_t correctionCourse = targetCourse - signedAzimuth;
|
||||
if (correctionCourse > 180)
|
||||
correctionCourse -= 360;
|
||||
else if (correctionCourse < -180)
|
||||
correctionCourse += 360;
|
||||
|
||||
// //Rotate result by 180° to corrigate Azimuth
|
||||
// correction = correction > 180 ? correction -360 : correction;
|
||||
// correctionCourse = correctionCourse > 180 ? correctionCourse -360 : correctionCourse;
|
||||
|
||||
courseCorrection.correction = correction;
|
||||
courseCorrection.distance = distance;
|
||||
return courseCorrection;
|
||||
correction.correction = correctionCourse;
|
||||
correction.distance = distance;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Navigation::addCurrentPosToRoute() {
|
||||
|
||||
@@ -114,9 +114,11 @@ class Navigation {
|
||||
*
|
||||
* This should be called by the driver to get new instructions.
|
||||
*
|
||||
* @return CourseCorrection
|
||||
* @param correction passed as refernce to get the data
|
||||
* @return true if new correction data provided
|
||||
* @return false if route is finished
|
||||
*/
|
||||
CourseCorrection getCourseCorrection();
|
||||
bool getCourseCorrection(CourseCorrection& correction);
|
||||
|
||||
/**
|
||||
* @brief Tries to add the current Position to the route
|
||||
|
||||
Reference in New Issue
Block a user