monteCarloLocalization

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

描述

monteCarloLocalization系统对象™创造了蒙特卡洛定位(MCL)对象。该MCL算法用于使用环境的一个已知的地图来估计在其环境中的车辆的位置和方向,激光雷达扫描数据,和测距传感器数据。

本地化车辆中,MCL算法使用粒子滤波来估计车辆的位置。所述颗粒代表可能状态的用于车辆,其中每个粒子代表一个可能的车辆状态的分布。颗粒会聚围绕一个位置如在环境中的车辆移动,并感测使用一系列传感器的环境的不同部分。一个测距传感器测量车辆的运动。

一种monteCarloLocalization对象采用的姿态和激光雷达扫描数据作为输入。激光雷达扫描传感器数据的输入在它自己的坐标系中给出,并且该算法根据所述转换数据SensorModel.SensorPose属性,您必须指定。输入姿势是由随时间的测距传感器数据积分计算。如果姿势的变化比任何指定的更新阈值时,UpdateThresholds,则颗粒被更新并且该算法计算从颗粒过滤器一个新的状态估计。该颗粒采用这种工艺更新:

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

  2. 这些颗粒被指定基于接收到所述范围传感器读数为每个粒子的似然性的权重。这些可能性权重是基于您指定的传感器模型SensorModel

  3. 基于该ResamplingInterval属性,颗粒被从后验分布的重采样,和低重量的颗粒被除去。例如,2个装置一个重新采样间隔,所述颗粒被每隔一个更新后重新采样。

对象的输出是估计的姿态和协方差,和的值isUpdated。这个估计的状态是平均值和颗粒的最高加权群集的协方差。输出姿态在图中给出的坐标是在指定的帧SensorModel.Map属性。如果姿势的变化比任何更新阈值越大,则状态估计已更新,isUpdated真正。除此以外,isUpdated以及预算保持不变。对于连续跟踪机器人的状态的最好估计,重复传播的颗粒,评估它们的似然性,并且重采样的这个过程。

要使用激光雷达扫描数据估计机器人姿态和协方差:

  1. 创建monteCarloLocalization对象并设置其属性。

  2. 调用带参数的对象,就好像它是一个功能。

要了解更多有关系统对象的方式工作,请参阅什么是系统对象?(MATLAB)。

创建

描述

MCL= monteCarloLocalization返回推定车辆的使用地图,一个范围传感器和里程计数据的姿态的MCL对象。默认情况下,空映射分配,所以一个有效的映射分配使用对象之前需要。

