Hauptinhalt

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

plannerAStarGrid

A* Pfadplaner für Rasternetzkarte

    Beschreibung

    Das plannerAStarGrid-Objekt erstellt einen A*-Pfadplaner. Der Planer führt eine A*-Suche auf einer Belegungskarte durch und findet den kürzesten hindernisfreien Pfad zwischen den angegebenen Start- und Zielrasterpositionen, wie durch heuristische Kosten bestimmt.

    Erstellung

    Beschreibung

    planner = plannerAStarGrid erstellt ein plannerAStarGrid-Objekt mit einem binaryOccupancyMap-Objekt mit einer Breite und Höhe von 10 Metern und einer Rasterauflösung von 1 Zelle pro Meter.

    planner = plannerAStarGrid(map) erstellt ein plannerAStarGrid-Objekt unter Verwendung des angegebenen Map-Objekts map. Geben Sie map entweder als binaryOccupancyMap- oder occupancyMap-Objekt an. Der map-Eingang legt den Wert der Map-Eigenschaft fest.

    Beispiel

    planner = plannerAStarGrid(___,Name,Value) setzt Eigenschaften unter Verwendung eines oder mehrerer Name-Wert-Paare. Nicht angegebene Eigenschaften haben Standardwerte. Setzen Sie jeden Eigenschaftsnamen in Anführungszeichen.

    Beispielsweise erstellt plannerAStarGrid(map,'GCost','Manhattan') ein A*-Pfadplanerobjekt unter Verwendung der Manhattan-Kostenfunktion.

    Eigenschaften

    alle erweitern

    Kartendarstellung, angegeben als binaryOccupancyMap- oder occupancyMap-Objekt. Dieses Objekt stellt die Umgebung des Roboters als Belegungsraster dar. Der Wert jeder Rasterzelle gibt die Belegung des zugehörigen Standorts auf der Karte an.

    Beispiel: planner.Map = binaryOccupancyMap(zeros(50,50));

    Die allgemeinen Kosten für die Bewegung zwischen zwei beliebigen Punkten in einem Raster, angegeben als eine der folgenden vordefinierten Kostenfunktionen 'Chebyshev', 'Euclidean', 'EuclideanSquared' oder 'Manhattan'.

    Die Kosten für die Bewegung zwischen zwei Punkten mit den kartesischen Koordinaten (x1,y1) und (x2,y2) werden wie folgt berechnet:

    • Chebyshev

      d=max(|x2x1|,|y2y1|)

    • Euclidean

      d=(x2x1)2+(y2y1)2

    • Euclidean Squared

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    Hinweis

    Sie können entweder die vordefinierten Kostenfunktionen oder eine benutzerdefinierte Kostenfunktion verwenden. Informationen zum Verwenden einer benutzerdefinierten Kostenfunktion finden Sie unter der Eigenschaft GCostFcn.

    Beispiel: planner = plannerAStarGrid(map,'GCost','Manhattan');

    Beispiel: planner.GCost = 'Chebyshev';

    Datentypen: string | char

    Benutzerdefinierte GCost-Funktion, angegeben als Funktionshandle. Der Funktionshandle muss zwei Pose-Eingaben als [row column]-Vektoren akzeptieren und einen Skalar vom Typ „Double“ zurückgeben.

    Hinweis

    Sie können entweder die vordefinierten Kostenfunktionen oder eine benutzerdefinierte Kostenfunktion verwenden. Informationen zum Verwenden der vordefinierten Kostenfunktionen finden Sie unter der Eigenschaft GCost.

    Beispiel: planner = plannerAStarGrid(map,'GCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    Beispiel: planner.GCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    Datentypen: function_handle

    Die heuristischen Kosten zwischen einem Punkt und dem Ziel in einem Raster, angegeben als eine der folgenden vordefinierten Kostenfunktionen 'Chebyshev', 'Euclidean', 'EuclideanSquared' oder 'Manhattan'.

    Die Kosten für die Bewegung zwischen zwei Punkten mit den kartesischen Koordinaten (x1,y1) und (x2,y2) werden wie folgt berechnet:

    • Chebyshev

      d=max(|x2x1|,|y2y1|)

    • Euclidean

      d=(x2x1)2+(y2y1)2

    • Euclidean Squared

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    Hinweis

    Sie können entweder die vordefinierten Kostenfunktionen oder eine benutzerdefinierte Kostenfunktion verwenden. Informationen zum Verwenden einer benutzerdefinierten Kostenfunktion finden Sie unter der Eigenschaft HCostFcn.

    Beispiel: planner = plannerAStarGrid(map,'HCost','Manhattan');

    Beispiel: planner.HCost = 'Chebyshev';

    Datentypen: string | char

    Benutzerdefinierte HCost-Funktion, angegeben als Funktionshandle. Der Funktionshandle muss zwei Pose-Eingaben als [row column]-Vektoren akzeptieren und einen Skalar vom Typ „Double“ zurückgeben.

    Hinweis

    Sie können entweder die vordefinierten Kostenfunktionen oder eine benutzerdefinierte Kostenfunktion verwenden. Informationen zum Verwenden der vordefinierten Kostenfunktionen finden Sie unter der Eigenschaft HCost.

    Beispiel: planner = plannerAStarGrid(map,'HCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    Beispiel: planner.HCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    Datentypen: function_handle

    Tiebreaker-Modus umschalten, angegeben als 'on' oder 'off'.

    Wenn Sie die Eigenschaft TieBreaker aktivieren, wählt der A*-Pfadplaner zwischen mehreren Pfaden gleicher Länge, indem er den heuristischen Kostenwert anpasst.

    Beispiel: planner = plannerAStarGrid(map,'TieBreaker','on');

    Beispiel: planner.TieBreaker = 'off';

    Datentypen: string | char

    Diagonalen Suchmodus umschalten, angegeben als 'on' oder 'off'.

    Wenn Sie diese Eigenschaft auf 'on' setzen, sucht der A*-Pfadplaner in diagonaler Richtung zusammen mit den anderen vier Richtungen des Rasters. Wenn Sie diese Eigenschaft auf 'off' setzen, sucht der A*-Pfadplaner nur in den vier Richtungen des Rasters.

    Datentypen: char | string

    Objektfunktionen

    planFind shortest obstacle-free path between two points
    showPlot and visualize A* explored nodes and planned path

    Beispiele

    alle reduzieren

    Planen Sie mit dem A*-Pfadplanungsalgorithmus den kürzesten kollisionsfreien Pfad durch eine Hindernisrasterkarte.

    Generieren Sie mithilfe der mapClutter-Funktion ein binaryOccupancyMap-Objekt mit zufällig verstreuten Hindernissen.

    rng('default');
    map = mapClutter;

    Verwenden Sie die Karte, um ein plannerAStarGrid-Objekt zu erstellen.

    planner = plannerAStarGrid(map);

    Definieren Sie Start- und Zielpunkt.

    start = [2 3];
    goal = [248 248];

    Planen Sie einen Weg vom Startpunkt zum Zielpunkt.

    plan(planner,start,goal);

    Visualisieren Sie den Pfad und die erkundeten Knoten mit der Objektfunktion show.

    show(planner)

    Figure contains an axes object. The axes object with title AStar, xlabel Columns, ylabel Rows contains 8 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Path, Start, Goal, GridsExplored.

    Erweiterte Fähigkeiten

    alle erweitern

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

    Versionsverlauf

    Eingeführt in R2020b