Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

rayIntersection

Encuentra puntos de intersección de rayos y celdas de mapa ocupadas.

Descripción

intersectionPts = rayIntersection(map,pose,angles,maxrange) devuelve los puntos de intersección de los rayos y las celdas ocupadas en el map especificado. Los rayos emanan de los pose y angles especificados. Los puntos de intersección se devuelven en el marco de coordenadas mundiales. Si no hay ninguna intersección hasta el maxrange especificado, se devuelve [NaN NaN].

ejemplo

Ejemplos

contraer todo

Cree un mapa de cuadrícula de ocupación binaria. Añade obstáculos e inflalos. Se utiliza un mapa de menor resolución para ilustrar la importancia del tamaño de las celdas de su cuadrícula. Muestra el mapa.

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.

Encuentre los puntos de intersección de las celdas ocupadas y los rayos que se emiten desde la pose del vehículo dada. Especifique el rango máximo y los ángulos para estos rayos. El último rayo no se cruza con ningún obstáculo dentro del rango máximo, por lo que no tiene punto de colisión.

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

Traza los puntos de intersección y traza los rayos desde la pose hasta los puntos de intersección.

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

Argumentos de entrada

contraer todo

Representación de mapa, especificada como un objeto binaryOccupancyMap. Este objeto representa el entorno del robot. El objeto contiene una cuadrícula de matriz con valores binarios que indican los obstáculos como true (1) y las ubicaciones libres como false (0).

Posición y orientación del sensor, especificada como un vector [x y theta]. La posición del sensor es una posición x y y con orientación angular theta (en radianes) medida desde el eje x.

Ángulos de los rayos que emanan del sensor, especificados como un vector con elementos en radianes. Estos ángulos son relativos al sensor especificado pose.

Alcance máximo del sensor de distancia láser, especificado como escalar en metros. Los valores de rango mayores o iguales a maxrange se consideran libres a lo largo de toda la longitud del rayo, hasta maxrange.

Argumentos de salida

contraer todo

Puntos de intersección, devueltos como una matriz n por 2 de pares [x y] en el marco de coordenadas mundial, donde n es la longitud de angles.

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2019b

Consulte también

|

Temas