APP下载

模糊控制算法在自主机器人行进过程中的应用研究

2011-07-10田景文

制造业自动化 2011年15期
关键词:移动机器人模糊控制串口

苏 霄,田景文

(北京联合大学 信息学院,北京 100101)

0 引言

自20世纪60年代初发明第一台工业机器人以来,机器人已经几乎渗透到世界的各个领域。机器人技术的发展水平已经成为一个衡量国家高新科技水平和工业自动化程度的重要标志。当前生产、生活中已经广泛应用机器人完成任务,甚至在一些场合中代替人类发挥着重要的作用[1]。

通过自身所带传感器对环境进行感知,自主移动机器人能够实现在非结构环境下,进行行为控制和执行、动态决策与规划等功能。该高智能化系统与计算机视觉、智能控制以及多智能体(Multi-Agent)、机器人学和机械学等学科紧密联系,具有重要的军用及民用价值,是现代机器人学中一个重要而且相当活跃的研究领域[2]。

对移动机器人控制情况受以下几方面影响:建模[3]、定位[4,5]、控制及稳定性[6,7]、智能技术等。

1 受控机器人系统结构

旅行家II号是目前国内性价比很高的高端机器人,所以本文用其作为受控研究对象。其采用模块化的设计理念,很好的运动精度的直流伺服控制,更加强调应用,并具有高负载能力。控制计算机选用配有红外、视觉、角速率陀螺仪等高精度传感器的工业PC或者是高性能的嵌入式控制器。

其中电子磁罗盘传感器、测距声纳的数据为机器人行为控制提供依据。

超声测距的原理采用渡越时间法,表示为:

公式(1)中,D为被测障碍物和移动机器人之间的距离,c表示在介质中声波的传输速率。在空气中声波的传输速率为:

公式(2)中,T表示绝对温度,c01=331.4m/s。c在不要求很高的测距精度时可认为是常数。渡越时间法主要是用来测量超声发射超声返回的时间间隔t,距离由公式(1)计算得出。

本机器人的伺服控制系统是一个闭环控制系统,其工作流程如图1所示。

2 数字PID控制算法实现

随着计算机的出现,把原来最先出现在模拟控制系统中的PID 控制器,移植到计算机控制系统中来,将原来的硬件实现的功能用软件来代替,因此称作数字PID 控制器,所形成的一整套算法则称为数字PID 算法。在机器人行进控制中也可使用PID控制算法对其进行控制。其中PID控制规律为:

式(3)中, Kp —比例系数;TI—积分常数;TD—微分常数;u0—控制常量;

在PID中,比例环节的作用是对偏差瞬间作出快速反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数Kp , Kp越大,控制越强;但是过大的Kp会导致系统震荡,破坏系统的稳定性。

由上式可以看出,只有当偏差存在时,第一项才有控制量输出。所以,对大部分被控制对象(如直流电机的调压调速),需要加上适当的与转速和机械负载有关的控制常量u0,否则,比例环节将会产生静态误差。

图2 PID控制流程图

使用这种算法对机器人行进进行控制的缺点是:由于是全量输出,以至于每次输出均与过去状态有关,所以计算时要进行累加工作量。并且,计算机输出数据对应的是执行机构的实际位置,如果计算机出现故障,输出数据将会大幅度变化,会引起执行机构的大幅度变化。这样机器人在行进的过程中有可能造成一定故障和事故,这在高可靠性的要求下是不能允许发生的。

3 模糊控制算法实现

在实际的控制领域里,面对的是复杂的系统,由于系统中变量太多,往往难以正确的描述系统的动态,于是工程师便利用各种方法来简化系统状态,以达到控制的目的。换言之,传统的控制理论对于明确系统有强而有力的控制能力,但对于过于复杂或难以精确描述的系统,则显得无能为力了。因此便尝试着以模糊数学来处理这些控制问题。本文提出的机器人行进的控制问题属于较复杂控制系统,所以尝试使用模糊控制规则来控制其行进过程是较为可行的。

