Objekterkennung mit LiDAR

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Peng

Aufgabenstellung

  1. Einarbeitung in dier bestehende Software
  2. Softwareentwurf in MATLAB
    1. Meilenstein 1:
    2. Ansteuerung des Hokuyo LiDAR
    3. Koordinatentransformation polar- zu karthesisch
    4. Testdokumentation der KOS-Trafo
    5. Objektbildung (z.B. Sukzessiv Edge Following)
    6. Testdokumentation der Objektbildung
    7. Meilenstein 2:
    8. Objekttracking (mit Kalman-Filter)
    9. Testdokumentation des Objekttrackings
    10. Attribute schätzen: v, a, B, T, Güte (s. Schnittstellendokument)
    11. Testdokumentation der Attribute mit Referenz
    12. Dokumentation im Wiki
  3. Softwareentwurf in C
    1. Meilenstein 3:
    2. Ansteuerung des LiDAR
    3. Koordinatentransformation polar- zu karthesisch
    4. Testdokumentation der KOS-Trafo
    5. Objektbildung (z.B. Sukzessiv Edge Following)
    6. Testdokumentation der Objektbildung
    7. Meilenstein 4:
    8. Objekttracking (mit Kalman-Filter)
    9. Testdokumentation des Objekttrackings
    10. Attribute schätzen: v, a, B, T, Güte (s. Schnittstellendokument)
    11. Testdokumentation der Attribute mit Referenz
    12. Testoberfläche in Control Desk
    13. Dokumentation im Wiki

Softwareentwurf in MATLAB

Ansteuerung des LiDAR Hokuyo URG-04LX

Der VerbindungsCode in Matlab wird in SVN schon gefunden. Aber wird es beachtet, dass die Nummer des verwendeten seriellen COM Ports angepasst werden muss, damit dieses funktioniert.

% Stelle Verbindung mit LiDAR her
stComport='COM6';
SetupLidar;

Durch das Anrufsprogramm "LidarScan" wird der Radius erhalten.

% Das Resultat von LidarScan
[rangescan]=LidarScan(lidar);

Koordinatentransformation polar- zu kartesisch

Da der Laserscanner nur Polarkoordinaten ausgibt, ist es notwendig, diese in Kartesische Koordinaten zu transformieren, um die Figur darzustellen. Die folgend mathmatische Funktion wird im Programm verwendet.

x=radius*cos(ϑ)

y=radius*sin(ϑ)

Wegen des Einheit in Meter wird die Einheit im Programm umgerechnet.

% Das Koordinatenparameter in m
x(cnt)=rangescan(cnt)*sin(phi_rad(cnt))/1000;
y(cnt)=rangescan(cnt)*cos(phi_rad(cnt))/1000;

Koordinatentransformation LiDARfest zu Fahrzeugfest

Um das Hindernis zu vermeiden, wird LiDARfest in Fahrzeugfest transformiert.

LiDARfest KOS:

  • Index: L (LiDARfest)
  • Einheit/Skalierung: m
  • Ursprung: Mitte
  • x-Achse: nach links/rechts
  • y-Achse: nach oben/unten
  • z-Achse: keine vorhanden

Fahrzeugfestes KOS:

  • Index: K (körperfest, karosseriefest)
  • Einheit/Skalierung: mm
  • Ursprung: Mitte Vorderkante des vorderen Stoßfängers des Fahrzeugs (z = 0)
  • x-Achse: nach vorne (im Sinne der Hauptfahrtrichtung)
  • y-Achse: nach links
  • z-Achse: nach oben

Im Vergleich zueinander wird der Urspruch verschoben und die Achsen gewechelt.

  • Die Verschiebung von X-Achse: 0,08m.
  • Die Verschiebung von Y-Achse: 0,145m.
%Definition
distY=0,08;
distX=0,145;
[···]
%LiDARfest zu Fahrzeugfest KOS
for (cnt=1:length(Segment))    
x=[Segment(cnt).LeftCartesian(1)- distX  Segment(cnt).NearbyCartesian(1)- distX Segment(cnt).RightCartesian(1)- distX];
y=[-(Segment(cnt).LeftCartesian(2)- distY)  -(Segment(cnt).NearbyCartesian(2)- distY) -(Segment(cnt).RightCartesian(2)- distY)];
plot(y,x,'r')   
hold on

Softwareentwurf in C++

Getting started


→ zurück zum Hauptartikel: SDE Praktikum Autonomes Fahren