主要内容

Montecarlolocalization

使用范围传感器数据和地图本地化机器人

描述

MontecarlolocalizationSystem Object™创建蒙特卡罗本地化(MCL)对象。MCL算法用于估计使用环境,LIDAR扫描数据和内径测量传感器数据的已知地图在其环境中估计车辆的位置和方向。

为了本地化车辆,MCL算法使用粒子过滤器来估计车辆的位置。颗粒代表了车辆的可能状态的分布,其中每个粒子代表可能的车辆状态。当车辆在环境中移动并使用范围传感器感测环境的不同部分时,粒子会聚在单个位置周围。径流传感器测量车辆的运动。

一种Montecarlolocalization对象将姿势和LIDAR扫描数据作为输入。输入的LIDAR扫描传感器数据在其自己的坐标帧中给出,并且算法根据该算法转换数据Sensormodel.Sensetose.您必须指定的属性。通过随着时间的推移集成了内径测量传感器数据来计算输入姿势。如果姿势的变化大于任何指定的更新阈值,updatethresholds.,更新粒子,并且算法计算来自粒子滤波器的新状态估计。使用此过程更新粒子:

  1. 粒子基于姿势和指定运动模型的变化传播,MotionModel.

  2. 基于接收每个粒子的范围传感器读数的可能性,将粒子分配权重。这些似然重量基于您指定的传感器模型visormodel.

  3. 基于这一点重新采样interval.性质,颗粒从后部分布重新采样,消除低重量的颗粒。例如,2的重新采样间隔意味着粒子在其他更新之后重新采样。

对象的输出是估计的姿势和协方差,以及价值iSupdated.。该估计状态是最高加权颗粒的平均值和协方差。输出姿势在地图的坐标帧中给出,该框架visormodel.map.财产。如果姿势的变化大于任何更新阈值,则状态估计已更新和iSupdated.真的。除此以外,iSupdated.错误的估计仍然是相同的。为了连续跟踪机器人状态的最佳估计,重复传播粒子的此过程,评估它们的可能性和重采样。

使用LIDAR扫描数据估计机器人姿势和协方差:

  1. 创造Montecarlolocalization对象并设置其属性。

  2. 用参数调用对象,就像它是一个函数一样。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

例子

= Montecarlolocalization.返回使用地图,范围传感器和测距仪数据估计车辆的姿势的MCL对象。缺省情况下,分配空映射,因此在使用对象之前需要有效的地图分配。

= montecarlolocalization(名称,价值的)创建一个mcl对象,其中包含一个或多个指定的其他选项名称,价值对论点。

姓名是属性名称和价值是相应的价值。姓名必须出现在单引号内('')。您可以以任何顺序指定多个名称值对参数name1,value1,...,namen,valuen

特性

展开全部

用于启动本地化的车辆的初始姿势,指定为三元素向量,[x y theta],表示车辆的位置和标题。使用初始姿势估计初始化MCL对象使您可以使用较小的值以获得最大数量的粒子,并且仍会收敛在位置。

初始姿势的高斯分布的协方差,指定为对角线矩阵。三个元素矢量和标量输入被转换为对角线矩阵。该矩阵给出了对不确定性的估计itsials

指示是否执行全局本地化的标志,指定为错误的或者真的。默认值,错误的,使用该初始化粒子itsials初始转移性特性。一种真的价值在整个地图中初始化均匀分布式粒子,并忽略itsials初始转移性特性。全局本地化需要大量粒子来覆盖整个工作空间。只有当不可用的车辆位置和方向的初始估计时,才能使用全局本地化。

最小和最大粒子数,指定为双元素矢量,[min max]

似然场传感器模型,指定为alikelihield usensens目的。默认值使用默认值likelihifefieldsensormodel.目的。使用对象以获取输出后,调用释放在对象上进行更改visormodel.。例如:

mcl = montecarlolocalization;[iSupdated,姿势,协方差] = MCL(范围,角度);释放(mcl)mcl.sensormodel.numbeams = 120;

用于差动驱动的内径运动模型,指定为odometrymotionmodel.目的。默认值使用默认值odometrymotionmodel.目的。使用对象以获取输出后,调用释放在对象上进行更改MotionModel.。例如:

