刘义乐, 张进秋
(陆军装甲兵学院车辆工程系, 北京 100072)
时间序列指一串按时间先后顺序有序排列的观测值[1],具有数据点多(往往达到亿级)、数据链长和冗余点多的特点,只有在某个时间段,这些数据才会按照某种规律变化而具备分析意义。为了找到并表示这些有意义的片段,人们提出了利用不同模式来分段表示时间序列的各种方法,如频域表示法、符号表示法和分段直线表示法等[2]。
坦克驾驶训练过程中所产生的动作数据是一种典型的时间序列,不仅数据点多、数据链长、冗余点多,且具有稳定的数值特征和固定时序组合,因此应采用分段方法来表示数据中所包含的不同动作及其相互间的时间关系,但需要结合这些动作的数值特点和教范要求来定义完备的动作模式,明确各动作模式的数据特征。基于此,笔者按照模式识别的思路来分割驾驶动作数据,识别各种动作模式,以达到对驾驶动作进行精细化分析的目的。
设时间序列为X=(x1,x2,…,xn),将其分为k+1(k< (1) 也可表示为 式中:ta1,ta2,…,tak表示分割点所对应的时刻;wi为[ta(i-1),tai]之间的模式;fi(t,wi)表示连接模式wi两端点的函数;ei(t)为一段时间内时间序列与它的模式之间的误差。这种把时间序列分割后用模式表示的过程,称为序列分割或者数据压缩[3]。常见的时间序列分割方法包括重要点分割法[4]、滑动窗口分割法[5]等。 驾驶动作数据分割的目的在于,判定当前数据中包含了哪些驾驶动作,明确各动作的起始时间。其中:驾驶动作可通过模式识别的方法实现,对应时间序列分割定义中的fi(t,wi)模式函数;各动作起始时间,对应时间序列分割定义中各子序列模式起始点t1,ta1,ta2,…,tak。 离合器动作数据是指驾驶训练过程中所产生的离合器踏板位移数据。图1为任意截取的一段离合器动作位移曲线,属于一种典型的时间序列。 图1 离合器动作位移曲线 按照训练效果分析需求,离合器动作模式可分为单一动作模式和组合动作模式。单一动作模式是指单一动作件的一次运动状态改变,结合驾驶动作实践和离合器动作位移曲线,可知:常见的离合器动作共有6种动作模式,即原始位置C1、分离位置C2、半联动位置C3、踩离合C4、松离合C5、错误动作C6。 离合器单一动作模式识别的目的,是通过对离合器动作位移数据的处理识别出离合器上述6种动作模式。从离合器动作实践和离合器动作位移数据曲线形状来看,这6种动作模式的区分主要依赖2类特征:一是位移特征,3个位置均有相对稳定且明确的位移范围;二是运动速度特征(包括运动方向),当处于松离合或踩离合2种运动状态时,运动速度不能为0且运动方向相反。因此,可以根据位移和速度这2类特征来完成离合器6种动作模式的识别。识别规则如表1所示。 表1 离合器动作模式识别规则 从离合器动作数值特点看,即使经过平滑预处理,其踏板的原始位置C1、分离位置C2和半联动位置C3也会受机械结构(如回位弹簧疲劳、连杆变形、连接件磨损、松动等)影响而发生一定程度的偏离。为了弥补这一缺陷,设定离合器踏板3个位置模式的参考值的偏差范围为±10%。 离合器动作的速度特征由位移曲线求导得到。对某车辆离合器13 344组位移数据进行求导,得到速度分布如图2所示。可以看出:1) 当离合器处于静止状态时,仍会存在大量速度<2 mm/ms的毛刺,即信号采集的噪声;2) 当踩踏或松开离合器时,踏板的运动速度>>2 mm/ms,而在极端情况下的踩踏或松开速度可达10 mm/ms以上。基于这一判定,把离合器运动和静止的速度区分阈值设置为2 mm/ms,将图1、2中的横坐标点逐一比较,可以看出:只要阈值设置合理,离合器各运动速度的突变点与运动状态转换点是一一对应的。 图2 离合器动作速度分布 在建立各动作模式识别特征和阈值的基础上,按图3所示流程编程,对离合器动作的每点进行模式识别,把离合器原始位移序列转变为离合器动作模式序列。在很多时间序列处理技术中,也将这一步工作称作时间序列符号化表示[6]。 图3 离合器动作模式识别流程 离合器动作数据分割的目的为明确各动作模式的起止时间。前文根据速度特征和位移特征对离合器每一个位移点进行了模式识别和符号化表示,但离合器动作数据的长度未产生变化,仍存在冗余数据多、求解时间长的问题。 借鉴时间序列的滑动窗口分割法,以相邻2个模式符号为窗口宽度进行比较:若动作模式Cp相同,则继续比较;否则,记为分割点,输出该点的动作模式和时间序列索引号q(q=1,2,…,N),从而完成离合器动作数据的分割[7]。分割算法伪代码如下: 算法名称:时间序列的滑动窗口分割法。 算法输入:离合器动作模式识别结果时间序列C={Cpq∈Cp,p=1,2,…,6,q=1,2,…,N}。 输出:分割点序列IP。 算法步骤: 1)cp→IP[1],index =2;∥将序列第1个点作为第1个重要点; 2) forp=2 toN-1 do; 3) begin; 4) Ifcp+1≠cp; 5) thencp+1→IP(index),index + +;∥将序列点cp加入IP 中; 6) end。 由算法步骤可以看出:该方法只需对离合器动作模式序列进行一次扫描,就可以得到分割点序列,其时间复杂度为O(N)。 选择一组离合器动作数据,共计包括13 344个位移点,采用上述离合器动作模式识别和序列分割的方法对该数据序列进行处理,其各动作模式识别和分割的起始时间点如表2所示。对表2中某一次离合器动作曲线放大,得到的分割点与动作模式转折点的对应关系如图4所示。可以看出:各分割点的确定与动作模式转换点基本吻合,说明所采用的模式识别和数据分割方法适用于离合器动作分析。 表2 离合器动作数据分割点 图4 离合器动作曲线分割点与动作模式转折点的对应关系 将时间序列进行分割,转变为符号化表示形式,是降低时间序列数据处理难度的有效方法。笔者提出的基于模式识别和滑动窗口相结合的离合器动作数据分割方法,既考虑了离合器单一动作模式的识别和符号化表示,也考虑了不同动作模式之间的分割点识别,计算比较简单,易于实现,且识别和分割结果能够完整反映离合器动作数据的动作特征,对后续各类动作数据处理和训练效果有重要意义。2 离合器动作模式识别
2.1 离合器动作数据
2.2 离合器单一动作模式定义
2.3 离合器动作模式识别规则
2.4 模式识别阈值设置
3 离合器动作数据分割
3.1 滑动窗口分割算法
3.2 离合器动作数据分割示例
4 结论