diff --git a/LaserMeasurement.cpp b/LaserMeasurement.cpp index e80874b..b149b6d 100644 --- a/LaserMeasurement.cpp +++ b/LaserMeasurement.cpp @@ -36,19 +36,25 @@ int LaserMeasurement::GetDistanceFromImage(cv::Mat frame) // Laserposition abrufen float laserPosition = GetLaserPosition(frame, BAR_START, BAR_START + BAR_HEIGHT); - // LaserPosition merken - _lastLaserPosition = laserPosition; + // LaserPosition merken + _lastLaserPosition = laserPosition; // Wert auf Gültigkeit überprüfen if(laserPosition < 0) { + // Abstandswert merken + _lastDistance = -1; + // Spar dir die Berechnung, kommt sowieso Müll raus - return 0; + return -1; } // Distanz berechnen float distance = (-LASER_DISTANCE / tan(ALPHA)) / (2 * (CAMERA_WIDTH / 2 - laserPosition) / CAMERA_WIDTH * tan(GAMMA / 2) / tan(ALPHA) - 1); + // Abstandswert merken + _lastDistance = distance; + // Distanz zurückgeben return distance; } @@ -156,6 +162,12 @@ int LaserMeasurement::GetLastLaserPosition() return _lastLaserPosition; } +int LaserMeasurement::GetLastDistance() +{ + // Letzen Abstandswert zurückgeben + return _lastDistance; +} + int LaserMeasurement::GetBrightnessAvg(std::vector bar, int avgStart, int avgStop) { // Division durch 0 verhindern diff --git a/LaserMeasurement.h b/LaserMeasurement.h index 9195942..77dca18 100644 --- a/LaserMeasurement.h +++ b/LaserMeasurement.h @@ -73,6 +73,9 @@ namespace THOMAS // Die letzte Laserposition int _lastLaserPosition = -1; + // Der letzte Abstandswert + int _lastDistance = -1; + public: // Konstruktor LaserMeasurement(); @@ -83,5 +86,8 @@ namespace THOMAS // Gibt die letzte Laserposition zurück int GetLastLaserPosition(); + // Gibt den letzten Abstandswert zurück + int GetLastDistance(); + }; }