Алгоритм Локализации Монте-Карло (MCL) используется, чтобы оценить положение и ориентацию робота. Алгоритм использует известную карту среды, данных о датчике области значений и данных о датчике одометрии. Чтобы видеть, как создать объект и использовать этот алгоритм, смотрите robotics.MonteCarloLocalization
.
Чтобы локализовать робота, алгоритм MCL использует фильтр частиц, чтобы оценить его положение. Частицы представляют распределение вероятных состояний для робота. Каждая частица представляет возможное состояние робота. Частицы сходятся вокруг одного местоположения, когда робот перемещается в среду и обнаруживает различные части среды с помощью датчика области значений. Движение робота обнаруживается с помощью датчика одометрии.
Частицы обновляются в этом процессе:
Частицы распространены на основе изменения в положении и заданной модели движения, MotionModel
.
Частицы являются присвоенными весами на основе вероятности получения датчика области значений, читающего для каждой частицы. Это чтение основано на модели датчика, которую вы задаете в SensorModel
.
На основе этих весов оценка состояния робота извлечена на основе весов частицы. Группа частиц с самым высоким весом используется, чтобы оценить положение робота.
Наконец, частицы передискретизируются на основе заданного ResamplingInterval
. Передискретизация регулирует положения частицы и улучшает производительность путем корректировки количества используемых частиц. Это - ключевая возможность для корректировки к изменениям и хранения частиц, важных для оценки состояния робота.
Алгоритм выводит предполагаемое положение и ковариацию. Эти оценки являются средним значением и ковариацией самого высокого взвешенного кластера частиц. Для непрерывного отслеживания повторите эти шаги в цикле, чтобы распространить частицы, оценить их вероятность и получить лучшую оценку состояния.
Для получения дополнительной информации о фильтрах частиц как общее применение смотрите Рабочий процесс Фильтра частиц.
При работе с алгоритмом локализации цель состоит в том, чтобы оценить состояние системы. Для приложений робототехники это предполагаемое состояние обычно является положением робота. Для объекта MonteCarloLocalization
вы указываете, что это изображает из себя трехэлементный вектор. Положение соответствует положению x-y, [x y]
, и угловой ориентации, theta
.
Алгоритм MCL оценивает эти три значения на основе входных параметров датчика среды и данной модели движения вашей системы. Вывод от использования объекта MonteCarloLocalization
включает pose
, который является лучшим предполагаемым состоянием значений [x y theta]
. Частицы распределяются вокруг начального положения, InitialPose
, или выбрали однородно использующую глобальную локализацию. Положение вычисляется как среднее значение самого высокого взвешенного кластера частиц, если эти частицы были исправлены на основе измерений.
Этот график показывает самый высокий взвешенный кластер и итоговое положение робота, отображенное по демонстрационным частицам зеленого цвета. С большим количеством итераций алгоритма MCL и исправлений измерения, частицы сходятся к истинному местоположению робота. Однако возможно, что кластеры частицы могут иметь высокие веса для ложных оценок и сходиться на неправильном местоположении. Если неправильная сходимость происходит, передискретизируйте частицы путем сброса алгоритма MCL с обновленным InitialPose
.
Когда вы сначала создаете алгоритм MonteCarloLocalization
, задаете минимальные и максимальные пределы частицы при помощи свойства ParticleLimits
. Более высокое количество частиц увеличивает вероятность, что частицы сходятся на фактическом местоположении. Однако более низкий номер частицы быстрее. Количество частиц настраивает динамически в пределах на основе весов кластеров частицы. Эта корректировка помогает сократить количество частиц в зависимости от времени, таким образом, локализация может запуститься более эффективно.
Частицы должны быть выбраны через заданное распределение. Чтобы инициализировать частицы в пространстве состояний, можно использовать или начальное положение или глобальную локализацию. С глобальной локализацией можно однородно распределить частицы на ожидаемом пространстве состояний (вытянутый из свойства Map
объекта yourSensorModel
). В объекте MCL по умолчанию, набор свойство GlobalLocalization
к true
.
mcl = robotics.MonteCarloLocalization; mcl.GlobalLocalization = true;
Глобальная локализация требует большего числа частиц к эффективно демонстрационным частицам через пространство состояний. Больше частиц увеличивает вероятность успешной сходимости на реальном положении. Это большое распределение значительно уменьшает начальную производительность, пока частицы не начинают сходиться, и количество частицы может быть сокращено.
По умолчанию глобальная локализация установлена в false
. Без глобальной локализации необходимо задать свойства InitialPose
и InitialCovariance
, который помогает локализовать частицы. Используя это начальное положение, частицы более тесно сгруппированы вокруг предполагаемого состояния. Близкая группировка частиц позволяет вам использовать меньше из них и увеличивает скорость и точность отслеживания во время первых итераций.
Эти изображения были взяты из Локализовать TurtleBot Используя пример Локализации Монте-Карло, который показывает, как использовать алгоритм MCL с TurtleBot® в известной среде.
Чтобы локализовать вашего робота постоянно, необходимо передискретизировать частицы и обновить алгоритм. Используйте свойства UpdateThreshold
и ResamplingInterval
управлять при передискретизации, и обновления предполагаемого состояния происходят.
UpdateThreshold
является трехэлементным вектором, который задает минимальное изменение в положении робота, [x y theta]
, чтобы инициировать обновление. Замена переменной больше, чем этим минимумом инициировали обновление, порождение объекта возвратить новую оценку состояния. Это изменение в положении робота основано на одометрии, которая задана в функциональной форме объекта. Настройте эти пороги на основе своих свойств датчика и движения вашего робота. Случайные шумовые или незначительные изменения, больше, чем ваш порог, могут инициировать ненужное обновление и влиять на вашу производительность. Свойство ResamplingInterval
задает количество обновлений, чтобы инициировать передискретизацию частицы. Например, интервал передискретизации 2
передискретизирует при любом обновлении.
Преимущество передискретизации частиц - то, что вы обновляете возможные местоположения, которые способствуют итоговой оценке. Передискретизация перераспределяет частицы на основе их весов и развивает частицы на основе Модели Движения. В этом процессе частицы с более низким весом устраняются, помогая частицам сходиться к истинному состоянию робота. Количество частиц динамически изменяется, чтобы улучшить скорость или отслеживание.
Производительность алгоритма зависит от соответствующей передискретизации. Если частицы широко рассеиваются, и начальное положение робота не известно, алгоритм поддерживает высокое количество частицы. Когда алгоритм сходится на истинном местоположении, он сокращает количество частиц и увеличивает скорость производительности. Можно настроиться свойство ParticleLimits
ограничить минимальные и максимальные частицы раньше помогало с производительностью.
Движение и модели датчика для алгоритма MCL подобны StateTransitionFcn
и функциям MeasurementLikelihoodFcn
для объекта robotics.ParticleFilter
, которые описаны в Параметрах Фильтра частиц. Для алгоритма MCL эти модели более характерны для локализации робота. После вызова объекта, чтобы изменить свойства MotionModel
или SensorModel
, необходимо сначала вызвать release
на объекте.
По умолчанию MonteCarloLocalization
использует объект robotics.LikelihoodFieldSensorModel
в качестве модели датчика. Эта модель датчика содержит параметры, характерные для датчика области значений используемая, 2D информация о карте для среды робота и характеристики шума измерения. Модель датчика использует параметры с измерениями области значений, чтобы вычислить вероятность измерений, учитывая текущее положение робота. Без включающего эти параметры некоторые погрешности измерения могут скосить оценку состояния или увеличить вес на несоответствующих частицах.
Свойства датчика области значений:
SensorPose
– Положение датчика области значений относительно местоположения робота. Это положение используется, чтобы преобразовать показания области значений в кадр координаты робота.
SensorLimits
– Минимум и максимум располагаются пределы. Измерение за пределами этих областей значений не включено в вычисление вероятности.
NumBeams
– Количество лучей раньше вычисляло вероятность. Можно улучшить скорость производительности путем сокращения количества используемых лучей.
Измерения области значений, как также известно, дают ложные показания из-за системного шума или другой экологической интерференции. Чтобы составлять ошибку датчика, задайте эти параметры:
MeasurementNoise
– Стандартное отклонение для шума измерения. Это отклонение применяется к чтению области значений и составляет любую интерференцию с датчиком. Установите это значение на основе информации от вашего датчика области значений.
RandomMeasurementWeight
— Вес для вероятности случайного измерения. Установите низкую вероятность для случайных измерений. Значение по умолчанию 0.05.
ExpectedMeasurementWeight
— Вес для вероятности ожидаемого измерения. Установите высокую вероятность для ожидаемых измерений. Значение по умолчанию 0.95.
Модель датчика также хранит карту среды робота как сетка заполнения. Используйте robotics.BinaryOccupancyGrid
, чтобы задать вашу карту с занятыми и свободными пространствами. Установите любые неизвестные пробелы в карте как свободные местоположения. Установка их к свободным местоположениям препятствует тому, чтобы алгоритм совпадал с обнаруженными объектами к этим областям карты.
Кроме того, можно задать MaximumLikelihoodDistance
, который ограничивает область для поиска препятствий. Значение MaximumLikelihoodDistance
является максимальным расстоянием до самого близкого препятствия, которое используется для вычисления вероятности.
Модель движения для локализации робота помогает предсказать, как частицы развиваются в течение времени при передискретизации. Это - представление кинематики робота. Модель движения, включенная по умолчанию с алгоритмом MCL, является основанной на одометрии дифференциальной моделью движения диска (robotics.OdometryMotionModel
). Без модели движения, предсказывая следующий шаг является более трудным. Важно знать возможности вашей системы так, чтобы алгоритм локализации мог запланировать дистрибутивы частицы, чтобы получить лучшие оценки состояния. Обязательно рассмотрите ошибки от энкодеров колеса, или другие датчики раньше измеряли одометрию. Ошибки в системе задают распространение распределения частицы.
Можно задать ошибку, ожидаемую на основе движения робота как четырехэлементный вектор, Noise
. Эти четыре элемента указаны как веса на стандартных отклонениях для [1]:
Вращательная ошибка из-за вращательного движения
Вращательная ошибка из-за переводного движения
Переводная ошибка из-за переводного движения
Переводная ошибка из-за вращательного движения
Для роботов с дифференциальным приводом, когда робот перемещается от стартового положения до итогового положения, изменение в положении может быть обработано как:
Вращение к конечному положению
Перевод в прямой линии к конечному положению
Вращение к целевой ориентации
Принимая эти шаги, можно визуализировать эффект ошибок попеременно и перевода. Ошибки в начальном вращении приводят к вашим возможным положениям, распространяемым в C-форме вокруг конечного положения.
Большие переводные ошибки приводят к вашим возможным положениям, распространяемым вокруг прямой линии к конечному положению.
Большие ошибки и в переводе и во вращении могут привести к шире распространенным положениям.
Кроме того, вращательные ошибки влияют на ориентацию итогового положения. Понимание этих эффектов помогает вам задать Гауссов шум в свойстве Noise
объекта MotionModel
для вашего определенного приложения. Когда изображения показывают, каждый параметр непосредственно не управляет дисперсией и может меняться в зависимости от вашей настройки робота и геометрии. Кроме того, несколько изменений положения как робот перешли через вашу среду, может увеличить эффекты этих ошибок по многим различным шагам. Путем точного определения этих параметров частицы распределяются соответственно, чтобы дать алгоритму MCL достаточно гипотез, чтобы найти наилучшую оценку для местоположения робота.
[1] Трун, Себастьян и Дитер Фокс. Вероятностная Робототехника. 3-й редактор Кембридж, Масса: Нажатие MIT, 2006. p.136.
robotics.LikelihoodFieldSensorModel
| robotics.MonteCarloLocalization
| robotics.OdometryMotionModel