?
Hallo Werner,
danke nochmals für die ausführliche Antwort.
Nachdem ich Deine Anmerkung in Sachen "#include <cmath>" geändert habe sind jetzt auch die Positionberechnungen symmetrisch.
------ Test Program Hinderniskarte ------
Akt. Winkel (PI/2*x) (0->4): 1
Aktueller Winkel : 1.570796
Aktuelle X Pos : 31
Aktuelle Y Pos : 31
Distanz Objekt (cm) : 31.4
------------ Sensor Daten ----------
Nr. X-Pos Y-Pos
---------------------------------------
Vorne
1 34 47
2 32 47
3 29 47
4 27 47
rechts
5 16 36
6 16 32
7 16 29
8 16 25
hinten
9 27 14
10 29 14
11 32 14
12 34 14
links
13 45 25
14 45 29
15 45 32
16 45 36
So zeigen jetzt die Wert von 27-30 die gleichen Zahlenwerte wie auch 12-15 mit 22-25 .
Ein Umstand, den ich mir nicht wirklich erklären konnte.
Jetzt habe ich nur noch die Frage/Problem mit der Ausrichtung.
Meine letzte Karte (Netzversion leider nicht aktuell), hat
den X=0 und Y=0 oben links
und
X=300 und Y=300 unten rechts.
Jedoch scheint der Code hier
pose welt_T_rob( std::polar( 1.0, fltAusrichtung), std::complex< double >( Akt_X, Akt_Y ) );
// rob_T_sensor ist die Lage des Sensors im Roboter-Systen
// Bem.: Winkel also Ausrichtung des Sensors bezogen auf den Roboter == 0.0
pose rob_T_sensor( std::polar( 1.0, fltSensorAusrichtung[intSensor] ),
std::complex< double >( fltAbstandX[intSensor], fltAbstandY[intSensor] ) );
pose welt_T_sensor = welt_T_rob * rob_T_sensor; // Lage Sensor im Welt-System
std::complex< double > welt_p_obj = welt_T_sensor * std::complex< double >( fltDistanz, 0.0 );
X=0 = Y=0 links unten und Y=300 und X=300 rechts oben zu erwarten. Sieht man deutlich an den Zahlen in Zeile 17-20 diese sollten eigentlich von aufsteigend sein (nicht absteigend).
Wie kann ich diese Funktion ändern oder rechnen diese Standardfunktionen generell mit diesem Koordiantensystem
Bei Der Ausgabe der Daten (Zeile 68 und 72 im main) hast Du "links" und "rechts" vertauscht. Die Sensoren mit den positiven Y-Werten liegen links.
Dies ist die Nummerung der Sensoren und deren Position.
In der Grafik ist S1 der erste Sensor und die Sensoren zählen dann im Uhrzeigersinn rund im den Roboter. Daher ist links von S1 der Sensor S16 und rechts S2.
Gruss