基于视觉的双轮竞速自平衡小车的设计

2019-05-20 11:05符长友王铭亮
实验技术与管理 2019年4期
关键词:竞速卡尔曼滤波倾角

符长友, 李 政, 王铭亮, 徐 飞

(1. 企业信息化与物联网测控技术四川省高校重点实验室, 四川 自贡 643000;2. 四川理工学院 计算机学院, 四川 自贡 643000)

双轮竞速自平衡小车实质上是一个不稳定的欠驱动系统,其特点为强耦合、多参数变量、非线性、多输入、多输出[1-2]。该小车控制系统的平衡动态性与抗干扰性愈强,则系统的鲁棒性愈优良、系统的平稳性就愈好[3]。无论是在工业领域还是军事领域,双轮自平衡车都有着极其重要的研究作用与研究价值。

在双轮竞速小车自平衡控制过程中,其姿态倾角测量的精准性、实时性决定了小车的控制精度与稳定性。由于双轮平衡小车的车体抖振与稳态误差,若仅仅使用陀螺仪或加速度计对小车的姿态倾角实时监测,则难以保证测量数据的精确性与可靠性[4]。卡尔曼滤波是一种多传感器数据融合算法,它将陀螺仪、加速度计数据进行优化处理、深度融合,对抖振与稳态误差进行有效抑制,并对陀螺仪的漂移误差与加速度计的动态误差进行补偿,便可得到高精度、高可靠性的运动姿态倾角[5-6]。

在竞速中,双轮自平衡小车需要准确、快速分辨出赛道的左右边界。由于红外测距、超声波测距方法,受环境影响大且存在盲区,测量结果往往误差偏大。为此采用视觉传感器,通过对比二值灰度图像,精准、快速分辨出赛道的左右边界,以确保小车在赛道内快速、平稳运动。

1 工作原理

为了使双轮竞速自平衡小车在赛道上快速、平稳、精准运动,最关键的是要从赛道的二值图像中准确、实时分辨出赛道左右边线及位置,进而演算出偏差等数据,以便更好地完成方向及转向控制。

双轮自平衡小车是一个复杂的动力学系统,涉及多变量、不稳定、参数不确定性、耦合、时变的非线性高阶方程[7-8]。双轮竞速自平衡小车受力情况如图1所示。

图1 自平衡车受力分析图

1.1 倒立摆分析

从力学上讲,平衡小车就是一个倒立摆。车体可设置成长度为L、质量为m的倒立摆,放置于可左右移动的车轮上。设外力干扰引起车体产生的干扰加速度为x(t),则沿着垂直于车体底座方向进行受力分析,可得车轮倾角θ、车轮加速度a(t)及外力干扰加速度x(t)三者之间的运动方程[9]:

(1)

经过一系列化简以及引入比例微分反馈,最终将得到2个系统极点,即:

(2)

若需系统稳定,则这两个系统极点只能位于s平面的左半部分。所以当k1>g、k2>0时,自平衡小车便可处于稳定状态[10-11]。

1.2 卡尔曼滤波

卡尔曼滤波是最小均方误差估计的一种递推算法,其核心思想是采用信号与偏差的状态方程,利用上一状态得到的估计值与当前状态的测量值来推算下一状态量,以求得当前状态的最佳估计值[4]。

卡尔曼滤波状态预测过程方程为:

(3)

卡尔曼滤波测量修正方程为:

(4)

2 系统架构

基于视觉的双轮竞速自平衡小车能精准地测量车体的倾角、倾角角速度、驱动2个独立电机以及负反馈闭环控制,与中控系统通过Wi-Fi进行数据通信。双轮竞速自平衡小车由倾角传感器、电机驱动、微处理器、赛道检测、LCD显示、Wi-Fi通信等功能模块构成,通过倾角传感器实现自身运动姿态数据的实时监测与显示、车身位置监测、电机控制等,并把姿态数据通过Wi-Fi实时传送给中控系统,如图2所示。

图2 双轮竞速自平衡小车系统功能图

中控系统是一款安装在PC机的管理软件,负责接收双轮竞速自平衡小车传送来的姿态数据并在线显示,同时也控制双轮竞速自平衡小车的运动方向与运动状态。

3 主要功能模块设计

3.1 微处理器

微处理器采用TMS320F28235,该芯片是32位浮点DSP控制器,主频可高达150 MHz。其内部采用高性能CMOS技术,含16×16、32×32介质控制(MAC)运算。采用IEEE-754单精度浮点运算单元,6通道DMA处理器,256 KB×16闪存,高达9个32位定时器[12]。其电路设计如图3所示。

图3 TMS320F28235设计图

3.2 倾角传感器

