黄 充,刘源杰,何玉灵,潘圆媛,匡江华
(1江西制造职业技术学院 江西 南昌 330095)
(2南昌工程学院江西省精密驱动与控制重点实验室 江西 南昌 330099)
近年来科技在高速发展[1],随着电子科技的逐渐完善和物联网的普及,关于移动机器人的研究朝着现代化、智能化、小型化的方向发展。而集成控制、通信、传感技术于一体的轮式机器人作为机器人行业的典型代表,在汽车、机械、物流等行业有着大量应用。由于人类涉足的范围在不断地扩大,有些地方人无法到达,如深山、发生灾难的地下、坍塌的楼房等,这些地带都有着极高的危险性。传统的移动机器人大多受轮胎结构的限制,移动的灵活性降低,活动范围受限,难以满足人们对智能移动机器人的要求。本文设计的全向移动机器人可通过PS2无线遥控手柄远程控制机器人进行前后移动、平移、斜移等多个方向运动以及移动速度的设定,并且由霍尔编码器测得的实际速度与给定速度进行处理,结合增量式PID算法获得四个电机输出控制量,减少当移动机器人遇到不同的路况因地面摩擦力的不同导致行进速度偏离预设速度的发生率。
本文设计的基于STM32的移动机器人,主要实现全方位移动、无线通信等功能,控制系统框图如图1所示。该系统主要由STM32单片机、电源模块、PS2无线遥控手柄、按键模块、电机驱动模块、直流减速电机、麦克纳姆轮构成。为了高效实现系统的功能,单片机需要完成与各个模块之间的信号传输,对单片机在省电、处理速度等性能方面有较高要求[2],因此移动机器人选择型号为STM32F103ZET6作为主控芯片。电机选用装有AB双相霍尔式编码器的大扭矩减速电机,其中可承重60 kg、额定扭矩为2.5 N*m、额定转速为350 rpm,与电机联轴器相连的麦克纳姆轮(轮子直径127 mm)组成行进机构实现多方向运动。霍尔编码器用于检测机器人运动速度,选用WSDC2412D双通道驱动器作为驱动模块,采用增量式PID控制算法对给定速度和实际速度的值进行处理,调整输出PWM波实现稳速控制,实际速度由霍尔编码器测得反馈给STM32单片机从而实现闭环控制。
图1 总体设计框图
本文所设计的机器人底盘结构由电机、麦克纳姆轮以及铝合金结构件组成,四个大扭矩直流减速电机分别由两个双通道的驱动器驱动,采用四轮驱动的方式保证机器人在运动的过程中有更好的驱动力以及更高的稳定性和安全性。传统的移动机器人采用普通轮胎难以在不改变自身姿态的前提下完成多种运动方式,故四个轮子采用结构紧凑、灵活性强的麦克纳姆轮底盘示意图如图2所示,轮子的布局方式要以移动机器人中心对称的方式使其有三自由度运动能力实现全方向移动,以便在有限的活动空间内能够灵活运动,图3为移动机器人底盘结构实物图。
图2 移动机器人底盘示意图
图3 移动机器人底盘结构实物图
采用WSDC2412D双通道电机驱动模块驱动四个独立的直流减速电机控制轮式机器人运动。驱动模块内部含两个高电压大电流的全桥式驱动器,两个通道都能够允许通过12 A的持续电流和峰值电流能够达到70 A。驱动器内部各个器件模块时序高度优化,可调节的PWM范围较大,PWM输入脉宽可低至2 us[3]。板载过热、过压、欠压保护电路,内部结构简图如图4所示,降低驱动器在高温高压等异常工作情况下短路甚至烧毁的可能性,状态指示灯实时显示驱动器运行状态。
图4 驱动器内部结构简图
逻辑部分的控制信号均进行电气隔离,充分兼容单片机3~5 V的电压输入,显著增强了单片机电路的安全性;驱动模块供电范围Vs为6~28 V,功率电源电流最大值为24 A,支持7~24 V供电级别减速电机。INAx、INBx为逻辑输入端,x对应1或2两个通道号,引脚的输入电平标准的逻辑级别,不受其他信号干扰。通过改变STM32单片机引脚输出的逻辑,电平可控制电机的正转、反转以及制动,输入信号悬空时为高电平状态。
麦克纳姆轮由Mecanum AB公司的瑞典科学家Bengt Erland IIon于上世纪70年代发明,目前被广泛应用于物流仓储自动化、自动化工厂和智能泊车设备等。轮子主要由轮毂、辊子和辊子轴构成[4],轮毂是支撑架,辊子沿与轮毂夹角45°的方向平行排列,所有轮子均为主动轮,当轮毂沿同一方向转动,辊子与地面产生的摩擦力与轮毂滚动方向相反,阻碍轮毂的转动。
移动机器人的工作状态,主要是由WSDC2412D双通道驱动模块驱动四个直流减速电机结合麦克纳姆轮组合成的运动执行机构决定,根据对四个轮子的协调控制能够实现前进后退、左右平移、斜移、顺时针或逆时针自转等多种运动方式。
图5 轮式机器人示意图
图5为轮式机器人示意图,轮的滚动带动机器人移动规则如下:
当四个轮均向正向转动时,机器人将向前移动;
当四个轮均向反向转动时,机器人将向后移动;
当左前轮1、右后轮4反向转动,右前轮2、左后轮3正向转动,机器人将向左移;
当右前轮2、左后轮3反向转动,左前轮1、右后轮4正向转动,机器人将向右移;
当左前轮1、左后轮3反向转动,右前轮2、右后轮4正向转动,机器人将逆时针自转;
当右前轮2、右后轮4反向转动,左前轮1、左后轮3正向转动,机器人将顺时针自转;
当左前轮1、右后轮4正向转动,右前轮2、左后轮3不动时,机器人将向右上移动;
当左前轮1、右后轮4反向转动,右前轮2、左后轮3不动时,机器人将向左下移动;
当右前轮2、左后轮3正向转动,左前轮1、右后轮4不动时,机器人将向左上移动;
当右前轮2、左后轮3反向转动,左前轮1、右后轮4不动时,机器人将向右下移动。
机器人要完成多种运动方式以及速度控制主要通过读取PS2手柄发送的按键信息或者遥控信息,如无线手柄负责传输按键信息,无线接收器与STM32单片机相连,用于接收手柄的信息;当单片机接收到手柄信息后将发送设定的控制信息至电机驱动器,从而驱动电机转动带动麦克纳姆轮实现机器人的多方位运动。
PS2的信号接收器一共有9个引脚,对照实物图引脚分配从左往右依次为DI/DAT、DO/CMD、空端口、GND、VDD、CS/SEL、CLK、空端口和ACK。DI/DAT和DO/CMD引脚分别是手柄到单片机、单片机到手柄的流向端口,属于全双工通信模式。CS/SEL引脚提供手柄触发信号,在正常通信过程中置于低电平。
PS2通信具体流程:在CS触发信号发生时,手柄开始进入通信状态,CS拉低电平,在完整8 bit数据通信完成之后转高电平。CLK时钟信号为下降沿是进行数据收发,上升沿DI/DO数据存在交叉现象,数据不稳定。当STM32读取手柄的按键信息时,首先将CS的电平置为低电平并发送“0x01”命令,手柄将发送相应ID信息即“0x41为绿灯模式,0x73为红灯模式”;同时,控制板将发送“0x42”的请求数据的命令,随后手柄发送“0X5A”[5]作为应答信号,此时单片机开始接收数据,本系统可以分别通过按键和遥杆对移动机器人的运动方式、运动的速度进行控制。
由于全向移动机器人需要实现工作的环境和条件复杂多变,在运动的过程中电机转速控制显得尤为重要,误差分析和优化处理必不可少。本文采用PID调节方式来对机器人运动状态调整,传统的PID算法结构框如图6所示,PID算法精确能够满足相当多的工业对象控制要求,尤其适用于可建立精确模型的确定性系统,该算法操作简单、鲁棒性强、可靠性高、实用性强。PID控制器用于范围广泛的问题:过程控制、电机驱动、磁性和光学记忆、汽车、飞行控制、仪器仪表、控制器等有多种不同的形式。
图6 传统PID算法框图
采用增量式PID控制算法相较于位置式PID算法主要是因为没有误差累积现象,控制增量ΔU(k)与本次采样值、上两次采样值均相关。由于控制增量ΔU(k)只和三次采样相关,可以缩短故障点范围。在控制过程中存在手动与自动相互切换时对应冲击小,基本上可以做到无干扰切换。
在实现闭环转速控制过程中,主要使用增量式PID算法对给定速度与编码器测得的实际速度值进行处理,得出控制量,有着高效、响应快、误差小的特性。转速控制PID算法控制流程为预设的目标转速值与通过霍尔编码器测得的实际转速进行比较,计算出误差e(k)。根据增量式PID运算公式计算出控制增量ΔU(k),再和U(k)相加得出控制输出量,控制算法如下式[6]:
式(1)中:e(k)代表本次偏差;e(k-1)代表上次偏差;e(k-2)代表上上次偏差;Kp代表比例系数,Ki代表积分系数;Kd代表微分系数。
系统程序采用模块化编程思想,将初始化配置、电机驱动、无线遥控等程序进行封装,在编写程序过程中只需调用即可,便于测试过程中能够高效地解决问题且移植性能好,可缩短开发周期。
系统上电后,STM32单片机初始化,串口中断以及定时器初始化,电机驱动子程序、无线遥控子程序完成初始化,图7为系统主程序设计。移动机器人有按键和遥杆两种模式,遥控手柄启动后与接收器信号相通,默认配置为按键模式。每个按键键值传输给单片机处理后发送到电机驱动模块,电机驱动模块驱动电机实现不同的正反转状态,组成多种运动模式。
图7 系统主程序流程图
电机子程序初始化完成后,根据给定的转速输出对应的PWM波以及通过改变电机驱动模块对应引脚的逻辑电平来实现电机的正反转。采用霍尔式编码器测速,程序内部开启定时计数器在设定的时间内捕获输出有效脉冲信号个数计算出电机转动速度,并通过增量式PID算法,将速度偏移量进行补偿形成闭环控制,图8为电机驱动电路子程序流程图。
图8 电机驱动电路子程序流程图
本文设计的以麦克纳姆轮为驱动轮的全向移动机器人,可完成一般移动机器人不能进行的平移、斜移以及原地自转等运动,并且结合增量式PID控制算法保证了在运动过程中速度的稳定。同时,采用PS2无线遥控手柄发送指令进行远程控制,机器人能够在活动范围较窄、空间存在较多障碍物以及需要频繁变换运动方向的工作场景中提高工作效率、降低时间成本。