Main Content

bicycleKinematics

Modelo de vehículo bicicleta

Descripción

bicycleKinematics crea un modelo de vehículo bicicleta para simular dinámicas de vehículos similares a un automóvil. Este modelo representa un vehículo con dos ejes separados por una distancia, WheelBase. Estado del vehículo se define como un vector de tres elementos, [xy theta], con la posición global xy especificada en metros, y el ángulo de giro del vehículo, theta, especificado en radianes. La rueda delantera se puede girar con el ángulo de giro psi. La dirección del vehículo theta está definida en el centro del eje trasero. Para calcular los estados de las derivadas de tiempo del modelo, use la función derivative con comandos de entrada y el estado actual del robot.

Creación

Descripción

ejemplo

kinematicModel = bicycleKinematics crea un objeto de modelo cinemático de bicicleta con valores de propiedad predeterminados.

kinematicModel = bicycleKinematics(Name,Value) establece las propiedades adicionales en los valores especificados. Puede especificar varias propiedades en el orden que desee.

Propiedades

expandir todo

Distancia entre ejes hace referencia a la distancia entre los ejes delantero y trasero del vehículo, especificada en metros.

El rango de velocidad del vehículo es un vector de dos elementos que proporciona la velocidad mínima y máxima del vehículo, [MinSpeed MaxSpeed], especificada en metros por segundo.

El ángulo de giro máximo, psi, hace referencia al ángulo máximo en que se puede girar el vehículo hacia la derecha o la izquierda, especificado en radianes. Un valor de pi/2 proporciona al vehículo un radio de giro mínimo de 0. Esta propiedad se usa para validar la entrada de estado proporcionada por el usuario.

Esta propiedad es de solo lectura.

Radio de giro mínimo del vehículo, especificado como un escalar numérico, en metros. El radio mínimo se calcula a partir de la distancia entre ejes y el ángulo de giro máximo.

La propiedad VehicleInputs especifica el formato de los comandos de entrada del modelo cuando se usa la función derivative. Propiedad tiene dos opciones válidas, especificadas como una cadena o un vector de caracteres:

  • "VehicleSpeedSteeringAngle": velocidad del vehículo y ángulo de giro

  • "VehicleSpeedHeadingRate": velocidad del vehículo y velocidad angular de la dirección

Funciones del objeto

derivativeDerivada de tiempo del estado del vehículo

Ejemplos

contraer todo

Crear un robot

Defina un robot y establezca la posición de partida inicial y la orientación.

kinematicModel = bicycleKinematics;
initialState = [0 0 0];

Simular el movimiento del robot

Establezca la escala de tiempo de la simulación en 1 s con intervalos de 0,05 s, los comandos de entrada en 2 m/s y giro a la izquierda. Simule el movimiento del robot utilizando el solver ode45 en la función derivative.

tspan = 0:0.05:1;
inputs = [2 pi/4]; %Turn left
[t,y] = ode45(@(t,y)derivative(kinematicModel,y,inputs),tspan,initialState);

Representar la ruta

figure
plot(y(:,1),y(:,2))

Figure contains an axes object. The axes object contains an object of type line.

Referencias

[1] Lynch, Kevin M., and Frank C. Park. Modern Robotics: Mechanics, Planning, and Control 1st ed. Cambridge, MA: Cambridge University Press, 2017.

[2] Corke, Peter I. Robotics, Vision and Control: Fundamental Algorithms in MATLAB. Springer, 2011.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b