MATLAB是当前国际控制界最为流行的面向工程与科学计算的高级语言。而且由于模糊逻辑的迅速推广应用,MathWorks公司已经添加了模糊逻辑控制工具箱。在多数情况下,利用MATLAB进行建模仿真就是比较合理的选择[9]。

在MATLAB命令窗口中键入命令fuzzy打开模糊推理系统编辑器对其进行设置。在这其中需要获取机器人上传感器的数据来编辑模糊推理的控制过程。我们主要以测距声纳和电子磁罗盘传感器的数据,经处理后作为模糊控制规则中的E(误差),而每隔一个采样周期传感器E的变化率为EC(误差变化率)。

3.1 模糊语言变量设计

在MATLAB命令窗口中键入命令fuzzy打开模糊推理系统编辑器对其进行设置。

首先设置为二维的模糊控制器即由E(误差)和EC(误差变化率)决定Du(控制行为)。在其中输入以上三个参数的隶属度函数。

3.2 模糊控制规则设置

根据人工的经验,可以有如下的模糊控制规则:

1)如果“偏差”是“正大”,则(if E=PB then U=PB);

2)如果“偏差”是“正中”且“偏差变化”是“正大”或“正小”, 则(if E=PM and EC=PB or EC=PS then U=PM) ;

3)如果“偏差”是“正中”且“偏差变化”是“零”或“负小”,则(if E=PM and EC=Z0 or EC=NS then U=PM);

4)如果“偏差”是“正中”且“偏差变化”是“负大”,则 (if E=PM and EC=NB then U=PS);

5)如果“偏差”是“正小”且“偏差变化”是“正大”,则(if E=PS and EC=NM then U=PM);

6)如果“偏差”是“正小”且“偏差变化”是“正小”或“零”,则 (if E=PS and EC=PS or EC=Z0 then U=PS);

7)如果“偏差”是“正小”且“偏差变化”是“负小”或“负大”,则 (if E=PS and EC=NS or EC=NB then U=ZO);

8)如果“偏差”是“零”且“偏差变化”是“正大”,则 (if E=Z0 and EC=PB then U=PS) ;

9)“正小”或“零”或“负小”,则 (if E=Z0 and EC=PS or EC=Z0 or EC=NS then U=ZO) ;

10)如果“偏差”是“零”且“偏差变化”是“负大”,则 (if E=Z0 and EC=NB then U=NS);

11)如果“偏差”是“负小”且“偏差变化”是“正大”或“正小”,则 (if E=NS anf EC=PB or EC=PS then U=Z0);

12)如果“偏差”是“负小”且“偏差变化”是“零”或“负小”,则(if E=NS and EC=Z0 or EC=NS then U=NS);

13)如果“偏差”是“负小”且“偏差变化”是“负大”,则 (if E=NS and EC=NB then U=NM);

14)如果“偏差”是“负中”且“偏差变化”是“正小”或“零” 或“负小”,则 (if E=NM and EC=PS or EC=Z0 or EC=NS then U=NM);

15)如果“偏差”是“负中”且“偏差变化”是“负大”,则(if E=PM and EC=NB then U=NM);

16)如果“偏差”是“负中”且“偏差变化”是“正大”,则(if E=PM and EC=PB then U=NS);

17)如果“偏差”是“负大”且不论“偏差变化”为何值,则 (if E=PB then U=NB)。

根据上述模糊控制规则和模糊推理我们可以在规则编辑器里编辑模糊控制规则。

3.3 二维模糊控制系统Simulink仿真

打开Simulink工具箱建立二维控制系统仿真模型并设置各参数如图3所示,然后运行观察得到波形曲线如图4所示。

接着建立PID控制系统模型,运行后得到响应曲线如5图所示。

对比PID控制器的系统响应曲线,我们看到模糊控制器的系统响应曲线响应时间短、比较平稳,且没有超调。所以使用模糊控制可以实现对机器人行进进行较好的控制。

4 MATLAB环境下与控制模块之间的通信

用MATLAB建立模糊逻辑模型后用串口和机器人通讯,将模糊控制模型传输给机器人用于控制其行进过程。

图3 二维模糊系统Simulink仿真模型

图4 模糊控制器响应曲线

