Локализуйте робота с помощью данных о датчике области значений и карты
monteCarloLocalization
Система object™ создает объект Monte Carlo localization (MCL). Алгоритм MCL используется, чтобы оценить положение и ориентацию транспортного средства в его среде с помощью известной карты среды, данных о скане лидара и данных датчика одометрии.
Чтобы локализовать транспортное средство, алгоритм MCL использует фильтр частиц, чтобы оценить положение транспортного средства. Частицы представляют распределение вероятных состояний для транспортного средства, где каждая частица представляет возможное состояние транспортного средства. Частицы сходятся вокруг одного местоположения, когда транспортное средство перемещается в среду и обнаруживает различные части среды с помощью датчика области значений. Датчик одометрии измеряет движение транспортного средства.
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] Трун, Sebatian, вольфрам Бергард и Дитер Фокс. Вероятностная робототехника. Нажатие MIT, 2005.
[2] Dellaert, F., Д. Фокс, В. Бергард и С. Трун. "Локализация Монте-Карло для мобильных роботов". Продолжения 1 999 международных конференций IEEE по вопросам робототехники и автоматизации.
lidarScan
| likelihoodFieldSensorModel
| odometryMotionModel