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.

rangeSensor

Simular lecturas de sensores de distancia

Desde R2019b

Descripción

El rangeSensor System object™ es un sensor de alcance que es capaz de generar mediciones de rango y ángulo basadas en la pose del sensor y el mapa de ocupación dados. Las lecturas de alcance se basan en los obstáculos en el mapa de ocupación.

Para simular un sensor de alcance usando este objeto:

  1. Cree el objeto rangeSensor y establezca sus propiedades.

  2. Llame al objeto con argumentos, como si fuera una función.

Para obtener más información sobre cómo funcionan los System objects, consulte What Are System Objects?

Creación

Descripción

ejemplo

rbsensor = rangeSensor devuelve un System object rangeSensor , rbsensor. El sensor es capaz de generar mediciones de rango y ángulo basadas en la pose del sensor y un mapa de ocupación.

rbsensor = rangeSensor(Name,Value) establece las propiedades del sensor utilizando uno o más pares de nombre-valor. Las propiedades no especificadas tienen valores predeterminados. Encierre el nombre de cada propiedad entre comillas.

Propiedades

expandir todo

A menos que se indique lo contrario, las propiedades son no ajustables, lo que significa que no se pueden cambiar sus valores después de llamar al objeto. Los objetos se bloquean cuando los llamas y la función release los desbloquea.

Si una propiedad es ajustable, puedes cambiar su valor en cualquier momento.

Para obtener más información sobre cómo cambiar los valores de las propiedades, consulte System Design in MATLAB Using System Objects.

El rango detectable mínimo y máximo, especificado como un vector de valor real positivo de 1 por 2. Las unidades se establecen en metros.

Ejemplo: [1 15]

Ajustable: Yes

Tipos de datos: single | double

Ángulo de detección horizontal mínimo y máximo, especificado como un vector de valor real de 1 por 2. Las unidades están en radianes.

Ejemplo: [-pi/3 pi/3]

Tipos de datos: single | double

Resolución de lecturas de ángulos horizontales, especificadas como escalar positivo. La resolución define el intervalo angular entre dos lecturas consecutivas del sensor. Las unidades están en radianes.

Ejemplo: 0.01

Tipos de datos: single | double

La desviación estándar del ruido de rango, especificada como un escalar positivo. El ruido de rango se modela como un proceso de ruido blanco de media cero con la desviación estándar especificada. Las unidades se establecen en metros.

Ejemplo: 0.01

Ajustable: Yes

Tipos de datos: single | double

La desviación estándar del ruido del ángulo horizontal, especificada como un escalar positivo. El ruido de rango se modela como un proceso de ruido blanco de media cero con la desviación estándar especificada. Las unidades están en radianes.

Ejemplo: 0.01

Ajustable: Yes

Tipos de datos: single | double

Esta propiedad o parámetro es de solo lectura.

Número de lecturas de salida para cada posición del sensor, especificada como un número entero positivo. Esta propiedad depende de las propiedades HorizonalAngle y HorizontalAngleResolution .

Tipos de datos: single | double

Uso

Descripción

ejemplo

[ranges,angles] = rbsensor(pose,map) devuelve las lecturas de rango y ángulo de la información de pose 2-D y el mapa ground-truth.

Argumentos de entrada

expandir todo

Poses del sensor en el mapa 2-D, especificadas como una matriz de valor real N-por-3, donde N es el número de poses para simular el sensor. Cada fila de la matriz corresponde a una pose del sensor en el orden de [x, y, θ]. x y y representan la posición del sensor en el marco del mapa. Las unidades de x y y están en metros. θ es el ángulo de rumbo del sensor con respecto a la dirección positiva x del marco del mapa. Las unidades de θ están en radianes.

Mapa ground-truth, especificado como un objeto occupancyMap o binaryOccupancyMap . Para la entrada occupancyMap , el sensor de alcance considera una celda como ocupada y devuelve una lectura de rango si la probabilidad de ocupación de la celda es mayor que el valor especificado por el OccupiedThreshold propiedad del mapa de ocupación.

Argumentos de salida

expandir todo

Lecturas de rango, especificadas como una matriz de valor real R-por- N . N es el número de poses para las cuales se simula el sensor, y R es el número de lecturas del sensor por pose del sensor. R es el mismo que el valor de la propiedad NumReadings .

Lecturas de ángulos, especificadas como un vector de valor real R por 1. R es el número de lecturas del sensor por posición del sensor. R es el mismo que el valor de la propiedad NumReadings .

Funciones del objeto

Para utilizar una función de objeto, especifique System object como primer argumento de entrada. Por ejemplo, para liberar recursos del sistema de un System object llamado obj, use esta sintaxis:

release(obj)

expandir todo

stepEjecutar el algoritmo System object
cloneCreate duplicate System object

Ejemplos

contraer todo

Cree un sensor de alcance.

 rbsensor = rangeSensor;

Especifique la pose del sensor y el mapa ground-truth.

truePose = [0 0 pi/4];
trueMap = binaryOccupancyMap(eye(10));

Generar las lecturas del sensor.

[ranges, angles] = rbsensor(truePose, trueMap);

Visualice los resultados usando lidarScan.

scan = lidarScan(ranges, angles);
figure
plot(scan)

Figure contains an axes object. The axes object with title LiDAR Scan, xlabel X, ylabel Y contains a line object which displays its values using only markers.

Capacidades ampliadas

Historial de versiones

Introducido en R2019b