视觉是人类感知外界信息的重要手段,视觉伺服系统是机器人获取环境信息的关键组成部分。本文主要讨论仿人机器人BHR-1的视觉伺服系统。首先介绍机器人头部的视觉总体结构方案,然后论述了基于立体视觉的信息处理和头部运动控制,最后通过目标跟踪和物体抓取实验说明了系统的可行性。
总体方案及控制系统
仿人机器人的视觉伺服系统要求能够根据具体环境和具体情况进行主动搜索,实时将摄像头转向目标,实现对空间目标的实时跟踪并获取物体的三维位置信息,从而控制手臂实现对物体的准确抓取。
BHR-1)的头部有2个自由度,面部放置两只CCD摄像头作为视觉传感器来模拟人的眼睛。机器人的手臂也是模仿人类的上肢设计的,具有7个自由度,肩关节3个自由度,肘关节2个自由度,腕关节2个自由度,可以实现人类上肢的各种动作。机器人根据目标的三维位置信息实现对物体的抓取。
仿人机器人BHR-1的总体设计方案如图2所示。为了实现物体的快速定位,需要完成图像处理和运动控制的任务。一台计算机将难以满足快速定位的实时性要求,因此本文采用了双计算机处理和Memolink通信方式的系统结构,使用两台计算机分别负责双目立体视觉的信息处理和机器人的运动控制。Memolink是系统间进行快速通信的一种有效解决方案。
机器人的视觉跟踪以及目标抓取的实现都依赖运动控制计算机对机器人的运动控制。运动控制系统根据视觉处理系统的处理结果,控制机器人采取相应决策。例如:头部的两自由度转动,以跟踪目标的运动或者上肢手臂去抓取目标。运动控制子系统以RT-Linux实时操作操作系统作为软件平台,保证了机器人控制系统的实时性。
机器人的运动控制子系统的被控对象是机器人的各关节的角度,而关节是由电机带动的,因此被控对象实际上是带动关节转动的电机转动的角度,是一个位置伺服系统。
系统使用了一套多功能接口板,将所有的A/D转换、D/A转换、ENC、PWM、32位IO等多种功能都集成在该接口板上,提高了系统的集成性并减小了系统体积和重量。
在控制信号的输入方面,由于控制的目的是为了机器人的头部能够跟踪运动的目标,因此实际上输入量就是根据图像处理子系统的处理结果得到的,在图像处理的过程中,最终求得的目标的位置就是后面运动控制子系统的输入量。由于图像处理子系统的处理结果本身就是数字量,运动控制子系统所得到的位置信息也是数字信号,因此,这里不需要模数转换的过程。
在反馈信号的输入方面,因为被控对象是电机,确切的说是电机转动的角度,是位置控制,因此可以用电机上面的轴角编码器的输出作为反馈信号。轴角编码器是一个测量电机所转过的角度的器件,它以脉冲的方式来反馈电机转过的角度,电机转过的角度越大,它输出的脉冲个数就越多,反之,输出的脉冲个数就越少。因此我们采用了接口板上的ENC(encoder)接口来作为反馈信号的输入通道,它可以测量轴角编码器的脉冲输出个数。机器人头部的运动控制子系统的结构框图如图3所示。
基于立体视觉的视觉信息处理
系统采用了基于立体视觉的解决方案,通过加入了深度信息,使得目标的搜索结果更加准确。系统使用了美国SRI人工智能中心所开发的一套高速的双目立体视觉系统SVS(small vision system)。
图像分割是物体识别的预处理阶段,是机器人视觉伺服系统的关键技术之一。该系统采用了基于颜色信息的阈值分割方法。理论分析和实验结果都表明,对同一颜色属性的物体,在光源种类、照度、物体反射特性等不同条件下,测得的RGB颜色值分布很分散,很难确定识别RGB的阈值范围。而HSV模型更接近人眼对颜色的感知,它将采集的颜色信息分为色调、饱和度和亮度三种属性量化,色调属性H能比较准确地反映颜色种类,对外界光照条件的变化敏感程度低,因此,HSV较之RGB更适合于用做识别处理的基础。本文采用HSV模型作为颜色识别处理的基础,选取其中的参数H和V作为识别处理的判别依据。RGB空间中一点到HSV空间中一点的具体转化关系如下:
V=max(r,g,b),V′= min(r,g,b);
If V= 0 or V = V′then H=0, S=0;
If r = V then H=(g-b)/(V-V′);
If g= V then H=2+ (b-r)/(V-V′);
If b = V then H=4+ (r-g)/(V-V′), H=H×60;
If H <0 then H=H+360, S=(V-V′)/V
系统首先离线采样目标图像区域,将该局部彩色图像从RGB模型转化为HSV模型,对其中H、S两个分量分别作直方图,得到选定区域的H、S阈值,这是一个离线的学习过程。在随后的实时图像识别中,H、S阈值根据前一个视觉周期的彩色图像实时更新以适应新的光照条件。
视觉处理系统的流程图如图4所示,系统使用摄像头来采集图像,在对图像进行一系列的预处理之后,对其进行区域分割,以得到多个区域,再搜索这些区域,根据已知目标特征找到目标所在的区域。如果找到,则控制机器人头部面向目标,同时更新目标的特征,以用来在下次搜索时使用,如果没有找到相匹配的目标,则可能目标被暂时隐藏或丢失,这时开始下一次处理,以等待目标再次出现。
因为视觉处理系统处理的是上一个周期的图像,所以得到的目标坐标也是上一个周期的坐标,如果用此方向坐标来作为运动控制的输入,则头部运动始终滞后一个周期。为了加快系统的速度,本文采用了比例微分控制,系统地输入输出函数为:
Iα(k+1)=kp eα(k)+kd(eα(k)-eα(k-1))
Iβ(k+1)=kp eβ(k)+kd(eβ(k)-eβ(k-1))
eα(k)=αk-αk’,eβ(k)=βk-βk’
式中Iα(k+1)和Iβ(k+1)为在t(k+1)时间上控制系统的输出;(αk,βk)表示在时间 t(k)目标的方向坐标;(αk’, βk’)该时刻二自由度机构的方向坐标;eα(k)和eβ(k) 分别表示该时刻头部位置与目标位置之间的偏差;kp和kd分别为控制系统的比例系数和微分系数。通过实验调节kp和kd,kd<<kp,系统可以既有较高的反应速度,同时又具有稳定性。
运动控制过程
根据前面的叙述,计算机控制系统的工作过程是一个循环的实时数据采集,实时决策,实时控制的过程,在本系统中,根据所选用器件的具体情况,假设对所有的控制环完成这样的一个循环大约需要m毫秒的时间左右。在视觉信息处理系统中,处理一帧图像平均需要n毫秒左右的时间,由于视觉处理和运动控制任务的特点的不同,n>>m,也就是说视觉处理的周期要远远大于运动控制的周期。在一个视觉处理的周期内,系统可以完成多个控制周期的处理。因此在一个视觉处理周期之后,系统应该做好下一个视觉处理周期之内的运动规划,也就是做好后面多个控制周期之内的运动规划,这样才能保证机器人的头部以均匀、平缓,同时又是准确的速度来跟踪目标。
控制系统软件流程如图5所示。
在每一个运动控制周期内,程序都首先要查看Memolink,看视觉信息处理系统是否有新的处理结果通过Memolink传递到运动控制系统,如果没有,程序就按照预设的运动规划来控制机器人运动;如果有,程序就先要根据视觉系统的处理结果来修改运动规划。为了使机器人头部的运动平稳,我们把每次预设的运动规划所规划的时间定为略大于视觉处理的平均周期,这样就能够保证系统在每次新的视觉处理结果到来之时,原有的运动规划还没有执行完。从而使只要目标在不断运动,机器人头部便可以处于不断运动过程中,避免了机器人头部时转时停的现象。
上一篇:伺服电机的调试步骤