基于模糊PID 算法的循迹机器人系统设计
2021-03-11裴汉华
裴汉华,秦 晋
(杭州电子科技大学新型电子器件与应用研究所,浙江 杭州 310018)
0 引 言
随着老龄化问题不断加剧,社会对于服务型机器人的需求进一步增加。 在我国餐饮业中,顾客点餐和送餐等服务是最繁杂的工作[1]。 餐饮业的劳动力成本越来越高,传统的以人为劳动力的运营方式已经远远不能满足需求, 同时面对激烈的行业竞争,如何缩减成本也是迫切需要考虑的问题。
送餐机器人的循迹方式直接决定送餐的效率,常用的方案有以下几种: 第一, 视觉导航, 使用CCD 摄像机来采集路面的图像;第二,使用反射式红外光电管;第三,使用激光扫;第四,使用磁导引传感;第五,使用GPS 导航。 视觉识别导航通过采用CCD 摄像机构建视觉导引系统, 是实现智能导航的最佳方式之一,也是一项具有较大潜力的实用技术[2]。使用CCD 摄像机进行视觉导航的最大优势在于能够准确地判断出机器人前方较长一段距离上路面的走向, 给机器人的控制提供更多信息;缺点就是需要处理大量的计算任务,处理速度慢。 使用反射式红外光电管,信号处理的速度较快,电路结构也比较简单, 但是感知前方道路的距离有限,容易受外界环境的干扰,精度低。 使用激光扫描来导航,对环境无明显要求,通过反光带更改路线,但是成本太高。 磁导引传感器通过铺设磁带更改路线,柔性较好,但一般磁导航传感器只能检测磁条上方100Gauss 以下的微弱磁场, 容易受到周围金属物质的干扰,检测的结果容易产生偏差[3]。 使用GPS 导航,环境的影响较小,稳定性和精度都很高,只是成本太大。结合实际情况以及以上方案各自的优缺点, 权衡成本、 精度和稳定性后, 本文采用CCD 摄像头来设计路径识别模块。
1 系统整体结构
智能送餐机器人循迹系统主要由信号采集、信号放大、电源模块、电机驱动四部分组成。 硬件上,以线性CCD 作为路面检测元件, 运放电路将采集到的信号进行放大, 电源模块将24V 的电压经过电路转换,变成5V 和3.3V,分别给不同的模块进行供电。软件上,使用模糊PID 算法实现制。其整体结构如图1 所示。
图1 系统整体结构Figure 1 Structure of the system
1.1 信号采集模块
路面的信息采集由TSL1401 线性CCD 模块完成。该模块以TAOS 公司生产的TSL1401R 芯片为核心,集成了高达128 像素的线性阵列传感器以及专门用于线性CCD 的透镜。 该模块可以看到一维的图像, 并可以通过移动模块来获得二维图像。信息采集模块的电路如图2 所示。
图2 信息采集模块电路Figure 2 Information collection module circuit diagram
1.2 信号放大模块
由信号采集模块输出的信号量一般都十分小,无法满足后续电路的需求,因此需要增大输出电压,放大输出信号。 我们可以采用运放来实现放大输出信号。 为了确保输出的电压是在合理的工作范围(不饱和、不截止、能分辨路面的状况),需要根据TSL1401R 所选定的镜头确定运放的放大倍数。
我们可以选用INA128 来进行对微弱信号的放大,图3 所示是信号放大模块电路图。 图中,INA128 具有低噪声和低失调电压漂移等性能指标,而且放大倍数容易设置,只需通过一个外部电阻便可改变放大倍数。 图中两个RG 端口跨接的滑动变阻器就是用来调节放大倍率的,V+和V-端口需要提供正负相等的工作电压,VIN+和VIN-端口输入需要进行放大处理的电压,并从VO 端口输出放大过后的电压。
图3 信号放大模块电路Figure 3 Signal amplification module circuit diagram
1.3 电源模块
智能机器人以两个12V 的蓄电池作为外接电源,串联电压24V。 考虑到各模块所需的电压值不同, 使用LM2596 开关电压调节器, 来实现电压24V 转换为5V, 并且电压的输出误差低于4%。SPX1117 电压调节器具有低功耗和静态电流非常低的特点[4],因此采用SPX1117 来实现将电压由5V转换为3.3V。 电源转换模块的工作电路如图4 和图5 所示。
图4 24V 转5V 电路Figure 4 24V to 5V circuit
图5 5V 转3.3V 电路Figure 5 5V to 3.3V circuit
1.4 电机驱动模块
由于通过STM32 的I/O 端口输出电流无法达到直接驱动IFR2804MOS 管的效果,我们考虑添加一个MOS 管的驱动电路,通过驱动电路为MOS 管提供足够的的驱动电流, 确保MOS 管可以快速稳定地工作。 电机驱动模块的电路如图6 所示。
图6 电机驱动模块电路Figure 6 Motor drive module circuit diagram
IR2110 是双通道高压、 高速电压型功率开关器件栅极驱动器,具有自举浮动电源,驱动电路简单,只需一路电源即可同时驱动上、下桥臂[5]。
IR2110 依靠其自身所特有的高压集成电路及无门锁CMOS 技术驱动大功率MOS, 导通和关断的响应时间分别为120ns 和94ns,偏值电压的最大值可以达到600V,具有很强的驱动力,在内部设有欠压封锁,并设有外部保护封锁端口。
2 软件系统设计
2.1 送餐机器人路径控制
智能送餐机器人不像传统的寻迹机器人有路径的约束,而是以自有的路径进行工作,因此行走更加灵活。 但是为了追求送餐的效率,需要进行送餐路径规划。 机器人送餐的环境一般都是在室内,内部的环境信息我们是完全知道的,因此我们可以设计从初始点到目标点的路径规划。
室内环境地图可以用栅格法来表示。栅格法由W.E.Howden 于1968 年提出,它将环境空间划分成包含二值状态信息的方形栅格单元,这些单元相互连接且不重叠[6]。栅格法由两部分组成:地图建模和信息编码。地图建模就是把环境空间分割成多个相同的方形栅格。信息编码就是指用二进制数来表示栅格状态。方格中,数字“1”代表障碍栅格,数字“0”代表自由栅格。完成地图建模和信息编码的效果图如图7 所示。
图7 栅格地图Figure 7 Raster map
由于蚁群算法的优势在于解决搜索全局最优路径问题,并且具有记忆功能,不会重复选择走过的路径,因此可以采用蚁群算法来进行送餐机器人的路径规划。
蚁群算法模型首先要进行参数的初始化,需要设置蚁群的规模、启发因子、期望启发因子等,选择初始点和目标点对应的栅格号[7]。在选择路径时,由于选择了栅格法建立地图模型,每一次只能选择移动到与当前栅格相邻的栅格,我们依据当下位置和周边位置的信息素强度计算出下一步朝各个方向移动的概率。 在每一次的路径搜索循环中,记录下来每一只蚂蚁所经过的路径点,路径点的坐标单独存储起来,以此可记录每只蚂蚁走过的路径,每一次迭代结束以后,都能获得到一条此次循环的最短路径。 一段时间以后,当所有蚂蚁都从起点到达终点,完成了一次迭代,这时每一只蚂蚁行走路径上的信息都需要进行一次更新。蚁群算法的流程如图8 所示。
图8 蚁群算法流程图Figure 8 Flow chart of ant colony algorithm
2.2 PID 控制算法介绍
PID 控制算法应用非常广泛,小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等,都可以使用PID 控制。
PID 控制是将比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制。 它的原理简单,适用面广而且易于实现,控制参数相互独立,参数的选定比较简单。 整个系统的原理如图9所示。
图9 PID 系统原理图Figure 9 PID system schematic diagram
该系统由PID 控制器和被控对象组成。图中,r(t)是给定值,y(t)是系统的实际输出值。 PID 控制器给定值与实际输出值构成控制偏差为:
PID 的控制规律为:
在上式中,kp为比例系数,T1为积分时间,TD为微分时间。
PID 控制器各校正环节的作用如下:
第一,比例环节。 比例环节的目的在于能够成比例地反映控制系统的偏差信号,当偏差信号一经产生, 控制器就会依据偏差信号产生控制作用,减小误差。
第二,积分环节。 积分环节主要是为了提高系统的无差度,消除静差,积分作用的强弱与积分时间常数成正比,积分时间常数越大,积分作用越强。
第三,微分环节。 微分环节能够很好地反映出偏差信号的变化趋势,并且在偏差信号的值将要发生过大增长之前, 能够引入一个有效的修正信号,从而加快系统的运作速度,较少调节时间。
长期以来, 在设计和应用PID 控制器的过程中,PID 参数的选取一直是一个难题, 因为参数的选取会影响比例作用、积分作用、微分作用的效果。在选取参数时,我们必须兼顾动态与静态性能指标要求。
PID 控制器参数的整定方法有很多,可以采用继电型PID 自整定方法,它的基本思想是在控制系统中设置两种模态:测试模态和调节模态。 在测试模态,由一个继电非线性环节来测试系统的振荡频率和增益,而在调节模态下,由系统的特征参数首先得出PID 控制器,再通过此控制器调节系统的动态性能。 如果系统的测试发生变化,则需要重新进入测试模态进行测试,测试完成之后再回到调节模态进行控制。
2.3 PID 控制算法流程
系统PID 算法的思路为: 利用CCD 获取当前送餐机器人的实时运行速度,计算出当前的实时速度与设定的速度的偏差值,将偏差值作为PID 算法的输入; 根据PID 处理过后的值来计算出占空比,当运行速度未达到设定的速度时, 就通过增加或减小占空比来实现对运行速度的调控。 不断重复上述的过程, 实际的运行速度就会在设定速度周围上下波动。 当所设置的参数合理时,实际运行速度与设定值的差距就会很小。PID 控制算法的流程如图10 所示。
图10 PID 控制算法流程Figure 10 PID control algorithm flow
2.4 PID 控制器仿真
通过Simulation 对小车运动和控制进行仿真,如图11 所示,图中的线条为距离误差。在机器人起步时, 我们给定一个误差距离,PID 控制器会控制机器人做出调整, 但是距离误差不会直接减少,而是出现了反复的波动,最后才趋于稳定,使送餐机器人回到预定轨迹。
图11 小车运动仿真图Figure 11 Simulation diagram of trolley movement
3 试验结果分析
为了验证上述理论分析的正确性,将送餐机器人在长30m、宽5m 的范围内进行行驶,将机器人的实际运行轨迹和模拟轨迹进行对比,其试验结果如图12 所示。从试验中可以看出,实际运行轨迹和模拟运行轨迹相差不大,表明送餐机器人可以很好地实现循迹。
图12 机器人运行轨迹试验Figure 12 Robot trajectory experiment
为了分析机器人在循迹过程中的耗时状况,分别选取不同的路径长度,记录下机器人循迹所花费的时间,并将理论用时与实际用时进行对比,试验结果如表1 所示。 可以看出,机器人在循迹的过程中,理论用时和实际用时差距不大,表明机器人可以很好地实现循迹送餐功能。
表1 机器人循迹用时试验Table 1 Robot tracking time experiment
4 结语
为了解决机器人在送餐过程中存在的稳定性问题,设计了一种基于模糊PID 的控制算法,试验表明该算法可以使得机器人沿着预定的轨迹运行,稳定可靠,具有较好的实用性。