APP下载

3D打印的两轮自平衡机器人的模糊自适应控制策略

2020-08-29张俊杰周惠兴王衍学刘天宇

科学技术与工程 2020年21期
关键词:控制算法编码器控制器

张俊杰,周惠兴*,王衍学,刘天宇

(1.北京建筑大学车辆与机电工程学院,北京 100044;2.北京建筑大学北京市建筑安全监测工程技术研究中心,北京 100044;3.中国农业大学工学院,北京 100083)

两轮自平衡机器人是一种集机械构件,微型控制器,传感器和自动控制技术于一体的轮式移动机器人[1]。其运动模型来源于倒立摆,具有非线性、不确定性和强耦合性的特点[2]。它可依据自身的姿态变化做出相应的动态决策,在运动的同时,保持自身的平衡状态[3]。

3D打印是一种快速成型技术,是基于数字模型文件[4],使用金属粉末或塑料等可黏合材料,依靠逐层打印来构建对象的增材制造的方法[5]。相比于传统的机加工,使用3D打印技术来设计和制造两轮自平衡机器人,易于实现机器人各结构零件的个性化和多样化设计,可以节省材料和加工成本,缩短制造周期,节省组装时间[6]。

现对于自平衡机器人的常用控制算法有线性二次型调节器(linear quadratic regulator,LQR)和PID(proportion integral differential)。LQR算法需要针对自平衡机器人建立准确的数学模型[7],而3D打印的机器人存在构型多样化和运动模型的多样化的情况。PID算法不需要建立准确的数学模型,但参数调节将耗费大量的人力和时间[8]。因此,旨在研究一种不依赖于机器人的精确数学模型,可对不同构型的自平衡机器人的运动进行自适应调节的运动控制策略。

将从自平衡机器人软硬件的系统设计,运动控制策略的研究和程序的编写,以及检测控制策略可行性及有效性相关试验的设计与施行等方面进行阐述。

1 系统设计

两轮自平衡机器人的系统框图如图1所示。系统的初始电源为充电电池,电池为驱动板供电,驱动板为控制器和左右轮电机供电,控制器为各传感器和通信模块供电。通信方面,各传感器信号通过线路连接至控制器的信号输入口,遥控信号则通过蓝牙模块传输给控制器,从而实现无线通信。控制器通过算法对所有信号进行处理,产生输出信号给驱动器,驱动器调节对左右轮电机的供电幅值与频率,从而实现自平衡机器人系统的闭环控制。

图1 两轮自平衡机器人系统框图

下面介绍各部分模块的具体选型与相关参数。

1.1 3D打印构件

3D打印构件由聚乳酸(PLA)材料打印而成,构件板厚约为5 mm,即可以满足装载各模块的强度要求,又使得系统整体质量较小。板上设计了多种形状和大小的孔,可用于穿线,固定螺钉螺母,或者直接嵌入小型的电路板模块,使各模块的拆卸与安装十分方便。图2为安装完成的3D打印的两轮自平衡机器人的实物图。

图2 3D打印的两轮自平衡机器人实物图

在该3D打印构件上,通过调整不同模块的安装位置可以轻松改变系统的重心位置和整体重心分布,便于实现控制算法对于非特定模型的控制效果的验证。

1.2 电源和电机模块

整个机器人系统的供电来源于一个12 V的可充电锂电池,系统的轮电机选用两个带编码器的直流减速电机,电机的额定电压为7.4~12 V,最高转速为500 r/min,最大扭矩为0.4 kg·cm。

1.3 传感器模块

系统的传感器模块是为了即时反映系统当前的姿态及状态量,其中包含机器人的姿态角、姿态角速度及车轮的转速,用到的传感器有MPU6050和磁性编码器。

MPU6050电路板结合了陀螺仪和加速度计的功能,集成了姿态求解器,并内置了动态卡尔曼滤波算法,可以在动态环境中精确输出三个维度的加速度,角速度以及姿态。其可测量的加速度范围为±16g,分辨率为6.1×10-5g,角速度范围为±2 000(°)/s;分辨率为7.6×10-3(°)/s。其数据输出频率最高为100 Hz,即115 200 bps的波特率。

