1.视觉系统的硬件配置
(1)全景视觉系统 足球机器人的摄像机是最重要的传感器,它的重要性就相当于眼睛对于人。在机器人世界杯赛中型组比赛中,机器人普遍采用全景视觉系统。它由一个摄像机和一个反射镜组成。反射镜装在机器人顶部,镜面向下,摄像机朝上正对着反射镜。摄像机得到的是带有畸变的俯视图,显示了机器人周围360°的情况。这和人不一样,因为人通常不能看到身后,除非把头转过去。
(2)多摄像头的视觉系统 全景视觉系统的目标识别有其缺陷,特别是对球的识别。根据机器人世界杯赛中型组的比赛规则,机器人的高度不能高于80cm,因此从全景镜中就不能识别到高于80cm的物体。而在智能中型足球机器人比赛中,常常会有挑起的球高于机器人的情况。为了解决这个问题,很多参赛队提出了一些方案。例如中国国防科技大学的“猎豹”机器人上装有两个视觉系统:一个全向视觉系统和一个廉价的网络摄像头加装广角镜头构成的前向视觉系统;荷兰Tech United队使用一个工业智能摄像机作为前向摄像机,主要实现球的辅助识别与定位作用。当球速达到10m/s时,一个工作于25fps(帧每秒)的全景摄像机是不能完成这个识别任务的,荷兰队使用的摄像机是高速的工业摄像机系统,可以工作在高达200fps的环境中;要处理200fps、640×480分辨率的实时图像,如果由计算机来完成,无论对于传输还是处理都是极难实现的,荷兰队选用The Vision Components VC4458摄像机(最高242fps、640×480分辨率),具有板载处理能力,所有的图像处理和识别都在智能摄像机内部完成,摄像机和主机通信的内容只有球的位置和球速。
(3)全景镜曲线 目前,全景视觉机器人中广泛使用的全景镜面主要是双曲线镜面,通过摄像机采集到的图像具有全景水平视角,使机器人能够获取全景图像。该类全景镜面数学模型简单,但得到的图像存在严重的失真,尤其距离机器人远处的图像畸变很大,直接造成识别场上标志线或球等目标的困难。
通过使用组合全景镜面,可以克服现有全景镜面得到的图像失真严重的缺点。组合全景镜面的第一段曲线保证了在一定距离范围内水平场地上的点和图像上的像素点具有指数函数关系;第二段曲线是一段圆弧,保证了在距离较远处能够看到一定高度的物体。这种构造的镜面能够很大程度地减小图像失真的情况。
2.自定位
(1)自定位的意义 机器人自定位是移动机器人的重要技能,是自动导航的基础。设想在室内,机器人不知道自己的位置,而它又不具备识别障碍的能力,在移动的过程中就会撞到墙壁,因为不知道自己的位置意味着不知道墙壁有多远。定位的前提是要获得已知的地图,优秀的机器人可以通过传感器获得周围的几何形状,构建地图,然后使用定位算法得到自己的位置,进而可以规划路径进行导航了。
足球机器人自主选择路径就是自动导航。足球场就相当于一个室内环境,球场的边界就相当于墙壁。定位需要已知的地图,场地是规则详细规定的(已知的),这样场地模型就是地图。
在足球比赛中,如果机器人没有定位技术,就不能保证机器人不冲出场地,尽管比赛可以勉强进行,机器人可以识别球,朝球运动并抓住球,继而识别出球门,带球向球门进攻,但是这样的机器人是不可能实现高级技能的。例如当球离开机器人太远,所有己方机器人都没有识别到球,这时,一种较好的做法是机器人迅速移动,遍历场地上的每个角落。如果没有自定位功能,机器人连搜寻方向都不能确定,只能随机设定运动方向,这样就难以保证不冲出场地了;如果有了自定位功能,机器人知道自己在哪里,就可以避免离边界近的方向移动。如果场地上有一些机器人把球门完全遮挡住了,没有自定位功能的机器人由于看不见球门,立刻就失去了目标,导致进攻失败;如果机器人具有自定位功能,它就能够根据自己的位置和球场模型(地图)推知球门的位置,即使不能看见球门,也可以绕过这些障碍,向球门进攻。事实上,如果定位精度足够高,机器人并不需要识别球门,这也是比赛规则取消两个球门一黄一蓝的规定的技术前提。上述两例都是利用了自定位进行导航(自定位是导航的前提)。
对于移动机器人,自定位把导航变为可能,并且在足球机器人这个特定环境中,对机器视觉还有很多至关重要的帮助。在识别球时,如果识别球的算法是基于色块的识别方法,就极易被场外相同颜色的物体干扰,但如果机器人知道自己的位置,就可以判断出这个目标在场外,进而判定它不是球(即使是球,判定它不是球对比赛没有影响)。这些对信息提取的改进都是利用了自定位结果。
对于足球机器人的协作来说,机器人的自定位也有至关重要的意义。机器人队员的视野有限,而且识别能力不强(不能将队友和对手加以区别,把它们都作为障碍),无法像人类一样,观察出队友和对手的位置,并进行战术配合。当每个机器人都能自定位时,就可以把自己的位置发给队友,信息共享,形成一个数据库,反映出场上形势,机器人就可根据场上形势进行协作。
(2)自定位的研究背景 机器人自定位这个课题是机器人领域的热门,人们已经取得了一些研究成果。其中一个普遍使用的方法是利用Monte Carlo方法进行定位,也称粒子滤波定位算法。该算法的核心是计算机器人位置的概率分布。初始化时,通常先把机器人的位置认为是在场地中均匀分布的,然后根据不断接收到的传感器信息,调整概率分布,最后达到收敛。当机器人在某个位置概率接近1,这样就定位成功了。之所以说这是粒子滤波,是因为它在计算概率密度函数时,把连续量离散化了,实际计算的是概率,不是概率密度。
在足球机器人中,普遍使用的传感器是摄像机、里程计、电子罗盘。根据各自提取的信息,可以有很多具体的做法。例如在摄像机获得的信息中,可以提取球门作为定位的主要依据进行概率计算,也有用场地白线作为主要依据的。选取信息的好坏直接影响了定位的精度。使用场地白线的定位方法,能够获得比使用球门的方法高很多的精度。目前,由于规则规定球门取消一黄一篮的配置,识别球门变得异常困难,就不能使用球门定位了。里程计的作用是快速跟踪,因为机器人如果知道自己刚才在哪里,并且知道自己的位移,叠加就产生了目前的位置,但是由于里程计有累计性误差,所以每隔一定的时间要依靠图像消除累积误差。电子罗盘能用来克服场地对称性给定位造成的麻烦,因为场地是对称的,仅根据白线,机器人只能判断出自己在两个相互对称的位置上,而不能确切地知道到底是哪个位置。用了电子罗盘,机器人就能确定准确的位置。(www.xing528.com)
除了Monte Carlo算法,还有Markov定位方法、误差下降算法、Matrix算法、特征检测法等。Matrix算法比其他算法的效率更高,但是它容易陷入局部极小点。该算法由Felix von Hundelshausen开发并使用在足球机器人上。
(3)自定位算法的实现 定位的目标是取得机器人在全局坐标系的坐标和机器人的方向(x,y,θ)。其中,x和y是坐标值,θ是机器人的正方向,一共三个量。
机器人上一共配有两个传感器,即摄像机和电子罗盘。其中,摄像机获得的信息为自定位的主要依据。
定位分两种情况,第一种情况是机器人不知道自己在前一帧的位置(前一刻),例如在利用第一帧图像定位时,机器人不知道刚才在哪里,因为程序才刚刚开始。这种情况的定位是很困难的,被称为重新定位,因为这主要发生在前一帧定位失败的情况下,需要耗费大量CPU资源。
重新定位的方法是一个遍历的过程,方法如下:分别在x、y、θ三个量的定义域内每隔一定的步进取一个值,对于任意一组(x,y,θ)值(位置),假设机器人处在这个位置上,把白线点转化成全局坐标下的白线点,然后计算匹配误差。针对不同的(x,y,θ),可以得到不同的匹配误差。取匹配最小的误差,它所对应的位置就最有可能是机器人的位置。这个过程实质上是遍历场上每个可能的位置和方向,取匹配得最好的组合。但是这个遍历过程是一个离散过程,离散的程度取决于步进的长度。如果步进过长,离散程度就高,得到的匹配误差常常很大;如果步进过小,匹配的次数就会过多,造成占用CPU资源过大。当取得了一个最小匹配误差时,并不代表定位成功了,因为这个定位结果只是非常粗略的,有时还不一定正确,需要使用Matrix算法使得匹配更精确。Matrix算法实际上是一个由粗到细的过程,它的输入是粗略的定位结果(x,y,θ),输出则是准确的定位结果。假设输入的是定位粗略的结果(x,y,θ),然后使用迭代算法,迭代直到匹配误差小于某个阈值或者迭代次数超过某个允许的最大迭代次数时停止。具体算法如下:
x(i+1)=x(i)+k·F(i)
y(i+1)=y(i)+k·F(i)
θ(i+1)=θ(i)+k·F(i)
对于因匹配误差小于某个阈值而结束算法的情况,定位是成功的,此时输出的(x,y,θ)就是准确的定位结果;对于因迭代次数超过允许的最大迭代次数而结束算法的情况,定位失败,输出的(x,y,θ)应当丢弃。在重新定位时,不直接使用Matrix算法,而是先选择匹配误差最小的组合(x,y,θ)交给Matrix算法,这是因为Matrix算法容易陷入局部极小点,如果把任意的(x,y,θ)组合交给Matrix算法,算法常常迭代到超过允许的最大次数也不能使匹配误差降到最小。重新定位需要遍历机器人可能的位置,每遍历一个位置就需要计算一次匹配误差,故需要消耗大量CPU资源(使用英特尔奔腾M7401.73GHz处理器在18m×12m的场地上重新定位一次,需要40ms左右)。
定位的第二种情况是:机器人前一帧定位成功,要依靠当前的一帧图像进行定位,这时的定位问题实际上是一个跟踪问题。在一个以3m/s速度移动、获得图像的频率是25fps的机器人来说,两帧之间的运动的距离大约是0.12m。在绝大多数情况下,机器人以低于3m/s的速度运行,所以两帧之间的运动距离一般小于0.12m。因为上次的位置和现在的位置十分靠近,可以直接把上一帧图像的定位结果作为输入,交给Matrix算法算出现在的位置。这种情况下的定位是非常迅速的,每定义一帧需要的时间小于1ms。
由于球场是对称的,所以使用白线点和模型匹配,会得到一对匹配误差很小的点,例如(x,y,θ)和(-x,-y,-θ),这两个定位结果是关于原点对称的。使用Matrix算法只能看到其中的一个位置,到底算法收敛到哪个位置取决于输入值,但这个定位结果并不一定真是机器人的位置。系统使用罗盘获得当前机器人的角度,如果该角度和θ更接近(相比于-θ),就选择(x,y,θ),否则就选择(-x,-y,-θ)。从中可以看出,系统对于罗盘的精度要求并不高,罗盘误差的范围在90°以内都是允许的,但要保证有较快的刷新频率。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。