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.

rangeSensor

Simular lecturas de sensores de distancia

Descripción

El rangeSensor System object™ es un sensor de alcance que puede generar mediciones de alcance y ángulo en función de la posición 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 configure sus propiedades.

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

Para más información sobre el funcionamiento de los System objects, consulte ¿Qué son los System Objects?

Creación

Descripción

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

ejemplo

rbsensor = rangeSensor(Name,Value) establece propiedades para el sensor utilizando uno o más pares 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 puede modificar sus valores después de llamar al objeto. Los objetos se bloquean cuando llama a ellos, y la función release los desbloquea.

Si una propiedad es ajustable, puede modificar su valor en cualquier momento.

Para obtener más información sobre cómo modificar los valores de las propiedades, consulte Diseñar sistemas en MATLAB utilizando System objects.

El rango detectable mínimo y máximo, especificado como un vector de valor real no negativo 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 no negativo. 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 no negativo. 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

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

ejemplo

Argumentos de entrada

expandir todo

Poses del sensor en el mapa 2-D, especificadas como una matriz de valores reales 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 de verdad fundamental, especificado como un objeto occupancyMap o binaryOccupancyMap. Para la entrada occupancyMap, el sensor de rango considera que una celda está ocupada y devuelve una lectura de rango si la probabilidad de ocupación de la celda es mayor que el valor especificado por la propiedad OccupiedThreshold del mapa de ocupación.

Argumentos de salida

expandir todo

Lecturas de rango, especificadas como una matriz de valores reales R por N. N es el número de poses para las que 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 la cantidad de lecturas del sensor por posición del sensor. R es el mismo que el valor de la propiedad NumReadings.

Funciones del objeto

Para usar una función de objeto, especifique el System object como el primer argumento de entrada. Por ejemplo, para liberar recursos de sistema de un System object llamado obj, utilice la siguiente 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 utilizando 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

expandir todo

Historial de versiones

Introducido en R2019b