Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

interpolate

Interpolare i punti lungo il percorso

Descrizione

interpolate(path,numStates) inserisce un certo numero di stati nel percorso e garantisce che la distribuzione di tutti i punti del percorso sia uniforme. La funzione conserva tutti gli stati esistenti nel percorso. Il valore di numStates deve essere maggiore o uguale al numero di stati esistenti nel percorso.

esempio

Esempi

comprimi tutto

Crea un oggetto navPath basato su più waypoint in uno spazio Dubins.

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)

Interpolare quel percorso in modo che contenga esattamente 250 punti.

interpolate(pathobj,250)

Visualizza il percorso interpolato e i waypoint originali.

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

Calcola la lunghezza del percorso.

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

Caricare nell'area di lavoro una mappa 3D dell'occupazione di un isolato cittadino. Specificare la soglia per considerare le celle come prive di ostacoli.

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

Gonfiare la mappa di occupazione per aggiungere una zona cuscinetto per operazioni in sicurezza attorno agli ostacoli.

inflate(omap,1)

Creare un oggetto dello spazio di stato SE(3) con limiti per le variabili di stato.

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

Crea un oggetto navPath basato su più waypoint in uno spazio di stato SE(3).

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)

Interpolare quel percorso in modo che contenga esattamente 250 punti.

interpolate(path,250)

Visualizza il percorso interpolato e i waypoint originali.

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.

Calcola la lunghezza del percorso.

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

Argomenti di input

comprimi tutto

Oggetto percorso, specificato come oggetto navPath.

Numero di stati inseriti nel percorso, specificato come numero intero non negativo. Il suo valore deve essere maggiore o uguale al numero di stati esistenti nel percorso.

Tipi di dati: double

Funzionalità estese

espandi tutto

Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.

Cronologia versioni

Introdotto in R2019b

Vedi anche

Oggetti

Funzioni