MCL= monteCarloLocalization(名称,值创建具有额外的选项的一个或多个所指定的MCL对象名称,值对参数。

名称是一个属性的名称和是对应的值。名称必须出现内单引号(“”)。您可以按照任何顺序指定多个名称 - 值对参数名1,值1,...,NameN,值N

属性

展开全部

车辆的初始姿态用于启动定位,指定为三元素向量,[X Y的2θ时,这表明车辆的位置和航向。与初始姿态估计初始化MCL对象使您可以使用一个较小的值用于粒子的最大数目,并且仍然收敛上的位置。

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

指示是否进行全球定位,指定为要么真正。默认值,,初始化用颗粒InitialPoseInitialCovariance属性。一种真正值初始化在整个地图均匀分布的颗粒,而忽略InitialPoseInitialCovariance属性。全局定位需要大量的颗粒以覆盖整个工作空间。使用全球定位,只有当车辆位置和方位的初始估计不可用。

最小值和指定为两元件载体颗粒的最大数目,[最小最大]

似然性场传感器模型,指定为likelihoodFieldSensor宾语。默认值为使用默认likelihoodFieldSensor宾语。使用对象来获得输出,通话结束后释放对象进行修改,对SensorModel。例如:

MCL = monteCarloLocalization(_);[isUpdated,姿势,协方差] = MCL(_);释放(MCL)mcl.SensorModel.PropName =值;

里程计的运动模型用于差分驱动器,指定为odometryMotionModel宾语。默认值为使用默认odometryMotionModel宾语。使用对象来获得输出,通话结束后释放对象进行修改,对MotionModel。例如:

MCL = monteCarloLocalization(_);[isUpdated,姿势,协方差] = MCL(_);释放(MCL)mcl.MotionModel.PropName =值;

在需要触发更新状态最小变化,指定为三元素向量。本地化更新粒子如果任何的最小变化[X Y的2θ状态得到满足。姿势估计更新仅在颗粒过滤器更新。

颗粒的重采样滤波器之间的更新数,指定为一个正整数。

用一个lidarScan对象作为扫描输入,如任一指定的要么真正

用法

描述

[isUpdated姿势协方差] = MCL(odomPose扫描估计使用MCL算法车辆的姿态和协方差。该估计是基于从指定的车辆里程计计算的姿态,odomPose和指定的激光雷达扫描传感器数据,扫描MCL是个monteCarloLocalization宾语。isUpdated指示估算结果是否是基于更新UpdateThreshold属性。

为了实现这个语法,你必须设置UseLidarScan属性真正。例如:

MCL = monteCarloLocalization('UseLidarScan',真正);...[isUpdated,姿势,协方差] = MCL(odomPose,扫描);

[isUpdated姿势协方差] = MCL(odomPose范围指定的激光雷达扫描数据作为范围

输入参数

展开全部

基于测距姿势,指定为三元素向量,[X Y的2θ。这个姿势是由测距随着时间的积分来计算。

激光雷达扫描读数,指定为lidarScan宾语。

依赖

要使用此参数,则必须设置UseLidarScan属性真正

mcl.UseLidarScan = TRUE;

从扫描数据,指定为与以米为单位的元件的载体范围内的值。这些范围内的值是在指定的从激光扫描传感器的距离。该范围载体必须具有作为相应的相同数量的元素的向量。

从扫描数据,指定为与以弧度为单位的元件的载体角度值。这些角度的值是在该指定的角度范围进行测定。该载体必须是作为相应的相同长度范围向量。

输出参数

展开全部

旗地为姿态更新,返回逻辑。如果姿势的变化比任何更新阈值越多,那么输出真正。否则,它是。一种真正输出单元,其更新的姿态和协方差返回。一种输出意味着姿态和不更新协方差和是一样的最后一次更新。

当前姿态估计,返回三个元素的载体,[X Y的2θ。姿态被计算为平均颗粒的最高加权的集群。

协方差估计当前姿态,返回一个矩阵。这个矩阵给出了当前位姿的不确定性的估计。的协方差被计算为颗粒的最高加权的簇的协方差。

对象函数

使用对象函数,指定系统对象作为第一个输入参数。例如,为了释放一个名为System对象的系统资源OBJ,使用此语法:

释放(OBJ)

展开全部

getParticles 获得从定位算法粒子
系统对象算法
释放 释放资源,并允许更改系统对象属性值和输入特性
重启 复位的内部状态系统对象

例子

全部收缩

创建一个monteCarloLocalization对象,为其分配的传感器模型,以及使用所述计算的姿势估计方法。

注:在开始R2016b,而不是使用步骤方法来执行由系统对象定义的操作,就可以调用该对象与参数,就好像它是一个功能。例如,Y =步骤(OBJ,x)的Y = OBJ(x)的执行类似的操作。

创建一个monteCarloLocalization宾语。设置UseLidarScan属性真正

MCL = monteCarloLocalization;mcl.UseLidarScan = TRUE;

分配与占用栅格地图的对象的传感器模型。

SM = likelihoodFieldSensorModel;P =零(200200);sm.Map = occupancyMap(P,20);mcl.SensorModel = SM;

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

范围= 10吨*酮(1300);范围(1130:170)= 1.0;角度= linspace(-pi / 2,PI / 2300);odometryPose = [0 0 0];

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

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

估计车辆的姿势和协方差。

[isUpdated,estimatedPose,协方差] = MCL(odometryPose,扫描)
isUpdated =合乎逻辑1
estimatedPose =1×30.0350 -0.0126 0.0280
协方差=3×30.9946 -0.0012 0 -0.0012 0.9677 0 0 0 0.9548

参考

[1]特龙,Sebatian,沃尔夫勒姆·伯加德,和Dieter福克斯。概率机器人。麻省理工学院出版社,2005年。

[2] Dellaert,F.,D.福克斯,W. Burgard和S.史朗。“蒙特卡罗定位的移动机器人。”1999年论文集IEEE国际会议机器人与自动化。

扩展功能

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

介绍了在R2019b