monteCarloLocalization
Localice el robot utilizando datos y mapas del sensor de distancia
Desde R2019b
Descripción
El monteCarloLocalization
System object™ crea un objeto de localización Monte Carlo (MCL). El algoritmo MCL se utiliza para estimar la posición y orientación de un vehículo en su entorno utilizando un mapa conocido del entorno, datos de escaneo LIDAR y datos de sensores de odometría.
Para localizar el vehículo, el algoritmo MCL utiliza un filtro de partículas para estimar la posición del vehículo. Las partículas representan la distribución de estados probables del vehículo, donde cada partícula representa un posible estado del vehículo. Las partículas convergen alrededor de una única ubicación a medida que el vehículo se mueve en el entorno y detecta diferentes partes del entorno mediante un sensor de distancia. Un sensor de odometría mide el movimiento del vehículo.
Un objeto monteCarloLocalization
toma la pose y los datos de escaneo lidar como entradas. Los datos del sensor de escaneo lidar de entrada se proporcionan en su propio marco de coordenadas y el algoritmo transforma los datos de acuerdo con la propiedad SensorModel.SensorPose
que debe especificar. La pose de entrada se calcula integrando los datos del sensor de odometría a lo largo del tiempo. Si el cambio de pose es mayor que cualquiera de los umbrales de actualización especificados, UpdateThresholds
, entonces las partículas se actualizan y el algoritmo calcula una nueva estimación de estado a partir del filtro de partículas. Las partículas se actualizan mediante este proceso:
Las partículas se propagan según el cambio de pose y el modelo de movimiento especificado,
MotionModel
.A las partículas se les asignan pesos según la probabilidad de recibir la lectura del sensor de rango para cada partícula. Estas ponderaciones de probabilidad se basan en el modelo de sensor que especifique en
SensorModel
.Con base en la propiedad
ResamplingInterval
, se remuestrean las partículas de la distribución posterior y se eliminan las partículas de bajo peso. Por ejemplo, un intervalo de remuestreo de 2 significa que las partículas se remuestrean cada dos actualizaciones.
Los resultados del objeto son la pose y la covarianza estimadas, y el valor de isUpdated
. Este estado estimado es la media y la covarianza del grupo de partículas ponderado más alto. La pose de salida se proporciona en el marco de coordenadas del mapa que se especifica en la propiedad SensorModel.Map
. Si el cambio de pose es mayor que cualquiera de los umbrales de actualización, entonces la estimación del estado se actualizó y isUpdated
es true
. De lo contrario, isUpdated
es false
y la estimación sigue siendo la misma. Para realizar un seguimiento continuo de la mejor estimación del estado de un robot, repita este proceso de propagación de partículas, evaluación de su probabilidad y remuestreo.
Para estimar la pose y la covarianza del robot utilizando datos de escaneo LIDAR:
Cree el objeto
monteCarloLocalization
y establezca sus propiedades.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
devuelve un objeto MCL que estima la pose de un vehículo utilizando un mapa, un sensor de distancia y datos de odometría. De forma predeterminada, se asigna un mapa vacío, por lo que se requiere una asignación de mapa válida antes de utilizar el objeto.mcl
= monteCarloLocalization
crea un objeto MCL con opciones adicionales especificadas por uno o más mcl
= monteCarloLocalization(Name,Value
)Name,Value
argumentos de par.
Name
es un nombre de propiedad y Value
es el valor correspondiente. Name
debe aparecer entre comillas simples (''
). Puede especificar varios argumentos de pares nombre-valor en cualquier orden como Name1,Value1,...,NameN,ValueN
.
Propiedades
Uso
Sintaxis
Descripción
[
estima la pose y la covarianza de un vehículo utilizando el algoritmo MCL. Las estimaciones se basan en la pose calculada a partir de la odometría especificada del vehículo, isUpdated
,pose
,covariance
] = mcl(odomPose
,scan
)odomPose
, y los datos del sensor de escaneo lidar especificados, scan
. mcl
es el objeto monteCarloLocalization
. isUpdated
indica si la estimación se actualiza en función de la propiedad UpdateThreshold
.
Para habilitar esta sintaxis, debe establecer la propiedad UseLidarScan
en true
. Por ejemplo:
mcl = monteCarloLocalization('UseLidarScan',true); ... [isUpdated,pose,covariance] = mcl(odomPose,scan);
Argumentos de entrada
Argumentos de salida
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)
Ejemplos
Referencias
[1] Thrun, Sebatian, Wolfram Burgard, and Dieter Fox. Probabilistic Robotics. MIT Press, 2005.
[2] Dellaert, F., D. Fox, W. Burgard, and S. Thrun. "Monte Carlo Localization for Mobile Robots." Proceedings 1999 IEEE International Conference on Robotics and Automation.
Capacidades ampliadas
Historial de versiones
Introducido en R2019b