徐琬婷, 柯国琴, 侯健伟
(1. 芜湖职业技术学院 汽车与航空学院, 安徽 芜湖,241006;2. 南京艾格慧元农业科技有限公司, 江苏 南京,451100)
随着移动小车的应用越来越广泛, 要求移动小车环境适应性也越来越强, 这就对移动小车的灵活性、机动性有了更高的要求, 以满足在不同的作业环境中灵活移动。目前工业上所用的移动小车类似于普通家用轿车的移动方式, 该种方式自由度有限, 对空间要求高, 不适合狭小空间。最新出现的麦克纳姆轮, 它是一种新型的, 能够适用于狭小空间的高度灵活具有高机动性的万向轮。本设计利用麦克纳姆轮构建新型巡迹移动小车, 并通过手机蓝牙进行无线控制, 可实现小车10 个自由度的移动, 且控制简单, 稳定性强, 是一种结构简单、控制方便的新型移动小车[1]。
系统需要实现多自由度精准巡点移动、无线遥控功能、循迹等功能, 充分考虑系统的成本及可靠性,制定总方案如图1 所示。
图1 系统总框图
系统采用麦克纳姆轮, 虽然非常适合于小空间、多转向的场合, 但车轮的摩擦力较大, 控制也较为复杂, 需要在不同的方向受力完成定向移动。为了能够克服轮体的摩擦力, 并实现精准控制, 系统采用了带载能力强的驱动模块驱动直流减速电机, 再利用4 个直流减速电机带动麦克纳姆轮。在这个过程中,直流电机上的编码器将实时读取解算电机转速, 并构成控制闭环, 精确控制速度。另外, 小车的瞬时移动的姿态也通过姿态传感器实时采集不断调整姿态, 保证小车的运行方向。
系统为了实现无线遥控功能。利用手机蓝牙遥控APP, 再通过蓝牙数据传输协议, 将控制信号发送至系统蓝牙模块, 并将其转化为串口信号, 与主控芯片相连, 建立数据通道, 即可实现无线控制。
综上, 通过元器件比较, 巡迹移动小车主要由下列模块构成: 它以STM32F103RCT6 为主控制器,采用BT04-A 蓝牙模块完成手机与系统通信, 红外循迹模块可以完成循迹,BTN7971 驱动模块完成电机驱动带动麦克纳姆轮, 并通过显示屏进行人机交互, 再通过MPU6050 姿态传感器和编码器进行实时姿态及速度采集, 形成速度及姿态的闭环控制[2]。
STM32F103RCT6 单片机是整个系统的核心, 在系统中, 需要用到的片内资源有: 四路PWM 输出,四路外部中断输入, 一路串口通信, 并且要有足够快的速度进行PID 运算[3]。STM32F103RCT6 单片机有64 个引脚, 内部资源丰富, 满足系统需求, 且STM32F103R CT6 单片机价格较低,可以有效的降低小车成本。
STM32F103RCT 6 单片机供电电源为3.3 V, 还需要外围电路保证其能正常运行如复位电路、时钟源以及滤波电容, 最小系统图如图2 所示。
图2 STM32F103RCT6 的最小系统电路图
麦克纳姆轮分为麦克纳姆A 轮和麦克纳姆B 轮, 为了更清晰的说明A 轮和B 轮的区别, 图3 分别展示了麦克纳姆A 轮和麦克纳姆B 轮的外形结构。
如图3 所示,A、B 轮的区别在于轮子外围辊子与轮子中轴线夹角的方向不同。麦克纳姆轮的外形结构主要是由轮子和轮子上的与轮子中轴线夹角为45°的辊子组成, 所有辊子的外轮廓线连接正好是一个圆, 以此来保证麦克纳姆轮时刻着地[4],因为A、B 轮的机械结构的不同, 朝同一方向转动时, 会产生力的方向也不同。
图3 麦克纳姆轮外形结构
接下来分别对麦克纳姆A、B 轮进行力学分析。首先是麦克纳姆A 轮的正转和反转的力学分析图如图4 所示。由图4 可知, 当麦克纳姆A轮正转时, 轮子外周与地面辊子会向前旋转, 因为辊子是与轮子中轴线呈45°夹角, 所以产生的是一个垂直于辊子向前的力, 与正前方向夹角45°, 因为力是一个矢量, 利用力的正交分解法, 将合力分解为X方向和Y方向两个分力, 便于麦克纳姆轮的受力情况分析, 受力分析如图4 所示。同理可以得到麦克纳姆麦克纳姆B 轮正、反转时的受力分析如图5 所示。
图4 麦克纳姆A 轮正转和反转的力学分析
图5 麦克纳姆B 轮正转和反转的力学分析
麦克纳姆轮构成有多种组合, 下面分析能实现全向移动的麦克纳姆轮轮组合ABBA, 此种排列方式,4 个轮子的辊子方向呈现“X”型, 所以又称“X”型排列[5]。
首先是移动平台的前向直行, 要实现移动平台前向直行, 必须使移动平台左右方向即X方向合外力相互抵消, 仅剩下前向的力[6]。4 个麦克纳姆轮均向前转动时的受力示意图如图6 所示, 由图6 可知, 此时左右方向, 即X方向的力均已经两两抵消,4 个车轮都只剩下往前的分力, 这样一来, 整个移动平台所受合外力向前。由此可得: 若要移动平台朝前直线移动, 只需要4 个轮子均往前转动即可实现[7]。另外, 由于麦克纳姆轮正转和反转时的力是完全相反的, 所以可以推测出, 若要实现移动平台的后向直线移动, 只需要4 个轮子与前向移动时的转向完全相反, 即4 个轮子均往后转动即可[8]。
图6 ABAB 组合下的移动平台前向直行受力分析
再次, 实现全向移动还需要朝左前、右前、左后、右后45 度4个方向的移动, 在此选用一个右前方向为代表进行分析, 受力分析如图7 所示, 当只有左前轮和右后轮正转其他两轮不转动时, 移动平台所受合力朝右前方。移动平台往右前方45 度平移, 此时其他两个不转动的轮子是不会跟地面产生巨大摩擦力从而导致不能按照正常的轨迹进行移动的, 因为麦克纳姆轮的机械结构是每个麦克纳姆轮外周都有一圈辊子, 辊子是可以自由转动的, 这样两个不转动的轮子跟地面之间的摩擦就是辊子和地面之间的滚动摩擦, 相较于滑动摩擦是小很多的, 所以不会出现不能按照正常理论预定轨迹运动的情况[9]。
图7 ABAB 组合下的移动平台向右前方45 度平移受力分析
除此之外, 就是移动平台的原地旋转。首先, 要实现移动平台的原地左向旋转, 只需要左边前后轮向后转动, 右边前后轮都向前转动就可以实现[10]。同理, 要实现移动平台的原地右向旋转, 只需要右边前后轮向后转动, 左边前后轮都向前转动就可以实现。
麦克纳姆轮全向移动平台有10 个自由度, 移动的受力情况和实现方法, 如表1 所示。由以上分析可知, 要想实现遥控循迹小车的10 个自由度的全向移动, 可以通过单片机控制车轮电机的旋转方向来实现。
表1 麦克纳姆轮移动平台不同移动状态对应车轮转向总结
小车与手机之间采用了BT04-A 蓝牙通信模块进行通讯, 由于该模块采用了蓝牙3.0 的传输协议, 所以在传输距离和稳定性上有很大的提升。该模块有6 个引脚, 其中TXD 和RXD 是串口通信的引脚,TXD 用于发送数据, 与单片机的串口二的接收引脚(RXD)相连接, 同样,RXD 是控制数据接收的引脚与主控芯片的串口二的发送引脚(TXD)相连, 构成完整的数据传输通路。电路连接原理图如图8所示。由图8 可知BT04-A 的两个信号引脚与主控芯片的PA3、PA2 相连,其中PA2 是主控芯片串口2 的TXD,PA3 是主控芯片串口2 的RXD。
图8 蓝牙模块原理图
BTN7971 驱动电路由三部分组成, 一部分是以BTN7971 芯片为主体的驱动电路主体, 第二部分是电源电路, 主要包括一些滤波电路和电压转换电路, 第三部分是光耦隔离电路, 它的主要作用是把来自主控芯片的控制信号与电源的供电线路隔离开, 因为电源供电电路是12 V 左右的较高电压, 而控制信号是3.3 V, 所以需要隔离以防止主控芯片被烧坏。BTN7971 电机驱动能力强、内阻小、响应快, 可以保证直流电机的驱动力。在驱动电路中, 选用HCPL-2630 芯片完成了光耦的隔离, 具体电路如图9 所示。
图9 BTN7971 驱动电路主体原理图
利用BTN7971 驱动控制电机, 可利用单片机控制一个脚输出PWM信号, 另一个脚输出固定的高低电平, 通过控制PWM信号的高低电平时间来改变电机管脚的电平, 实现同速反转。
红外循迹模块的功能是能够识别地面上预先设定好的黑色路线, 并将信号传送至单片机, 控制小车按照预设路径, 自动完成循迹动作。采样数字量输出的模块, 可以与单片机进行通信。当红外对管检测到黑色时, 会通过OUT 输出一个电平给单片机, 实现循迹。红外循迹模块电路图如10 所示。
在系统中, 编码器电机是构成速度闭环的核心器件。它不仅要有足够的转动扭矩, 以提供驱动力,还要有速度反馈装置, 以构成速度闭环, 为PID 算法提供反馈量。因此有2 种方案: 一是集成的编码器直流减速电机, 二是用普通的直流减速电机,配合测速传感器进行使用, 但精确度和体积略比集成的编码器电机减速差, 所以选用集成的编码器电机。电机编码器检测车轮的转速传送给单片机, 单片机对其进行反馈控制, 精确控制车速, 并提高系统运行稳定性和小车行进轨迹的精确度, 尽可能减小轨迹偏移。设计中所用到的编码器是与动力电机集成在一起的, 编码器的原理图如图11 所示, 编码器电机共有6 根管脚, 其中两根用于驱动电机正反转, 剩余4 个端口, 有两个是编码器供电端口, 剩余的两个端口是编码器的脉冲输出端口, 输出两相相位相差90°的脉冲信号, 用于解算电机转速和转向。
图10 红外循迹模块电路图
图11 编码器电机原理图
姿态传感器MPU6050 集成了3 轴陀螺仪,3 轴加速度计, 以及一个可扩展的数字运动处理器。为了实现更加精确地循迹, 以及定点启停, 就必须采用MPU6050 作为小车的实时姿态反馈传感器, 并在软件中每10 ms 对该传感器的数据进行读取和解算, 获取小车姿态数据。
手机蓝牙遥控APP, 通过蓝牙数据传输协议, 将控制信号发送至BT04-A 蓝牙模块, 通过蓝牙模块转化为串口信号, 蓝牙模块的TXD、RXD 分别与主控芯片的USART2 的RXD、TXD 相连, 建立数据通道。主控芯片接收到来自手机蓝牙遥控APP 的控制信号, 控制移动平台的4 个电机, 进行相应方向的转动, 实现对应方向移动的效果。为消除因地面摩擦或其他一切未知因素的影响, 采用了电机尾部自带的编码器, 当电机转动时, 输出两相相位相差90°的脉冲信号, 并发送至主控芯片的外部中断引脚,读取脉冲数量, 系统可以通过程序算法解算出电机的转速和转向, 作为反馈值构成电机转速闭环, 再由PID 控制算法, 计算输出PWM 信号的占空比, 输出相应占空比的PWM 信号, 控制电机转速, 达到精准巡点控制的目的。
本设计主程序有两种模式可以选择, 普通遥控模式和自动循迹模式, 两种模式用一个转换开关实现选择, 在程序最开始会判断工作模式, 模式的选择由一个开关进行控制, 在普通遥控模式状态下, 系统一直等待来自串口2 的信号, 系统对接收到的信号做出判断, 做出相应动作。在自动循迹模式, 系统会读取前后左右4 个红外寻迹模块的信号, 对轨迹做出判断, 按照地面黑色轨迹进行自动循迹。主程序流程图如图12 所示。
图12 主程序控制流程图
蓝牙接收程序是本控制系统遥控模式下的重要组成部分, 用于接收遥控信号, 实现过程为: 手机蓝牙APP 进行不同的操作时, 将发送不同的内容到蓝牙模块, 并通过蓝牙协议传输至主控的串口2, 主控芯片开启串口2 接收中断, 在中断内接收解算内容, 从而进行不同的控制。
在本设计中, 蓝牙APP 的内部设定是, 进行直行操作时,APP 会发送字母A给蓝牙模块, 同理顺时针旋转8 个方向分别是A、B、C、D、E、F、G、H, 程序内部和蓝牙手机APP 统一协议即可实现控制,具体流程如图13 所示。
图13 蓝牙控制流程图
大多数情况下对小车的循迹精度都有很高的要求, 此时仅仅依赖于一个红外循迹这一数字量反馈模块是远远不够的, 要实现更加精确地循迹, 以及定点启停, 就必须采用与其他精密的传感器配合并采用相应的软件算法进行处理, 本设计采用MPU6050 作为小车的实时姿态反馈传感器, 该传感器集成了高精度的陀螺仪、加速度计、地磁场传感器。软件中每10 ms 对该传感器的数据进行读取和解算, 获取小车姿态数据, 这将产生大量的数据需要处理, 难免会有偏差较大的数据无法使用, 因此需要软件算法相配合, 以最大限度的保证控制系统不产生较大误差, 本设计采用中位值滤波和动态卡尔曼滤波双重保障, 使得控制精度大大提高。
中位值滤波算法, 是指对一变量进行连续N次采样, 并利用C 语言冒泡排序法从大到小排序, 取中位值作为有效数据。此方法能够滤除一些过大过小无法使用的值, 是一种基本的滤波算法, 能够大幅提高控制精度的是本设计的第二重保障, 即动态卡尔曼滤波算法。
卡尔曼滤波实际上是基于对控制系统的输入输出状态的观测, 结合不同噪声源的数据进行的一种最优估计。
在本系统中卡尔曼滤波的主要作用是通过对加速度的一次积分和二次积分得到速度和位置, 通过卡尔曼滤波进行互补, 在不同干扰下做出最有估计, 具体运算过程如下:
设X为一四维数组, 为系统输入状态向量, 其中包含的4 个状态变量分别为4 个轮子对应的PWM信号占空比,Y为该系统的输出状态向量, 内包含六轴传感器观测到的数据、加速度等, 和加速度的一次二次积分得到的速度和位置信息, 构建本控制系统的状态空间表达式为
根据卡尔曼滤波算法, 构建控制系统结构框如图14 所示。由图14可知, 卡尔曼滤波器实质上在控制领域是一个状态观测器,u为系统的输入信号,e为观测器的输出和原系统输出之间的差。根据图14 可以推导出卡尔曼滤波器的数学表达式为
图14 卡尔曼滤波状态空间框图
其中黑色图线是实际传感器测量值, 红色图线为真实值,绿色图线是卡尔曼滤波后的最优估计值, 可以看出, 在添加了卡尔曼滤波算法后, 整个图线更加趋于平滑, 使得控制效果更好。
图16是加卡尔曼滤波器前后系统的误差波形, 由图16可知卡尔曼滤波器明显的降低了控制系统误差, 系统运行更加稳定。
图15 卡尔曼滤波先后控制效果图
图16 卡尔曼滤波前后系统误差波形
在本系统中要控制电机的精准转速, 只需使用增量式比例积分控制器(PI 控制器)就可以达到比较完美的效果, 所以本系统仅通过PI 控制器来控制电机转速,PID 算法的具体公式为
可通过MATLAB仿真直观看出PID算法在控制中的作用, MATLAB 程序见附录, 仿真波形如图17 所示。
图17 PID 控制器输出波形
插上电源接口的“T”形插头, 整个系统通电,BTN7971上电源指示灯亮, 主控板电源指示灯亮,OLED 开始显示,蓝牙模块指示灯闪烁, 等待连接, 电路连接正常, 如图18所示。
图18 上电后的小车
打开手机蓝牙遥控APP 连接系统蓝牙模块BT04-A, 如图19 所示为蓝牙连接成功界面, 连接成功后即可进行遥控操作, 可以使用摇杆操作。
图19 蓝牙连接成功界面图及遥控界面图
循迹模式的调试: 转换开关拨至循迹模式, 将小车放置至轨道上, 轨道如图20, 然后开启电机使能, 小车即可按照轨迹运动, 并停在固定点位置。如图20 是本设计的循迹过程, 图片左方为小车的前方, 安装于小车前方的黑色突出部分为三路红外循迹模组, 能够识别轨道颜色, 前进的同时,不断根据红外循迹模块输出的反馈信号调整姿态, 精准循迹巡点。
图20 移动机器人循迹过程
新型巡迹小车控制简单, 稳定性强。针对目前移动小车移动转向空间需求大的问题, 系统采用了麦克纳姆轮, 并利用编码器及姿态传感器实时采集车轮的速度及小车姿态, 实现了对小车多方位的闭环控制。为了满足巡点要求,采用了红外模组进行识别, 通过对黑度的辨别输出数字量, 完成了小车的巡点功能。对于在调试过程中, 出现的巡点稍有误差的问题, 利用了多种循迹算法, 包含中位值滤波算法通过大量的处理数据, 滤除一些过大过小和无法使用的值, 从而大幅增加控制精度。而卡尔曼滤波, 则是通过4 个轮子对应4 个状态变量的PWM 信号占空比、六轴传感器观测到的数据及加速度来通过算法进行不断调整控制速度及姿态, 最终使得巡迹小车精准到达指定位置。系统速度及姿态都采用了闭环的PID 控制, 保证了小车运行的稳定型。新型巡迹小车具有很强的灵活性和机动性、操作方便, 是一种非常值得推广的全向移动小车。