图5 PID算法响应曲线

使用MATLAB中的仪器控制工具箱封装的串口对象,控制串行端口与外设进行通信就像操作文件一样[10]。首先使用serial()函数创建串口对象,然后设置数据位、波特率、停止位等属性,使控制集模块间和PC机具有相同的通信模式。然后传输数据时,使用fopen()函数打开串口,再用fwrite()函数和fread()函数以ASCII码格式或二进制对其进行读写操作。在数据通信过程中,为了了解串口的工作状态可以通过以实时的读串口对象属性。数据传输结束后用fclose()函数关闭串口。主要程序如下:

Clear //清内存中的变量和函数。

u=uint8(zeros(1024,1));

Ser_Port1=serial('COM1') //创建一个的名为Ser_Port1的串口对象和PC机COM1关联Ser_Port1.InputBufferSize=4096;

Ser_Port1.OutputBufferSize=4096;

Ser_Port1.Timeout=10;

Ser_Port1.BaudRate=9600;

Ser_Port1.Parity='even'; //偶校验

Ser_Port1.StopBits=1;

fopen(Ser_Port1); //打开串口COM1

fwrite(Ser_Port1,'S');//发送软件握手信号给智能数据采集模块

len_low=fread(Ser_Port1,1,'uint8');

len_high=fread(Ser_Port1,1,'uint8');//读数据长度

fwrite(Ser_Port1,‘T’);//向数据采集模块发送数据传送命令

u=fread(Ser_Port1,len_high*256+len_low,'uint8;//读数据

fclose(Ser_Port1) //关闭串口

delete(Ser_Port1)

clear Ser_Port1 //清除串口对象,以释放内存空间

plot(u) //根据所得数据绘出波形

grid

5 结束语

由MATLAB仿真实验可知,模糊控制算法比PID控制算法具有更好的性能。所设计的模糊控制器具有更好的实时性和可靠性。同时在自主机器人的控制系统中,采用高负载能力和高运动精度的直流伺服控制,以ARM9芯片作为机器人的主控制器,实现了机器人自主的往目标点行进,并具有定位准确、快速等高性能。

[1] 张毅,罗元,郑太雄.移动机器人及其应用[M].北京:电子工业出版社,2007.

[2] 徐国华,谭民.移动机器人的发展现状及其趋势[J].机器人技术与应用,2001,20(3):7-8.

[3] 宋小康,王越超,谈大龙,等.全地形移动机器人建模与控制研究综述[J].机器人,2007,29(5):505-512.

[4] Ikeuchi A,Takamori T,Kobayashi S,et al.Development of mobilerobots for search and rescue operation systems[M].Proceedings of the 4th International Conference on Field and Service Robotics.Berlin,Germany:Springer-Verlag,2006.519-528.

[6] Olson C F.Probabilistic Self-localization for Mobile Robots[J].IEEE Transactions on Robotics and Automation(S1042-296X),2000,16(1):55-66.

[7] 陈伟,延文杰,周超英,等.两轮自平衡机器人控制系统的设计[J].传感器与微系统,2008,27(4):117-120.

[8] Wedeward K,Bruder S,Yodaiken V,et al.Low-cost outdoor mobile robot:A plat formfor landmine[C].Detection[A].IEEE MidwestSymposium on Circuits and Systems 1999,131-134.

[9] 徐启华,等.智能控制课程教学中应用MATLAB的几点体会[J].盐城工业学报(自然科学版),2005,18(4).

[10] 李永乐,袁一,朱云江,徐友春等.基于MATLAB串行通信的智能车车速控制算法研究[J].军事交通学院学报,2009,67(3).

猜你喜欢

移动机器人模糊控制串口
移动机器人自主动态避障方法
基于变论域模糊控制的Taylor逼近型内模PID算法
浅谈AB PLC串口跟RFID传感器的通讯应用
基于遗传算法的模糊控制在过热汽温控制系统优化中的应用
基于Twincat的移动机器人制孔系统
基于模糊控制的PLC在温度控制中的应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于模糊控制的恒压供水系统的研究
串口技术的实物调试和虚拟仿真联合教学模式