【技术实现步骤摘要】
一种用于车载平台的插件式指挥控制框架构建方法
[0001]本专利技术属于车载平台控制系统开发
,具体涉及一种用于车载平台的插件式指挥控制框架构建方法。
技术介绍
[0002]现有技术中对于车载平台的开发模式,多采用将各功能模块集成在一起的部署方式,这种方式存在诸如缺乏模块调用的统一机制,易造成依赖混乱;公用模块重复开发,资源浪费;模块间耦合度高,牵一发而动全身;系统可扩展性差等的问题,对控制系统开发构成了严重制约。基于面向服务思想的车载平台体系架构如OSGi等,通过在开发过程中引入SOA思想,能够在一定程度上克服上述缺陷,通过插件系统完成许多复杂的处理,且具有相对较低的开发难度。然而,当前主流的OSGI框架如Equinox、Apache Felix大多是基于java语言的,其虽然具有比较清晰的软件结构,但由于java运行速度较慢,不适用于构建高性能图像软件;基于C++的OSGI软件框架有CTK Plugin Framework、C++Micro Services,虽然性能较好,但是编程的API比较混乱,不适用于GUI开 ...
【技术保护点】
【技术特征摘要】
1.一种用于车载平台的插件式指挥控制框架构建方法,其特征在于:具体包括以下步骤:步骤一、基于Qt框架对所述指挥控制框架结构进行设计,框架结构中包括按照一个OSGi标准设计的支持插件式开发且使用C++语言进行编码的软件框架,和若干个具体的通讯功能模块;所述框架结构用于将无人车的单车与集群指挥控制分解为若干个服务service的交互;在设计完成后将框架文件整体移动至创建的项目文件夹下;步骤二、对框架中的各模块进行编码,首先编码launcher模块,由该模块创建上下文解析器并读入相应XML配置文件,XML配置文件记录了插件启动的先后顺序和要启动的插件,然后按照所述配置文件所指示的文件目录以及文件名利用loadlibrary函数进行插件动态库的加载;加载完成后,调用各模块的接口init函数将上下文对象QObject传入到各模块中,再调用start函数使各模块完成注册服务和事件的操作,最后进入exec()函数主事件循环;步骤三、根据具体需求创建各个插件,每个包含pluginActivator与plugin文件两部分,其中pluginActivator对应于插件与控制框架的接口部分,提供以下函数来分别执行不同的接口插件操作:stop函数,用于停止插件,删除插件创造的一切对象,并注销插件创造的一切服务;start函数,用于启动插件,以及创建一系列用来与系统进行交互的对象;init函数,用于获取上下文对象QObject,该函数必须在启动插件前调用;postevent函数,用于广播事件,实现不同插件之间的通讯;subscribevent函数,用于注册各模块所要订阅的事件;subscribeslot槽函数,用于订阅调用其他插件的信号;publishsignal函数,用于声明模块所发出的信号;registerservice函数,用于注册服务;getService函数,用于获取服务的接口;plugin文件为项目配置文件;在start函数中创建被作为pluginActivator的私有成员的若干对象QObject,并在pluginActivator被构造时完成初始化;各对象QObject对应于不同的具体服务service,在对象QObject被创建后相应服务service也被注册到上下文中,可借助所述getService函数获取提供每个服务的对象;步骤四、基于事件机制和信号槽机制建立不同插件之间的通讯机制,其中所述事件机制具体包括在各插件创建时设置Eventservice头文件,Eventservice中包含eventtriggered函数接口,可通过输入参数XTLevent调用不同的事件,从而实现对象对一个或多个事件的响应;所述信号槽机制具体利用不同对象QObject之间收发的信号,以及所述publishsignal函数与subscribeslot槽函数实现被调用对象对执行调用对象的响应;步骤五、利用多种通讯协议建立上位机和下位机之间的ROS通讯机制,包括将控制框架的通讯协议分为应用层、协议层、码流层三层结构,在上位机中使用ROS模块订阅ROS中的话题,并获取应用层的数据,再将该数据转化到协议层中,最后使用序列化模块将协议层数据转化为十六进制码;调用开...
【专利技术属性】
技术研发人员:张硕,吴雨洋,崔星,朱森,汪洋,宿玉康,
申请(专利权)人:北京理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。