Differential-drive vehicle model
differentialDriveKinematics creates a differential-drive vehicle model to
simulate simplified vehicle dynamics. This model approximates a vehicle with a single fixed
axle and wheels separated by a specified track width. The wheels can be driven independently.
Vehicle speed and heading is defined from the axle center. The state of the vehicle is defined
as a three-element vector, [x y theta], with a global
xy-position, specified in meters, and a vehicle heading,
theta, specified in radians. To compute the time derivative states for
the model, use the
function with input commands and the current robot state.
creates a differential drive kinematic model object with default property values.
kinematicModel = differentialDriveKinematics
sets properties on the object to the specified value. You can specify multiple
properties in any order.
kinematicModel = differentialDriveKinematics(Name,Value)
WheelRadius — Wheel radius of vehicle
0.05 (default) | positive numeric scalar
The wheel radius of the vehicle, specified in meters.
WheelSpeedRange — Range of vehicle wheel speeds
[-Inf Inf] (default) | two-element vector
The vehicle speed range is a two-element vector that provides the minimum and maximum vehicle speeds, [MinSpeed MaxSpeed], specified in meters per second.
TrackWidth — Distance between wheels on axle
0.2 (default) | positive numeric scalar
The vehicle track width refers to the distance between the wheels, or the axle length, specified in meters.
VehicleInputs — Type of motion inputs for vehicle
"WheelSpeeds" (default) | character vector | string scalar
VehicleInputs property specifies the format of the model
input commands when using the
derivative function. Options are specified as one of the following
"WheelSpeeds"— Angular speeds for each of the wheels, specified in radians per second.
"VehicleSpeedHeadingRate"— Vehicle speed and heading angular velocity, specified in meters per second and radians per second respectively.
|Time derivative of vehicle state|
Plot Path of Differential-Drive Kinematic Robot
Create a Robot
Define a robot and set the initial starting position and orientation.
kinematicModel = differentialDriveKinematics; initialState = [0 0 0];
Simulate Robot Motion
Set the timespan of the simulation to 1 s with 0.05 s timesteps and the input commands to
50 rad/s for the left wheel and
40 rad/s for the right wheel to result in a right turn. Simulate the motion of the robot by using the
ode45 solver on the
tspan = 0:0.05:1; inputs = [50 40]; %Left wheel is spinning faster [t,y] = ode45(@(t,y)derivative(kinematicModel,y,inputs),tspan,initialState);
 Lynch, Kevin M., and Frank C. Park. Modern Robotics: Mechanics, Planning, and Control 1st ed. Cambridge, MA: Cambridge University Press, 2017.