Main Content

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

rayIntersection

Trouver les points d'intersection des rayons et des cellules de carte occupées

Depuis R2019b

Description

exemple

intersectionPts = rayIntersection(map,pose,angles,maxrange) renvoie les points d'intersection des rayons et des cellules occupées dans le map spécifié. Les rayons émanent des pose et angles spécifiés. Les points d'intersection sont renvoyés dans le cadre de coordonnées mondial. S'il n'y a pas d'intersection jusqu'au maxrange spécifié, [NaN NaN] est renvoyé.

Exemples

réduire tout

Créez une carte de grille d'occupation binaire. Ajoutez des obstacles et gonflez-les. Une carte de résolution inférieure est utilisée pour illustrer l’importance de la taille des cellules de votre grille. Montrez la carte.

map = binaryOccupancyMap(10,10,2);
obstacles = [4 10; 3 5; 7 7];
setOccupancy(map,obstacles,ones(length(obstacles),1))
inflate(map,0.25)
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.

Trouvez les points d'intersection des cellules occupées et des rayons émis par la pose du véhicule donnée. Spécifiez la portée maximale et les angles de ces rayons. Le dernier rayon ne croise pas d'obstacle dans la plage maximale, il n'a donc pas de point de collision.

maxrange = 6;
angles = [pi/4,-pi/4,0,-pi/8];
vehiclePose = [4,4,pi/2];
intsectionPts = rayIntersection(map,vehiclePose,angles,maxrange)
intsectionPts = 4×2

    3.5000    4.5000
    6.0000    6.0000
    4.0000    9.0000
       NaN       NaN

Tracez les points d'intersection et tracez les rayons de la pose aux points d'intersection.

hold on
plot(intsectionPts(:,1),intsectionPts(:,2),'*r') % Intersection points
plot(vehiclePose(1),vehiclePose(2),'ob') % Vehicle pose
for i = 1:3
    plot([vehiclePose(1),intsectionPts(i,1)],...
        [vehiclePose(2),intsectionPts(i,2)],'-b') % Plot intersecting rays
end
plot([vehiclePose(1),vehiclePose(1)-6*sin(angles(4))],...
    [vehiclePose(2),vehiclePose(2)+6*cos(angles(4))],'-b') % No intersection ray

Figure contains an axes object. The axes object with title Binary Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 7 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 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 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.

Angles des rayons émanant du capteur, spécifiés sous forme de vecteur avec des éléments en radians. Ces angles sont relatifs au capteur spécifié pose.

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.

Arguments de sortie

réduire tout

Points d'intersection, renvoyés sous la forme d'une matrice n-par 2 de paires [x y] dans le cadre de coordonnées mondial, où n est la longueur de angles.

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

|

Rubriques