mcl = montecarlolocalization;[iSupdated,姿势,协方差] = MCL(范围,角度);释放(MCL)MCL.MOTIONMODEL.NOISE = [0.25 0.25 0.4 0.4];

触发更新所需状态的最小变化,指定为三元素向量。如果任何内容的最小变化,本地化会更新粒子[x y theta]各国满足。仅当更新粒子滤波器时才能估计更新。

重新采样之间的筛选器更新数量,指定为正整数。

用一个Lidarscan.对象作为扫描输入,指定为错误的或者真的

用法

描述

例子

[iSupdated.姿势协方差] = MCL(傲慢扫描的)使用MCL算法估计车辆的姿势和协方差。估计基于从指定的车辆内径测量计算的姿势,傲慢,以及指定的LIDAR扫描传感器数据,扫描是个Montecarlolocalization目的。iSupdated.指示估计是否已基于此更新updatethreshold.财产。

要启用此语法,必须设置USELIDARSCAN.财产真的。例如:

Mcl = Montecarlolocalization('USELIDARSCAN',真的);......[ISUPDATED,POSE,协方差] = MCL(履历,扫描);

例子

[iSupdated.姿势协方差] = MCL(傲慢范围角度的)指定LIDAR扫描数据范围角度

输入参数

展开全部

姿势基于内径术,指定为三元素矢量,[x y theta]。通过将内径术随时间的时间来计算这种姿势。

LIDAR扫描读数,指定为aLidarscan.目的。

依赖性

要使用此参数,必须设置USELIDARSCAN.财产真的

mcl.uselidarscan = true;

扫描数据的范围值,指定为带有元素测量元素的向量。这些范围值是距离指定的激光扫描传感器的距离角度。这范围矢量必须具有相同数量的元素作为相应的元素角度向量。

来自扫描数据的角度值,指定为具有在弧度中测量的元素的向量。这些角度值是指定的角度范围测量。这角度矢量必须与相应的长度相同范围向量。

输出参数

展开全部

姿势更新标志,作为逻辑返回。如果姿势的变化超过任何更新阈值,则输出是真的。否则,它是错误的。一种真的输出意味着返回更新的姿势和协方差。一种错误的输出意味着姿势和协方差未更新,并且与上次更新相同。

当前的姿势估计,作为三元素载体返回,[x y theta]。姿势被计算为最高加权颗粒的平均值。

当前姿势的协方差估计,作为矩阵返回。该矩阵给出了当前姿势的不确定性的估计。协方差被计算为最高加权颗粒的协方差。

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用此语法:

释放(obj)

展开全部

getParticles. 从本地化算法获取粒子
系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重启 重置内部状态系统对象

例子

全部收缩

创建一个Montecarlolocalization对象,分配传感器模型,并计算使用的姿势估计方法。

注意:从R2016B开始,而不是使用step方法执行系统对象定义的操作,您可以使用参数调用对象,而是它是一个函数。例如,y =步骤(obj,x)y = obj(x)执行等效操作。

创建一个Montecarlolocalization目的。设定USELIDARSCAN.财产真的

mcl = montecarlolocalization;mcl.uselidarscan = true;

为对象分配一个占用网格映射的传感器模型。

SM = likelihifeFieldSensorModel;p =零(200,200);SM.MAP =占领(P,20);mcl.sensormodel = sm;

创建样本激光扫描数据输入。

范围= 10 *那些(1,300);范围(1,130:170)= 1.0;角度= Linspace(-PI / 2,PI / 2,300);odometrypose = [0 0];

创建一个Lidarscan.通过指定范围和角度来指定对象。

扫描= LIDARSCAN(范围,角度);

估算车辆姿势和协方差。

[ISUPDATED,估计,协方差] = MCL(ODOMOTRYPES,扫描)
iSupdated =逻辑1
估计=1×30.0350 -0.0126 0.0280.
协方差=3×30.9946 -0.0012 0 -0.0012 0.9677 0 0 0 0.9548

参考

[1] Thrun,Sebatian,Wolfram Burgard和Dieter Fox。概率机器人学。MIT Press,2005。

[2]大拉特,F.,D. Fox,W.Burgard和S. Thrun。“移动机器人的蒙特卡罗本地化。”诉讼1999年IEEE机器人和自动化国际会议。

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

介绍在R2019B.