Hauptinhalt

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

validatorOccupancyMap

Zustandsvalidator basierend auf 2-D-Rasterkarte

Beschreibung

Das validatorOccupancyMap-Objekt validiert Zustände und diskretisierte Bewegungen basierend auf dem Wert in einer 2D-Belegungskarte. Wenn der Statusstandort in der Karte belegt oder unbekannt ist, betrachtet validatorOccupancyMap den Status als ungültig. Nur freier Speicherplatz wird als gültig betrachtet.

Erstellung

Syntax

Beschreibung

validator = validatorOccupancyMap erstellt einen 2D-Belegungskartenvalidator, der mit einem SE2-Zustandsraum mit Standardeinstellungen verknüpft ist.

validator = validatorOccupancyMap(stateSpace) erstellt einen Validator in der angegebenen Zustandsraumdefinition, die von nav.StateSpace abgeleitet ist.

Beispiel

validator = validatorOccupancyMap(stateSpace,Name,Value) gibt die Eigenschaften Map oder XYIndices unter Verwendung von Name,Value-Paaragumenten an.

Eigenschaften

alle erweitern

Zustandsraum zum Validieren von Zuständen, angegeben als Unterklasse von nav.StateSpace. Zu den bereitgestellten Zustandsraumobjekten gehören:

Zur Validierung von Zuständen verwendete Karte, angegeben als binaryOccupancyMap- oder occupancyMap-Objekt.

Intervall für die Abtastung zwischen Zuständen und die Überprüfung der Zustandsgültigkeit, angegeben als positiver numerischer Skalar.

Zustandsvariablenzuordnung für xy-Koordinaten im Zustandsvektor, angegeben als ein Vektor mit zwei Elementen, [xIdx yIdx]. Wenn ein Zustandsvektor beispielsweise als [r p y x y z] angegeben ist, sind die xy-Koordinaten [4 5].

Objektfunktionen

copyCreate deep copy of state validator object
isStateValidCheck if state is valid
isMotionValidCheck if path between states is valid

Beispiele

alle reduzieren

Dieses Beispiel zeigt, wie Pfade durch eine Umgebung validiert werden.

Beispielkarten laden. Verwenden Sie die einfache Karte, um eine binäre Belegungskarte zu erstellen.

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

Geben Sie einen groben Pfad durch die Karte an.

path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o")

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

Erstellen Sie einen Statusvalidator mit der stateSpaceSE2-Definition. Geben Sie die Karte und die Entfernung für die Interpolation und Validierung von Pfadsegmenten an.

validator = validatorOccupancyMap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;

Überprüfen Sie, ob die Punkte des Pfads gültige Zustände sind. Alle drei Punkte liegen im freien Raum und werden daher als gültig betrachtet.

isValid = isStateValid(validator,path)
isValid = 3x1 logical array

   1
   1
   1

Überprüfen Sie die Bewegung zwischen den einzelnen aufeinanderfolgenden Pfadzuständen. Die Funktion isMotionValid interpoliert entlang des Pfads zwischen Zuständen. Wenn ein Pfadsegment ungültig ist, zeichnen Sie den letzten gültigen Punkt entlang des Pfades.

startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt in R2019b