Локализуйте робота с помощью данных датчика области значений и карты
The 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);
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
[1] Thrun, Sebatian, Wolfram Burgard, and Dieter Fox. Вероятностная робототехника. MIT Press, 2005.
[2] Dellaert, F., D. Fox, W. Burgard, and S. Thrun. «Локализация Монте-Карло для мобильных роботов». Материалы 1999 Международной конференции IEEE по робототехнике и автоматизации.
lidarScan
| likelihoodFieldSensorModel
| odometryMotionModel