Main Content

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

raycast

Calculer les indices de cellules le long d'un rayon

Depuis R2019b

Description

[endpoints,midpoints] = raycast(map,pose,range,angle) renvoie les indices de cellule du map pour toutes les cellules traversées par un rayon provenant du pose au spécifié Valeurs angle et range . endpoints contient tous les indices touchés par l'extrémité du rayon, avec tous les autres points inclus dans midpoints.

exemple

[endpoints,midpoints] = raycast(map,p1,p2) renvoie les indices de cellule du segment de ligne entre les deux points spécifiés.

Exemples

réduire tout

Utilisez la méthode raycast pour générer des indices de cellules pour toutes les cellules traversées par un rayon.

Créez une carte vide. Une carte basse résolution est utilisée pour illustrer les emplacements de grille concernés.

map = occupancyMap(10,10,1);
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.

Obtenez les indices de grille des milieux et des extrémités d'un rayon de [2 3] à [8.5 8]. Définissez les valeurs d’occupation pour ces indices de grille. Les points médians sont traités comme des espaces ouverts. Mettez à jour les points de terminaison avec une observation occupée.

p1 = [2 3];
p2 = [8.5 8];
[endPts,midPts] = raycast(map,p1,p2);
setOccupancy(map,midPts,zeros(length(midPts),1),'grid');
setOccupancy(map,endPts,ones(length(endPts),1),'grid');

Tracez le rayon d'origine sur la carte. Chaque cellule de la grille touchée par la ligne est mise à jour. Le point de départ chevauche plusieurs cellules et la ligne touche le bord de certaines cellules, mais toutes les cellules sont toujours mises à jour.

show(map)
hold on
plot([p1(1) p2(1)],[p1(2) p2(2)],'-b','LineWidth',2)
plot(p2(1),p2(2),'or')
grid on

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

Arguments d'entrée

réduire tout

Représentation cartographique, spécifiée comme objet occupancyMap . Cet objet représente l'environnement du capteur. 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.

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

Portée du rayon, spécifiée sous forme de scalaire en mètres.

Angle du rayon, spécifié sous forme de scalaire en radians. La valeur de l'angle correspond au range correspondant.

Point de départ du rayon, spécifié comme un vecteur à deux éléments [x y] . Le point est défini dans le cadre du monde.

Point final du rayon, spécifié comme un vecteur à deux éléments [x y] . Le point est défini dans le cadre du monde.

Arguments de sortie

réduire tout

Indices de point de terminaison, renvoyés sous la forme d'une matrice n-par 2 de paires [i j] , où n est le nombre d'indices de grille. Les points de terminaison sont ceux où la valeur range atteint la angle spécifiée. Plusieurs indices sont renvoyés lorsque le point de terminaison se trouve à la limite de plusieurs cellules.

Indices médians, renvoyés sous la forme d'une matrice n-par 2 de paires [i j] , où n est le nombre d'indices de grille. Cet argument inclut tous les indices de grille que le rayon croise, à l'exclusion du point final.

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

Voir aussi