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.

odometryMotionModel

Crear un modelo de movimiento de odometría

Desde R2019b

Descripción

odometryMotionModel crea un objeto de modelo de movimiento de odometría para vehículos con tracción diferencial. Este objeto contiene parámetros específicos del modelo de movimiento. Puede utilizar este objeto para especificar los parámetros del modelo de movimiento en el objeto monteCarloLocalization .

Este modelo de movimiento supone que el vehículo realiza movimientos puros de rotación y traslación para viajar de un lugar a otro. El modelo propaga puntos para movimiento hacia adelante o hacia atrás según estos patrones de movimiento. Los elementos de la propiedad Noise se refieren a la variación en el movimiento. Para ver el efecto de cambiar los parámetros de ruido, use showNoiseDistribution.

Creación

Descripción

ejemplo

omm = odometryMotionModel crea un objeto de modelo de movimiento de odometría para vehículos con tracción diferencial.

Propiedades

expandir todo

Ruido gaussiano para el movimiento de vehículos, especificado como un vector de 4 elementos. Esta propiedad representa los parámetros de variación del ruido gaussiano aplicado al movimiento del vehículo. Los elementos del vector corresponden a los siguientes errores en orden:

  • Error de rotación debido al movimiento de rotación.

  • Error de rotación debido al movimiento de traslación.

  • Error de traducción debido al movimiento de traducción.

  • Error de traslación debido al movimiento de rotación.

Esta propiedad o parámetro es de solo lectura.

Tipo de modelo de movimiento de odometría, devuelto como 'DifferentialDrive'. Esta propiedad de solo lectura indica el tipo de modelo de movimiento de odometría que utiliza el objeto.

Funciones del objeto

showNoiseDistributionMostrar efectos de parámetros de ruido

Ejemplos

contraer todo

Este ejemplo muestra cómo utilizar la clase odometryMotionModel para predecir la pose de un vehículo. Un objeto odometryMotionModel contiene los parámetros del modelo de movimiento para un vehículo con tracción diferencial. Utilice el objeto para predecir la pose de un vehículo en función de sus poses actual y anterior y los parámetros del modelo de movimiento.

Crear un objeto de modelo de movimiento de odometría.

motionModel = odometryMotionModel;

Defina poses anteriores y la lectura de odometría actual. Cada predicción de pose corresponde a una fila en el vector previousPoses .

previousPoses =  rand(10,3);
currentOdom = [0.1 0.1 0.1];

La primera llamada al objeto inicializa los valores y devuelve las poses anteriores como poses actuales.

currentPoses = motionModel(previousPoses, currentOdom);

Las llamadas posteriores al objeto con poses de odometría actualizadas devuelven las poses predichas según el modelo de movimiento.

currentOdom = currentOdom + [0.1 0.1 0.05];
predPoses = motionModel(previousPoses, currentOdom);

Este ejemplo muestra cómo visualizar el efecto de diferentes parámetros de ruido en la clase odometryMotionModel . Un objeto odometryMotionModel contiene los parámetros de ruido del modelo de movimiento para un vehículo con tracción diferencial. Utilice showNoiseDistribution para visualizar cómo el cambio de estos valores afecta la distribución de las poses previstas.

Crea un objeto de modelo de movimiento.

motionModel = odometryMotionModel;

Mostrar la distribución de partículas con los parámetros de ruido existentes. Cada partícula es una hipótesis para la pose predicha.

showNoiseDistribution(motionModel);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 0.2 0.2 0.2], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Muestre la distribución con un cambio de pose de odometría específico y un número de muestras. El cambio de odometría se utiliza como pose final con hipótesis distribuidas en función de los parámetros Noise .

showNoiseDistribution(motionModel, ...
            'OdometryPoseChange', [0.5 0.1 0.25], ...
            'NumSamples', 1000);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 0.2 0.2 0.2], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Cambie los parámetros Noise y visualice los efectos. Utilice el mismo cambio de pose de odometría y número de muestras.

 motionModel.Noise = [0.2 1 0.2 1];
 
 showNoiseDistribution(motionModel, ...
            'OdometryPoseChange', [0.5 0.1 0.25], ...
            'NumSamples', 1000);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 1 0.2 1], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Limitaciones

Si realiza cambios en su modelo de movimiento después de usarlo con el objeto monteCarloLocalization , llame a release en ese objeto de antemano. Por ejemplo:

mcl = monteCarloLocalization; 
[isUpdated,pose,covariance] = mcl(ranges,angles); 
release(mcl) 
mcl.MotionModel.Noise = [0.25 0.25 0.4 0.4];

Referencias

[1] Thrun, Sebatian, Wolfram Burgard, and Dieter Fox. Probabilistic Robotics. MIT Press, 2005.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b