Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

pathLength

Länge des Pfades

Beschreibung

len = pathLength(path) gibt die Gesamtlänge des Pfades zurück, indem die Entfernungen zwischen jedem aufeinanderfolgenden Zustandspaar im Pfad summiert werden. Die Funktion verwendet das mit path verknüpfte Zustandsraumobjekt, um die Distanz zwischen jedem Zustandspaar zu berechnen.

Beispiel

Beispiele

alle reduzieren

Erstellen Sie ein navPath-Objekt basierend auf mehreren Wegpunkten in einem Dubins-Raum.

dubinsSpace = stateSpaceDubins([0 25; 0 25; -pi pi])
dubinsSpace = 
  stateSpaceDubins with properties:

   SE2 Properties
                 Name: 'SE2 Dubins'
          StateBounds: [3x2 double]
    NumStateVariables: 3

   Dubins Vehicle Properties
     MinTurningRadius: 1

pathobj = navPath(dubinsSpace)
pathobj = 
  navPath with properties:

      StateSpace: [1x1 stateSpaceDubins]
          States: [0x3 double]
       NumStates: 0
    MaxNumStates: Inf

waypoints = [8 10 pi/2;
             7 14 pi/4;
             10 17 pi/2;
             10 10 -pi];
append(pathobj,waypoints)

Interpolieren Sie diesen Pfad, sodass er genau 250 Punkte enthält.

interpolate(pathobj,250)

Visualisieren Sie den interpolierten Pfad und die ursprünglichen Wegpunkte.

figure
grid on
axis equal
hold on
plot(pathobj.States(:,1),pathobj.States(:,2),".b")
plot(waypoints(:,1),waypoints(:,2),"*r","MarkerSize",10)

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Länge des Pfades berechnen.

len = pathLength(pathobj);
disp("Path length = " + num2str(len))
Path length = 19.4722

Laden Sie eine 3D-Belegungskarte eines Häuserblocks in den Workspace. Geben Sie den Schwellenwert an, ab dem Zellen als hindernisfrei betrachtet werden sollen.

mapData = load("dMapCityBlock.mat");
omap = mapData.omap;
omap.FreeThreshold = 0.5;

Erweitern Sie die Belegungskarte, um eine Pufferzone für einen sicheren Betrieb rund um die Hindernisse hinzuzufügen.

inflate(omap,1)

Erstellen Sie ein SE(3)-Zustandsraumobjekt mit Grenzen für Zustandsvariablen.

ss = stateSpaceSE3([0 220;0 220;0 100;inf inf;inf inf;inf inf;inf inf]);

Erstellen Sie ein navPath-Objekt basierend auf mehreren Wegpunkten in einem SE(3)-Zustandsraum.

path = navPath(ss);
waypoints = [40 180 15 0.7 0.2 0 0.1;
             55 120 20 0.6 0.2 0 0.1;
             100 100 25 0.5 0.2 0 0.1;
             130 90 30 0.4 0 0.1 0.6;
             150 33 35 0.3 0 0.1 0.6];
append(path,waypoints)

Interpolieren Sie diesen Pfad, sodass er genau 250 Punkte enthält.

interpolate(path,250)

Visualisieren Sie den interpolierten Pfad und die ursprünglichen Wegpunkte.

show(omap)
axis equal
view([-10 55])
hold on
% Start state
scatter3(waypoints(1,1),waypoints(1,2),waypoints(1,3),"g","filled")
% Goal state
scatter3(waypoints(end,1),waypoints(end,2),waypoints(end,3),"r","filled")
% Intermediate waypoints
scatter3(waypoints(2:end-1,1),waypoints(2:end-1,2), ...
         waypoints(2:end-1,3),"y","filled")
% Path
plot3(path.States(:,1),path.States(:,2),path.States(:,3), ...
      "r-",LineWidth=2)

Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains 5 objects of type patch, scatter, line.

Länge des Pfades berechnen.

len = pathLength(path);
disp("Path length = " + num2str(len))
Path length = 204.1797

Eingabeargumente

alle reduzieren

Pfadobjekt, angegeben als navPath-Objekt.

Ausgabeargumente

alle reduzieren

Länge des Pfades, zurückgegeben als nicht negativer Skalar in Metern.

Datentypen: double

Erweiterte Fähigkeiten

alle erweitern

C/C++ Codegenerierung
Generieren Sie C und C++ Code mit MATLAB® Coder™.

Versionsverlauf

Eingeführt in R2019b

Siehe auch

Objekte

Funktionen