一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于IROS的程序内部运行状态监测方法和装置与流程

2022-05-08 04:22:52 来源:中国专利 TAG:

一种基于iros的程序内部运行状态监测方法和装置
技术领域
1.本发明公开一种方法和装置,涉及分布式程序监测技术领域,具体地说是一种基于iros的程序内部运行状态监测方法和装置。


背景技术:

2.随着社会数据的爆炸式增长,人们对软件之间协同配合的要求越来越高,如分布式部署、软件协同数据处理等等,同时随着自动驾驶、智能机器人的的普及,人们对软件长时间、高可靠性的运行提出了更高的要求。
3.多数情况下,只有当软件在运行过程中出现退出或实际结果和预期结果出现交大误差时,软件管理人员才能获知软件存在问题,而目前还没有完善方法实现对软件内部运行状态的实时监控,从而无法快速定位问题,发现软件运行中的安全隐患。


技术实现要素:

4.本发明针对现有技术的问题,提供一种基于iros的程序内部运行状态监测方法和装置,将iros的消息通信功能和程序状态机封装成一个公用api,主程序通过调用该api创建和维护一个独立的状态机,并将主程序内部运行状态发送到事先建好的程序内部状态监控话题(program internal status monitor topic,简称pismt),通过监控终端订阅该话题实现对程序内部运行状态的实时监视。
5.本发明提出的具体方案是:
6.一种基于iros的程序内部运行状态监测方法,通过调用设备api创建和维护设备的程序状态机,通过所述程序状态机的状态信息反映程序内部运行状态,
7.通过所述设备api将程序状态机的状态信息利用分布式iros通信功能发布到程序内部状态监控话题pismt,
8.通过订阅所述程序内部状态监控话题pismt的监控终端获取程序内部运行状态信息并进行展示。
9.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过调用设备api创建所述设备的程序状态机,包括:
10.在程序初始化阶段调用所述设备api的相应接口,创建程序状态机,并在创建过程中传入程序的名称、随机生成程序的uuid及程序运行设备信息。
11.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过调用设备api维护所述设备的程序状态机,包括:
12.通过所述设备api的相应接口对程序状态机的状态信息进行添加、删除及修改操作。
13.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过所述设备api的相应接口对程序状态机的状态信息进行添加操作,包括:
14.当程序状态机的状态信息无法满足反映程序运行状态需要时,调用所述设备api
的添加接口向程序状态机中添加新的状态信息并保存。
15.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过所述设备api的相应接口对程序状态机的状态信息进行删除操作,包括:
16.当程序状态机的状态信息不再反映程序需要时,调用所述设备api的删除接口将程序状态机中所述状态信息删除。
17.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过所述设备api的相应接口对程序状态机的状态信息进行修改操作,包括:
18.当设备的程序内部运行状态改变时,通过调用所述设备api的修改接口更改程序状态机的状态信息。
19.进一步,所述的一种基于iros的程序内部运行状态监测方法中所述通过调用设备api维护所述设备的程序状态机,包括:
20.启动定时器线程,根据预先设定的心跳频率将程序状态机反映当前的程序内部运行状态信息发送到pismt。
21.本发明还提供一种基于iros的程序内部运行状态监测装置,包括接口调用模块、信息发布模块及展示模块,
22.接口调用模块通过调用设备api创建和维护设备的程序状态机,通过所述程序状态机的状态信息反映程序内部运行状态,
23.信息发布模块通过所述设备api将程序状态机的状态信息利用分布式iros通信功能发布到程序内部状态监控话题pismt,
24.展示模块获取所述程序内部状态监控话题pismt中程序内部运行状态信息并进行展示。
25.本发明的有益之处是:
26.本发明提供一种基于iros的程序内部运行状态监测方法,将iros的消息通信功能和程序状态机封装成了设备api,程序通过调用该api创建和维护独立的程序状态机,并将程序内部运行状态发送到程序内部状态监控话题(program internal status monitor topic,简称pismt),通过订阅该话题实现对程序内部运行状态的实时监视,避免只有当软件在运行过程中出现退出或实际结果和预期结果出现交大误差时,软件管理人员才能获知软件存在问题的情况,能够快速定位问题,发现软件运行中的安全隐患。
附图说明
27.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1是本发明应用总体架构示意图。
29.图2是本发明涉及的监控终端组成示意图。
30.图3是本发明涉及的状态机的状态转换示意图。
31.图4是本发明方法通过调用api发送信息至pismt的流程示意图。
32.图5是本发明方法中通过监控终端从pismt获取信息流程示意图。
具体实施方式
33.智能机器人操作系统(intelligent robot operating system,iros)是一个次级操作系统,运行在linux系统之上,iros支持分布式部署,并提供简单易用的对外接口。通过调用iros提供的api可以实现消息的快速获取、传输和下发。
34.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
35.本发明提供一种基于iros的程序内部运行状态监测方法,通过调用设备api创建和维护设备的程序状态机,通过所述程序状态机的状态信息反映程序内部运行状态,
36.通过所述设备api将程序状态机的状态信息利用分布式iros通信功能发布到程序内部状态监控话题pismt,
37.通过订阅所述程序内部状态监控话题pismt的监控终端获取程序内部运行状态信息并进行展示。
38.本发明方法中通过调用设备api创建和维护一个独立的程序状态机,程序状态机的状态信息通过api中利用iros消息发布功能,发布到pismt中;监控终端通过订阅pismt,获取到程序的内部运行状态,并通过可视化界面进行展示。并且由于iros支持分布式部署,只需要在监控终端中运行master控制节点和消息处理节点,就可以监视到运行在各分布式设备上的程序内部运行状态,从而实现了分布式运行程序的集中监控。
39.具体应用中,在本发明方法的一些实施例中,利用iros的部署简单,实时通信效率高,并且支持分布式部署的特点,将iros的消息通信功能和程序状态机封装成设备的公共api,主程序通过调用该api创建和维护的独立的程序状态机,程序状态机可以理解为是一种组织代码方式,用这种方式可以确保对象随时知道所处的状态及需要做的操作。并且每一个程序状态机的状态都是独立的代码块,与其它状态分开,从而方便新状态的添加和旧状态的维护。通过公共api提供状态机的管理,比如通过addstate、delstate和modifystate实现状态的添加、删除和修改,同时通过公共api中预先定义了waiting、active、pending、thread、done、exiting和exited几种常用的状态,其中当程序启动时,首先将程序状态机状态置为waiting,当程序完成启动后,将状态机状态置为active或pending,表示程序进入任务处理或挂起状态,当程序使用多线程进行任务处理时会将状态置为thread,任务处理完后将程序状态机状态置为done,如果程序继续等待其它任务则将状态转为waiting,如程序退出则转为exiting和exited,参考图3.
40.基于上述描述,在本发明实施例中进行种基于iros的程序内部运行状态监测时,设备内在程序初始化阶段调用公共api的init接口,创建所述设备的程序状态机,创建过程中需要传入程序的名称、随机生成程序的uuid及程序运行设备信息等,并初始化程序状态机的状态为waiting,
41.程序初始化结束后,启动程序状态机,并将程序状态机的状态置为active,同时启动定时器线程,根据预先设定的心跳频率将程序状态机当前状态信息发送到pismt,通过监控终端订阅该话题实现对程序内部运行状态的实时监视。
42.基于上述实施过程,在本发明方法的另一些实施例中,基于iros进行程序内部运行状态监测时,通过所述设备api的相应接口对程序状态机的状态信息进行添加、删除及修改操作,具体如下:
43.当程序状态机的状态信息无法满足反映程序运行状态需要时,调用设备的公共api的addstate接口向程序状态机中添加新的状态信息,新添加的状态可以以xml文件的形式保存在本地存储设备中,当程序再次启动创建状态机时会自动加载该状态到新创建的程序状态机;
44.当程序状态机的状态信息不再反映程序需要时,调用所述设备api的delstate接口将程序状态机中所述状态信息删除;
45.当设备的程序内部运行状态改变时,通过调用所述设备api的modifystate接口更改程序状态机的状态信息,并通过公共api调用iros中的publish接口,主动将程序内部状态信息发送到pismt,而当进程中存在多个线程时,需要对程序状态机进行加锁,只有当程序状态机的当前状态发布到pismt后,其它线程才能继续获取程序状态机并修改状态。
46.在本发明的另一些实施例中,具体说明通过监控终端从pismt获取信息并进行展示,其中监控终端需要具备可视化的显示装置,能够运行iros的master控制节点和消息控制节点,要具备足够的空间创建和保存pismt及其内部消息。并且,监控终端能够通过4g、5g、wifi和各程序运行装置实现通信链接,可参考图2。
47.其中将程序内部运行状态信息主动或周期发送到pismt后,终端监控机通过iros的subscribe接口,从pismt获得主程序的内部运行状态信息。
48.通过监控终端在获得程序的内部运行状态信息后,提取主程序的名称和uuid,并和监控机中维护的程序内部运行信息监控表进行对比,当存在时,更新程序内部运行信息监控表中的相关信息,如果不存在,则将该程序信息加入程序内部运行信息监控表并更新状态信息;
49.通过监控终端更新人机交互界面上的显示信息;
50.当程序内部运行信息监控表中某程序的状态信息超过阈值时间未更新时,通过监控终端可以提示该程序可能掉线。
51.同时本发明还提供一种基于iros的程序内部运行状态监测装置,包括接口调用模块、信息发布模块及展示模块,
52.接口调用模块通过调用设备api创建和维护设备的程序状态机,通过所述程序状态机的状态信息反映程序内部运行状态,
53.信息发布模块通过所述设备api将程序状态机的状态信息利用分布式iros通信功能发布到程序内部状态监控话题pismt,
54.展示模块获取所述程序内部状态监控话题pismt中程序内部运行状态信息并进行展示。
55.上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
56.同样地,本发明装置实现对程序内部运行状态的实时监视,避免只有当软件在运行过程中出现退出或实际结果和预期结果出现交大误差时,软件管理人员才能获知软件存在问题的情况,能够快速定位问题,发现软件运行中的安全隐患。
57.需要说明的是,上述各流程和各装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些
模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
58.以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献