左右轮电机上配有高精度的磁性编码器,相较于光学编码器,磁性编码器具有更强的抗干扰能力。每当车轮旋转一圈时,电机编码器产生260个单位脉冲,可得编码器输出频率为260×4=1 040 Hz,编码器精度为360(°)/1 040=0.35°。

1.4 控制驱动模块

系统的控制驱动模块包含一个Arduino Mega2560控制器和一块双L298N驱动板。

Arduino Mega2560控制器的核心处理器为ATmega2560,具有54个数字输入输出端口,其中的16个端口可直接用于脉冲宽度调制(PWM)信号的输出。还具有16个模拟信号输入端口,4个通用异步收发传输器(UART)接口,一个16 MHz的晶体振荡器,一个通用串行总线(USB)接口等。该控制器可适用于针对多传感器与执行器的实时运动控制[9]。

双L298N驱动板集成了最小输入为6 V的LM2596稳压器芯片和ULN2003驱动器芯片。该驱动板的最大输出电流为2 A,可以支持4个3~24 V的直流电机的运转,或者相同数量、相同功率的两相步进电机和四相步进电机的工作,同时还能够输出稳定的5 V电压,可以作为其他模块的电源。

2 模糊自适应PID控制器设计

PID控制器是目前应用最为广泛的一种自动控制器,它不依赖于受控对象的精确数学模型,只针对实际与理想输出间的偏差值来进行控制,其中比例(P)、积分(I)、微分(D)3个参数的设定是该控制器的核心[10]。模糊控制是基于专家的经验,制定用于推理控制的模糊规则。通过模糊控制对PID控制器进行参数调整,可以省去繁杂的人力参数调整步骤,使控制系统具有自适应性和鲁棒性[11]。

图3为两轮自平衡机器人的控制系统框图,该系统使用MPU6050传感器中的X轴角度,Y轴角速度,以及车轮电机编码器脉冲作为系统输入,将左右两轮电机所接驱动板的脉宽调制(pulse width modulation,PWM)信号作为系统输出。

图3 两轮自平衡机器人左右车轮电机的控制系统框图

从系统输入到系统输出之间是一个模糊自适应PID控制器,如图4所示,其包括平衡环模糊PD控制器、速度环模糊PI控制器及转动环模糊PD控制器。

图4 左右车轮的模糊自适应PID控制器系统框图

2.1 模糊逻辑控制器

在模糊逻辑控制系统中,隶属函数的形状对控制性能有很大的影响。当隶属函数越尖锐时,模糊子集的分辨率越高,控制灵敏度也越高;否则,当隶属函数越平坦时,控制特性越平滑,系统稳定性越好。

基于上述原因,在设计模糊控制器时,应在较小的误差区间内使用更尖锐的隶属函数,而在较大的误差区间内使用更平坦的隶属函数。这样可以有效改善系统的动态和静态特性,增强抗干扰能力。因此,结合经验,自平衡机器人控制系统的误差e和误差变化率eec的隶属函数设计如图5所示。

Z表示零值(zero);NS表示较小的负值;NM表示中等大小的负值;NB表示较大的负值;PS、PM、PB分别表示较小的正值、中等大小的正值、较大的正值

不同取值的e和eec,比例系数变化量ΔKp,积分系数变化量ΔKi,微分系数变化量ΔKd的设计原则如下:①当e较大时,为了使系统跟踪性能更好,应设置相对较大的比例系数Kp和相对较小的微分系数Kd,并且为了避免系统响应过大,通常应限制积分作用,将积分系数Ki设为零;②当e和eec大小适中时,为了减少系统过冲,Kp和Kd应该相对较小,Ki应当取适当值;③当e较小时,为了使系统具有更好的稳定性,应将Kp和Ki都设置为较大,同时,为了避免系统长时间振荡并增强系统的抗干扰能力,当eec大时,Kd应该小,当eec小时,Kd应该大。

