Main Content

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

insertRay

Insérer un rayon à partir d'une observation par balayage laser

Depuis R2019b

Description

exemple

insertRay(map,pose,scan,maxrange) insère une ou plusieurs observations de capteur de balayage lidar dans la grille d'occupation, map, en utilisant l'objet d'entrée lidarScan , scan, pour obtenir les points finaux des rayons. Les emplacements des points finaux sont mis à jour avec une valeur occupée. Si les plages sont supérieures à maxrange, les extrémités des rayons sont considérées comme de l'espace libre. Tous les autres points le long du rayon sont considérés comme sans obstacle.

insertRay(map,pose,ranges,angles,maxrange) spécifie les lectures de plage sous forme de vecteurs définis par l'entrée ranges et angles.

insertRay(map,startpt,endpoints) insère des observations entre les segments de ligne du point de départ aux points finaux. Les points finaux sont mis à jour en tant qu'espace occupé et les autres points le long des segments de ligne sont mis à jour en tant qu'espace libre.

Exemples

réduire tout

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

map = binaryOccupancyMap(10,10,20);

Saisissez la pose du véhicule, les plages, 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 Binary 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 = logical
   1

Arguments d'entrée

réduire tout

Représentation cartographique, spécifiée comme objet binaryOccupancyMap . Cet objet représente l'environnement du robot. L'objet contient une grille matricielle avec des valeurs binaires indiquant les obstacles sous la forme true (1) et les emplacements libres sous la forme false (0).

Position et orientation du véhicule, spécifiées comme vecteur [x y theta] . La pose du véhicule est une position x et y avec une orientation angulaire theta (en radians) mesurée à partir du x-axe.

Lectures d'analyse Lidar, spécifiées comme objet lidarScan .

Valeurs de plage à partir des données d'analyse, spécifiées sous forme de vecteur d'éléments mesurés en mètres. Ces valeurs de plage sont les distances d'un capteur à un angles donné. Le vecteur doit avoir la même longueur que le vecteur angles correspondant.

Valeurs d'angle issues des données numérisées, spécifiées comme vecteur d'éléments mesurés en radians. Ces valeurs d'angle correspondent au ranges donné. Le vecteur doit avoir la même longueur que le vecteur ranges correspondant.

Portée maximale du capteur de portée laser, spécifiée sous forme de scalaire en mètres. Les valeurs de plage supérieures ou égales à maxrange sont considérées comme libres sur toute la longueur du rayon, jusqu'à maxrange.

Point de départ des rayons, spécifié sous la forme d'un vecteur à deux éléments, [x y], dans le cadre de coordonnées mondial. Tous les rayons sont des segments de ligne qui partent de ce point.

Points d'extrémité des rayons, spécifiés sous la forme d'une matrice n-par 2 de paires [x y] dans le cadre de coordonnées mondial, où n est le longueur de ranges ou angles. Tous les rayons sont des segments de ligne qui proviennent de startpt.

Capacités étendues

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

Historique des versions

Introduit dans R2019b