Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

getOccupancy

Obtenez la probabilité d'occupation des emplacements

Description

occVal = getOccupancy(map,xy) renvoie un tableau de valeurs de probabilité d'occupation aux emplacements xy dans le cadre mondial. Les valeurs proches de 1 représentent une forte probabilité que la cellule contienne un obstacle. Les valeurs proches de 0 représentent une forte probabilité que la cellule ne soit pas occupée et sans obstacle. Les emplacements inconnus, y compris en dehors de la carte, renvoient map.DefaultValue.

exemple

occVal = getOccupancy(map,xy,'local') renvoie un tableau de valeurs d'occupation aux emplacements xy dans la base locale.

occVal = getOccupancy(map,ij,'grid') spécifie les indices de cellules de grille ij au lieu des emplacements xy .

[occVal,validPts] = getOccupancy(___) génère en outre un vecteur d'éléments n de valeurs logiques indiquant si les coordonnées d'entrée se trouvent dans les limites de la carte.

occMatrix = getOccupancy(map) renvoie toutes les valeurs d'occupation de la carte sous forme de matrice.

occMatrix = getOccupancy(map,bottomLeft,matSize) renvoie une matrice de valeurs d'occupation en spécifiant l'emplacement du coin inférieur gauche en coordonnées mondiales et la taille de la matrice en mètres.

occMatrix = getOccupancy(map,bottomLeft,matSize,'local') renvoie une matrice de valeurs d'occupation en spécifiant l'emplacement du coin inférieur gauche en coordonnées locales et la taille de la matrice en mètres.

occMatrix = getOccupancy(map,topLeft,matSize,'grid') renvoie une matrice de valeurs d'occupation en spécifiant l'emplacement du coin supérieur gauche dans les index de grille et la taille de la matrice.

Exemples

réduire tout

Créez une carte de grille d'occupation vide.

map = occupancyMap(10,10,20);

Spécifiez la pose du véhicule, les portées, les angles et la portée maximale du balayage laser.

pose = [5,5,0];
ranges = 3*ones(100,1);
angles = linspace(-pi/2,pi/2,100);
maxrange = 20;

Créez un objet lidarScan avec les plages et les angles spécifiés.

scan = lidarScan(ranges,angles);

Insérez les données du scanner laser dans la carte d'occupation.

insertRay(map,pose,scan,maxrange);

Affichez la carte pour voir les résultats de l’insertion du balayage laser.

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.

Vérifiez l'occupation de l'emplacement directement devant le véhicule.

getOccupancy(map,[8 5])
ans = 0.7000

Ajoutez une deuxième lecture et affichez la mise à jour des valeurs d'occupation. La lecture supplémentaire augmente la confiance dans les lectures. Les valeurs libre et occupé deviennent plus distinctes.

insertRay(map,pose,scan,maxrange);
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.

getOccupancy(map,[8 5])
ans = 0.8448

Accédez aux valeurs d'occupation et vérifiez leur statut d'occupation en fonction des seuils occupé et libre de l'objet occupancyMap .

Créez une matrice et remplissez-la avec des valeurs. Utilisez cette matrice pour créer une carte d'occupation.

p = 0.5*ones(20,20);
p(11:20,11:20) = 0.75*ones(10,10);
map = occupancyMap(p,10);

Obtenez l'occupation de différents emplacements et vérifiez leur statut d'occupation. L'état d'occupation renvoie 0 pour l'espace libre et 1 pour l'espace occupé. Les valeurs inconnues renvoient –1.

pocc = getOccupancy(map,[1.5 1])
pocc = 0.7500
occupied = checkOccupancy(map,[1.5 1])
occupied = 1
pocc2 = getOccupancy(map,[5 5],'grid')
pocc2 = 0.5000
occupied2 = checkOccupancy(map,[5 5],'grid')
occupied2 = -1

Arguments d'entrée

réduire tout

Représentation cartographique, spécifiée comme objet occupancyMap . Cet objet représente l'environnement du véhicule. L'objet contient une grille matricielle avec des valeurs représentant la probabilité d'occupation de cette cellule. Les valeurs proches de 1 représentent une forte probabilité que la cellule contienne un obstacle. Les valeurs proches de 0 représentent une forte probabilité que la cellule ne soit pas occupée et sans obstacle.

Coordonnées mondiales, spécifiées sous la forme d'une matrice n-par 2 de paires [x y] , où n est le nombre de coordonnées mondiales.

Types de données : double

Positions de la grille, spécifiées sous la forme d'une matrice n-par 2 de paires [i j] au format [rows cols] , où n est le nombre de positions sur la grille.

Types de données : double

Emplacement du coin inférieur gauche de la matrice de sortie en coordonnées mondiales ou locales, spécifié sous la forme d'un vecteur à deux éléments, [xCoord yCoord]. L'emplacement est en coordonnées mondiales ou locales basées sur la syntaxe.

Types de données : double

Taille de la matrice de sortie, spécifiée sous la forme d'un vecteur à deux éléments, [xLength yLength] ou [gridRow gridCol]. La taille est exprimée en coordonnées mondiales, locales ou de grille en fonction de la syntaxe.

Types de données : double

Emplacement du coin supérieur gauche de la grille, spécifié comme vecteur à deux éléments, [iCoord jCoord].

Types de données : double

Arguments de sortie

réduire tout

Valeurs de probabilité d'occupation, renvoyées sous forme de vecteur de colonne de la même longueur que xy ou ij.

Les valeurs proches de 0 représentent une forte probabilité que la cellule ne soit pas occupée et sans obstacle.

Emplacements de carte valides, renvoyés sous la forme d'un vecteur de colonne n-par 1 de longueur égale à xy ou ij. Les emplacements à l'intérieur de la carte renvoient une valeur de 1. Les emplacements en dehors des limites de la carte renvoient une valeur de 0.

Matrice des valeurs d'occupation, renvoyée sous forme de matrice de taille égale à matSize ou à la taille de map.

Les valeurs proches de 0 représentent une forte probabilité que la cellule ne soit pas occupée et sans obstacle.

Limites

Les valeurs d'occupation ont une résolution limitée de ±0,001. Les valeurs sont stockées sous la forme int16 en utilisant une représentation de log-cotes. Ce type de données limite la résolution, mais économise de la mémoire lors du stockage de grandes cartes dans MATLAB®. Lors de l'appel de setOccupancy puis de getOccupancy, la valeur renvoyée peut ne pas être égale à la valeur que vous avez définie. Pour plus d'informations, consultez la section sur les représentations des log-cotes dans Occupancy Grids.

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b

Voir aussi

|

Rubriques