Локализация робота с использованием данных датчика дальности и карты
monteCarloLocalization Системный object™ создает объект локализации Монте-Карло (MCL). Алгоритм MCL используется для оценки положения и ориентации транспортного средства в его окружении с использованием известной карты окружения, данных сканирования лидара и данных датчика одометрии.
Для локализации транспортного средства алгоритм MCL использует фильтр частиц для оценки положения транспортного средства. Частицы представляют распределение вероятных состояний для носителя, где каждая частица представляет возможное состояние носителя. Частицы сходятся вокруг одного места, когда транспортное средство движется в окружающей среде и воспринимает различные части окружающей среды с помощью датчика дальности. Датчик одометрии измеряет движение транспортного средства.
A monteCarloLocalization объект принимает данные сканирования позы и лидара в качестве входных данных. Входные данные датчика лидарного сканирования приведены в его собственном кадре координат, и алгоритм преобразует данные согласно SensorModel.SensorPose свойство, которое необходимо указать. Входную позу вычисляют путем интегрирования данных датчика одометрии во времени. Если изменение позы превышает любой из указанных пороговых значений обновления, UpdateThresholdsзатем частицы обновляются, и алгоритм вычисляет новую оценку состояния из фильтра частиц. Частицы обновляются с использованием этого процесса:
Частицы распространяются на основе изменения позы и заданной модели движения, MotionModel.
Частицам присваивают вес на основании вероятности получения показаний датчика дальности для каждой частицы. Эти веса правдоподобия основаны на модели датчика, указанной в SensorModel.
На основе ResamplingInterval свойства, частицы повторно дискретизируются из заднего распределения, и частицы с низким весом исключаются. Например, интервал повторной дискретизации 2 означает, что частицы повторно дискретизируются после каждого другого обновления.
Выходами объекта являются оценочная поза и ковариация, а также значение isUpdated. Это оценочное состояние является средним и ковариацией наивысшего взвешенного скопления частиц. Позиция вывода задается в координатной рамке карты, которая указана в SensorModel.Map собственность. Если изменение позы больше, чем любой из порогов обновления, то оценка состояния была обновлена и isUpdated является true. В противном случае isUpdated является false и смета остается прежней. Для непрерывного отслеживания наилучшей оценки состояния робота повторите этот процесс распространения частиц, оценки их вероятности и повторной выборки.
Для оценки позы и ковариации робота с помощью данных сканирования лидара:
Создать monteCarloLocalization и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
возвращает объект MCL, который оценивает позу транспортного средства с помощью карты, датчика дальности и данных одометрии. По умолчанию назначается пустая карта, поэтому перед использованием объекта требуется действительное назначение карты.mcl = monteCarloLocalization
создает объект MCL с дополнительными опциями, заданными одним или несколькими mcl = monteCarloLocalization(Name,Value)Name,Value аргументы пары.
Name является именем свойства и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN.
[ оценивает позу и ковариацию транспортного средства с использованием алгоритма MCL. Оценки основаны на позе, рассчитанной на основе указанной одометрии транспортного средства, isUpdated,pose,covariance] = mcl(odomPose,scan)odomPoseи указанные данные датчика сканирования лидара, scan. mcl является monteCarloLocalization объект. isUpdated указывает, обновляется ли оценка на основе UpdateThreshold собственность.
Чтобы включить этот синтаксис, необходимо установить UseLidarScan свойство для true. Например:
mcl = monteCarloLocalization('UseLidarScan',true); ... [isUpdated,pose,covariance] = mcl(odomPose,scan);
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
[1] Трюн, Себатиан, Вольфрам Бургард и Дитер Фокс. Вероятностная робототехника. MIT Press, 2005.
[2] Деллаэрт, Ф., Д. Фокс, В. Бургард и С. Трюн. «Локализация Monte Carlo для мобильных роботов». Международная конференция IEEE слушаний 1999 года по вопросам робототехники и автоматизации.
lidarScan | likelihoodFieldSensorModel | odometryMotionModel