робототехника. Класс OdometryMotionModel

Пакет: робототехника

Создайте модель движения одометрии

Описание

OdometryMotionModel создает объект модели движения одометрии для роботов с дифференциальным приводом. Этот объект содержит определенные параметры модели движения. Можно использовать этот объект задать параметры модели движения в объекте robotics.MonteCarloLocalization.

Эта модель движения принимает, что робот делает чистые движения вращения и перевода переместиться от одного местоположения до другого. Модель распространяет точки или для вперед или для назад движение на основе этих шаблонов движения. Элементы свойства Noise относятся к отклонению в движении. Чтобы видеть эффект изменения шумовых параметров, используйте robotics.OdometryMotionModel.showNoiseDistribution.

Конструкция

omm = robotics.OdometryMotionModel создает объект модели движения одометрии для роботов с дифференциальным приводом.

Свойства

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

Гауссов шум для движения робота, заданного как вектор с 4 элементами. Это свойство представляет параметры отклонения для Гауссова шума, применился к движению робота. Элементы вектора соответствуют следующим ошибкам по порядку:

  • Вращательная ошибка из-за вращательного движения

  • Вращательная ошибка из-за переводного движения

  • Переводная ошибка из-за движения перевода

  • Переводная ошибка из-за вращательного движения

Это свойство доступно только для чтения.

Тип модели движения одометрии, возвращенной как 'DifferentialDrive'. Это свойство только для чтения указывает на тип модели движения одометрии, используемой объектом.

Примеры

свернуть все

Этот пример показывает, как использовать класс robotics.OdometryMotionModel, чтобы предсказать положение робота. Объект OdometryMotionModel содержит параметры модели движения для робота с дифференциальным приводом. Используйте объект предсказать положение робота на основе его текущих и предыдущих положений и параметров модели движения.

Создайте объект модели движения одометрии.

motionModel = robotics.OdometryMotionModel;

Задайте предыдущие положения и текущее чтение одометрии. Каждый прогноз положения соответствует строке в векторе previousPoses.

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

Первый вызов объекта инициализирует значения и возвращает предыдущие положения как текущие положения.

currentPoses = motionModel(previousPoses, currentOdom);

Последующие вызовы объекта с обновленными положениями одометрии возвращают предсказанные положения на основе модели движения.

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

Этот пример показывает, как визуализировать эффект различных шумовых параметров на классе robotics.OdometryMotionModel. Объект OdometryMotionModel содержит модель движения шумовые параметры для робота с дифференциальным приводом. Используйте showNoiseDistribution, чтобы визуализировать, как изменение этих значений влияет на распределение предсказанных положений.

Создайте объект модели движения.

motionModel = robotics.OdometryMotionModel;

Покажите распределение частиц с существующими шумовыми параметрами. Каждая частица является гипотезой для предсказанного положения.

showNoiseDistribution(motionModel);

Покажите распределение с заданным изменением положения одометрии и количеством выборок. Изменение в одометрии используется в качестве итогового положения с гипотезами, распределенными вокруг на основе параметров Noise.

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

Измените параметры Noise и визуализируйте эффекты. Используйте то же изменение положения одометрии и количество выборок.

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

Методы

showNoiseDistributionОтобразите шумовые эффекты параметра
шагКомпьютер затем позирует от предыдущего положения

Ограничения

Если вы вносите изменения в свою модель движения после использования его с объектом MonteCarloLocalization, вызовите release на том объекте заранее. Например:

mcl = robotics.MonteCarloLocalization(...); 
[isUpdated,pose,covariance] = mcl(...); 
release(mcl) 
mcl.MotionModel.PropName = value; 

Ссылки

[1] Трун, Sebatian, вольфрам Бергард и Дитер Фокс. Вероятностная робототехника. Нажатие MIT, 2005.

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

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

Введенный в R2016a