文献标识码:A
文章编号: 0258-7998(2011)10-0026-03
随着经济发展的高速化,人们的生活节奏也越来越快,家政机器人DR(Domestic Robot),因能够代替人完成家政服务工作而受到了更多都市市民的青睐。目前,低端DR以单一的输入功能如清洁功能等重复性作业为主,缺乏与用户的交互;高端DR虽然功能完善,但是价格昂贵,不易为普遍用户接受。本文设计的系统是通过上位机的路线绘制程序与用户进行交互,以低成本便捷的方式实现对DR的室内定位控制(Indoor Positioning Control),具有很好的实用性。
1 系统结构
系统整体构架分为上位机信息发送系统和机器人子系统两个部分。上位机端采用VB编写的绘制路线程序作为可视控制平台,实现房屋布局图载入、行进路线绘制、坐标提取、路线信息计算与无线传输等功能。机器人处理子系统采用FPGA芯片作为核心处理器,结合SoPC技术和Verilog硬件描述语言以完成对FPGA芯片的配置、Nios II软核实现路线信息的无线接收、提取路线信息。使用Verilog硬件描述语言搭建电机和舵机的PWM控制模块,控制电机与舵机配合,完成路线的行驶。其系统框图如图1所示。
2.1.2 串口无线模块
PC机路线绘制程序将信息打包通过串口传输到无线模块CC1100-232后发送出去。CC1100是TI公司的高性能无线通信芯片,采用串口工作方式,可以工作在433 MHz/868 MHz/915 MHz公用频段,串口速率为1.2 Kb/s~38.4 Kb/s。在无线传感器、家庭自动化、机器人控制等领域有着广泛的应用。
2.2 机器人子系统
机器人子系统的功能是实现路线信息的接收与执行,由FPGA处理器、CC1100-232无线模块、机器人模型组成。
2.2.1 机器人模型
微元路线的准确实现需要机器人根据路线信息准确地行走,机器人模型设计的关键在于行进部分的设计,本系统的机器人行进部分由两个从动轮、一个带码盘的驱动轮、光电对管TCRT5000和电机模组组成。驱动轮的电机模组分为130电机和5010舵机两部分,电机与舵机安装于驱动轮上,电机带动驱动轮转动,舵机带动驱动轮旋转。PWM波可以控制电机、舵机转动,调节PWM波的占空比可以改变电机转速和舵机的转动角度。在驱动轮上带有码盘和光电对管TCRT5000,两者结合可以准确地记录驱动轮转动了多少码格。
机器人的行进方式有两种:(1)舵机偏转为0°时,电机作用驱动轮,机器人直线行驶;(2)舵机偏转90°时,电机作用驱动轮,机器人绕几何中心点转动,如图4所示。
每次微元的路线机器人的执行方式都是舵机摆至90°,电机驱动轮行进使机器人绕中心点转动相应转角,然后舵机摆正,电机驱动机器人行走微元路线相应的距离。
2.2.2 FPGA控制模块
系统采用Altera Cyclone III EP3C16 FPGA芯片,Verilog硬件描述语言完成复杂的数字系统设计。Altera公司的SoPC技术可自定义IP核配置NIOS软核,可定制性高[1]。通过软硬件协同设计使整个系统的FPGA实现更加灵活与高效。
本系统使用Nios II系统通过C语言编写UART串口模块程序,与串口无线模块CC1100-232进行通信提取路线信息,控制PIO口进行相应的中断检测与中断服务。软件设计的整个流程可以在Nios IDE环境中完成。在Nios II系统开发过程中,使用寄存器操作方式访问PIO口[2]:即定义一个寄存器结构体,然后通过访问结构体元素的方式读写PIO口数据,如图5所示。
使用Verilog语言搭建电机与舵机的控制模块以及光电对管的计数模块,如图6所示。图中,电机部分:cp50m为50 MHz时钟输入端;jian为光电对管检测输入端,内部计数器完成对它的计数;en为参数设置使能;len[15..0]为计数预设定值,由Nios II软核根据路线信息计算得出参考值;dir为电机转向控制输入端,根据输入控制信号ctrl1、ctrl2完成对电机控制。pwm输出信号实现电机转速控制,finish信号负责动作执行完毕后向Nios II软核发送完成信息。舵机部分:为了方便控制舵机只需要旋转0°或90°即可,控制时通过pulse输出端输出周期为20 ms、高电平为0.5 ms的PWM波,舵机转向即为0°;输出周期 20 ms,高电平为1.5 ms的PWM波, 舵机转向即为90°。舵机转向由dir控制。
通过Nios II系统与电机舵机控制模块完成对FPGA核心处理器的配置后,整个系统搭建完毕,FPGA控制器框图如图7所示。
2.2.3 机器人子系统路线信息执行过程
机器人子系统执行时,串口无线模块CC1100-232接收由发射端传递的路线信息,数据接收完成后相应信号管脚置高。Nios II系统相应的IO口检测后产生中断,启动中断函数,通过串口读取接收模块信息(接收信息包含路线的长度和转角两部分内容)。
驱动轮的直径为5 cm,驱动轮上码盘的码格数为100个,设计数值为x1,则其行进距离L为:
若机器人按照式(1)直行某确定距离L,应根据式(4)设置好相应的计数值x1;若使机器人旋转某个角度θ,应根据式(5)设置好相应的计数值x2。
分析设定好光电计数器的预设定值后就可以启动机器人行进。首先是转角,舵机偏转90°后,Nios II系统将转角预设定值x2传给电机模块len[15..0],然后驱动电机转动让机器人旋转,驱动轮转动时码盘的遮光部分使光电对管断开检测管脚为0,透光部分使光电对管正常工作检测管脚为1,计数器对检测管脚的脉冲计数。当计数值与预设值相等时,机器人转角完成,此时finish信号置高,Nios II系统检测到此信号后就会控制舵机模块使舵机摆正,接着加载距离信息的预设值x1,进行直线行进,执行完毕后机器人系统进入等待下一次路线信息接收状态。
本文阐述了一种采用绘图板上位机实现的可视化家政机器人控制方法。利用FPGA配置灵活性的特点,结合Altera公司的SoPC技术,使整个系统软硬件协调配合完成信息传递和处理。位置可视化的优势在于可更方便地让使用者对DR进行实时的调度,以更加人性化的方式方便了行动不便的使用者。本方法以其易于实现和控制的特点为家政机器人定位系统提供了一个有效可行的方案。
参考文献
[1] 赫建国,倪德克,郑燕.基于Nios II内核的FPGA电路系统设计.第1版[M].北京:电子工业出版社,2010:110-142.
[2] 周立功.SoPC嵌入式系统基础教程.第1版[M].北京:北京航空航天大学出版社,2006:194-218.