选择误差和误差变化率作为模糊PID控制器的输入,与方法设为最小值,反模糊化取质心,每个输入选择7个语言变量,因此总共可以提取49条模糊规则,如表1~表3所示。

表1 ΔKp的模糊规则

表2 ΔKi的模糊规则

表3 ΔKd的模糊规则

2.2 平衡环模糊PD控制器

P控制或PI控制可用于一般控制系统。而那些需要对干扰做出快速响应的控制过程,D是必不可少的[12]。在MATLAB中设计两轮自平衡机器人的平衡环模糊PD控制器如图6所示,其中MPU6050的X轴角度和X轴角速度是该控制器的两个输入。

图6 平衡环模糊PD控制器框图

基于平衡环P、D参数的初始值kp0B和kd0B及自动调整变量ΔkpB和ΔkdB,可以根据式(1)计算得出平衡环P、D参数的校正值:

(1)

2.3 速度环模糊PI控制器

对于两轮自平衡机器人的速度环的控制,基于速度控制中最常用线性控制器PI控制器,设计相应的模糊逻辑控制器如图7所示,其中左右轮电机的编码器均值和编码器均值的变化率作为该控制器的两个输入。

图7 速度环模糊PI控制器框图

基于速度环P、I参数的初始值kp0V和ki0V及自动调整变量ΔkpV和ΔkiV,可以根据式(2)计算得出速度环P、I参数的校正值:

(2)

2.4 转动环模糊PD控制器

与平衡环类似,设计两轮自平衡机器人的转动环模糊PD控制器如图8所示,其中MPU6050的Y轴角速度和Y轴角加速度是该控制器的两个输入。

同样基于转动环P、D参数的初始值kp0T和kd0T及自动调整变量ΔkpT和ΔkdT,可以根据式(3)计算得出转动环P、D参数的校正值:

(3)

3 运动控制算法程序设计

Arduino控制板的程序编写包含运动控制算法、传感器串行通信、电机驱动和编码器中断计数四个子模块,以下只对运动控制算法程序进行介绍,其包含平衡控制算法,速度控制算法,转动控制算法,以及综合控制算法四部分。

3.1 平衡控制算法

输入:X轴偏转角度Angle_x,

X轴偏转速度w_x

初始化:平衡控制函数Balance,

平衡点偏差值 Bias,

平衡控制P系数Kp=20,

平衡控制D系数Kd=0.01,

平衡点Balance_point

电机平衡控制PWM值balance

Bias=Angle_x-Balance_point;//计算平衡点偏差值;

balance=Kp* Bias + w_x *Kd; ;//计算电机平衡控制PWM值;

return balance;//返还电机平衡控制PWM值;

3.2 速度控制算法

输入:左轮电机编码器encoder_left

右轮电机编码器encoder_right

初始化:速度控制函数Velocity,

速度控制P系数Kp=2,

速度控制I系数Ki=Kp/200,

电机速度控制PWM值velocity,

最新速度偏差Encoder_Least,

编码器滤波器Encoder,

编码器积分Encoder_Integral

Encoder_Least=(encoder_left + encoder_right)-0;//获取最新速度偏差等于测量速度(左右编码器之和)减去目标速度(此处为零)。

Encoder*=0.7;

Encoder+=Encoder_Least * 0.3;//设计一阶低通滤波器。

Encoder_Integral +=Encoder;//通过积分得出位移,积分时间为40 ms。

if(Encoder_Integral > 21 000)

Encoder_Integral=21 000;

if(Encoder_Integral <-21 000)

Encoder_Integral=-21 000;//对积分做限幅处理。

velocity=Encoder *Kp+ Encoder_Integral *Ki;

return velocity;//通过计算返还速度控制中的电机PWM值。

3.3 转动控制算法

