CN117992032B - 应用于机器人的逻辑模块开发方法、装置和计算机设备 - Google Patents
应用于机器人的逻辑模块开发方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN117992032B CN117992032B CN202410405489.4A CN202410405489A CN117992032B CN 117992032 B CN117992032 B CN 117992032B CN 202410405489 A CN202410405489 A CN 202410405489A CN 117992032 B CN117992032 B CN 117992032B
- Authority
- CN
- China
- Prior art keywords
- logic
- module
- sub
- logic sub
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000011161 development Methods 0.000 title claims abstract description 36
- 230000007246 mechanism Effects 0.000 claims abstract description 183
- 238000004891 communication Methods 0.000 claims abstract description 106
- 230000033001 locomotion Effects 0.000 claims description 84
- 238000004590 computer program Methods 0.000 claims description 24
- 230000000903 blocking effect Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 16
- 230000001960 triggered effect Effects 0.000 claims description 12
- 230000007704 transition Effects 0.000 claims description 9
- 238000000354 decomposition reaction Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000008447 perception Effects 0.000 claims description 7
- 238000009826 distribution Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 33
- 230000008878 coupling Effects 0.000 description 13
- 238000010168 coupling process Methods 0.000 description 13
- 238000005859 coupling reaction Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种应用于机器人的逻辑模块开发方法、装置、计算机设备和存储介质。其中,该方法包括:获取目标业务的整体业务逻辑;根据逻辑模块拆解模板对整体业务逻辑进行分解,生成多个逻辑子模块;针对每个逻辑子模块,获取逻辑子模块需运行的业务子逻辑的业务特征;针对每个逻辑子模块,将逻辑子模块对应的业务特征与逻辑模块触发模板库进行匹配,并根据匹配结果确定逻辑子模块的触发机制;根据多个逻辑子模块之间的调用关系,确定多个逻辑子模块之间的业务逻辑调度执行策略;针对每个逻辑子模块,将逻辑子模块对应的业务特征与逻辑模块通信机制库进行匹配,确定逻辑子模块的模块通信机制。本方法可实现快速开发机器人的业务场景。
Description
技术领域
本申请涉及机器人技术领域。具体地,本申请涉及一种应用于机器人的逻辑模块开发方法、装置、计算机设备和计算机可读存储介质。
背景技术
近年来,随着人工智能技术的飞速发展,智能机器人不断涌现,并逐渐应用于各行各业。智能机器人能够取代人类从事危险、繁重的工作,从工业制造到医疗保健,再到日常生活的方方面面,展现了广泛的应用前景。
然而,尽管智能机器人在许多领域展现出了巨大的潜力,但在实际应用中,为解决特定业务场景中的问题,需要编程技术人员开发和定制相应的应用程序。由于业务逻辑的复杂性,并缺乏成熟的智能机器人逻辑模块开发框架支持,导致智能机器人逻辑模块的开发工作变得异常繁琐、复杂且缺乏复用性,无法实现快速开发业务场景。这严重限制了智能机器人在实际场景中快速应用的能力,导致其落地速度受到了严重影响。
发明内容
基于此,有必要针对上述技术问题,提供一种应用于机器人的逻辑模块开发方法、装置、计算机设备和计算机可读存储介质。
第一方面,本申请提供了一种应用于机器人的逻辑模块开发方法。所述方法包括:
获取目标业务的整体业务逻辑;
根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式。
在其中一个实施例中,所述逻辑子模块包括输入接口、输出接口和反馈接口;其中,
所述输入接口,与所述感知模块相连接,用于接收所述感知模块传输的感知数据;
所述输出接口,与所述运动模块相连接,用于向所述运动模块发送运动指令;
所述反馈接口,与所述运动模块相连接,用于接收所述运动模块响应于所述运动指令反馈的运动结果。
在其中一个实施例中,所述方法还包括:
针对每个逻辑子模块,将所述逻辑子模块对应的业务子逻辑编译为动态链接库,并为所述逻辑子模块创建独立线程和独立消息队列;
针对每个逻辑子模块,将所述动态链接库加载至所述逻辑子模块中,并在所述独立线程中运行所述业务子逻辑;
针对每个逻辑子模块,通过所述独立消息队列与所述机器人中的其他模块进行消息传递。
在其中一个实施例中,所述将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制,包括:
若所述逻辑子模块对应的业务特征为表示受消息驱动的业务的特征,则逻辑子模块的触发机制为消息触发;
若所述逻辑子模块对应的业务特征为表示使用严格时序的业务的特征,则逻辑子模块的触发机制为时钟触发;
若所述逻辑子模块对应的业务特征为表示逻辑简单的业务的特征,则逻辑子模块的触发机制为瀑布流触发;
若所述逻辑子模块对应的业务特征表示有限状态机,并有明确事件触发状态迁移的业务的特征,则逻辑子模块的触发机制为使用状态机触发。
在其中一个实施例中,所述方法还包括:
响应于所述逻辑子模块的调用请求,激活所述逻辑子模块,并将所述逻辑子模块接入消息总线和运动总线;
通过所述消息总线向所述逻辑子模块询问订阅消息;
当所述消息总线接收到新的消息时,根据订阅情况插入各逻辑子模块的消息队列;
若逻辑子模块的触发机制为消息触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;
若逻辑子模块的触发机制为时钟触发,则将消息暂存于缓冲区,等待逻辑子模块的读取;
若逻辑子模块的触发机制为瀑布流触发,则存储消息或触发动作返回;
若逻辑子模块的触发机制为使用状态机触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;
当逻辑子模块通过所述运动总线发送运动指令时,如果所述机器人的运动模块被所述逻辑子模块控制,则所述运动模块中断之前的运动指令,并执行最新的运动指令;如果所述运动模块被其他逻辑子模块控制,则所述运动指令被打回。
在其中一个实施例中,所述根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略,包括:
若所述逻辑子模块之间的调用关系为有前后赖关系,则所述逻辑子模块之间采用串行调用机制;
若所述逻辑子模块之间的调用关系为相互独立且互不干扰,则所述逻辑子模块之间采用并行调用机制;
根据所述多个逻辑子模块之间采用的调用机制和所述多个逻辑子模块之间的执行顺序,生成所述多个逻辑子模块之间的业务逻辑调度执行策略。
在其中一个实施例中,所述方法还包括:
采用阻塞机制或非阻塞机制,以使前序的逻辑子模块等待后序的逻辑子模块运行结束或运行通知之后进行时序处理;其中,所述前序的逻辑子模块的执行顺序先于所述后序的逻辑子模块的执行顺序,且所述前序的逻辑子模块与所述后序的逻辑子模块之间存在依赖关系。
在其中一个实施例中,所述将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制,包括:
若所述逻辑子模块对应的业务特征为表示所述逻辑子模块订阅所述感知模块和/或所述运动模块的消息的特征,则逻辑子模块的模块通信机制为消息订阅分发机制;
若所述逻辑子模块对应的业务特征为表示所述逻辑子模块与所述感知模块和/或所述运动模块交换数据的特征,则逻辑子模块的模块通信机制为进程间通讯机制。
第二方面,本申请提供了一种应用于机器人的逻辑模块开发装置。所述装置包括:
业务逻辑获取模块,用于获取目标业务的整体业务逻辑;
业务逻辑拆解模块,用于根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
业务特征获取模块,用于针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
触发机制确定模块,用于针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
调度策略确定模块,用于根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
通信机制确定模块,用于针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标业务的整体业务逻辑;
根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标业务的整体业务逻辑;
根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取目标业务的整体业务逻辑;
根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式。
上述应用于机器人的逻辑模块开发方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,通过提供通用的逻辑模块拆解模板,将复杂业务逻辑分解成多个子逻辑模块,实现智能机器人的逻辑子模块间解耦和逻辑子模块复用。随后,利用逻辑模块触发模板,能够根据业务特征为逻辑子模块快速匹配适合的触发机制。之后,在业务逻辑调度执行策略下,实现逻辑子模块之间的灵活并行和串行调用。最后,借助逻辑模块通信机制库,使得逻辑子模块与感知模块、运动模块能够根据业务特征快速匹配合适的通信机制,确保高效、稳定的通信,从而共同完成智能机器人的逻辑业务。可以理解,本申请提供了一种智能机器人逻辑模块框架,旨在实现逻辑模块间的解耦、复用和高效协同,从而简化智能机器人逻辑模块的开发流程、提高模块的可复用性,并加速应用的实际落地速度。
附图说明
图1为一个实施例中应用于机器人的逻辑模块开发方法的流程示意图;
图2为一个实施例中机器人中各模块的结构框图;
图3为一个实施例中逻辑子模块间的架构图;
图4为一个实施例中应用于机器人的逻辑模块开发装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种应用于机器人的逻辑模块开发方法,该方法包括以下步骤S101-步骤S106:
步骤S101,获取目标业务的整体业务逻辑。
其中,整体业务逻辑是指一个实体单元为了向另一个实体单元提供服务,所应具备的完整、连贯的规则与流程。它涵盖了从业务需求的提出,到业务规则的制定,再到业务执行的整个过程,确保业务能够按照预定的方式和顺序顺利进行。
具体而言,目标业务的整体业务逻辑可以由开发人员录入。
步骤S102,根据预设的逻辑模块拆解模板对整体业务逻辑进行分解,生成多个逻辑子模块。
其中,逻辑子模块可以理解为在整体业务逻辑中,针对特定业务功能或流程划分出的独立逻辑单元。这些子模块负责处理与特定业务相关的任务,确保业务逻辑在不同部分间能够有序、高效地执行。可以理解,逻辑子模块用于运行整体业务逻辑分解得到的业务子逻辑。
具体而言,逻辑模块拆解模板中制定了拆解规则。该拆解规则用来根据业务耦合度和传递数据量来拆解逻辑子模块。作为一种实现方式,拆解规则具体为:先评估整体业务逻辑中业务子逻辑之间的业务耦合度,以及评估业务子逻辑之间传递的数据量,然后根据该业务耦合度和传递数据量,制定模块拆解策略,最后根据该模块拆解策略对整体业务逻辑进行分解,生成多个逻辑子模块。
进一步地,评估整体业务逻辑中业务子逻辑之间的业务耦合度的实现方式如下:
1. 分析依赖关系:
分析各个业务子逻辑之间的依赖关系,包括直接依赖和间接依赖。直接依赖是指一个子逻辑直接调用另一个子逻辑的功能或数据;间接依赖则是通过其他子逻辑传递的依赖关系。
2. 在分析了依赖关系之后,分析耦合程度,常见的耦合有以下几种:
a)直接耦合:两个子逻辑之间有直接的调用关系。
b)数据耦合:一个子逻辑通过数据参数与另一个子逻辑交互。
c)控制耦合:一个子逻辑的控制逻辑依赖于另一个子逻辑的状态或返回值。
d)公共耦合:多个子逻辑共享全局数据或资源。
不同类型的耦合所反映的耦合程度有所差异。
进一步地,评估业务子逻辑之间传递的数据量的实现方式如下:
1. 识别数据流:
分析业务子逻辑之间的数据流,包括输入数据、输出数据和共享数据。
2. 在识别了数据流之后,测量数据量:
使用工具或手动方式测量每个数据流的大小,可以是字节数、记录数或其他合适的度量单位。
若两个业务子逻辑的业务耦合度过高或传递的数据量过大,则将这两个业务子逻辑合并为一个业务子逻辑。
示例性地,抓取杯子是一个实体单元向另一个实体单元提供的服务,整体业务逻辑就是抓取杯子应具备的规则与流程。
抓取杯子应具备的规则与流程为:移动底盘向杯子靠拢→移动过程中始终盯着杯子→随着移动不断判断是否可以抓取杯子→抓取杯子。
逻辑子模块包括:移动底盘、盯着杯子、随着移动不断判断是否可以抓取杯子、抓取杯子。
进一步地,如图2所示,逻辑子模块包括输入接口、输出接口和反馈接口。其中,输入接口,与感知模块相连接,用于接收感知模块传输的感知数据。输出接口,与运动模块相连接,用于向运动模块发送运动指令。反馈接口,与运动模块相连接,用于接收运动模块响应于运动指令反馈的运动结果。从而来共同完成机器人的逻辑业务。
更进一步地,针对每个逻辑子模块,将逻辑子模块对应的业务子逻辑编译为动态链接库,并为逻辑子模块创建独立线程和独立消息队列。在此基础上,针对每个逻辑子模块,将动态链接库加载至逻辑子模块中,并在独立线程中运行业务子逻辑。针对每个逻辑子模块,通过独立消息队列与机器人中的其他模块进行消息传递。可以理解,每个逻辑子模块采用动态库形式动态加载,并且使用独立线程调度并有独立的消息队列,不和其他逻辑子模块共享,不受其他逻辑子模块干扰,如此可实现逻辑子模块之间的解耦和逻辑子模块的复用。
步骤S103,针对每个逻辑子模块,获取逻辑子模块需运行的业务子逻辑的业务特征。
具体而言,业务特征是开发人员在设计阶段根据实际业务自行选择的,用来表征业务本身所具备的显著特点或特性。将各种业务特征汇总构成业务特征库。基于构建的业务特征库,分析逻辑子模块需运行的业务子逻辑所涉及的业务特征。
业务特征包括表示受消息驱动的业务的特征、表示使用严格时序的业务的特征、表示逻辑简单的业务的特征以及表示可以抽象为有限状态机,并有明确事件触发状态迁移的业务的特征中的一种或多种。
示例性地,机器人的轮式里程计反馈数据到达的消息,触发轨迹追踪计算任务的执行,属于消息驱动的业务特征。
机器人对于自身定位的计算,每隔50ms执行一次,属于严格时序的业务特征。
机器人将物体从A点搬运到B点,需要先到达A点抓取物体,才能执行A到B的搬运,属于逻辑简单的业务特征。
机器人有休息状态和工作状态,在不同的状态执行不同的任务,属于有限状态机的业务特征。
步骤S104,针对每个逻辑子模块,将逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定逻辑子模块的触发机制。
其中,逻辑模块触发模板库中存储有不同的逻辑模块触发模板。逻辑模块触发模板中记录有各业务特征与各触发机制的关联关系,如此可基于业务特征的匹配结果,确定相对应的触发机制。
示例性地,逻辑模块触发模板中记录的各业务特征与各触发机制的关联关系,可以分为以下四种情形:
一、若逻辑子模块对应的业务特征为表示受消息驱动的业务的特征,则逻辑子模块的触发机制为消息触发。其中,消息驱动的业务特征是指业务逻辑的执行是通过接收和处理消息来触发的特征。可选地,可以通过创建消息队列,来将相关消息传递给逻辑子模块。逻辑子模块订阅或监听特定类型的消息,一旦接收到相关消息,触发执行相应的业务子逻辑。
二、若逻辑子模块对应的业务特征为表示使用严格时序的业务的特征,则逻辑子模块的触发机制为时钟触发。其中,使用严格时序的业务特征是指业务逻辑的执行需要遵循精确的时间顺序或时序要求的特征。可选地,可以设置一个时钟或定时器系统,用于按照预设的时间间隔或特定时间点触发事件。逻辑子模块根据时钟或定时器的触发信号,在特定的时间点或时间间隔执行相应的业务子逻辑。
三、若逻辑子模块对应的业务特征为表示逻辑简单的业务的特征,则逻辑子模块的触发机制为瀑布流触发。其中,逻辑简单的业务特征是指业务逻辑相对较为简单和直接的特征。可选地,可以通过创建一个流水线或管道系统,用于按照固定的顺序逐步处理数据或任务。逻辑子模块依次进入流水线,按照固定的处理顺序执行业务子逻辑。
四、若逻辑子模块对应的业务特征表示有限状态机,并有明确事件触发状态迁移的业务的特征,则逻辑子模块的触发机制为使用状态机触发。其中,有限状态机的业务特征是指业务逻辑能够被建模为有限数量的状态,并且根据事件触发在这些状态之间进行转换。可选地,通过预先定义有限状态机的状态和状态迁移规则,明确事件触发状态的变化。逻辑子模块根据当前状态和接收到的事件执行相应状态迁移,并根据状态的变化执行相应的业务子逻辑。
在一个实施例中,响应于逻辑子模块的调用请求,激活逻辑子模块,并将逻辑子模块接入消息总线和运动总线;通过消息总线向逻辑子模块询问订阅消息;当消息总线接收到新的消息时,根据订阅情况插入各逻辑子模块的消息队列;若逻辑子模块的触发机制为消息触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;若逻辑子模块的触发机制为时钟触发,则将消息暂存于缓冲区,等待逻辑子模块的读取;若逻辑子模块的触发机制为瀑布流触发,则存储消息或触发动作返回;若逻辑子模块的触发机制为使用状态机触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;当逻辑子模块通过运动总线发送运动指令时,如果机器人的运动模块被逻辑子模块控制,则运动模块中断之前的运动指令,并执行最新的运动指令;如果运动模块被其他逻辑子模块控制,则运动指令被打回。
具体而言,每个逻辑子模块都拥有独立的线程和消息队列,当机器人逻辑模块框架进程被启动的时候,会遍历所有的逻辑子模块库,建立等待逻辑子模块库。当某一个逻辑子模块被调用时,框架会激活该逻辑子模块,接入消息总线、运动总线。接入的消息总线会向该逻辑子模块询问订阅消息列表,接入的运动总线会向该逻辑子模块询问运动控制类型。
当消息总线接收到新的消息时,根据订阅情况插入各逻辑子模块的消息队列,各逻辑子模块根据各自的模块类型进行处理。具体为:瀑布流触发业务:存储消息或触发动作返回。消息触发业务:将消息根据优先级和时间戳排序,进入消息队列,等待被处理。状态机触发业务:将消息根据优先级和时间戳排序,进入消息队列,等待被处理。时钟触发业务:消息暂存在缓冲区,等待子逻辑模块来取。
为了保证运动的连续性和协调性,机器人的运动模块同时只能被一个逻辑子模块控制。当逻辑子模块通过运动总线发送运动指令时,需要进行鉴权,如果该运动模块被其他逻辑子模块控制,则运动指令被打回,如果该运动模块被该逻辑子模块控制,则之前的运动指令被中断,执行最新的运动指令。如此可确保运动模块的控制是有序的,避免多个模块之间的冲突获混乱。
步骤S105,根据多个逻辑子模块之间的调用关系,确定多个逻辑子模块之间的业务逻辑调度执行策略。
具体而言,步骤S105具体可以通过以下步骤S1051-步骤S1053来实现:
步骤S1051,若逻辑子模块之间的调用关系为有前后赖关系,则逻辑子模块之间采用串行调用机制。
步骤S1052,若逻辑子模块之间的调用关系为相互独立且互不干扰,则逻辑子模块之间采用并行调用机制。
步骤S1053,根据多个逻辑子模块之间采用的调用机制和多个逻辑子模块之间的执行顺序,生成多个逻辑子模块之间的业务逻辑调度执行策略。
举例而言,如图3所示,逻辑子模块A并行调用逻辑子模块B和逻辑子模块D,同时逻辑子模块A又串行调用逻辑子模块B和逻辑子模块C
本实施例中,通过构建动态库调用机制,使得逻辑子模块间可以根据业务逻辑调度执行策略,实现逻辑子模块间自由地并行和串行调用。
进一步地,该方法还包括:
采用阻塞机制或非阻塞机制,以使前序的逻辑子模块等待后序的逻辑子模块运行结束或运行通知之后进行时序处理。
其中,前序的逻辑子模块的执行顺序先于后序的逻辑子模块的执行顺序,且前序的逻辑子模块与后序的逻辑子模块之间存在依赖关系。
举例而言,如图3所示,在前序的逻辑子模块A与后序的逻辑子模块C和D之间设置同步机制,使得逻辑子模块A可使用阻塞机制或非阻塞机制,等待逻辑子模块C和D运行结束或运行通知后再进行时序处理。
步骤S106,针对每个逻辑子模块,将逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定逻辑子模块的模块通信机制。
其中,逻辑模块通信机制库中存储有不同的业务特征关联的通信机制。通信机制用于指示逻辑子模块与机器人的感知模块和/或运动模块之间的通信方式。可选地,逻辑模块通信机制库中提供消息订阅分发机制和共享内存等进程间通信机制。
具体而言,示例性地,若逻辑子模块对应的业务特征为表示逻辑子模块订阅感知模块和/或运动模块的消息的特征,则逻辑子模块的模块通信机制为消息订阅分发机制。即,逻辑子模块可以通过消息订阅分发机制订阅感知模块和运动模块的消息。
例如,对于逻辑简单的瀑布流模式的业务特征,通信机制选择阻塞机制。又如,对于受消息驱动的模式的业务特征,通信机制选择非阻塞机制。再如,状态机的状态转换如果是基于消息,则通信机制是非阻塞机制,如果状态机的状态转换是基于某个动作完成,则通信机制是阻塞机制。再如,对于需要严格时序的业务的特征,如果在时钟周期内可以等到任务结束的消息,则通信机制使用阻塞机制;否则,使用非阻塞的通信机制。由此可见,对于不同的业务特征,需选择最适合的通信机制,以确保逻辑子模块在满足业务需求的同时,具有合适的性能和效率。选择合适的通信机制可以优化逻辑子模块的响应速度、资源利用以及任务处理效率,使得逻辑子模块更好地满足特定业务场景的要求。
续以“抓杯子”为例,前三个逻辑子模块的业务特征都是严格时序,其中盯着杯子在一个时钟周期内无法结束,因此通信机制是非阻塞机制,其余在一个时钟周期内都可以结束,因此都是阻塞机制。抓取杯子逻辑子模块的业务特征是受消息驱动,通信机制是非阻塞机制。而整个“抓杯子”的业务特征是逻辑简单的瀑布流,通信机制是阻塞机制。
若逻辑子模块对应的业务特征为表示逻辑子模块与感知模块和/或运动模块交换数据的特征,则逻辑子模块的模块通信机制为进程间通讯机制。即,逻辑子模块与感知模块、运动模块之间可以通过共享内存等进程间通讯机制实现模块间通信,从而共同高效地完成业务场景。
将开发完成的各个逻辑子模块进行集成和整合,确保它们可以一起协同工作,实现整体业务目标。
上述应用于机器人的逻辑模块开发方法中,通过提供通用的逻辑模块拆解模板,将复杂业务逻辑分解成多个子逻辑模块,实现智能机器人的逻辑子模块间解耦和逻辑子模块复用。随后,利用逻辑模块触发模板,能够根据业务特征为逻辑子模块快速匹配适合的触发机制。之后,在业务逻辑调度执行策略下,实现逻辑子模块之间的灵活并行和串行调用。最后,借助逻辑模块通信机制库,使得逻辑子模块与感知模块、运动模块能够根据业务特征快速匹配合适的通信机制,确保高效、稳定的通信,从而共同完成智能机器人的逻辑业务。可以理解,本方法提供了一种智能机器人逻辑模块框架,旨在实现逻辑模块间的解耦、复用和高效协同,从而简化智能机器人逻辑模块的开发流程、提高模块的可复用性,并加速应用的实际落地速度。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的应用于机器人的逻辑模块开发方法的应用于机器人的逻辑模块开发装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个应用于机器人的逻辑模块开发装置实施例中的具体限定可以参见上文中对于应用于机器人的逻辑模块开发方法的限定,在此不再赘述。
在一个实施例中,如图4所示,提供了一种应用于机器人的逻辑模块开发装置。该装置包括:
业务逻辑获取模块201,用于获取目标业务的整体业务逻辑;
业务逻辑拆解模块202,用于根据预设的逻辑模块拆解模板对整体业务逻辑进行分解,生成多个逻辑子模块;其中,逻辑子模块用于运行整体业务逻辑分解得到的业务子逻辑;
业务特征获取模块203,用于针对每个逻辑子模块,获取逻辑子模块需运行的业务子逻辑的业务特征;
触发机制确定模块204,用于针对每个逻辑子模块,将逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定逻辑子模块的触发机制;其中,逻辑模块触发模板库中存储有不同的逻辑模块触发模板,逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
调度策略确定模块205,用于根据多个逻辑子模块之间的调用关系,确定多个逻辑子模块之间的业务逻辑调度执行策略;
通信机制确定模块206,用于针对每个逻辑子模块,将逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定逻辑子模块的模块通信机制;其中,逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,通信机制用于指示逻辑子模块与机器人的感知模块和/或运动模块之间的通信方式。
上述应用于机器人的逻辑模块开发装置中,通过提供通用的逻辑模块拆解模板,将复杂业务逻辑分解成多个子逻辑模块,实现智能机器人的逻辑子模块间解耦和逻辑子模块复用。随后,利用逻辑模块触发模板,能够根据业务特征为逻辑子模块快速匹配适合的触发机制。之后,在业务逻辑调度执行策略下,实现逻辑子模块之间的灵活并行和串行调用。最后,借助逻辑模块通信机制库,使得逻辑子模块与感知模块、运动模块能够根据业务特征快速匹配合适的通信机制,确保高效、稳定的通信,从而共同完成智能机器人的逻辑业务。可以理解,本装置提供了一种智能机器人逻辑模块框架,旨在实现逻辑模块间的解耦、复用和高效协同,从而简化智能机器人逻辑模块的开发流程、提高模块的可复用性,并加速应用的实际落地速度。
需要说明的是,上述实施例提供的应用于机器人的逻辑模块开发装置在实现相应的功能时,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用于机器人的逻辑模块开发装置与应用于机器人的逻辑模块开发方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
根据本申请的一个方面,本发明实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装。在该计算机程序被处理器执行时,执行本申请实施例提供的应用于机器人的逻辑模块开发方法。
此外,本发明实施例还提供了一种计算机设备,该设备包括处理器和存储器,存储器存储有计算机程序,处理器能够执行存储器中存储的计算机程序,计算机程序被处理器执行时,可以实现上述任一实施例提供的应用于机器人的逻辑模块开发方法。
例如,图5示出了本发明实施例提供的一种计算机设备,该设备包括总线1110、处理器1120、收发器1130、总线接口1140、存储器1150和用户接口1160。
在本发明实施例中,该设备还包括:存储在存储器1150上并可在处理器1120上运行的计算机程序,计算机程序被处理器1120执行时实现上述应用于机器人的逻辑模块开发方法实施例的各个过程。
收发器1130,用于在处理器1120的控制下接收和发送数据。
本发明实施例中,总线架构(用总线1110来代表),总线1110可以包括任意数量互联的总线和桥,总线1110将包括由处理器1120代表的一个或多个处理器与存储器1150代表的存储器的各种电路连接在一起。
总线1110表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线以及存储器控制器、外围总线、加速图形端口(Accelerate Graphical Port,AGP)、处理器或使用各种总线体系结构中的任意总线结构的局域总线。作为示例而非限制,这样的体系结构包括:工业标准体系结构(Industry Standard Architecture,ISA)总线、微通道体系结构(Micro Channel Architecture,MCA)总线、扩展ISA(Enhanced ISA,EISA)总线、视频电子标准协会(Video Electronics Standards Association,VESA)、外围部件互连(Peripheral Component Interconnect,PCI)总线。
处理器1120可以是一种集成电路芯片,具有信号处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中硬件的集成逻辑电路或软件形式的指令完成。上述的处理器包括:通用处理器、中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、可编程逻辑阵列(Programmable Logic Array,PLA)、微控制单元(Microcontroller Unit,MCU)或其他可编程逻辑器件、分立门、晶体管逻辑器件、分立硬件组件。可以实现或执行本发明实施例中公开的各方法、步骤及逻辑框图。例如,处理器可以是单核处理器或多核处理器,处理器可以集成于单颗芯片或位于多个不同的芯片。
处理器1120可以是微处理器或任何常规的处理器。结合本发明实施例所公开的方法步骤可以直接由硬件译码处理器执行完成,或者由译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存取存储器(Random Access Memory,RAM)、闪存(FlashMemory)、只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、寄存器等本领域公知的可读存储介质中。所述可读存储介质位于存储器中,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
总线1110还可以将,例如外围设备、稳压器或功率管理电路等各种其他电路连接在一起,总线接口1140在总线1110和收发器1130之间提供接口,这些都是本领域所公知的。因此,本发明实施例不再对其进行进一步描述。
收发器1130可以是一个元件,也可以是多个元件,例如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。例如:收发器1130从其他设备接收外部数据,收发器1130用于将处理器1120处理后的数据发送给其他设备。取决于计算机系统的性质,还可以提供用户接口1160,例如:触摸屏、物理键盘、显示器、鼠标、扬声器、麦克风、轨迹球、操纵杆、触控笔。
应理解,在本发明实施例中,存储器1150可进一步包括相对于处理器1120远程设置的存储器,这些远程设置的存储器可以通过网络连接至服务器。上述网络的一个或多个部分可以是自组织网络(ad hoc network)、内联网(intranet)、外联网(extranet)、虚拟专用网(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线广域网(WWAN)、城域网(MAN)、互联网(Internet)、公共交换电话网(PSTN)、普通老式电话业务网(POTS)、蜂窝电话网、无线网络、无线保真(Wi-Fi)网络以及两个或更多个上述网络的组合。例如,蜂窝电话网和无线网络可以是全球移动通信(GSM)系统、码分多址(CDMA)系统、全球微波互联接入(WiMAX)系统、通用分组无线业务(GPRS)系统、宽带码分多址(WCDMA)系统、长期演进(LTE)系统、LTE频分双工(FDD)系统、LTE时分双工(TDD)系统、先进长期演进(LTE-A)系统、通用移动通信(UMTS)系统、增强移动宽带(Enhance Mobile Broadband,eMBB)系统、海量机器类通信(massive Machine Type of Communication,mMTC)系统、超可靠低时延通信(UltraReliable Low Latency Communications,uRLLC)系统等。
应理解,本发明实施例中的存储器1150可以是易失性存储器或非易失性存储器,或可包括易失性存储器和非易失性存储器两者。其中,非易失性存储器包括:只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存(Flash Memory)。
易失性存储器包括:随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如:静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本发明实施例描述的存储器1150包括但不限于上述和任意其他适合类型的存储器。
在本发明实施例中,存储器1150存储了操作系统1151和应用程序1152的如下元素:可执行模块、数据结构,或者其子集,或者其扩展集。
具体而言,操作系统1151包含各种系统程序,例如:框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序1152包含各种应用程序,例如:媒体播放器(Media Player)、浏览器(Browser),用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序1152中。应用程序1152包括:小程序、对象、组件、逻辑、数据结构以及其他执行特定任务或实现特定抽象数据类型的计算机系统可执行指令。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述应用于机器人的逻辑模块开发方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
计算机可读存储介质包括:永久性和非永久性、可移动和非可移动媒体,是可以保留和存储供指令执行设备所使用指令的有形设备。计算机可读存储介质包括:电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备以及上述任意合适的组合。计算机可读存储介质包括:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带存储、磁带磁盘存储或其他磁性存储设备、记忆棒、机械编码装置(例如在其上记录有指令的凹槽中的穿孔卡或凸起结构)或任何其他非传输介质、可用于存储可以被计算设备访问的信息。按照本发明实施例中的界定,计算机可读存储介质不包括暂时信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如穿过光纤电缆的光脉冲)或通过导线传输的电信号。
在本发明实施例的描述中,所属技术领域的技术人员应当知道,本发明实施例可以实现为方法、装置、设备及存储介质。因此,本发明实施例可以具体实现为以下形式:完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、硬件和软件结合的形式。此外,在一些实施例中,本发明实施例还可以实现为在一个或多个计算机可读存储介质中的计算机程序产品的形式,该计算机可读存储介质中包含计算机程序代码。
上述计算机可读存储介质可以采用一个或多个计算机可读存储介质的任意组合。计算机可读存储介质包括:电、磁、光、电磁、红外或半导体的系统、装置或器件,或者以上任意的组合。计算机可读存储介质更具体的例子包括:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存(Flash Memory)、光纤、光盘只读存储器(CD-ROM)、光存储器件、磁存储器件或以上任意组合。在本发明实施例中,计算机可读存储介质可以是任意包含或存储程序的有形介质,该程序可以被指令执行系统、装置、器件使用或与其结合使用。
上述计算机可读存储介质包含的计算机程序代码可以用任意适当的介质传输,包括:无线、电线、光缆、射频(Radio Frequency,RF)或者以上任意合适的组合。
可以以汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,例如:Java、Smalltalk、C++,还包括常规的过程式程序设计语言,例如:C语言或类似的程序设计语言。计算机程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行以及完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括:局域网(LAN)或广域网(WAN),可以连接到用户计算机,也可以连接到外部计算机。
应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机可读程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或方框图中的方框规定的功能/操作的装置。
也可以将这些计算机可读程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储介质中。这样,存储在计算机可读存储介质中的指令就产生出一个包括实现流程图和/或方框图中的方框规定的功能/操作的指令装置产品。
也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程数据处理装置上执行的指令能够提供实现流程图和/或方框图中的方框规定的功能/操作的过程。
以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护区域并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例披露的技术区域内,可轻易地想到变化或替换,都应涵盖在本发明实施例的保护区域之内。因此,本发明实施例的保护区域应以权利要求的保护区域为准。
Claims (7)
1.一种应用于机器人的逻辑模块开发方法,其特征在于,所述方法包括:
获取目标业务的整体业务逻辑;
根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式;
其中,所述将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制,包括:
若所述逻辑子模块对应的业务特征为表示受消息驱动的业务的特征,则逻辑子模块的触发机制为消息触发;若所述逻辑子模块对应的业务特征为表示使用严格时序的业务的特征,则逻辑子模块的触发机制为时钟触发;若所述逻辑子模块对应的业务特征为表示逻辑简单的业务的特征,则逻辑子模块的触发机制为瀑布流触发;若所述逻辑子模块对应的业务特征表示有限状态机,并有明确事件触发状态迁移的业务的特征,则逻辑子模块的触发机制为使用状态机触发;
所述根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略,包括:
若所述逻辑子模块之间的调用关系为有前后赖关系,则所述逻辑子模块之间采用串行调用机制;若所述逻辑子模块之间的调用关系为相互独立且互不干扰,则所述逻辑子模块之间采用并行调用机制;根据所述多个逻辑子模块之间采用的调用机制和所述多个逻辑子模块之间的执行顺序,生成所述多个逻辑子模块之间的业务逻辑调度执行策略;
所述将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制,包括:
若所述逻辑子模块对应的业务特征为表示所述逻辑子模块订阅所述感知模块和/或所述运动模块的消息的特征,则逻辑子模块的模块通信机制为消息订阅分发机制;若所述逻辑子模块对应的业务特征为表示所述逻辑子模块与所述感知模块和/或所述运动模块交换数据的特征,则逻辑子模块的模块通信机制为进程间通讯机制。
2.根据权利要求1所述的方法,其特征在于,所述逻辑子模块包括输入接口、输出接口和反馈接口;其中,
所述输入接口,与所述感知模块相连接,用于接收所述感知模块传输的感知数据;
所述输出接口,与所述运动模块相连接,用于向所述运动模块发送运动指令;
所述反馈接口,与所述运动模块相连接,用于接收所述运动模块响应于所述运动指令反馈的运动结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每个逻辑子模块,将所述逻辑子模块对应的业务子逻辑编译为动态链接库,并为所述逻辑子模块创建独立线程和独立消息队列;
针对每个逻辑子模块,将所述动态链接库加载至所述逻辑子模块中,并在所述独立线程中运行所述业务子逻辑;
针对每个逻辑子模块,通过所述独立消息队列与所述机器人中的其他模块进行消息传递。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述逻辑子模块的调用请求,激活所述逻辑子模块,并将所述逻辑子模块接入消息总线和运动总线;
通过所述消息总线向所述逻辑子模块询问订阅消息;
当所述消息总线接收到新的消息时,根据订阅情况插入各逻辑子模块的消息队列;
若逻辑子模块的触发机制为消息触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;
若逻辑子模块的触发机制为时钟触发,则将消息暂存于缓冲区,等待逻辑子模块的读取;
若逻辑子模块的触发机制为瀑布流触发,则存储消息或触发动作返回;
若逻辑子模块的触发机制为使用状态机触发,则将消息根据优先级和时间戳排序,进入消息队列,等待被处理;
当逻辑子模块通过所述运动总线发送运动指令时,如果所述机器人的运动模块被所述逻辑子模块控制,则所述运动模块中断之前的运动指令,并执行最新的运动指令;如果所述运动模块被其他逻辑子模块控制,则所述运动指令被打回。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用阻塞机制或非阻塞机制,以使前序的逻辑子模块等待后序的逻辑子模块运行结束或运行通知之后进行时序处理;其中,所述前序的逻辑子模块的执行顺序先于所述后序的逻辑子模块的执行顺序,且所述前序的逻辑子模块与所述后序的逻辑子模块之间存在依赖关系。
6.一种应用于机器人的逻辑模块开发装置,其特征在于,所述装置包括:
业务逻辑获取模块,用于获取目标业务的整体业务逻辑;
业务逻辑拆解模块,用于根据预设的逻辑模块拆解模板对所述整体业务逻辑进行分解,生成多个逻辑子模块;其中,所述逻辑子模块用于运行所述整体业务逻辑分解得到的业务子逻辑;
业务特征获取模块,用于针对每个逻辑子模块,获取所述逻辑子模块需运行的业务子逻辑的业务特征;
触发机制确定模块,用于针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块触发模板库进行匹配,并根据匹配结果确定所述逻辑子模块的触发机制;其中,所述逻辑模块触发模板库中存储有不同的逻辑模块触发模板,所述逻辑模块触发模板中记录有业务特征与触发机制的关联关系;
调度策略确定模块,用于根据所述多个逻辑子模块之间的调用关系,确定所述多个逻辑子模块之间的业务逻辑调度执行策略;
通信机制确定模块,用于针对每个逻辑子模块,将所述逻辑子模块对应的业务特征与预设的逻辑模块通信机制库进行匹配,确定所述逻辑子模块的模块通信机制;其中,所述逻辑模块通信机制库中存储有不同的业务特征关联的通信机制,所述通信机制用于指示所述逻辑子模块与所述机器人的感知模块和/或运动模块之间的通信方式;
所述触发机制确定模块具体用于若所述逻辑子模块对应的业务特征为表示受消息驱动的业务的特征,则逻辑子模块的触发机制为消息触发;若所述逻辑子模块对应的业务特征为表示使用严格时序的业务的特征,则逻辑子模块的触发机制为时钟触发;若所述逻辑子模块对应的业务特征为表示逻辑简单的业务的特征,则逻辑子模块的触发机制为瀑布流触发;若所述逻辑子模块对应的业务特征表示有限状态机,并有明确事件触发状态迁移的业务的特征,则逻辑子模块的触发机制为使用状态机触发;
所述调度策略确定模块具体用于若所述逻辑子模块之间的调用关系为有前后赖关系,则所述逻辑子模块之间采用串行调用机制;若所述逻辑子模块之间的调用关系为相互独立且互不干扰,则所述逻辑子模块之间采用并行调用机制;根据所述多个逻辑子模块之间采用的调用机制和所述多个逻辑子模块之间的执行顺序,生成所述多个逻辑子模块之间的业务逻辑调度执行策略;
所述通信机制确定模块具体用于若所述逻辑子模块对应的业务特征为表示所述逻辑子模块订阅所述感知模块和/或所述运动模块的消息的特征,则逻辑子模块的模块通信机制为消息订阅分发机制;若所述逻辑子模块对应的业务特征为表示所述逻辑子模块与所述感知模块和/或所述运动模块交换数据的特征,则逻辑子模块的模块通信机制为进程间通讯机制。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410405489.4A CN117992032B (zh) | 2024-04-07 | 2024-04-07 | 应用于机器人的逻辑模块开发方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410405489.4A CN117992032B (zh) | 2024-04-07 | 2024-04-07 | 应用于机器人的逻辑模块开发方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117992032A CN117992032A (zh) | 2024-05-07 |
CN117992032B true CN117992032B (zh) | 2024-06-07 |
Family
ID=90901047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410405489.4A Active CN117992032B (zh) | 2024-04-07 | 2024-04-07 | 应用于机器人的逻辑模块开发方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992032B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2452730A1 (en) * | 2001-07-06 | 2003-01-16 | Computer Associates Think, Inc. | Business process policy object |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN114897511A (zh) * | 2022-06-06 | 2022-08-12 | 中国工商银行股份有限公司 | 基于rpa技术的业务流程调度处理方法及系统 |
CN115455430A (zh) * | 2022-09-20 | 2022-12-09 | 中国建设银行股份有限公司 | 一种基于Kyverno安全策略的安全防护方法及系统 |
-
2024
- 2024-04-07 CN CN202410405489.4A patent/CN117992032B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2452730A1 (en) * | 2001-07-06 | 2003-01-16 | Computer Associates Think, Inc. | Business process policy object |
CN111176802A (zh) * | 2019-07-26 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、电子设备及存储介质 |
CN114897511A (zh) * | 2022-06-06 | 2022-08-12 | 中国工商银行股份有限公司 | 基于rpa技术的业务流程调度处理方法及系统 |
CN115455430A (zh) * | 2022-09-20 | 2022-12-09 | 中国建设银行股份有限公司 | 一种基于Kyverno安全策略的安全防护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117992032A (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Musa | The operational profile | |
CN114510339B (zh) | 一种计算任务调度方法、装置、电子设备及可读存储介质 | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
CN112748993A (zh) | 任务执行方法、装置、存储介质及电子设备 | |
WO2024041400A1 (zh) | 模型训练任务的调度方法、装置及电子设备 | |
JP2023530947A (ja) | クエリ最適化のための自動フィードバックおよび継続学習 | |
Guan et al. | Novel sustainable and heterogeneous offloading management techniques in proactive cloudlets | |
US10896130B2 (en) | Response times in asynchronous I/O-based software using thread pairing and co-execution | |
US20120151445A1 (en) | Data parallelism aware debugging | |
CN117992032B (zh) | 应用于机器人的逻辑模块开发方法、装置和计算机设备 | |
CN113407343A (zh) | 一种基于资源分配的业务处理方法、装置及设备 | |
CN116821187A (zh) | 基于数据库的数据处理方法、装置、介质和电子设备 | |
CN115562846A (zh) | 一种资源调度的方法、装置及计算节点 | |
CN113190427A (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
CN110955503A (zh) | 任务调度方法及装置 | |
US20180150786A1 (en) | Efficient task planning using past performance | |
CN113360448B (zh) | 数据包处理方法及装置 | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 | |
CN113778850A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN114564249A (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN113961194A (zh) | 基于Flutter跨应用的工程构建方法、系统、终端及介质 | |
JPH08502375A (ja) | コンピュータにて並列実行処理可能なオブジェクト指向プログラムの少なくとも1つのオブジェクトにおける少なくとも1つのテストの実施方法 | |
US20110247007A1 (en) | Operators with request-response interfaces for data stream processing applications | |
US20080163224A1 (en) | Modeling interrupts in a business process | |
CN114116150A (zh) | 一种任务调度方法、装置以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |