一种用于自适应光学操控系统的QT和Matlab多线程混合编程
软件架构
技术领域
背景技术
[0002] 自上世纪50年代,人们提出自适应光学技术(Adaptive Optics,AO),有效改善了光学系统的成像
质量,已成为天文地基望远镜克服大气
湍流影响、获取高分辨
力成像结果的必备技术(HW Babcock,The possibility of compensating astronomical seeing[J],Publ.Astron Soc.Pac.,1953,65:229~236;姜文汉,自适应光学技术[J],自然杂志,2006:28(1):7-13)。自适应光学系统主要由光机系统和电控系统两个部分组成,其中光机系统主要包括低阶倾斜校正镜、高阶波前
变形镜、哈特曼波前
传感器以及其它辅助光学元器件,电控系统主要包括高速
信号实时处理机以及用于调试和管理自适应光学系统的操控
系统软件。
[0003] 自适应光学操控系统软件的主要功能包括:通过图形化
人机交互界面获取用户操控指令,采集高速信号实时处理机以及其它外部设备的各种状态参数,并通过数据
可视化技术将状态参数快速绘制为用户可直接察看的图形图像数据,实现对自适应光学系统工作状态的准实时监控;同时操控系统软件还需执行各种操控
算法完成对自适应光学系统的参数标定和性能调试,包括哈特曼质心标定、变形镜传函测试、波前斜率计算和波面像差重构等核心计算功能,在此
基础上将标定参数和配置文件加载给高速信号实时处理机完成自适应光学系统对大气湍流的闭环校正。
[0004] 目前,自适应光学操控系统软件的设计通常采用单线程工作模式,即软件的运行从采集高速信号实时处理机以及其它外部设备的状态参数开始,然后经各种操控算法对状态参数进行处理运算,最后将计算结果进行可视化绘制并显示在人机交互界面上。然而随着自适应光学系统的升级和自适应光学技术的发展,采用上述串行工作模式研制的操控系统软件已无法满足工程实际的需求,例如传统自适应光学系统控制的高阶波前变形镜单元数由最初的几十单元升级为几百、数千单元,相应波面像差重构的阶次也由原来几十项提升为数百项,导致算法运算量急剧增加,而哈特曼波前传感器也由点目标的质心提取算法发展为用于扩展目标的绝对差分和相关算法(饶长辉等,太阳自适应光学技术进展[J],光电工程,2018,45(3):170733),并且自适应光学技术也由传统AO发展为GLAO(Ground Layer AO)以及MCAO(Multi-Conjugate AO)(Esposito S.Introduction to multi-conjugate adaptive optics systems[J],Comptes Rendus Physique,2005,6(10):1039-1048),导致算法复杂度越来越高,从而迫切要求操控系统软件采用多线程应用程序
框架,具备更高的运行效率和处理能力,以及扩展复杂算法的灵活性。
[0005] 基于C/C++语言的跨平台可视化图形开发工具QT适合人机交互界面以及底层数据通讯的程序功能实现,而商业数学软件Matlab提供的高级科学计算语言以及丰富的数值计算函数,更适合复杂算法的程序编写和代码调试,因此搭建QT和Matlab混合编程的软件开发环境可以充分发挥两种编程语言和平台的优势,将有效降低操控系统复杂算法的研制难度,缩短操控系统软件的开发周期。
发明内容
[0006] 本发明所解决的技术问题是:针对目前已有的自适应光学操控系统软件存在单线程工作模式运行效率不高,以及采用C/C++语言实现复杂算法效率较低的不足,导致自适应光学操控系统软件研制周期较长、运行速度较慢以及算法扩展不灵活的问题,首次提出一种用于自适应光学操控系统的QT和Matlab多线程混合编程软件架构,可以有效降低自适应光学操控系统复杂算法的开发难度、显著提高操控软件的运行效率,并且能大大缩短操控软件的研制周期。
[0007] 本发明解决上述技术问题采用的技术方案是:一种用于自适应光学操控系统的QT和Matlab多线程混合编程软件架构,首先将自适应光学操控系统按功能需求划分为人机交互、数据通讯和数值计算三个功能
正交化的任务模
块,然后利用跨平台可视化图形开发工具QT和商业数学通用软件Matlab,搭建基于C/C++语言和Matlab高级科学计算语言的混合编程软件开发环境,并采用多线程应用程序框架实现自适应光学操控系统所需的全部功能。通过功能正交化的模块划分,可以最大程度的减少模块之间的耦合度,确保人机交互、数据通讯和数值计算三个模块可以同时独立、并行的执行各自任务。其中人机交互模块主要完成图形界面的绘制、用户指令的获取和各种状态参数的可视化;数据通讯模块主要完成自适应光学操控系统与各种外部设备之间的数据通讯,利用采集卡、网络和串口等通讯
接口获取外部设备的准实时状态参数,并将用户指令、计算结果以及控制命令发送给对应设备;数值计算模块主要完成自适应光学操控系统各种复杂算法的运算处理,包括哈特曼质心标定、变形镜传函测试、波前斜率计算和波面像差重构等核心计算功能,由于核心算法通常涉及较为复杂的数学求解和矩阵运算,多线程应用程序框架通过Matlab工作引擎提供的通用函数接口,直接调用由Matlab高级科学计算语言编写的算法程序,充分利用Matlab商业数学软件提供的丰富函数进行高效的算法开发,从而将复杂算法的程序实现从C/C++语言平台移植到通用数学软件Matlab中完成。
[0008] 进一步地,所述的软件架构将自适应光学操控系统按功能需求划分为人机交互、数据通讯和数值计算三个功能正交化的任务模块,并通过相互独立的工作线程同时执行三个模块的并行计算和逻辑控制。
[0009] 进一步地,利用Matlab高级科学计算语言实现的自适应光学操控系统算法程序可以是基于脚本的代码文件,也可以是经过Matlab集成化软件平台编译后的动态链接库。
[0010] 进一步地,可视化图形开发工具QT和商业数学软件Matlab均支持跨平台应用程序开发,所述的软件架构可以用于基于Windows和Linux
操作系统的自适应光学操控系统软件研制。
[0011] 进一步地,用于可视化图形界面开发的工具可以是QT、Visual Studio和Python等集成化软件开发平台;用于自适应光学操控系统复杂算法实现的高级科学计算语言可以是Matlab、MathCAD、Maple和Mathematica等通用数学编程语言。
[0012] 进一步地,所述的软件架构具有操控软件方案设计的通用性,不仅可以用于自适应光学操控系统的软件研制,还可以用于其它工业控制过程中操控软件的开发。
[0013] 本发明的原理是:
[0014] (1)将自适应光学操控系统按功能需求划分为人机交互、数据通讯和数值计算三个功能正交化的任务模块,可以确保三个模块同时独立、并行的执行各自任务;软件在运行过程中,数值计算模块在对当前状态参数进行科学计算的同时,人机交互模块可以绘制上一批运算结果,而数据通讯模块也可以同时获取下一组待处理数据。
[0015] (2)自适应光学操控系统的核心算法通常涉及较为复杂的数学求解和矩阵运算,相比直接利用C/C++语言完成相同复杂计算功能的程序实现,采用商业数学软件Matlab提供的高级科学计算语言以及丰富的数值计算函数,可以更加高效简洁的完成算法程序的编写。
[0016] (3)在可视化图形开发工具QT搭建的多线程应用程序框架中,通过配置Matlab工作引擎的运行环境,利用通用函数接口即可直接调用由Matlab高级科学计算语言编写的算法程序,可以确保QT和Matlab多线程混合编程软件架构的工程实施。
[0018] (1)本发明针对自适应光学操控系统提出的功能正交化任务划分,并利用多线程应用程序框架并行处理三个模块的相应功能,可以显著提高自适应光学操控系统软件的运行效率。
[0019] (2)本发明提出的利用商业数学通用软件Matlab提供的高级科学计算语言实现自适应光学操控系统复杂运算求解,可以有效减低操控系统复杂算法的实现难度、缩短操控软件的研制周期、大大提高扩展复杂算法的灵活性。
[0020] (3)本发明提出的利用可视化图形开发工具QT和商业数学软件Matlab进行多线程混合编程软件架构支持跨平台应用程序开发,可用于基于Windows和Linux操作系统的自适应光学操控系统软件研制。
[0021] 本发明所具有的上述优点,为自适应光学操控系统软件的研制提供了一种高效稳定的软件架构,具有显著的实用价值。
附图说明
[0022] 图1为本发明提出的一种用于自适应光学操控系统的QT和Matlab多线程混合编程软件架构的模块组成及运行
流程图;
[0023] 图2为多线程混合编程软件开发环境启动Matlab工作引擎后的调试窗口,并通过whos指令列举出Matlab工作引擎中已分配的所有变量;
[0024] 图3为采用本发明研制的自适应光学操控系统软件人机交互界面,其中图3(a)是用户命令窗、图3(b)是哈特曼光斑图、图3(c)是变形镜
电压状态图、图3(d)是波面像差重构图、图3(e)是泽尼克系数分布图、图3(f)是哈特曼
子窗口斜率曲线图、图3(g)是
驱动器电压曲线图;
[0025] 图4为采用本发明研制的自适应光学操控系统软件在运行过程中记录的人机交互、数据通讯和数值计算三个模块的数据任务包队列工作日志;
具体实施方式
[0026] 下面结合附图以及具体实施方式进一步说明本发明。
[0027] 如图1所示,本发明一种用于自适应光学操控系统的QT和Matlab多线程混合编程软件架构,由多线程应用程序框架1、人机交互模块2、数据通讯模块3、数值计算模块4、人机交互与数据通讯模块之间的数据任务队列5,数据通讯与数值计算模块之间的数据任务队列6、数值计算与人机交互模块之间的数据任务队列7、操控系统算法Matlab程序集合8组成。其中多线程应用程序框架1通过内部
定时器,以固定时钟
频率触发人机交互模块2更新软件界面并获取用户指令,人机交互模块2将用户指令及输入数据封装为数据任务包,提交到人机交互与数据通讯模块之间的数据任务队列5中;数据通讯模块3定时从人机交互与数据通讯模块之间的数据任务队列5中获取数据任务包,根据任务需求将用户指令以及计算结果发送给对应设备,同时利用通讯接口获取外部设备的准实时状态参数,并将用户指令以及准实时状态参数封装为数据任务包,提交到数据通讯与数值计算模块之间的数据任务队列6中;数值计算模块4定时从数据通讯与数值计算模块之间的数据任务队列6中获取数据任务包,根据任务需求调用操控系统算法Matlab程序集合8中对应函数完成相应运算,并将计算结果封装为数据任务包,提交到数值计算与人机交互模块之间的数据任务队列7中;人机交互模块2定时从数值计算与人机交互模块之间的数据任务队列7中获取数据任务包,并将计算结果进行可视化绘制、更新
用户界面。
[0028] 如图2所示,采用本发明研制的自适应光学操控系统软件在运行过程中将启动Matlab工作引擎的调试窗口,表明C/C++语言和Matlab高级科学计算语言的混合编程软件开发环境已正常工作,在调试窗口中输入whos指令可以列举出当前Matlab工作引擎中已分配的所有变量;采用本发明研制的自适应光学操控系统软件人机交互界面如图3所示,其中图3(a)是用户命令窗、图3(b)是哈特曼光斑图、图3(c)是变形镜电压状态图、图3(d)是波面像差重构图、图3(e)是泽尼克系数分布图、图3(f)是哈特曼子窗口斜率曲线图、图3(g)是驱动器电压曲线图,在图3(b)窗口中实时显示的图像刷新
帧率,表明操控系统软件的运行速度大于20fps;分析操控系统软件在实际运行过程中实时记录的数据任务包队列工作日志(如图4所示),可发现人机交互与数据通讯模块之间的数据任务队列5,数据通讯与数值计算模块之间的数据任务队列6和数值计算与人机交互模块之间的数据任务队列7,均包含各自独立、待处理的工作任务,表明采用本发明研制的自适应光学操控系统软件相比传统单线程工作模式的运行效率能提高接近3倍。
[0029] 总之,本发明构造了一种用于自适应光学操控系统的QT和Matlab多线程混合编程软件架构,将自适应光学操控系统按功能需求划分为人机交互、数据通讯和数值计算三个功能正交化的任务模块,采用多线程应用程序框架同时独立、并行的处理三个模块的相应功能,显著提高自适应光学操控系统软件的运行效率;利用跨平台可视化图形开发工具QT和商业数学通用软件Matlab,搭建基于C/C++语言和Matlab高级科学计算语言的混合编程软件开发环境,将操控系统复杂算法的程序实现移植到通用数学软件Matlab中完成,有效减低操控系统复杂算法的实现难度、缩短操控软件的研制周期。本发明对自适应光学操控系统软件的研制具有重要意义,对其它工业控制过程中操控软件的开发也具有重要参考价值。
[0030] 本发明未详细阐述部分属于本领域技术人员的公知技术。