输入:Z轴偏转速度w_z,

初始化:转动控制函数Turn,

转动目标值Turn_Target=0,

转动控制P系数Kp=2,

转动控制D系数Kd=0.001,

转动幅值Turn_Amplitude=80,

电机转动控制PWM值turn

if(Turn_Target > Turn_Amplitude)

Turn_Target=Turn_Amplitude;

if(Turn_Target <-Turn_Amplitude)

Turn_Target=-Turn_Amplitude;//对转动速度做限幅处理。

turn=-Turn_Target *Kp+ w_z *Kd;

return turn;//通过计算返还转动控制中的电机PWM值。

3.4 综合控制算法

输入:电机平衡控制PWM值balance,

电机速度控制PWM值velocity,

电机转动控制PWM值turn

初始化:综合控制函数PID_PWM,

转动计数Turn_Count,

左轮速度Velocity_L,

右轮速度Velocity_R

平衡PWM容器Balance_Pwm,

速度PWM容器Velocity_Pwm,

转动PWM容器Turn_Pwm;

Balance_Pwm=Balance(Angle[0], w[0]);

Velocity_L=Count_L;

Count_L=0;

Velocity_R=Count_R;

Count_R=0;//读取左右轮编码器数据并清零,由单位时间内的脉冲数得到速度。

Velocity_Pwm=Velocity(Velocity_L, Velocity_R);//将速度控制中的返还值装入综合控制中的速度变量。

if(++Turn_Count >=4)

{

Turn_Pwm=Turn(w[1]);

Turn_Count=0;//将转动控制中的返还值装入综合控制中的转动变量。

}

Motor_L=Balance_Pwm-Velocity_Pwm + Turn_Pwm;

Motor_R=Balance_Pwm-Velocity_Pwm-Turn_Pwm;//最后将左右轮各自的平衡、速度、转向三环的PWM值叠加,即得到最终输出。

4 实验与结果分析

3D打印的两轮自平衡机器人系统构建完成后,通过设计一个涵盖直线运动与转向运动的实验来验证该控制策略的效果。

运动实验具体步骤为先使机器人绕Y轴旋转90°,以查看其是否可以保持稳定的平衡状态,然后再遥控机器人以一定速度沿直线移动0.2 m,最后使机器人停止,观察趋于稳定的过程。

图9为通过MPU6050采集到的机器人的角度随时间变化的曲线。观察可知,从开始录制起的5 s内,偏航角、俯仰角和滚转角均保持固定值不变,此时机器人尚未开始运动。之后,偏航角发生了90°的变化,这是由于机器人的转动引起的。然后,机器人前进时滚转角开始逐渐增大,并在机器人停止移动后,通过振荡趋于稳定,此时机器人再次处于稳定平衡状态。

图9 两轮自平衡机器人系统的角度-时间变化曲线

结果表明所设计的模糊自适应控制策略对于无精确数学模型的3D打印的两轮自平衡机器人系统具有良好的控制能力和自适应性。该控制策略可以为两轮自平衡机器人在转弯模式,前进模式和停止模式下保持稳定平衡状态。

5 结论

所设计的模糊自适应控制策略对于无精确数学模型的3D打印的两轮自平衡机器人系统具有良好的控制能力和自适应性。该控制策略可以为两轮自平衡机器人在转弯模式,前进模式和停止模式下保持稳定平衡状态。

猜你喜欢

控制算法编码器控制器
融合CNN和Transformer编码器的变声语音鉴别与还原
基于模型预测控制算法的智能密度控制系统在选煤厂的应用
工商业IC卡控制器改造为物联网控制器实践
转炉系统常用编码器选型及调试
舞台机械技术与设备系列谈(二)
——编码器
PLC可编程控制器相关外置的选择计算研究
高精度位置跟踪自适应增益调度滑模控制算法
基于数字信号处理的脉冲编码器
刚体航天器大角度姿态机动控制算法
基于航迹差和航向差的航迹自动控制算法