Durchführung

Aus HSHL Mechatronik
Version vom 11. Februar 2021, 19:33 Uhr von Lihui liu (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Die Eingaben sind die segmentierte Messdaten, wird der Rechtspunkt in jeder Zyklen zuerst ermittelt. Danach wird die Distanz zwischen nächste Punkt und dem aktuellen Punkt berechnet, wenn diese Distanz kleiner als ein Schwellwert ist, wird die Zyklen inkrementiert. Wenn alle Punkte durchlaufen werden, ist der letzte Punkt der Linkspunkt. Um den Eckepunkt zu bestimmen, wird die Distanz zwischen Linkspunkt und Rechtspunkt(d1), Eckepunkt und Rechtspunkt(d2), Linkspunkt und Eckepunkt(d3) berechnet, damit den Winkel durch "sin" prüft, ob er rechtwinkelig ist. Dann der Mittelpunkt(auf der vorne Seite des Kartons) kann durch den Eckepunkt und Rechtspunkt berechnet. Abschließend wird den Winkel berechnet, der zwischen dem Mittelpunkt und Koordinatensystem ist.

Der Funktionsprototyp sieht folgendermaßen aus:

 for zahl=1:(L-1)
     
    Rechtspunkt = [x(zahl),y(zahl)];
    
    d=(sqrt((x(zahl+1)-x(zahl))^2+(y(zahl+1)-y(zahl))^2));% euklidisches Distanz   
  
    while d <  30  && zahl < (L-1) % Wenn die Distanz zwischen nächsten Punkt und 
                                   % aktueller Punkt kleiner als den Schwertwert ist,
    zahl=zahl+1; % zahl inkrementiert
     
    end

     Linkspunkt = [x(zahl),y(zahl)]; % Nach aller Punkt durchgelaufen werden, ist der aktueller Punkt Linkspunkt
      
     Eckepunkt=[x(floor(zahl/2)+1),y(floor(zahl/2)+1)];
     
     d1=sqrt((Linkspunkt(1)-Rechtspunkt(1))^2+(Linkspunkt(2)-Rechtspunkt(2))^2);% Distanz zwischen Linkspunkt und Rechtspunkt
     d2=sqrt((Eckepunkt(1)-Rechtspunkt(1))^2+(Eckepunkt(2)-Rechtspunkt(2))^2);% Distanz zwischen Eckepunkt und Rechtspunkt
     d3=sqrt((Linkspunkt(1)-Eckepunkt(1))^2+(Linkspunkt(2)-Eckepunkt(2))^2);% Distanz zwischen Linkspunkt und Eckespunkt
      
     if (sin(d2/d1))>0.5 || (sin(d3/d1))>0.5                % prüfen, ob es rechtwinklig ist
            Eckepunkt=[x(floor(zahl/2)),y(floor(zahl/2))];
     end
     
     center=[(Rechtspunkt(1)+ Eckepunkt(1))/2,(Rechtspunkt(2)+ Eckepunkt(2))/2]; % Mittelpunkt auf der vorner Seite des Kartons
     Mittel=[(Rechtspunkt(1)+Linkspunkt(1))/2,(Rechtspunkt(2)+Linkspunkt(2))/2]; % Mittelpunkt zwischen Rechtspunkt und Linkspunkt
     winkelMP = acosd(center(1)/norm(center));                              % Winkel zwischen center und Koordinatensystem

    (...)
end

→ zurück zum Artikel:Objekttracking_mit_LiDAR