带目标识别系统的双足机器人研究

2012-02-18 08:35祝敏航李晓明范泽冰王金龙
装备制造技术 2012年4期
关键词:双足舵机像素点

祝敏航,李晓明,范泽冰,马 超,王金龙,蔡 迪

(浙江理工大学,a.启新学院;b.机械电子工程研究所,浙江 杭州 310018)

双足机器人是一个多自由度、运动链复杂的动力学系统,是机器人研究领域的主要方向之一,其核心技术包括了计算机技术、机器人学、传感技术、人工智能等高新技术。

与工业机器人相比,类人型机器人的研究水平,远没有达到实际应用的程度。另一方面,嵌入式技术的迅猛发展,使得其得以应用于机器人领域。嵌入式微处理器性能的提升,满足了机器人系统较高的使用要求,使得智能机器人的实现更具可行性。

本文采用SAMSUNG公司的S3C2400A微处理器,开发了双足机器人的控制硬件电路及软件系统,实现了机器人对特定物体(本文中为黄色圆球,黑色背景)的目标识别,以及根据识别结果进行趋于目标的双足行走。

1 双足机器人本体设计

本文研究的是具有6个自由度的双足机器人,如图1、图2所示。其中包括2个髋关节、2个膝关节和2个踝关节:髋关节与膝关节各有1个自由度,负责前向运动;踝关节有1个自由度,负责侧向运动;6个关节均为转动副。

图1 双足机器人模型

图2 双足机器人实物

2 机器人的系统硬件设计

本文采用SAMSUNG公司的S3C2440A微处理器和芯片为OV9650的CMOS摄像头,完成了对特定目标的识别;采用32路舵机控制器和Tower Pro公司型号为MG945和MG995两款舵机,完成了双足机器人的转弯和直线行走。其硬件结构如图3所示。

图3 机器人硬件框图

S3C2440A微处理器内部集成了ARM公司ARM920T处理器核,主频达到400 MHz,最高可达533 MHz,满足了系统在图像处理方面的要求。同时,本系统配置了256M Nand Flash和在板64M 32位SDRAM,以满足图像数据的存储要求。

32路舵机控制器,是双足机器人6路舵机协调动作的软硬件结合系统,主要由上位机软件和伺服舵机驱动控制器组成,不但能实现位置控制和速度控制,还具有时间延时断点发送指令的功能。

通过S3C2440A和32路舵机控制器的串口通信,即可实现6路伺服舵机的单独控制或同时控制,完成双足机器人各关节的协调配合。

3 机器人系统软件设计

3.1 嵌入式linux系统及其内核配置

嵌入式linux系统,为开放源码的操作系统,具有较高的可移植性和方便的内核配置等特性。本文使用的linux系统内核版本为Linux2.6.32.2,交叉编译器版本为arm-linux-gcc-4.4.3。通过交叉编译器编译,即可将宿主机中的源代码编译成可在目标板中运行的可执行文件。内核移植时已烧写进了CMOS摄像头驱动程序,故内核配置只需选择相应选项即可:

(1)在Device Drivers菜单中,选择Multimedia support进入;

(2)选择 ov9650 on the S3C2440 driver。

3.2 目标识别与双足行走设计

双足机器人系统的软件实现如图4所示。

图4 软件工作流程

其中主要步骤说明如下:

(1)图像采集。CMOS摄像头的设备文件名位于Linux系统下的/dev/camera目录,利用CMOS摄像头动驱程序提供的I/O操作接口函数,来打开摄像头设备:

(2)图像数据的转换及灰度化。本文使用的摄像头采集的图片格式为16位的RGB格式,即单个像素的位数为16,其中B为5位,G为6位,R为5位(按内存中排列顺序)。由于灰度化时要用到24位的RGB格式,所以需要进行相应转换。按照灰度化公式

将图像转换为灰度图像。

具体可通过以下代码实现:

其中,Addr为图像数据的首地址,LineLen是图像数据每行的字节长度。

(3)边缘检测与二值化。边缘检测的算子有Roberts算子、Sobel算子、Prewitt算子、Krisch 算子等,本文采用Sobel算子进行边缘检测,具体算法如下:

Sobel算子是一种利用局部差分寻找边缘的算子,它考虑图像3×3领域的处理。该算子由2个卷积核组成,如图5所示。

图5 卷积核

将图像中的每个像素点分别与这两个核做卷积,取值较大的作为该像素点的灰度值。

在做卷积过程中可以参考以下方法:

设某一像素点(P5)与其相邻的8个像素点的关系如图6所示。

图6 相邻9点的位置关系

两卷积可以表示为

Gx、Gy为卷积值,取其中的大值作为P5点的灰度值。

