differentialDriveKinematics

Модель транспортного средства дифференциального диска

Описание

differentialDriveKinematics создает модель транспортного средства дифференциального диска, чтобы симулировать упрощенную динамику аппарата. Эта модель аппроксимирует транспортное средство одной фиксированной осью и колесами, разделенными заданной шириной дорожки. Колеса могут управляться независимо. Скорость транспортного средства и заголовок заданы от центра оси. Состояние транспортного средства задано как трехэлементный вектор, [x y theta], с глобальным позиционным xy, задал в метрах, и заголовке транспортного средства, theta, заданном в радианах. Чтобы вычислить состояния производной времени для модели, используйте derivative функция с входными командами и текущим состоянием робота.

Создание

Описание

пример

kinematicModel = differentialDriveKinematics создает дифференциальный диск кинематический объект модели со значениями свойств по умолчанию.

kinematicModel = differentialDriveKinematics(Name,Value) свойства наборов на объекте к заданному значению. Можно задать несколько свойств в любом порядке.

Свойства

развернуть все

Радиус колеса транспортного средства, заданного в метрах.

Область значений скорости транспортного средства является двухэлементным вектором, который обеспечивает минимальные и максимальные скорости транспортного средства, [MinSpeed MaxSpeed], заданный в метрах в секунду.

Ширина дорожки транспортного средства относится к расстоянию между колесами или длине оси, заданной в метрах.

VehicleInputs свойство задает формат входных команд модели при использовании derivative функция. Опции заданы как одна из следующих строк:

  • "WheelSpeeds" — Угловые скорости для каждого из колес, заданных в радианах в секунду.

  • "VehicleSpeedHeadingRate" — Скорость транспортного средства и направляющаяся скорость вращения, заданная в метрах в секунду и радианах в секунду соответственно.

Функции объекта

derivativeПроизводная времени состояния транспортного средства

Примеры

свернуть все

Создайте робота

Задайте робота и установите начальную стартовую позицию и ориентацию.

kinematicModel = differentialDriveKinematics;
initialState = [0 0 0];

Симулируйте движение робота

Установите промежуток симуляции к 1 с с 0,05 тактами с и входными командами к 2 м/с и левым поворотом. Симулируйте движение робота при помощи ode45 решатель на derivative функция.

tspan = 0:0.05:1;
inputs = [50 40]; %Left wheel is spinning faster
[t,y] = ode45(@(t,y)derivative(kinematicModel,y,inputs),tspan,initialState);

Постройте путь

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

Ссылки

[1] Линчуйте, Кевин М. и Франк К. Парк. Современная Робототехника: Механика, Планирование и Управление 1-й редактор Кембридж, MA: Издательство Кембриджского университета, 2017.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019b

Для просмотра документации необходимо авторизоваться на сайте