Локализуйте робота с помощью данных о датчике области значений и карты
Система robotics.MonteCarloLocalization
object™ создает объект Monte Carlo localization (MCL). Алгоритм MCL используется, чтобы оценить положение и ориентацию робота в его среде с помощью известной карты среды, данных сканирования лазерного дальномера и данных о датчике одометрии.
Чтобы локализовать робота, алгоритм MCL использует фильтр частиц, чтобы оценить положение робота. Частицы представляют распределение вероятных состояний для робота, где каждая частица представляет возможное состояние робота. Частицы сходятся вокруг одного местоположения, когда робот перемещается в среду и обнаруживает различные части среды с помощью датчика области значений. Датчик одометрии измеряет движение робота.
Объект robotics.MonteCarloLocalization
берет положение и данные сканирования лазерного дальномера как входные параметры. Входные данные о датчике сканирования лазерного дальномера даны в его собственном координатном кадре, и алгоритм преобразовывает данные согласно свойству SensorModel.SensorPose
, которое необходимо задать. Входное положение вычисляется путем интеграции данных о датчике одометрии в зависимости от времени. Если изменение в положении больше, чем какой-либо из заданных порогов обновления, UpdateThresholds
, то частицы обновляются, и алгоритм вычисляет новую оценку состояния из фильтра частиц. Частицы обновляются с помощью этого процесса:
Частицы распространены на основе изменения в положении и заданной модели движения, MotionModel
.
Частицы являются присвоенными весами на основе вероятности получения датчика области значений, читающего для каждой частицы. Эти веса вероятности основаны на модели датчика, которую вы задаете в SensorModel
.
На основе свойства ResamplingInterval
частицы передискретизируются от апостериорного распределения, и частицы низкого веса устраняются. Например, интервал передискретизации 2 средних значений, что частицы передискретизируются после любого обновления.
Выходные параметры объекта являются предполагаемым положением и ковариацией и значением isUpdated
. Это предполагаемое состояние является средним значением и ковариацией самого высокого взвешенного кластера частиц. Выходное положение дано в координатном кадре карты, который задан в свойстве SensorModel.Map
. Если изменение в положении больше, чем какой-либо из порогов обновления, то оценка состояния была обновлена, и isUpdated
является true
. В противном случае isUpdated
является false
, и оценка остается то же самое. Для непрерывного отслеживания наилучшей оценки состояния робота повторите этот процесс распространения частиц, оценки их вероятности и передискретизации.
Оценить положение робота и ковариацию с помощью данных сканирования лазерного дальномера:
Создайте объект robotics.MonteCarloLocalization
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
mcl = robotics.MonteCarloLocalization
mcl = robotics.MonteCarloLocalization(Name,Value)
возвращает объект MCL, который оценивает положение робота с помощью карты, датчика области значений и данных об одометрии. По умолчанию пустая карта присвоена, таким образом, допустимое присвоение карты требуется перед использованием объекта.mcl
= robotics.MonteCarloLocalization
создает объект MCL с дополнительными опциями, заданными одним или несколькими аргументами пары mcl
= robotics.MonteCarloLocalization(Name,Value
)Name,Value
.
Name
является именем свойства, и Value
является соответствующим значением. Имя должно находиться внутри одинарных кавычек (' ').
Можно задать несколько аргументов пары "имя-значение" в любом порядке как
Name1,Value1,...,NameN,ValueN
.
Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
[isUpdated,pose,covariance]
= mcl(odomPose,scan)
[isUpdated,pose,covariance]
= mcl(odomPose,ranges,angles)
[
оценивает положение и ковариацию робота с помощью алгоритма MCL. Оценки основаны на положении, вычисленном от заданной одометрии робота, isUpdated
,pose
,covariance
]
= mcl(odomPose
,scan
)odomPose
, и заданных данных о датчике сканирования лазерного дальномера, scan
. mcl
является объектом robotics.MonteCarloLocalization
. isUpdated
указывает, обновляется ли оценка на основе свойства UpdateThreshold
.
Чтобы включить этот синтаксис, необходимо установить свойство UseLidarScan
на true
. Например:
mcl = robotics.MonteCarloLocalization('UseLidarScan',true); ... [isUpdated,pose,covariance] = mcl(odomPose,scan);
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
[1] Трун, Sebatian, вольфрам Бергард и Дитер Фокс. Вероятностная робототехника. Нажатие MIT, 2005.
[2] Dellaert, F., Д. Фокс, В. Бергард и С. Трун. "Локализация Монте-Карло для мобильных роботов". Продолжения 1 999 международных конференций IEEE по вопросам робототехники и автоматизации.
lidarScan
| robotics.LikelihoodFieldSensorModel
| robotics.OdometryMotionModel