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.

insertRay

Insertar rayo de observación con escaneo láser.

Descripción

insertRay(map,pose,scan,maxrange) inserta una o más observaciones del sensor de escaneo LiDAR en la cuadrícula de ocupación, map, utilizando el objeto de entrada lidarScan, scan, para obtener los puntos finales del rayo. Los puntos finales del rayo se consideran espacio libre si los rangos de escaneo de entrada están por debajo de maxrange. Las celdas observadas como ocupadas se actualizan con una observación de 0,7. Todos los demás puntos a lo largo del rayo se tratan como libres de obstáculos y se actualizan con una observación de 0,4. Los puntos finales superiores a maxrange no se actualizan. Los valores NaN se ignoran. Este comportamiento se correlaciona con el modelo de sensor inverso.

ejemplo

insertRay(map,pose,ranges,angles,maxrange) especifica las lecturas de rango como vectores definidos por las entradas ranges y angles.

insertRay(map,startpt,endpoints) inserta observaciones entre los segmentos de línea desde el punto de inicio hasta los puntos finales. Los puntos finales se actualizan con una observación de probabilidad de 0,7. Las celdas a lo largo de los segmentos de línea se actualizan con una observación de 0,4.

insertRay(___,invModel) inserta rayos con probabilidades actualizadas dadas en el vector de dos elementos, invModel, que corresponde a observaciones libres de obstáculos y ocupadas. Utilice cualquiera de las sintaxis anteriores para ingresar los rayos.

Ejemplos

contraer todo

Cree un mapa de cuadrícula de ocupación vacío.

map = occupancyMap(10,10,20);

Especifique la pose del vehículo, los alcances, los ángulos y el alcance máximo del escaneo láser.

pose = [5,5,0];
ranges = 3*ones(100,1);
angles = linspace(-pi/2,pi/2,100);
maxrange = 20;

Crea un objeto lidarScan con los rangos y ángulos especificados.

scan = lidarScan(ranges,angles);

Inserte los datos del escaneo láser en el mapa de ocupación.

insertRay(map,pose,scan,maxrange);

Muestre el mapa para ver los resultados de insertar el escaneo láser.

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.

Verifique la ocupación del lugar directamente frente al vehículo.

getOccupancy(map,[8 5])
ans = 
0.7000

Agregue una segunda lectura y vea la actualización de los valores de ocupación. La lectura adicional aumenta la confianza en las lecturas. Los valores libres y ocupados se vuelven más distintos.

insertRay(map,pose,scan,maxrange);
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.

getOccupancy(map,[8 5])
ans = 
0.8448

Argumentos de entrada

contraer todo

Representación de mapa, especificada como un objeto occupancyMap. Este objeto representa el entorno del vehículo. 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 vehículo, especificada como un vector [x y theta]. La pose del vehículo es una posición x y y con orientación angular theta (en radianes) medida desde el eje x.

Lecturas de escaneo Lidar, especificadas como un objeto lidarScan.

Valores de rango de datos de escaneo, especificados como un vector de elementos medidos en metros. Estos valores de rango son distancias desde un sensor en un angles determinado. El vector debe tener la misma longitud que el vector angles correspondiente.

Valores de ángulo de datos de escaneo, especificados como un vector de elementos medidos en radianes. Estos valores de ángulos corresponden al ranges dado. El vector debe tener la misma longitud que el vector ranges correspondiente.

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.

Punto de inicio de los rayos, especificado como un vector de dos elementos, [x y], en el marco de coordenadas del mundo. Todos los rayos son segmentos de recta que se originan en este punto.

Puntos finales de los rayos, especificados como una matriz n por 2 de pares [x y] en el marco de coordenadas mundial, donde n es la longitud de ranges o angles. Todos los rayos son segmentos de línea que se originan en startpt.

Valores del modelo de sensor inverso, especificados como un vector de dos elementos correspondiente a las probabilidades de ocupación y libre de obstáculos. Los puntos a lo largo del rayo se actualizan de acuerdo con el modelo del sensor inverso y las lecturas de rango especificadas. Los valores de rango NaN se ignoran. Los valores de rango mayores que maxrange no se actualizan. Consulte Modelo de sensor inverso.

Más acerca de

contraer todo

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