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

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] . De forma predeterminada, la propiedad OccupiedThreshold se utiliza para determinar las celdas ocupadas.

ejemplo

intersectionPts = rayIntersection(map,pose,angles,maxrange,threshold) devuelve puntos de intersección basados ​​en el threshold especificado para los valores de ocupación. Los valores superiores o iguales al umbral se consideran ocupados.

Ejemplos

contraer todo

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

map = occupancyMap(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 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,0.7)
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

legend('Collision Points','Vehicle Position','Rays','Location','SouthEast')

Figure contains an axes object. The axes object with title 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 These objects represent Collision Points, Vehicle Position, Rays.

Argumentos de entrada

contraer todo

Representación del mapa, especificada como un objeto occupancyMap . Este objeto representa el entorno del sensor. El objeto contiene una cuadrícula matricial con valores que representan la probabilidad de ocupación de esa celda. Los valores cercanos a 1 representan una alta probabilidad de que la celda contenga un obstáculo. Valores cercanos a 0 representan una alta probabilidad de que la celda no esté ocupada y libre de obstáculos.

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.

Umbral para celdas ocupadas, especificado como un escalar de 0 a 1. Los valores de ocupación mayores o iguales al umbral se tratan como celdas ocupadas para activar intersecciones.

Argumentos de salida

contraer todo

Puntos de intersección, devueltos como n-por-2 matriz de [x y] pares en el marco 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

| | | (Robotics System Toolbox)