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.

raycast

Calcular índices de celdas a lo largo de un rayo.

Desde R2019b

Descripción

ejemplo

[endpoints,midpoints] = raycast(map,pose,range,angle) devuelve índices de celda del map especificado para todas las celdas atravesadas por un rayo que se origina en el pose especificado en el especificado Valores angle y range . endpoints contiene todos los índices tocados por el final del rayo, con todos los demás puntos incluidos en midpoints.

[endpoints,midpoints] = raycast(map,p1,p2) devuelve los índices de celda del segmento de línea entre los dos puntos especificados.

Ejemplos

contraer todo

Utilice la función raycast para generar índices de celda para todas las celdas atravesadas por un rayo.

Crea un mapa vacío. Se utiliza un mapa de baja resolución para ilustrar las ubicaciones de la cuadrícula afectadas.

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

Obtenga los índices de cuadrícula de los puntos medios y finales de un rayo desde [2 3] a [8.5 8]. Establezca valores de ocupación para estos índices de cuadrícula. Los puntos medios se tratan como espacios abiertos. Actualice los puntos finales con una observación ocupada.

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');

Traza el rayo original sobre el mapa. Cada celda de la cuadrícula tocada por la línea se actualiza. El punto de partida se superpone a varias celdas y la línea toca el borde de ciertas celdas, pero todas las celdas aún están actualizadas.

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 Binary 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

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, especificadas 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.

Rango del rayo, especificado como escalar en metros.

Ángulo del rayo, especificado como escalar en radianes. El valor del ángulo es para el range correspondiente.

Punto inicial del rayo, especificado como un vector de dos elementos [x y] . Los puntos se definen con respecto al marco mundial.

Punto final del rayo, especificado como un vector de dos elementos [x y] . Los puntos se definen con respecto al marco mundial.

Argumentos de salida

contraer todo

Índices de punto final, devueltos como una matriz n por 2 de pares [i j] , donde n es el número de índices de cuadrícula. Los puntos finales son donde el valor range llega al angle especificado. Se devuelven varios índices cuando el punto final se encuentra en el límite de varias celdas.

Índices de punto medio, devueltos como una matriz n-por 2 de pares [i j] , donde n es el número de índices de la cuadrícula. Este argumento incluye todos los índices de cuadrícula que cruza el rayo, excluyendo el punto final.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b