一种适用于变电站环境下的巡检机器人定位方法
技术领域
本发明属于机器人定位技术领域,特别涉及一种适用于变电站环境下的巡检机器人定位方法。
背景技术
变电站设备巡检为变电站安全运行提供基本保障,而变电站稳定、安全的运行是人民日常生活、工业生产正常进行的重要条件,随着变电站自动化水平提高,变电站设备可靠运行面临更加严峻的考验。由于变电站巡检任务的复杂性,目前,变电站设备巡检主要是工作人员借助一些检测设备进行检查的方式,检查人员的主要工作就是对站内大量的仪表读数进行记录以及对特定区域的温度测量,由于人工巡检诸如操作人员劳动强度、现场环境等不确定因素影响,检查结果可靠性差,漏检和错误检查情况较多,进而可能造成较大经济损失,甚至引起严重安全事故,变电站自主巡检机器人代替人工进行巡检成为智能电网的发展趋势。自主导航是机器人进行自主巡检的关键步骤,机器人的准确定位是实现自主导航的前提。
定位是移动机器人研究的热点,也是机器人自主导航最基本的环节,对于实现变电站巡检机器人具有重要的理论意义和实用价值。如果移动机器人在导航过程中仅仅依靠编码器的信息进行位置估计,那么由于测程法系统误差和非系统误差会引起无界的误差累积,甚至导致机器人导航任务的失败,因此需要借助外界的传感器信息修正测程法的定位误差,提高机器人的定位精度,本文中所用的观测传感器为激光传感器。
近年来,基于概率的绝对定位方法引起了国内外学者的注意,成为机器人定位研究的热点,出现了一大批文献。在定位过程中,存在很多不确定性因素:首先机器人本身具有不确定性:如里程计误差累积和传感器噪声数据;其次机器人所处环境也是不可预知的:人的走动和物体的移动所造成的环境变化。由于这些不确定性因素,使定位变得更加困难,因此近年来,越来越多的研究者把概率理论应用到移动机器人定位中。这些研究理论的基础是贝叶斯滤波,贝叶斯滤波是概率定位方法的理论基础,贝叶斯滤波用传感器测量数据去估计一个动态系统的未知状态,其核心思想就是:以当前为止所收集的数据为条件,递归估计状态空间后验概率密度。本文基本的定位算法采用基于粒子滤波器的蒙特卡洛定位方法。
变电站环境主要由两类特点的环境组成,一种是静态环境,一种是每隔一段时间就会发生变化的动态环境。变电站内的环境大部分属于静态环境,但还有一部分环境会定期发生变化,这种环境内的参照物主要是灌木丛,变电站内的灌木是生长的,地图创建完成以后过一段时间灌木丛的形状就会发生改变,导致机器人自主导航时激光扫描到的数据无法和地图匹配,从而导致机器人定位错误,使机器人无法完成变电站的巡检任务,此外,灌木丛每隔一段时间就会进行修剪,每次修剪后和修剪前形状也不同,同样会导致定位错误。
发明内容
本发明的目的是为了提供一种能够兼顾静态环境和动态环境,适用于变电站环境下的巡检机器人定位方法。
为此,本发明的技术方案是:一种适用于变电站环境下的巡检机器人定位方法,所述巡检机器人具有运动控制系统、惯性导航系统、激光扫描传感器,所用软件系统为机器人操作系统ROS;其特征在于:机器人处于静态环境时,采用的是蒙特卡洛定位方法,通过激光扫描环境信息和地图进行匹配;当机器人进入初始加载地图中的类似于灌木丛这样动态变化的区域时,由于该区域存在改变的可能性,不再使用初始加载的地图和蒙特卡洛定位方法进行机器人定位,采用SLAM算法实时建图并定位,当机器人离开动态变化区域,再次进入静态环境时,再次切换回蒙特卡洛定位;两种定位方式之间的切换由一个定位管理节点实现;
具体包括以下步骤:
1)机器人开机时,默认使用的是蒙特卡洛定位方法,机器人会加载变电站环境地图,并加载机器人初始位姿信息发布到/initialpose主题;
2)蒙特卡洛定位节点接收/initialpose主题的消息并初始化机器人位姿,机器人接受巡检任务后开始自主导航,蒙特卡洛定位方法实时追踪机器人位姿,实现机器人的定位并发布机器人的实时定位结果到/amcl_current_pose主题;
3)定位管理节点收听/amcl_current_pose主题的消息,定位管理节点根据定位结果及提前预设的灌木丛区域坐标判断机器人是否进入灌木丛区域;
4)当机器人进入灌木丛区域,定位管理节点首先发送消息到/amcl_block_flag主题,蒙特卡洛定位节点接收到/amcl_block_flag主题的消息后将自身阻塞,然后定位管理节点发送消息到/gmap_initialpose主题;
5)SLAM算法节点接收到/gmap_initialpose主题的消息后初始化SLAM算法并实时发布其定位结果到/gmap_current_pose主题;
6)定位管理节点收听/gmap_current_pose主题的消息并判断机器人是否离开灌木丛区域;
7)当机器人离开灌木丛区域时,定位管理节点发送消息到/gmap_block_flag主题,SLAM算法接收到/gmap_block_flag主题的消息后将自身阻塞,然后定位管理节点再发布机器人位姿消息到/initialpose主题,初始化蒙特卡洛定位节点。
进一步地,所述蒙特卡洛定位方法和SLAM算法的坐标系之间的坐标树关系都是地图坐标系—里程计坐标系—机器人坐标系—激光坐标系;SLAM算法在初始时刻新建地图的地图坐标系和里程计坐标系是重合的,加入一个补偿坐标系,取代原始SLAM算法中的里程计坐标系;由SLAM算法切换到蒙特卡洛定位方法时,只需将机器人在SLAM算法中的定位结果作为蒙特卡洛定位方法的初始位姿即可;由蒙特卡洛定位方法切换到SLAM算法时,利用蒙特卡洛定位方法结果作为SLAM初始化时机器人的位姿,机器人在里程计坐标系下的坐标并没有发生变化,补偿坐标系和里程计坐标系的关系与蒙特卡洛定位方法结束时地图坐标系和里程计坐标系的关系一致并保持此变换,SLAM初始化时地图坐标系和补偿坐标系重合,然后根据SLAM中机器人的定位结果来计算地图坐标系和补偿坐标系之间的关系。
进一步地,如权利要求1所述的一种适用于变电站环境下的巡检机器人定位方法,其特征在于:所述蒙特卡洛定位方法包括以下步骤:
a1)初始化:初始时刻,从先验概率分布x
0~p(x
0)抽取样本大小为N的粒子集
a2)运动更新阶段:在k时刻,利用k-1时刻的粒子集S
k-1和机器人运动模型
预测机器人位姿分布粒子集S'
k,u
k-1表示运动控制信息;
a3)观测更新阶段:利用k时刻的传感器测量数据z
k和观测模型p(z
k|x
k),更新预测粒子集中的粒子的权重
并对权重进行归一化处理,得到更新后的近似的机器人后验概率分布粒子集
a4)根据粒子权重进行重采样,重采样阶段会复制权重高的粒子,消除权重小的粒子,这样大部分粒子会集中在机器人真实位姿附近,然后k=k+1时刻返回步骤a2)进行下一轮迭代。
进一步地,所述SLAM算法包括以下步骤:
b1)初始化:当机器人驶入灌木丛区域,由蒙特卡洛定位方法切换到SLAM算法,实时创建地图并基于新建地图实现定位,基于粒子滤波的SLAM算法每个粒子单独维护一副变电站地图,初始化信息是蒙特卡洛定位方法最后发布的机器人位姿和当前里程计信息,为保持新建地图坐标系统和蒙特卡洛定位方法所用地图坐标系统的一致,SLAM初始化粒子位姿为蒙特卡洛定位方法最后发布的机器人位姿,SLAM算法中加入一个补偿坐标系,初始时刻补偿坐标系与地图坐标系重合,此后通过SLAM中机器人的定位结果对这两个坐标系之间的关系进行校正,补偿坐标系和里程计坐标系始终保持固定变换;
b2)采样阶段:首先利用机器人运动模型
即里程计数据计算每个粒子下一时刻的位置,
是t-1时刻第i个粒子所维护的地图;为了实现上述在高似然区域采样的目的,我们对每个粒子周围一定范围的位置进行迭代,在这些位置中选出机器人在此位置时能使当前激光和地图匹配最好的位置,作为该粒子下一步的采样结果;
b3)权重更新:粒子权重
根据各粒子位姿利用当前激光数据与各粒子所维护的地图进行匹配,根据匹配得分计算每个粒子的权重;
b4)重采样:有效粒子系数
当有效粒子系数低于给定阈值时进行重采样;当采样符合真实分布时,各粒子权重相似,当采样分布与真实分布偏差越大,粒子的权重方差会越大,因此有效粒子系数可以作为采样粒子是否逼近真实分布的有效测度;当N
eff<N/2时进行重采样,当N
eff≥N/2时跳过重采样步骤,N表示抽取样本大小。
本发明中的/initialpose主题为蒙特卡洛定位方法初始化位姿主题,/amcl_current_pose主题为蒙特卡洛定位位姿主题,/amcl_block_flag主题为蒙特卡洛定位方法阻塞主题,/gmap_initialpose主题为SLAM算法初始化主题,/gmap_current_pose主题为SLAM算法定位位姿主题,/gmap_block_flag主题为SLAM算法阻塞主题。机器人操作系统的通信特点是可通过“主题”的方式进行通信,某个或某些节点作为发布者发布消息到特定主题,收听该主题的节点(即订阅者,一个或多个节点)收听到该主题消息后可进行对应操作,发布者和订阅者之间并不需要知道彼此的存在。
在变电站环境下,单纯采用基于已有地图的蒙特卡洛定位方法进行机器人定位的局限性在于当机器人导航进入灌木丛区域时由于激光扫描到的数据和地图中的信息匹配不准导致定位错误,单纯采用SLAM方式导航,需要进行实时建图,变电站环境规模大,由于SLAM算法复杂度高,很快会建图失败进而导致导航失败。本发明融合两种算法的特点,在变电站的静态环境中使用蒙特卡洛方法进行定位,在灌木丛区域切换为SLAM方式,使机器人可在整个变电站环境下实现准确定位,有效完成变电站巡检任务。
附图说明
以下结合附图和本发明的实施方式来作进一步详细说明
图1为本发明的定位管理框图。
具体实施方式
本实施例提出一种组合定位的方式,在静态环境中使用蒙特卡洛方法基于已有地图进行定位,当进入到灌木丛区域时,使用SLAM的方式进行导航,即在灌木丛区域,不再使用已有的地图进行机器人的位姿估计,而是进行实时建图并基于新建地图来实现机器人的定位。
本实施例所用平台机器人须具有运动控制系统、惯性导航系统、激光扫描传感器,而所用软件系统为机器人操作系统ROS。机器人在两种定位算法之间进行切换时,由于定位使用的不是同一地图,因此使用的坐标系统也会有差别,若要求两种定位算法的切换不影响机器人的自主导航,则要求在不同的地图坐标系统中,机器人的坐标是一致的。
默认情况下蒙特卡洛定位和SLAM算法的坐标系之间的坐标树关系都是地图坐标系-里程计坐标系-机器人坐标系-激光坐标系。蒙特卡洛定位方法是基于已有地图的,因此地图坐标系已经固定,初始化时只需要告诉算法初始时刻机器人在地图坐标系下的坐标即可。
在由SLAM算法切换到蒙特卡洛定位方法时,只需将机器人在SLAM算法中的定位结果作为蒙特卡洛定位方法的初始位姿即可,在由蒙特卡洛定位方法切换到SLAM算法时,此时由于既没有地图也没有机器人位姿,所以比较麻烦,在蒙特卡洛定位方法中直接定位结果计算频率较低,而机器人在里程计坐标系下的坐标更新较快并且里程计短期内结果比较准确,利用里程计该特点,导航时使用的定位结果由地图坐标系到里程计坐标系的变化加上机器人在里程计坐标系下的坐标求得,蒙特卡洛定位方法来计算地图坐标系和里程计坐标系之间的变化,在切换到SLAM算法时,需要利用蒙特卡洛定位方法结果作为SLAM初始化时机器人的位姿,机器人在里程计坐标系下的坐标并没有发生变化,为保持地图坐标系和里程计坐标系的变换关系也不变,需要加入一个补偿坐标系,该补偿坐标系和里程计坐标系的关系与蒙特卡洛定位方法结束时地图坐标系和里程计坐标系的关系一致并保持此变换,SLAM初始化时机器人坐标系和补偿坐标系重合,然后根据SLAM中机器人的定位结果来计算地图坐标系和补偿坐标系之间的关系。两种定位方式之间的切换由一个定位管理节点实现,定位模块的结构如图1所示。
两种定位方式之间的切换由一个定位管理节点实现;具体包括以下步骤:
1)机器人开机时,默认使用的是蒙特卡洛定位方法,机器人会加载变电站环境地图,并加载机器人初始位姿信息发布到/initialpose主题(蒙特卡洛定位方法法初始化位姿主题);
2)蒙特卡洛定位节点接收/initialpose主题(蒙特卡洛定位方法初始化位姿主题)消息并初始化机器人位姿,机器人接受巡检任务后开始自主导航,蒙特卡洛定位方法实时追踪机器人位姿,实现机器人的定位并发布机器人的实时定位结果到/amcl_current_pose主题(蒙特卡洛定位位姿主题);
3)定位管理节点收听/amcl_current_pose主题(蒙特卡洛定位位姿主题)消息,定位管理节点根据定位结果及提前预设的灌木丛区域坐标判断机器人是否进入灌木丛区域;
4)当机器人进入灌木丛区域,定位管理节点首先发送消息到/amcl_block_flag主题(蒙特卡洛定位方法阻塞主题),蒙特卡洛定位节点接收到/amcl_block_flag主题(蒙特卡洛定位方法阻塞主题)消息后将自身阻塞,然后定位管理节点发送消息到/gmap_initialpose主题(SLAM算法初始化主题);
5)SLAM算法节点接收到/gmap_initialpose主题(SLAM算法初始化主题)消息后初始化SLAM算法并实时发布其定位结果到/gmap_current_pose主题(SLAM算法定位位姿主题);6)定位管理节点收听/gmap_current_pose主题(SLAM算法定位位姿主题)消息并判断机器人是否离开灌木丛区域;
7)当机器人离开灌木丛区域时,定位管理节点发送消息到/gmap_block_flag主题(SLAM算法阻塞主题),SLAM算法接收到/gmap_block_flag主题(SLAM算法阻塞主题)消息后将自身阻塞,然后定位管理节点再发布机器人位姿消息到/initialpose主题(蒙特卡洛定位方法初始化位姿主题),初始化蒙特卡洛定位节点。
本实施例所述的蒙特卡洛定位方法包括以下步骤:
a1)初始化:初始时刻,从先验概率分布x
0~p(x
0)抽取样本大小为N的粒子集
蒙特卡洛定位方法在两种情况下需要进行初始化,一是机器人开机启动时,此时会从配置文件读取默认的机器人初始位姿参数,二是机器人导航驶出灌木丛区域,由SLAM算法切换到蒙特卡洛定位方法带动时,此时需要基于已有地图,利用SLAM算法最后时刻发布的机器人位姿来对蒙特卡洛定位方法进行初始化。
a2)运动更新阶段:在k时刻,利用k-1时刻的粒子集S
k-1和机器人运动模型
预测机器人位姿分布粒子集S'
k,u
k-1表示运动控制信息;在本实施例中,选择里程计模型作为机器人的运动模型,以机器人的里程计信息作为运动更新的条件,对下一时刻的粒子位置进行预测。
a3)观测更新阶段:利用k时刻的传感器测量数据z
k和观测模型p(z
k|x
k),更新预测粒子集中的粒子的权重
并对权重进行归一化处理,得到更新后的近似的机器人后验概率分布粒子集
本实施例使用似然场模型作为机器人的观测模型,似然场模型可以克服光束投影模型中的缺陷,并且在实践中取得了非常好的效果,似然场模型不再根据射线投影法去求解激光在地图中的投影,而是直接将激光端点投影到地图中,根据其投影与地图中距离其最近的障碍物的距离确定其似然性,在似然场中,距离障碍物越近,则该处似然性越大,距离障碍物越远,似然性越低。
a4)根据粒子权重进行重采样,重采样阶段会复制权重高的粒子,消除权重小的粒子,这样大部分粒子会集中在机器人真实位姿附近,然后k=k+1时刻返回步骤a2)进行下一轮迭代。
本实施例所述的SLAM算法包括以下步骤:
b1)初始化:当机器人驶入灌木丛区域,由蒙特卡洛定位切换到SLAM算法,实时创建地图并基于新建地图实现定位,基于粒子滤波的SLAM算法每个粒子单独维护一副变电站地图,初始化信息是蒙特卡洛方法最后发布的机器人位姿和当前里程计信息,为保持新建地图坐标系统和蒙特卡洛定位所用地图坐标系统的一致,SLAM初始化粒子位姿为蒙特卡洛定位方法最后发布的机器人位姿,SLAM算法中加入一个补偿坐标系,初始时刻补偿坐标系与地图坐标系重合,此后通过SLAM中机器人的定位结果对这两个坐标系之间的关系进行校正,补偿坐标系和里程计坐标系始终保持固定变换。
b2)采样阶段:传统基于粒子滤波的SLAM算法以机器人运动模型p(x
t|z
1:k,u
0:t)为建议分布来近似机器人真实后验概率分布进行采样,但这种方法需要大量的粒子才能较好的表示机器人的真实分布,受限于粒子滤波SLAM计算量的因素,过多粒子无法满足实时性要求,有文献证明最优的建议分布是
当机器人搭载激光传感器时,观测模型的概率分布程尖峰形式,此时在
中观测模型
占据主导作用,而在观测模型的概率分布区域,运动模型的概率分布可近似为一个常数,此时机器人的的建议分布
因此采样阶段首先利用机器人运动模型,即里程计数据计算每个粒子下一时刻的位置,为了实现上述在高似然区域采样的目的,我们对每个粒子周围一定范围的位置进行迭代,在这些位置中选出机器人在此位置时能使当前激光和地图匹配最好的位置,作为该粒子下一步的采样结果。采样步骤在高似然区域进行采样可大大减少所需粒子数,从而大大减小计算量。
b3)权重更新:粒子权重
根据各粒子位姿利用当前激光数据与各粒子所维护的地图进行匹配,根据匹配得分计算每个粒子的权重;
表示采样所用的建议分布。
b4)重采样:在重采样阶段,会删除权重较小的粒子,复制权重较大的粒子由于只有少数粒子能较好的代表机器人的真实位置,所以重采样步骤是必须的,但过于频繁的重采样会导致粒子匮乏问题,因此引入有效粒子系数
当有效粒子系数低于给定阈值时进行重采样;当采样符合真实分布时,各粒子权重相似,当采样分布与真实分布偏差越大,粒子的权重方差会越大,因此有效粒子系数可以作为采样粒子是否逼近真实分布的有效测度;当N
eff<N/2时进行重采样,当N
eff≥N/2时跳过重采样步骤,N代表的是抽取样本大小(粒子数),即
中的N。