倾角传感器实时监测自平衡小车运动姿态的变化,从而及时知晓自平衡小车的运动状态。倾角传感器采用FXAS21002芯片。该芯片是一款低功耗、微型且带16-bit A/DC角速度的三轴MEMS陀螺仪传感器,其内部集成了低通滤波器,能有效抑制数字信号带宽和噪声。该芯片可配置±250/500/1000/2000(°)/s的动态量程,其精度最高为0.0625(°)/s[13]。其电路设计如图4所示。

图4 倾角传感器设计图

3.3 Wi-Fi通信模块

Wi-Fi无线通信选用超低功耗的ESP-01模块。该模块采用高性能SoC—ESP8266,内嵌1 MB Flash,128 KB SRAM,内置TCP/IP协议栈、TR开关、balun、LNA、功率放大器,支持IEEE 802.11 b/g/n,支持STA/AP/STA+AP工作模式,支持AT指令[14]。

3.4 视觉检测模块

视觉检测采用OV7670模块。该模块采用数字输出型CMOS摄像头,该摄像头含有30万像素的图像感光芯片、3.6 mm焦距的镜头与镜头座,同时含有帧同步、行同步信号,以及FIFO(先进先出)模块,能有效保证系统微处理器进行图像采集控制[15]。

4 程序设计

4.1 程序设计流程图

基于视觉的双轮竞速自平衡小车系统程序设计流程如图5所示。

图5 系统程序流程图

4.2 倾角子程序

倾角子程序部分代码如下:

voidAngle_Dip(void)

{//---加速度计算---

//范围为2g时,换算为16384 LSB/g

//角度较小时,x=sinx得到角度(弧度), deg= rad*180/3.14

//若x>=sinx,则乘以1.3作适当放大

Acce_y=GetDataFXAS(ACCE_YOUT_H); //读取y轴加速度

g_AcceData_Y=Acce_y;

Angle_ay = (Acce_y_g_fAcceZeroY) /16384; //去除

零点偏移,以计算角度(弧度)

Angle_ay = Angle_ay*1.2*180/3.14; //弧度转换为度

......

}

4.3 角速度子程序

角速度子程序部分代码如下:

voidSpeedAngleControl(unsigned char Enable)

{

floatf_PValue,f_EValue;

if(Enable==1)

{f_EValue=g_fSpeedSet-(g_PulseCountL+g_Pulse

CountR)/2.0;

f_PValue=f_EValue*SpeedControl_P+

(f_EValue-SpeedErr1)*SpeedControl_D;

SpeedErr1=f_EValue;

SpeedAngleSet=f_PValue/100.0;

if(SpeedAngleSet

......

}

4.4 卡尔曼滤波子程序

卡尔曼滤波以实现数据融合,其子程序部分代码如下:

voidKalman(void)

{float Measure_x,Measure_y,Post_data0,Post_data1,

Post_data2,Post_data3,Predict_x,Predict_y,G_predict_x,G_predict_y;

{ Measure_x=Post_data0;

Measure_y=Post_data2;

Predict_x=Post_data0;

Predict_y=Post_data2;

return(init_Kalman(Post_data0,Post_data1,

Post_data2,Post_data3));

......

}

5 数据测试结果

(1) 倾角传感器数据。双轮竞速自平衡小车在赛道上运行呈平稳态时,倾角传感器测量的姿态数据如图6所示。

图6 小车平稳时的姿态数据图

(2) 视觉传感器数据。视觉传感器OV7670检测赛道左右边线位置时的二值图像及数据如图7所示。

图7 OV7670检测赛道左右边线数据图

(3) 卡尔曼滤波效果。对陀螺仪、加速度计传感器进行卡尔曼滤波处理后,最终数据融合后的曲线如图8所示。

图8 卡尔曼滤波后数据融合图

(4) 中控系统管理界面。中控系统接收双轮竞速自平衡小车发来的姿态数据,控制管理界面如图9所示。

图9 中控系统显示运行姿态数据界面图

6 结语

基于视觉的双轮竞速自平衡小车有效实现了自平衡运动姿态、运动方向、运动平稳性的高效、精准控制,不但姿态倾角精准; 而且运动平稳性好、转弯半径小——可达零转弯半径,前进后退切换自如,因而可以广泛应用于实验教学和更多领域的研究。

猜你喜欢
竞速卡尔曼滤波倾角
基于深度强化学习与扩展卡尔曼滤波相结合的交通信号灯配时方法
氢能“竞速”
地球轴倾角的改斜归正
车轮外倾角和前束角匹配研究
系列长篇科幻故事,《月球少年》之八:地球轴倾角的改邪归正
卡尔曼滤波在信号跟踪系统伺服控制中的应用设计
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
基于有色噪声的改进卡尔曼滤波方法
竞速大挑战
小倾角GSO卫星的转移轨道优化设计