通过sobel算子处理后的图像在目标边缘的灰度值呈现出一定的特征。通过实验发现,在本系统中目标边缘特征灰度值取(110,180)较为合适。令灰度值在(110,180)中的像素点的灰度值为1,其他像素点的值为0,实现图像的二值化。

(4)梯度Hough变换(GHT)检测圆心。Hough转换常用于检测几何图形,在传统Hough转换的基础上发展出来的新型算法,大大提高了检测速度。本文选取了GHT来实现对目标中心的检测。

GHT算法的核心思想是用极坐标方程表示圆:

式中,a,b分别表示圆心横纵坐标;

x,y为圆周点的横纵坐标;

r为半径;

θ为点(x,y)的梯度角。

有sobel算子可知

实际上,上式就表示了圆周点(x,y)处的梯度信息。

结合梯度信息,利用常规Hough变换,即可较为快速地得到所识别圆的圆心(a,b)。DHT的实现步骤为:

步骤一,针对二值化后的图像,对每个灰度值为1的像素点,按式(2)中求的梯度角θ,在对半径r的循环中求得a、b;

步骤二,建立一个累加数组center[height][width],在上述循环中,center[b][a]加1;

步骤三,找出累加数组中的最大值,对应的a、b就是圆心坐标。

针对本机器人系统只要求出a,即可判断机器人的行走方向,所以我们只求取了圆心坐标中的横坐标a。具体可通过以下代码实现:

若像素点的灰度值在上述阈值(110,180)范围内,则求出以下的 SinTheta,x1,x2

……

x1=i-radius*SinTheta;//对其中(i,j)为像素点坐标,radius为穷举的半径值

x2=j+radius*SinTheta;

for(x=x1;x<=x2;x++){

center[x]+=1;//a为center[x]数组中最大值对应的x

}

根据a的值,我们可以调整机器人的朝向。

(5)串口通信与舵机控制。S3C2440本身带有3个TTL串口UART0、1、2,利用其中之一就能实现串口通信。本文选用了UART0与32路舵机控制器进行通信。将UART0中的TXD0管脚,GND管脚分别与舵机控制器的RX管脚,GND管脚相连。S3C2440作为上位机,给32路伺服舵机控制器发送指令,设置波特率为115200,即可完成通信,指令说明如下:

#PST

= 舵机号,0~31;

=脉冲宽度,单位μs,范围500~2 500;

=移动速率即每秒移动脉宽数,单位μs/s,针对一个舵机有效;

=ASCII 13(回车);

=ASCII 27(取消当前命令)。

串口通信可通过以下程序实现:

根据(4)中判断结果调用相关指令,完成双足机器人的行走。

(6)生成可执行文件。利用linux下的交叉编译器arm-linux-gcc中的编译指令arm–linux–g++,生成在目标板中的可执行文件,即可运行程序,完成双足机器人的目标识别及朝向目标地双足行走。

4 机器人系统具体实现

在机器人目标识别及跟踪行走中,通过CMOS摄像头抓拍下如图7所示的画面及图8所示的判断结果。此时,双足机器人左转弯,朝着目标直线前进,直到程序设定时间,然后再进行下次判断。

图7 抓拍图

图8 判断结果

5 结束语

本双足机器人研究,结合了图像处理技术和机器人机构分析,基于嵌入式linux系统,使得双足机器人具备了自动识别具有一定特征的目标的能力,利用32路舵机控制器,实现了机器人双足行走的要求,其研究成果具有广泛的教学应用前景。该研究的不足之处,在于为了得到更为准确的位置定位,采用了综合多次判断结果得出最后判断结果的算法,使得判断时间增加。该算法过于简单,在以后的研究中,可以考虑换用不同的算法,或进一步改进hough变换的算法,以提高效率。

[1]张 勇,许东来.小型双足步行机器人的步态规划[J].计算机仿真,2010,27(11):148-151.

[2]刘海波,沈 晶,郭 耸.Visual C++数字图像处理技术详解[M].北京:机械工业出版社,2010.

[3]瞿 钧,甘岚.梯度Hough变换在圆检测中的应用[J].华东交通大学学报,2007,24(1):101-104.

[4]周 奋,王 婷.嵌入式系统中串口通信帧的同步方法[J].单片机与嵌入式系统应用,2006,(10):73-75.

[5]马文辉,李兰友.Linux环境下的串口通信[J].仪器仪表用户,2005,(1):39-42.

猜你喜欢
双足舵机像素点
基于局部相似性的特征匹配筛选算法
Anti-N-methyl-D-aspartate-receptor antibody encephalitis combined with syphilis:A case report
含齿隙弹载舵机的全局反步模糊自适应控制
基于像素点筛选的舰船湍流尾迹检测算法
基于dsPIC单片机的飞艇舵机控制实现
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于高速同步485总线通信的多通道舵机控制器设计
冰冻的梦
基于云模型的舵机同步控制