基于Free RTOS的移动机器人控制系统设计
2023-07-12陈劲杰
曹 俊,陈劲杰
(上海理工大学机械工程学院,上海 200082)
0 引言(Introduction)
随着控制技术和智能制造的快速发展,越来越多的智能移动装备应用于工业生产和人们的日常生活中。四轮移动机器人作为智能化装备的一部分,对工业和农业的改革与发展有着不可代替的作用。许多行业都需要移动机器人协助或者代替人类完成工作,这样可降低工作人员的劳动强度,提高劳动效率[1]。例如,工业园区的货物运送、快递和外卖的配送以及一些危险的勘探任务等。因此,对于移动机器人控制系统的研究符合未来发展方向并能够加快智能移动装备的发展进程[2]。当前的一些移动机器人环境适应能力差、实时性差且功能扩展性较差,难以普及。针对上述背景,本文采用FreeRTOS实时操作系统和STM32硬件平台设计了一种低成本和高实时性、可靠性的小型四轮移动机器人控制系统。
1 系统设计方案(Systemdesign scheme)
本文基于嵌入式实时操作系统,设计了四轮移动机器人小车(以下简称四轮移动小车)的下位机控制系统。四轮移动小车底层控制系统以STM32F4作为核心处理器,使用MPU6050传感器获取四轮移动小车的位姿,上传至上位机主控制器进行数据融合,以获得更加精准的位姿数据,使用BQ7692003PWR芯片模块获取磷酸铁锂电池的电压数据,并使用开路电压法和安时积分法计算电池的SOC(剩余电量),使用PI算法控制四轮移动小车的速度。通过整套设计可以实现四轮移动机器人控制的实时性和稳定性。系统总体框图如图1所示。
图1 系统总体架构图Fig.1 Overall system architecture diagram
2 系统硬件设计(Systemhardware design)
四轮移动小车下位机控制系统采用STM32F405RGT6主控芯片,通过串口USART3完成与上位机主控制器的通信,并传输下位机的相关数据[3];通过I2C双向总线获取MPU6050传感器的数据,将位姿传感器获得的数据传给主控制器;通过I2C接口获取BQ7692003PWR芯片模块传输的电芯电压数据对电池系统进行管理;使用定时器产生PWM(脉冲宽度调制),通过电机驱动模块对4个直流电机进行控制,电机通过光电编码器反馈电机的实时速度[4]。这4个子系统共同完成对四轮移动小车系统的控制,系统硬件设计架构如图2所示。
图2 系统硬件设计架构Fig.2 System hardware design architecture
2.1 MPU6050模块
MPU6050陀螺仪模块是四轮移动小车的位姿检测模块,是一种六轴传感器模块,可以同时检测三轴加速度、三轴陀螺仪的运动数据及温度数据。六轴传感器模块内置数字运动处理器,可对数据进行滤波、融合处理。该模块通过模拟I2C接口向下位机主控制器输出运动数据[5]。
2.2 电源模块
四轮移动小车的电源模块使用12 V 的锂电池,锂电池具有重量轻、容量大和寿命较长等优点。锂电池使用18650锂电池,通过串、并联方式连接后容量可达13 600 mAh,可以满足小型移动机器人的电压和电流需求,并且此类电池的质量较轻,不影响机器人的移动性能,价格较其他电池实惠,适用于小型的移动平台。
2.3 电池管理模块
使用BQ7692003PWR芯片模块对四轮移动小车进行电池管理,锂电池采用串、并联方式连接。电池分为4组,每组由3节18650锂电池串联而成。使用BQ7692003PWR芯片模块对一组3节电池进行电芯电压数据的采集,再通过开路电压法和安时积分法对锂电池的剩余电量进行实时的估算。通过I2C接口向STM32主控芯片传输电压数据。
2.4 电机驱动模块
四轮移动小车采用的电机是12 V直流减速电机。电机尾部带光电编码器,可实时反馈四轮移动小车电机的转速。电机驱动模块采用WSDC2412D,是直流电机驱动集成电路,采用标准逻辑电平信号控制;使用高性能MOSFET(金氧半场效晶体管)组成“H”桥驱动,可驱动最高300 W 电功率的直流电机;允许PWM 输入的最小脉宽低至3μs,可保证PWM 的动态调节范围。
3 系统软件设计(Systemsoft ware design)
3.1 基于FreeRTOS的软件系统设计
FreeRTOS操作系统是一款轻量级的实时操作系统,可移植在嵌入式设备上,它可免费用于商用。FreeRTOS操作系统提供任务管理、时间管理、信号量和消息队列等功能,完全可满足移动机器人的系统功能需求[6]。
四轮移动机器人软件控制系统基于FreeRTOS实时操作系统开发,软件系统架构如图3所示。需要建立6个主应用任务:串口通信任务、位姿检测任务、电机控制任务、电池状态监测任务、电池状态分析任务及信息打印任务,使用FreeRTOS操作系统对多个任务进行协调管理,各任务的功能如下。
图3 软件系统架构Fig.3 Soft ware system architecture
(1)串口通信任务。串口通信任务使用USART3和上位机主控芯片进行通信。当串口通信任务运行时,首先会对四轮移动小车的x、y、z轴的目标速度等信息进行赋值,其次使用串口将数据发送到下位机主控制器。接收信息时,会等待串口中断回调函数中的消息通知,当上位机发送命令时会触发中断接收函数,下位机对数据进行接收和解析。
(2)位姿检测任务。在四轮移动小车开机前,位姿检测模块首先使用MPU6050模块检测读取陀螺仪的零点,行驶中得到加速度传感器数据和陀螺仪数据。其次使用模拟I2C接口将数据传输到下位机主控制器。最后下层主控制器将数据发送到上位机主控制器进行数据拟合。
(3)电机控制任务。电机控制任务首先读取上位机传来的x、y、z轴的目标速度,根据编码器读取四轮移动小车的实际速度。其次使用PI算法进行调速,将得到的值赋值给PWM 寄存器对电机的转速进行调整,进而提高四轮移动小车运动控制的准确性[7]。
(4)电池状态监测任务。电池状态监测任务是通过BQ7692003PWR芯片模块对锂电池的单体电芯电压和电池组电压进行监测。测得数据可用于电池状态分析任务。
(5)电池状态分析任务。电池状态分析任务对BQ7692003PWR芯片得到的电压数据进行分析。首先进行简单的数据分析,并通过简单的计算获得最大电压差、平均电压和最大最小电压。其次使用开路电压算法和安时积分算法估算锂电池的剩余电量。
(6)信息打印任务。信息打印任务负责打印4个电机转速、锂电池的单体电压和电池的SOC等信息。
在FreeRTOS实时操作系统中,任务和中断都具有不同的优先级。调度器总是在所有处于就绪态的任务中选择具有最高优先级的任务执行。优先级相同的任务在时钟节拍中断中进行切换并执行相同的时间片大小。当任务优先级足够高,该任务就会立即得到响应,然后根据优先级依次响应。本设计中的电机控制任务和通信任务相对于电池管理任务,优先级更高。任务优先级分配如表1所示。
表1 任务优先级Tab.1 Task priority
3.2 电机PI控制
四轮移动小车的电机控制采用PI(比例积分)控制器。P为比例环节,可以反映偏差信号,以减少偏差;I是积分环节,可以消除系统静差。比例积分控制器是根据给定值与实际输出值构成控制偏差,将偏差的比例(P)和积分(I)通过线性组合构成控制量,对车速进行控制[8]。PI位置式算法离散公式如公式(1)所示:
其中,U(t)是控制器输出值;e k是本次控制器输入与设定值之间的误差;K P是比例系数;K i是积分系数。
PI算法的核心代码如下:
3.3 锂电池的SOC算法
四轮移动小车的SOC(State Of Charge),即电池剩余电量,采用的是开路电压法和安时积分法结合的方法对电量进行估算。开路电压法是在四轮移动小车长时间待机静止后以最低电芯电压为标准校准一次电容[7];安时积分法是电池充放电状态下实时对电流进行积分校准电池的实际容量,然后计算SOC值。前者用于准确地估计初始SOC值,后者用于估计实时SOC值。两种方法结合可以更加精准地估计电池的剩余电量。
开路电压法是测量锂电池后得到一个具有100个元素的数组,然后根据数组查找最小电芯电压在数组中位置对应的SOC,从而得出当前电池电量,经过实验可得开路电压与SOC关系曲线和开路电压法流程图,如图4所示。
图4 开路电压与SOC 的关系曲线图和开路电压法流程图Fig.4 Relation curve bet ween open circuit voltage and SOC and flow chart of open circuit voltage method
安时积分法,测量电池主回路的实时电流,将电流对时间积分,数值在放电时为正,充电时为负。放电过程中用初始电量减去积分结果,得到当前电量;充电过程中用初始电量加上积分结果,得到当前电量。如公式(2)所示,SOC0为锂电池荷电状态的初始值,SOCt为t时刻电池的剩余电量,Q N为电池的额定容量,I为t时刻的充放电负载电流[8]。
安时积分法的核心算法如下:
安时积分法算出的SOC为SOC1,开路电压法得出的SOC为SOC2。如果SOC2>SOC1,则SOC=SOC1,取最小值可以使SOC更为准确;如果SOC2<SOC1,则SOC=SOC2,这样可以修正放置一段时间后电池的SOC值;安时积分法和开路电压法相结合,能够估算较为准确的SOC。
4 系统实现(System implementation)
四轮移动小车的硬件平台如图5所示,主要包括四轮移动小车底盘、下位机主控制器STM32、电池管理模块、位姿传感器、电机驱动器、电机、电源。
通过实验可以证明四轮移动小车在行驶过程中有很好的实时性和动态反应能力,并且对地形有较好的适应能力。信息打印任务监控的功能如表2所示。
表2 监控信息列表Tab.2 Monitoring information list
一组电池的测试数据如表3所示。电池的最大误差为4 mV。可见,电池管理模块可以很好地管理四轮移动小车的电源,实现对电源剩余电量的监测。
表3 测试数据Tab.3 test data
5 结论(Conclusion)
本文设计的四轮移动机器人底层控制系统,采用电机控制模块、光电编码器、位姿传感器、电源管理模块实现了四轮移动机器人的快速转向和加速能力,并且可实时监控电源的剩余电量。四轮移动机器人基于STM32平台和FreeRTOS实时操作系统,使用PI算法进行电机调速保证电机的动态响应,并使用开路电压法和安时积分法对电池的剩余电量进行监测,提高了四轮移动机器人的运动能力和环境适应能力,应用场景较为广泛,具有较好的实际应用价值。