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.

wheelEncoderOdometryAckermann

Calcule la odometría del vehículo Ackermann utilizando los ticks del codificador de rueda y el ángulo de dirección

Descripción

wheelEncoderOdometryAckermann System object™ calcula la odometría del vehículo Ackermann utilizando los ticks del codificador de la rueda y el ángulo de dirección del vehículo.

Para calcular la odometría del vehículo Ackermann:

  1. Cree el objeto wheelEncoderOdometryAckermann 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

whlEncOdom = wheelEncoderOdometryAckermann crea un wheelEncoderOdometryAckermann System object con valores de propiedad predeterminados.

ejemplo

whlEncOdom = wheelEncoderOdometryAckermann(encoder) crea un wheelEncoderOdometryAckermann System object utilizando los wheelEncoderAckermann System object y encoder especificados para establecer las propiedades.

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

Por ejemplo, whlEncOdom = wheelEncoderOdometryAckermann('SampleRate',100) establece la frecuencia de muestreo del sensor a 100 Hz.

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.

Frecuencia de muestreo del sensor, especificada como un escalar positivo en hercios.

Ejemplo: 'SampleRate',100

Tipos de datos: double

Número de tics del codificador por revolución de la rueda, especificado como un entero positivo o un vector de dos elementos de enteros positivos.

Al especificar este valor como un vector de dos elementos, el primer elemento corresponde a la rueda trasera izquierda y el segundo a la rueda trasera derecha.

Ejemplo: 'TicksPerRevolution',[2048 2048]

Tipos de datos: double

Radio de la rueda, especificado como un escalar positivo o un vector de dos elementos de números positivos en metros.

Al especificar este valor como un vector de dos elementos, el primer elemento corresponde a la rueda trasera izquierda y el segundo a la rueda trasera derecha.

Ejemplo: 'WheelRadius',[0.35 0.35]

Tipos de datos: double

Distancia entre las ruedas sobre el eje, especificada como escalar positivo en metros.

Ejemplo: 'TrackWidth',1.572

Tipos de datos: double

Distancia entre el eje delantero y trasero, especificada como escalar positivo en metros.

Ejemplo: 'WheelBase',2.818

Tipos de datos: double

Pose inicial del vehículo, especificada como un vector de tres elementos con la forma [X Y Yaw]. X y Y especifican la posición del vehículo en metros. Yaw especifica la orientación del vehículo en radianes. Todos los valores están en el sistema de coordenadas de navegación local.

Ejemplo: 'InitialPose',[0 0 0]

Tipos de datos: double

Uso

Descripción

pose = whlEncOdom(ticks,steer) calcula la odometría de un vehículo Ackermann utilizando los ticks del codificador de rueda especificados ticks y el ángulo de dirección steer, y devuelve la posición y orientación del vehículo en el sistema de coordenadas de navegación local.

[pose,velocity] = whlEncOdom(ticks,steer) también devuelve la velocidad lineal y angular del vehículo en el sistema de coordenadas de navegación local.

ejemplo

Argumentos de entrada

expandir todo

Número de ticks del codificador de rueda, especificado como una matriz n por 2. n es el número de muestras en el cuadro actual.

Cada fila de la matriz especifica los ticks del codificador de rueda en el formato [ticksBackLeft ticksBackRight], donde ticksBackLeft y ticksBackRight especifican la cantidad de ticks para las ruedas traseras izquierda y trasera derecha, respectivamente.

Ejemplo: [5 5; 2 2]

Tipos de datos: single | double

Ángulo de dirección del vehículo, especificado como un vector columna de elementos n en radianes. n es el número de muestras en el cuadro actual.

Ejemplo: [0.2; 0.2]

Tipos de datos: single | double

Argumentos de salida

expandir todo

Posición y orientación del vehículo, devuelta como una matriz n por 3. n es el número de muestras en el cuadro actual. Cada fila de la matriz especifica la posición y orientación de una muestra en la forma [X Y Yaw]. X y Y especifican la posición del vehículo en metros. Yaw especifica la orientación del vehículo en radianes. Todos los valores están en el sistema de coordenadas de navegación local.

Tipos de datos: single | double

Velocidad lineal y angular del vehículo, devuelta como una matriz n por 3. n es el número de muestras en el cuadro actual. Cada fila de la matriz especifica la velocidad lineal y angular de una muestra en la forma [velX velY yawRate]. velX y velY especifican la velocidad lineal del vehículo en metros por segundo. yawRate especifica la velocidad angular del vehículo en radianes por segundo. Todos los valores están en el sistema de coordenadas de navegación local.

Tipos de datos: single | double

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

cloneCreate duplicate System object
stepEjecutar el algoritmo System object
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object
isLockedDetermine if System object is in use

Ejemplos

contraer todo

Crea un wheelEncoderOdometryAckermann System object.

whlEncOdom = wheelEncoderOdometryAckermann;

Especifique el número de ticks del codificador de rueda y el ángulo de dirección.

ticks = [5 5; 2 2];
steer = [0.2; 0.2];

Calcule la odometría del vehículo de Ackermann.

[pose,vel] = whlEncOdom(ticks,steer)
pose = 2×3

    0.0054    0.0000    0.0004
    0.0075    0.0000    0.0005

vel = 2×3

    0.5369    0.0002    0.0386
    0.2148    0.0001    0.0154

Capacidades ampliadas

expandir todo

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

Historial de versiones

Introducido en R2020b