有限状态机编程提高图形化机器人软件实时性的方法
2018-01-09孙会祥
孙会祥
摘 要:图形化机器人编程软件降低了机器人程序开发难度,然而,简单的图形化编程系统提供的控件有限,用户无法通过图形控件进行定时与中断系统的编程,因此程序的实时性一般难以保证。针对上述问题,提出了基于有限状态机思想进行图形化机器人程序的开发思路,测试表明,在不使用定时与中断的情况下,程序实时性得到很大提高。
关键词:有限状态机 图形化机器人编程软件 实时性
中图分类号:TP311.1 文献标识码:A 文章编号:1003-9082(2018)11-0-01
引言
当前,简单的机器人控制程序一般直接基于裸机编程,程序整体结构为前后台系统。对于功能复杂的系统则经常基于嵌入式操作系统进行应用程序的开发。随着程序设计技术的发展,图形化机器人编程软件开始出现并快速发展(如创意之星机器人开发环境NorthStar,乐高机器人开发环境ROBOLAB等)。图形化编程方法降低了程序设计的复杂度,开发人员不需要掌握或精通汇编语言或高级语言就可以进行机器人程序设计,有利于机器人程序开发的快速入门,特别适合于中学生以及高职大学生学习机器人技术。然而,由于目前普通的图形化机器人开发软件存在控件不够多,硬件底层支持不够,不支持多线程编程等问题,当程序控制任务较多,实时性要求比较高时,简单的顺序结构的图形化编程难以完成任务。
有限状态机( Finite State Machine,FSM)广泛应用于自动化、数字系统、计算机系统等领域,PLC 控制器的顺序控制功能、CPU 的指令执行控制等,均是 FSM 的典型应用范例[1]。机器人控制程序的开发也完全可以基于有限状态机方法编程。针对简单图形化机器人编程软件编写的程序实时性不高问题,本文探讨了基于有限状态机编程提高图形化机器人程序实时性的方法。
一、研究背景
前后台结构的嵌入式程序中,如果程序中存在等待、死循环、长延时代码,则极易导致整个软件的实时性降低。对于按键设备来说,系统实时性低即意味着较差的人机操作体验,而对于执行器设备来说,系统实时性低则可能会造成严重的生产事故。有限状态机能够处理任务并发过程,是设计复杂系统的基础。当 CPU 速度满足要求时,就可以认为这些状态机是并行工作的 [2]。
简单的图形化机器人编程软件没有提供定时器、中断系统的图形化编程控件,无法完成前后台结构的程序。此外,只要编程中使用了延时控件并且设置延时时间稍长时,整个程序就没有实时性可言。本文通过带紧急放行功能的简易交通灯控制器设计任务,介绍采用有限状态机编程提高图形化机器人程序实时性的方法。任务要求为:正常工况下,东西向绿灯亮20秒(此时东西向红灯灭,南北向红灯亮,南北向绿灯灭)→南北向绿灯亮20秒(此时南北向红灯灭,东西向红灯亮,东西向绿灯灭),循环以上控制;任意时刻按一下紧急放行键,则东西向和南北向绿灯均亮60秒(此时东西向、南北向红灯均灭)后,进入上述东西向、南北向轮流绿灯亮20秒正常工况。
二、有限状态机及其编程关键
有限状态机( Finite State Machine,FSM) 是描述有限个状态以及在这些状态之间进行转移和动作等行为的数学模型 [1]。通常用有向图来表示有限状态机,其节点代表状态 [3]。有限状态机在任何时候只能处于给定数目状态中的一个,它以事件驱动的方式工作,当接收到一个事件时,状态机产生一个输出,同时也可能伴随着状态的转移。
状态机的时间序列信号对状态机的实时性有重要影响。基于有限状态机编写图形化机器人程序,要保证程序具有良好的实时性,就必须合理设计状态机的时间序列同步触发信号。若间隔太短,对系统的速度、频率响应要求高,并且可能降低系统的效率;若间隔太长,系统的实时性差,响应慢,还有可能造成外部输入信号的丟失。一般情况下,时间序列的时间间隔的选取,应稍微小于外部输入信号中变化最快的周期值[4]。
三、应用有限状态机编程提高图形化机器人软件的实时性
遵循上述状态机时间序列间隔的选取原则,由于人手进行一次按键操作的时间一般为几十-几百毫秒量级,为保证按键操作响应的实时性,同时兼顾程序执行效率,程序执行的总循环时间设定为20ms左右为宜。
要提高程序实时性,必须减小程序中延时控件的延时时间,确保程序总循环时间较短(本例为20ms左右)。对于较长时间的延时(本例为东西、南北两个方向的红绿灯亮灭时间20s(用T2表示)、60s(用T1表示)),则采用对整个程序循环执行次数进行计数的方法实现。程序流程如图1所示(限于篇幅略),状态转移图如图2所示。
测试表明,交通灯控制功能达到设计要求,紧急放行按键实时性较好。需要说明的是,20秒、60秒延时时间实测会有极小的误差,主要原因是这两个时间是通过对主程序的循环次数进行计数得到的,主程序循环一次的时间是按20毫秒计算的,忽略了20毫秒延时控件以外其余控件的执行时间,当微处理器指令执行足够快的情况下,这部分控件的执行时间相较于20毫秒来说是完全可以忽略不计的。
结语
有限状态机建模是数字电路设计、嵌入式系统软件设计的有效方法。本文以一个简单的例子介绍了有限状态机在提高简易图形化机器人程序实时性中的应用,对于不使用定时与中断系统但对软件实时性又有一定要求的控制软件开发具有一定意义。
参考文献
[1]冯建文. 有限状态机在FPGA硬件实验中的应用[J]. 实验室研究与探索,2017,36(6):138-141.
[2]郭兆正,于鹏,于震. 基于有限状态机建模的单片机编程方法研究[J]. 渤海大学学报,2016,37(3):266-270.
[3]魏先民. 有限状态机在嵌入式软件中的应用[J]. 潍坊学院学报,2006,6(4):24-25.
[4]郑玉章,徐爱钧. 嵌入式开发过程中按键检测算法的改进[J]. 单片机与嵌入式系统应用,2014,8:73-75.