Main Content

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.

Desde R2019b

Descripción

ejemplo

intersectionPts = rayIntersection(map,pose,angles,maxrange) devuelve puntos de intersección de rayos y 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 intersección hasta el maxrange especificado, se devuelve [NaN NaN] .

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 del mapa, especificada como un objeto binaryOccupancyMap . Este objeto representa el entorno del robot. El objeto contiene una cuadrícula matricial con valores binarios que indican obstáculos como true (1) y ubicaciones libres como false (0).

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

Á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. Valores de rango mayores o iguales a maxrange se consideran libres en toda la longitud del rayo, hasta maxrange.

Argumentos de salida

contraer todo

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

Capacidades ampliadas

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