坦克驾驶协同动作模式表示与匹配方法
2019-11-27刘义乐刘峻岩
刘义乐, 刘峻岩
(陆军装甲兵学院车辆工程系, 北京 100072)
坦克驾驶训练中,对基础驾驶动作的考核要求为:在规定的时间内要完成规定次数的指定动作,且要保证一定的动作正确率。如:坦克基础驾驶练习要求,驾驶员在模拟器和驾驶椅训练时,在100 s内完成发动(1次)、1挡起车(1次)、制动转向(10次)、换2挡(10次)、换1挡(10次)、停车(1次)、熄火(1次),共计34个(次)动作,且错误次数在7个(次)以内[1]。在使用驾驶椅训练时,上述动作评定只能通过教员目视判定。由于操作件多、动作频率快,大多数教员只能目视挑选一些典型错误动作,难以准确计数。若引入模拟器和驾驶教练车等具备相应动作数据存储装置的专用训练器材,则整个训练过程的各种操作数据均可记录下来,如文献[2-4]的作者虽然提出了离合器动作识别方法,但无适合的方法对基础驾驶中多操作件协同动作进行分析和自动考核。
车载传感器和训练装备技术的发展,使得全方位全过程的存储训练数据变为可能,也为数字化评估驾驶训练效果提供了海量的数据基础。然而,如何把这些数据所包含的驾驶信息与教材教范中自然语言所描述的驾驶动作相对应,并根据考核标准提取相应的特征数据,是驾驶动作分析的重难点工作。鉴于此,笔者结合驾驶过程中离合、挡位、油门等操作件的动作特点和所采集的驾驶动作数值特征,提出了采用字符和字串分别表示驾驶单一动作和协同动作的编码方法,并依据《各型坦克驾驶员教材》[5](以下简称《教材》)中规定的动作要领,编制了标准协同动作字符串,最后借鉴成熟的字符串模式匹配算法实现了驾驶协同动作的准确识别,以期为驾驶训练自动化考核提供技术支持。
1 坦克驾驶单一动作模式表示
基于驾驶动作数据的获取来源和存储形式,把驾驶动作区分为单一动作和协同动作。所谓单一动作,是指单一操作件所做的一次运动状态改变,用指定的模式编码表示。如:离合器单一动作,可根据离合器踏板的位置以及运动速度、运动方向进行识别和分类,并编码为离合器踏板保持在原始位置C0、踩离合踏板C1、离合器踏板保持在分离位置C2、松离合踏板C3、离合器踏板在半联动位置附近运动C4及非上述状态的错误动作C5等6种动作模式;挡位单一动作,可根据挡位位置分类,并编码为空挡位置D0、1挡位置D1、2挡位置D2、3挡位置D3、4挡位置D4、5挡位置D5等6种动作模式;油门单一动作,可根据油门踏板位移变化量和当前位置进行分类识别,编码为保持小油门A1、加油 A2、保持大油门A3、减油A4等4种动作模式,识别规则如表1所示。
表1 油门单一动作模式识别规则
针对驾驶训练过程中所采集的油门踏板、离合器踏板位移数据和挡位位置数据,可通过动作模式识别和动作数据分割的方法获得每个操作件单一动作的模式编码和起始时刻[4]。图1为离合器、挡位和油门单一动作和协同动作曲线,其中:各单一动作模式识别结果由2个元素组成,前一个元素是动作模式编码,后一个元素是该动作模式的开始时刻。可以看出:
1) 离合器单一动作模式识别结果:{C0,1;C1,64;C2,85;C4,158;C3,171;C4,189;C0,196;C1,291;C2,303;C3,312;C1,321;C2,326;C3,341;C0,354;C1,421;C2,431;C3,478;C0,491;C1,627;C2,639;C3,667;C0,679}。
2) 挡位单一动作模式识别结果:{D0,1;D2,144;D0,314;D3,341;D0,444;D4,481;D0,643;D5,669 }。
3) 油门单一动作模式识别结果:{A1,1;A2,151;A3,250;A4,291;A1,302;A2,315;A3,320;A4,417;A1,430;A2,457;A3,476;A4,625;A1,633;A2,653;A3,661;A4,672;A3,684;A2,688;A4,695}。
图1 离合器、挡位、油门的单一动作和协同动作曲线
2 坦克驾驶协同动作模式表示
由多个操作件的单一动作按时间顺序排列的动作,称为多操作件协同动作。如:发动、一挡起车、制动转向、换2挡、换1挡、停车、熄火等均是涉及多个操作件的协同动作,其中换挡协同动作通常包括油门、离合器和挡位的协同,转向协同动作通常包括油门、挡位和转向操作杆之间的协同。
2.1 标准协同动作模式表示
标准协同动作,是指按照《教材》中规定的正确要领进行操作时,所有操作件按照各自单一动作模式时序进行混合排列的协同动作。以一代装备定轴式变速箱1挡换2挡动作为例,《教材》中要求的正确要领为:首先,踏下加油踏板冲车;其次,踏下主离合器踏板,同时松开加油踏板;然后,将变速杆从1挡位置摘到空挡,挂上2挡;最后,迅速平稳地松回主离合器踏板,同时加油。
根据上述动作要领,可构建一个名称为“1挡换2挡”的3操作件标准协同动作,构建规则为:
1) 将该协同动作命名为3-D1-D2,含义为:包含3个操作件的1挡换2挡协同动作。
2) 确定该协同动作所包含的各操作件单一动作模式编码,按照时间顺序混合排列。根据1挡换2挡的动作要领,该协同动作可表示为A3,C1,C2,A4,D0,D2,C3,C0,A3的混合编码字符串,称为协同动作模式串。当该协同动作模式串顺序来自于《教材》中所规定的动作要领时,称为标准协同动作模式串。
3) 为便于对协同动作模式串进行存储和管理,并在更复杂的科目训练中进行层次化表示,为每组协同动作模式串指定一个缩写编码,则第i组协同动作模式串用Mi表示。
4) 该协同动作可表示为{M1:3-D1-D2:A3,C1,C2,A4,D0,D2,C3,C0,A3},即可以通过系列操作件的单一动作模式的有序组合或单一动作模式字符串来表示一组协同动作。
2.2 标准协同动作模式库构建
《教材》中规定了成千上万种协同动作,只有把每一个协同动作的正确模式都表示出来,形成较为完备的标准协同动作模式库,才能为后续的动作评价提供对照基准。通过对图1(d)进行分析可知:该段曲线所包含的协同动作模式共有4组,如表2所示。
表2 标准协同动作模式表
标准协同动作模式库是驾驶训练成绩评定的标准答案库,其构建质量将直接影响训练成绩评定结果的可信性。通过对照《教材》中对各标准协同动作的要领描述和所获得的标准协同动作模式串,可知标准协同动作模式库构建时,需要注意以下几点:
1) 标准协同动作的命名规则是一种开放式的规则,根据动作类型和评价目标不同,各协同动作的命名规则不完全相同,越复杂的协同动作、越关注细节的协同动作,命名规则越复杂。如:表2中为了区分两脚离合器换挡和一脚离合器换挡,每一个协同动作名称的后面都单独增加了一表示离合器动作类型的标志位。
2) 标准协同动作模式串构建自身要完备,要包含《教材》中规定的每一个动作,尤其是一些《教材》中未明确提出、却在实际动作曲线中有体现的动作。如:换挡要领中经常有“踩下离合器”,在实际动作曲线中,该要领却不仅仅包含“踩离合”这一个动作,还包含了“离合器踩到分离位置”这个最终状态。即标准协同动作模式串所包含的单一动作数量并不完全与《教材》中规定的动作要领数量完全一致,而通常要大于《教材》中规定的动作要领数量,需要驾驶专业人员和数据处理专业人员来共同构建标准协同动作模式串。
3) 标准协同动作模式库构建要尽可能全面。只有把所有驾驶员所有可能的正确动作都列为标准协同动作,才能最大限度地覆盖驾驶员训练过程中存在的正确动作。如:《教材》中动作要领中一些要求“同时开始”的动作,要按该操作件位移数据的存储顺序进行排列。对于“同时开始”的动作,由于传感器的响应速度、驾驶员动作幅度、各操作件单一动作模式状态转换阈值的灵敏度不同,对其模式识别的结果不一定完全相同,有可能某个动作识别结果早或晚几毫秒,将使得无法按照字符串精确匹配。因此,对于“同时开始”的动作,只有罗列出所有可能正确的动作模式串,才能准确反映驾驶员的训练成绩。
2.3 目标协同动作模式表示
“目标”是指训练过程中所采集到的驾驶员实际动作数据。可以按照操作件单一动作模式结果进行排序,规则如下:
1) 严格按照动作起始时刻顺序进行排序。如:对于{C1,40;C2,55;C3,120}、{D2,110}、{A3,120}这种3操作件单一动作代码,按照模式识别和数据分割得到的动作模式编码及其开始时间先后,其排序应为{C1,40;C2,55;D2,110;C3,120;A3,120}。
2) 对于该序列中“同时开始”的动作,可按照所采集的原始数据列表顺序进行排序。如:对于离合器和油门的“同时动作”{C0,1;A1,1},原始数据记录存储时,离合器数据始终在油门前一列,把离合器动作模式排在前面。
按照上述规则,图1(d)中3个操作件的协同动作曲线可由各操作件单一动作模式时序表示为:{C0,1;D0,1;A1,1;C1,64;C2,85;D2,144;A2,151;C4,158;C3,171;C4,189;C0,196;A3,250;C1,290;A4,291;A1,302;C2,303;C3,312;D0,314;A2,315;A3,320;C1,321;C2,326;C3,341;D3,340;C0,354;A4,417;C1,421;A1,430;C2,431;D0,444;A2,457;A3,476;C3,478;D4,481;C0,491;A4,625;C1,627;A1,633;C2,639;D0,643;A2,653;A3,661;C3,667;D5,669;A4,672;C0,679;A3,684;A2,688,A4,695}。即图1(d)所包含的协同动作曲线通过单一动作数据分割、模式识别和协同动作模式串编码,已转换成为一组包含45个单一动作代码及其开始时刻的目标字符串。驾驶动作分析的目的为:考核这个目标字符串中是否包含了需要完成的一些指定动作(标准协同动作模式串),共包含了几组,是否达到了规定的考核要求。
3 坦克驾驶协同动作模式匹配
3.1 协同动作模式匹配含义
模式匹配是数据结构和文本搜索中关于字符串的一种基本运算。假设P为给定的子(字符)串,称为模式,T为待查找的文本,称为目标。从目标T中找出与模式P相同的所有子串,称为模式匹配。如果T中存在一个或多个模式为P的子串,则给出该模式串在T中的位置,称为匹配成功;否则,匹配失败[6]。
驾驶动作分析中,标准协同动作模式串即是“模式”,而目标协同动作模式串则是“目标”。驾驶动作模式匹配的含义为:在驾驶员的目标协同动作模式串中寻找给定的标准协同动作模式串,评判驾驶员有几个动作与标准协同动作模式串相符,从而给出驾驶员在操作动作时序方面的训练成绩。
通过单一动作模式识别分割以及协同动作模式串构建,驾驶动作模式匹配问题已经转变为常见的字符串匹配问题。
3.2 驾驶协同动作模式匹配算法
字符串模式匹配中,若一次文本扫描只检测一个标准字符串与文本的匹配,称为单模式匹配,常见的匹配算法有Boyer-Moore算法、KMP(Knuth-Morris-Pratt)算法[7]和Quick Search(QS)算法等。其中:KMP算法通过引入失配函数确定目标串和模式串的回溯起始位置。即每一次的匹配时,目标串的起始位置为上一轮匹配的失配位置,而模式串的起始位置则是重复字符结构的下一位字符(无重复字符结构,则是模式串的首字符),其算法的复杂度为O(n+p),其中n、p分别为目标串和模式串的长度。
若只对文本进行一次扫描和匹配就完成对所有标准模式的搜索过程,称为多模式匹配,常用的匹配算法有Aho-Corasick(AC)算法[8]和SBOM(Set Backward Oracle Matching)算法等[9]。其中:AC算法是一种基于有穷状态自动机(Finite State Automata,FSA)算法,匹配操作之前,需要先对模式串集合进行预处理,形成树型有限自动机,然后只需对文本串扫描一次,便可以找出与其匹配的所有模式串。
选择单模式匹配的KMP算法和多模式匹配的AC算法验证。
3.3 驾驶协同动作模式匹配示例
对图1所代表的目标协同动作模式串,按照每1 000个计数单位(10 ms)重复1次的方法,重复3次,以前文列举的M1、M2、M3、M4标准串作为模式串,分别采用KMP算法和AC算法进行匹配,其中:KMP算法执行时间为0,匹配结果为
{M1:64-196;1 064-1 196;2 064-2 196},
{M2:250-354;1 250-1 354;2 250-2 354},
{M3:417-491;1 417-1 491;2 417-2 491},
{M4:625-695;1 625-1 695;2 625-2 695},
即给定的目标模式串中共包含3组M1、M2、M3、M4四种标准协同动作模式;AC算法执行时间为160 ms,匹配结果与KMP算法相同。
根据模式匹配算法对一段给定时间内的目标驾驶协同动作数据进行计算,得到指定驾驶协同动作中标准协同动作模式的正确次数及每次正确动作的开始结束时间,从而给出该练习的训练考核成绩,实现了驾驶协同动作的数字化考核。
4 结论
笔者给出了单一驾驶动作模式和协同驾驶动作模式的概念,在KMP算法基础上,利用本文设计的单一动作和协同动作编码表示方法,完成了驾驶协同动作识别和模式匹配,对驾驶动作正确完成次数进行统计,并通过算例进行了验证。本文提出的方法可以支持驾驶动作的数字化考核。