基于模糊控制的移动机器人FPGA实现
2009-01-05
作者:包 明,张 睿,余成波
摘 要:针对轮式移动机器人寻线行走的跟踪控制要求,提出一种通用的移动机器人行走模糊控制设计方法,并以FPGA为核心器件,通过硬件描述语言(VHDL)实现移动机器人模糊控制系统,充分发挥模糊控制及可编程逻辑器件的优点。实验表明,该移动机器人具有自动纠偏、寻线准确、高集成度和高可靠性的特点。
关键词:模糊控制;机器人;FPGA;VHDL;寻线
移动机器人是一种集环境感知、动态决策与规划、行为控制与执行等多项功能于一体的智能化机器系统,具有大延迟、高度非线性的特点。其建立精确的数学模型十分困难,在进行路径跟踪控制时,参数的变化对系统模型影响较大。传统的机器人运动控制常采用PID控制器,将机器人的航向角误差和误差变化率作为控制器的输入,控制器的输出作为机器人的驾驶角。而在实际中,机器人的航向角还与其速度、转动惯量、重心位置、前后轮侧偏系数、驱动轮直径和摩擦力、实际道路情况等诸多变化且很难确定的因素有关。这使得控制器参数设定和调整极为困难。针对这些问题,本文在轮式移动机器人寻线跟踪控制中,提出移动机器人的模糊控制算法,并且利用现场可编程门阵列(FPGA)器件来实现模糊算法的控制器。使得该控制器集成度高、速度快、效率高,易于现场实现多重配置,易于实现可编程片上系统(SoPC)。由于整个控制系统由硬件实现,因此能满足机器人实时性、快速性和精确性的控制要求。
1 移动机器人结构
1.1 机器人行进机构
机器人应能在任意区域内沿引导线行进,自动绕开障碍并停在指定地点。机器人在地面上的移动方式为三车轮式,前轮辅助后轮驱动的差动式行走方式。前轮为随动轮(万向轮),仅仅起到支撑车体的作用,无任何导向作用。后轮分别为两个独立的驱动轮,利用它们的转速差来控制机器人的运动方向。这种组合的特点是结构简单、易于控制,而且当两个驱动轮以相同速度、相反方向转动时,车体能绕两个驱动轮连线的中点自转,易于定位。对驱动轮采用直流步进电机进行驱动。步进电机构成的驱动系统具有结构简单、运行可靠、控制方便、控制性能好等特点,常作为一种数字伺服执行元件广泛应用于数控机床、自动化仪表、机器人等领域,不但可以构成开环控制系统,还可以应用于闭环、半闭环伺服控制系统中,尤其在强调速度控制、位置控制的伺服系统中。
1.2 检测装置
在机器人行进机构底盘上的前后方分别安装一排光纤或光电传感器用于引导线的检测,如图1所示。根据前后排传感器的在线检测状态,可以计算出此刻机器人相对于引导线(白线)的偏移量和偏离角度。也就是指机器人车体中心轴线和场地引导线中心线的夹角。
在图1中前后排各有9个光纤传感器,后排的9个传感器检测点安装在两个驱动轮的轴线上,检测机器人与引导线的偏移量。前排的9个传感器检测点检测机器人与引导线的偏离角度。为了扩大机器人的偏差纠错能力,检测点安装成非线性的排列结构,且相对于引导线中心线成对称分布,中间的三个检测点分布在引导线的中间和左右两边,以便使检测点相对于引导线的位置变化较为敏感。其余两侧的12个检测点分布较为分散,主要是为了在机器人转弯或偏差过大时“捕捉”引导线。
2模糊控制器设计
根据移动机器人的结构和刚体平动原理,对于两轮驱动的移动机器人,主要控制其角速度和线速度,前者完成移动机器人的转向控制,后者实现机器人前进速度的控制,利用机器人两个独立驱动轮的转速来控制机器人的运行和运动方向。轮式机器人作为被控对象,具有大惯性、纯滞后、时变的特点。过去常用PID 算法,如果条件稍有变化,系统参数(T、KP、Ti、Td)必须改变,否则难以达到满意的效果。而模糊控制基于模糊集合理论,模仿人的控制经验,运用模糊推理方法根据输出直接映射出被控对象的控制量,它不依赖于被控对象的数学模型而实现其控制,具有鲁棒性好的特点,很适合轮式机器人这样的大惯性非线性系统。因此采用模糊控制算法对轮式机器人进行控制。
为了满足机器人沿引导线行走的目的,可以根据光电检测传感器检测车体偏离引导线的大小来调整左右驱动步进电机的行进速度,随时调整机器人的行进路线,从而使机器人沿引导线行进。下面根据移动机器人的行走方式,介绍模糊算法控制器的设计方法。
首先把移动机器人车体底盘上的前后光电检测传感器进行编号(如图1所示)。这些检测点的编号可作为机器人偏离引导线的状态值, 对于本系统模糊控制器采用双变量二维控制方法,控制器的两输入为前后光电检测点的输入编号;输出为左右步进电机驱动脉冲数。模糊控制器的输入量的模糊子集选取为:{LB,LS,ZO,RS,RB},对应意义为{左大,左小,中心,右小,右大}。输出量的模糊子集选取为:{NB,NM,NS,ZO,PS,PM,PB},其对应为{负大,负中,负小,零,正小,正中,正大}。
根据控制规则及相应的控制变量隶属度定义, 给出了如图2所示的输入变量前检测点位置(BF)和后检测点位置(BA)的隶属度函数。输出变量左、右步进电机转速的隶属度函数如图3所示。通过仿真实验分析,得到左电机转速控制规则表(右电机转速控制规则表相似)如表1。
在完成以上模糊控制器的模糊输入量、模糊推理决策模块后,再进行模糊输出接口设计。模糊输出接口是将输出的模糊控制量转化为精确量后去控制执行机构,使被控对象的值接近参考值。反模糊化采用重心法, 通过多次实验进行修正,得到如表2所示的左步进电机转速控制信号输出表(用十六进制数表示)。右步进电机转速控制信号输出表也可用类似方法得到。
从以上模糊控制器的设计过程可知,根据机器人车体底盘上的前后光电检测点的状态作为输入量进行模糊化,在模糊规则约束下经模糊推理,得到精确的控制变量。模糊控制器承担的任务实际上是从输入映射到模糊控制表对应的输出量。实际应用模糊控制场合时大多数采用查表法来设计模糊控制器,通过离线计算与实际控制经验而得到一个表示输入量精确值与输出量精确值之间的控制表,然后将得到的控制表移植到计算机、其他专用或通用模糊控制芯片中,这种映射在查表时是一一对应的逻辑关系;现场控制时,只需要用软件或硬件电路来查找控制表,获得所需的控制量去控制执行机构。
3 模糊控制器的FPGA实现
现场可编程门阵列(FPGA)是近年来发展迅速的大规模可编程逻辑器件,它具有设计周期短、片内资源丰富、可无限次加载和现场可编程等特点。在FPGA上实现模糊控制器是一种介于专用集成电路(ASIC)和通用处理器之间的方案,具有电子产品的高速度、高可靠性、小型化、集成化、低功耗、保密性能好、具有自主知识产权、产品上市快等优势。
用可编程逻辑器件完成模糊控制器的任务有多种方法,可以用VHDL语言设计一个ROM将模糊控制输出表的数据写入其中,也可以把模糊控制输出量用逻辑表达式表示出来,通过脉冲分配器驱动步进电机。根据表2用VHDL语言设计的ROM模糊控制输出模块如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY Fuzzy_rom IS
PORT (BF_b,BA_b:IN STD_LOGIC_VECTOR(3 downto 0);
nena :IN STD_LOGIC;
L_out :OUT INTEGER RANGE 0 TO 6000);
END Fuzzy_rom;
ARCHITECTURE a OF Fuzzy_rom IS
SIGNAL addr:STD_LOGIC_VECTOR(7 downto 0);
BEGIN
addr<=BA_b&BF_b;
L_out<=
16#DB6# when addr=X″00″ and nena=′0′ else
16#CBC# when addr=X″01″ and nena=′0′ else
16#BF4# when addr=X″02″ and nena=′0′ else
16#BCC# when addr=X″03″ and nena=′0′ else
16#BB8# when addr=X″04″ and nena=′0′ else
16#BAE# when addr=X″05″ and nena=′0′ else
16#B72# when addr=X″06″ and nena=′0′ else
16#AE1# when addr=X″07″ and nena=′0′ else
16#A6E# when addr=X″08″ and nena=′0′ else
……
16#10BE# when addr=X″85″ and nena=′0′ else
16#FFC# when addr=X″86″ and nena=′0′ else
16#FA2# when addr=X″87″ and nena=′0′ else
16#D73# when addr=X″88″ and nena=′0′ else
16#0000#;
END a;
在ROM模糊控制模块中,输入变量BF_b和BA_b为前后光电检测点状态的编码信号,作为模糊控制输出表的地址码(一个字节),由它来决定模糊控制输出表的数据,即步进电机转速的周期。周期值越大,频率越小,步进电机的转速就越慢;反之步进电机的转速就快。图4所示为ROM模块的仿真波形。
该模糊控制器在QuartusII集成开发环境中,利用Cyclone系列中的EP1C6器件进行了设计和仿真,并组成测试系统进行测试。实践证明,该移动机器人具有自动纠偏、寻线准确、高集成度和高可靠性的特点。用可编程逻辑器件设计的模糊控制,设计方便、修改容易,它可以和其他功能模块电路同时用FPGA来完成,可以充分发挥模糊控制及可编程器件的优点,使两种先进的技术有机结合。除了以上介绍的机器人行走控制器外,还有其他单元电路,如红外光电检测电路、超声波检测电路、光电码盘检测和电机驱动电路,以及可以随时接收上位机发出指令的通讯模块电路。为了实现机器人可靠的行进,检测电路的设计显得非常重要。
参考文献
[1] 齐昕,巩宪锋,王长松.基于模糊算法的机器人行进控制[J].机电工程技术,2006,35(1):21-24.
[2] 黄永志,陈卫东.两轮移动机器人运动控制系统的设计与实现[J].机器人,2004,26(1):40-44.
[3] 陈文光,饶益花,单长虹.基于可编程器件的模糊控制器[J].微电子学与计算机,2004,21(5):41-43.
[4] 包明,包奎.基于FPGA的搬运机器人控制系统[J].电子技术应用,2005,31(12):59-61.
[5] KIM D.An Implementation of Fuzzy Logic Controller on the Reconfigurable FPGA Systems[J].IEEE ransactions on Industrial Electronics,2000,47(3):703-715.
[6] Altera Corporation.QuartusII development software handbookv5.1[DB/OL].[2005-09-3].http://www.Altera.com.cn/literature/hb/qts/quartusii_hand_book.pdf.