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.

insertRay

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

Desde R2019b

Descripción

ejemplo

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 la entrada lidarScan objeto, scan, para obtener puntos finales de rayos. 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.

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

insertRay(map,startpt,endpoints) inserta observaciones entre los segmentos de línea desde el punto inicial 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 ocupadas y libres de obstáculos. 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;

Cree 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 del 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 x-eje.

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

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

Puntos finales para rayos, especificados como una matriz n-por 2 de pares [x y] en el marco de coordenadas mundial, donde n es el 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 según el modelo del sensor inverso y las lecturas de rango especificadas. NaN los valores del rango se ignoran. Los valores de rango mayores que maxrange no se actualizan. Ver Modelo de sensor inverso.

Más acerca de

contraer todo

Modelo de sensor inverso

El modelo de sensor inverso determina cómo se establecen los valores a lo largo de un rayo desde la lectura de un sensor de rango hasta los obstáculos en el mapa. Puede personalizar este modelo especificando diferentes probabilidades para ubicaciones libres y ocupadas en el argumento invModel . NaN los valores del rango se ignoran. Los valores de rango mayores que maxrange no se actualizan.

Diagram of inverse sensor model.

Las ubicaciones de la cuadrícula que contienen lecturas de rango se actualizan con la probabilidad de ocupación. Las ubicaciones antes de la lectura se actualizan con la probabilidad gratuita. Todas las ubicaciones después de la lectura no se actualizan.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b