CN106293757A - 机器人系统软件架构及其实现方法和装置 - Google Patents
机器人系统软件架构及其实现方法和装置 Download PDFInfo
- Publication number
- CN106293757A CN106293757A CN201610682554.3A CN201610682554A CN106293757A CN 106293757 A CN106293757 A CN 106293757A CN 201610682554 A CN201610682554 A CN 201610682554A CN 106293757 A CN106293757 A CN 106293757A
- Authority
- CN
- China
- Prior art keywords
- function
- sub
- module
- pipeline
- function module
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Manipulator (AREA)
Abstract
本发明公开了一种机器人系统软件架构及其实现方法和装置,所述装置包括:初始化模块,用于初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,并将用户注册执行函数接口赋值给相应的用户注册执行函数指针;管道通信管理模块,包括输入管道、输出管道、接收管道和发送管道,形成四管道数据传输模式,用于数据通信管理;命令解析模块,用于处理上游子功能模块及下游子功能模块的命令数据解析及执行对应命令操作;任务调度模块,用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度。本发明可以实现机器人系统软件架构的上、下游子功能模块的命令接收、解析、转发以及任务的动态调度。
Description
技术领域
本发明涉及一种机器人系统软件架构,尤其是一种机器人系统软件架构及其实现方法和装置。属于机器人系统软件领域。
背景技术
机器人系统软件是一项综合复杂的系统工程,功能多样,对系统软件的需求要满足多任务,强实时性的特点,对系统软件的规划设计提出了较高的要求。机器人系统软件按照功能进行划分,以模块化软件架构设计思路实现,逐步成为机器人系统软件的开发趋势。一个合理、高效、灵活、稳定的模块化软件架构,能够有效降低功能数据耦合,提高软件的稳定性和排查错误的高效性。近些年,机器人系统软件技术发展非常迅速,各种机器人系统软件架构在各个领域的机器人控制系统中广泛获得应用。
现有机器人系统软件架构分为混合式和模块化式。其中,混合式是将机器人系统软件按照功能划分至线程中,功能间可任意进行函数接口调用,各种全局数据可直接相互访问和修改;模块化式是将机器人系统软件按照功能划分至进程中,通过共享内存的方式提供模块间的数据交互,没有模块间的函数接口调用。
由于混合式机器人系统软件架构设计结构简单明了,目前绝大多数机器人系统软件架构都普遍采用这种方式,但其高度耦合性随着系统功能的庞大复杂,容易造成系统混乱,给系统稳定性带来很大隐患,不利于系统的后续维护、移植、升级等。模块化式机器人系统软件架构虽然降低了模块间的数据耦合,但共享内存的方式缺少模块间同步性,无法保证数据的完整性,比如上游子功能模块写入一片数据,还未写完则被切换至下游子功能模块,导致下游子功能模块无法获取完整的片区数据,再如下游还未读取数据,上游优先被切换,新的数据覆盖了旧数据。因此,这种模块化式机器人系统软件架构需要用户自行设计维护模块间数据交互的同步性和完整性,对软件人员的开发能力和软件数据传输稳定性提出了很高的要求。
发明内容
本发明的第一个目的是为了解决上述现有技术的缺陷,提供了一种机器人系统软件架构的实现方法,该方法可以实现机器人系统软件架构的上、下游子功能模块的命令接收、解析、转发以及任务的动态调度,同时利用四管道数据传输模式,能够有效保证数据完整性,且传输延迟低,能够完全满足模块化机器人系统软件架构的设计要求。
本发明的第二个目的在于提供一种机器人系统软件架构的实现装置。
本发明的第三个目的在于提供一种机器人系统软件架构。
本发明的第一个目的可以通过采取如下技术方案达到:
机器人系统软件架构的实现方法,所述方法包括:
初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,并将用户注册执行函数接口赋值给相应的用户注册执行函数指针;
根据机器人系统软件架构的子功能模块间的串联参数,采用子进程的方式动态创建子功能模块;
当子功能模块创建完成后,通过输入管道输入子功能模块的上游子功能模块数据,通过接收管道接收子功能模块的下游子功能模块数据;
解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行;
根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度;
当任务执行完成后,将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道;
通过输出管道输出管道数据帧给上游子功能模块,通过发送管道发送管道数据帧给下游子功能模块,完成数据传输。
进一步的,所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
所述用户注册执行函数包括用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数;
其中,在用户自定义模块初始化钩子函数中,利用任务执行函数接口注册用户自定义任务周期执行函数,任务执行函数接口所需参数包括任务优先级、任务执行周期和用户自定义任务周期执行函数指针;所述管道传输函数接口与输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数相对应;所述命令解析函数接口与命令解析函数相对应。
进一步的,所述解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行的步骤之后,还包括:
若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行。
进一步的,所述根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度,具体为:
根据用户自定义任务集内用户给定的任务优先级和任务执行周期,保存用户任务上下文,实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度。
本发明的第二个目的可以通过采取如下技术方案达到:
机器人系统软件架构的实现装置,所述装置包括:
初始化模块,用于初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,并将用户注册执行函数接口赋值给相应的用户注册执行函数指针;
管道通信管理模块,用于当子功能模块创建完成后,通过输入管道输入子功能模块的上游子功能模块数据,通过接收管道接收子功能模块的下游子功能模块数据;以及通过输出管道输出管道数据帧给上游子功能模块,通过发送管道发送管道数据帧给下游子功能模块,完成数据传输;
命令解析模块,用于解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行;以及用于当任务执行完成后,将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道;
任务调度模块,用于根据机器人系统软件架构的子功能模块间的串联参数,采用子进程的方式动态创建子功能模块;以及用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度。
进一步的,所述初始化模块中,所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
所述用户注册执行函数包括用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数;
其中,在用户自定义模块初始化钩子函数中,利用任务执行函数接口注册用户自定义任务周期执行函数,任务执行函数接口所需参数包括任务优先级、任务执行周期和用户自定义任务周期执行函数指针;所述管道传输函数接口与输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数相对应;所述命令解析函数接口与命令解析函数相对应。
进一步的,所述命令解析模块,还用于:若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行。
进一步的,所述任务调度模块中,用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度,具体为:
用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,保存用户任务上下文,实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度。
本发明的第三个目的可以通过采取如下技术方案达到:
机器人系统软件架构,基于上述的装置,将机器人系统软件架构划分为多个子功能模块,并以独立进程的形式将多个子功能模块进行串联,第一个子功能模块的输入管道和输出管道与控制终端连接,该模块的接收管道与第二个子模块的输出管道连接,发送管道与第二个子模块的输入管道连接,以此类推,直至所有子功能模块连接完成;
在创建子功能模块时,以上述的装置,根据子功能模块间的串联参数,采用子进程的方式动态创建子功能模块,以此类推,逐步完成所有子功能模块的创建,各个子功能模块逐一串联,实现数据交互传输。
进一步的,所述各个子功能模块中,若有一个子功能模块结束退出,该子功能模块通过输出管道使该子功能模块的上游子功能模块结束退出,通过发送管道使该子功能模块的下游子功能模块结束退出,以此类推,结束所有子功能模块运行。
本发明相对于现有技术具有如下的有益效果:
1、本发明所实现的机器人系统软件架构中,每一个子功能模块内都可以实现的上、下游子功能模块的命令接收、解析、转发、任务的动态调度,提供了多种应用接口,方便应用到机器人系统软件架构设计中,减少模块耦合性,增强设计灵活性和稳定性,方便软件维护,具有较高的实用价值和意义;同时,利用四管道数据传输模式,能够有效保证数据完整性,且传输延迟低,能够完全满足模块化机器人系统软件架构的设计要求。
2、本发明将机器人系统软件架构划分为多个子功能模块,并以独立进程的形式将多个子功能模块进行串联,每一个子功能模块都可以单独优化设计与变更,可单独通过输入/输出数据对模块进行稳定性和可靠性测试,提高排查错误的效率,每一个子功能模块的稳定将会大幅提升机器人系统软件的整体稳定性。
3、本发明提供了输入管道、输出管道、接收管道和发送管道,即采用四管道数据传输模式,增加了中间数据采集通道的数量,无缝采集两个子功能模块间的数据传输时间戳,便于开发人员进行数据分析。
4、本发明可以实现机器人系统软件架构设计的高度模块化,大大降低了机器人系统软件架构设计难度,提高了设计灵活性、系统软件整体稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1的机器人系统软件架构的实现装置结构框图。
图2为本发明实施例2的机器人系统软件架构的实现方法流程图。
图3为本发明实施例3的机器人系统软件架构设计示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本实施例提供了一种机器人系统软件架构的实现装置,该装置可认为是一种四管道高度模块化机器人软件架构,包括初始化模块110、管道通信管理模块120、命令解析模块130和任务调度模块140,各个模块的具体功能如下:
所述初始化模块110,用于初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,该初始化模块110能够动态分配子功能模块的属性数据结构存储空间,利用操作系统管道建立方法分别在父/子进程中创建读/写管道,其中,父进程的写管道连接子进程的读管道,子进程的写管道连接父进程的读管道,形成双向四管道结构;初始化模块110还可以将用户注册执行函数接口赋值给相应的用户注册执行函数指针,主要实现动态分配句柄所需的存储空间,并记录用户传递的子功能模块参数和用户注册执行函数;
所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
所述用户注册执行函数包括用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数;所声明的用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数依次如下:
int(*init)(JIASVModule*module)
void(*del)(JIASVModule*module)
int(*on_input)(JIASVModule*module,char*line)
int(*on_output)(JIASVModule*module,char*line)
int(*on_recv)(JIASVModule*module,char*line)
int(*on_send)(JIASVModule*module,char*line)
int(*on_parse_args)(JIASVModule*module,int argc,char**argv)
其中,钩子函数是软件系统消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息,钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入软件系统。
在用户自定义模块初始化钩子函数中,利用任务执行函数接口注册用户自定义任务周期执行函数,任务执行函数接口所需参数包括任务优先级、任务执行周期(单位:毫秒)和用户自定义任务周期执行函数指针;所述管道传输函数接口与输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数相对应;所述命令解析函数接口与命令解析函数相对应。
所述管道通信管理模块120,包括输入管道121、输出管道122、接收管道123和发送管道124,形成四管道数据传输模式,用于数据通信管理;其中,输入管道121和输出管道122与上游子功能模块进行通信,接收管道123和发送管道124与下游子功能模块进行通信。
管道通信管理模块120在子功能模块创建完成后,通过输入管道121输入子功能模块的上游子功能模块数据,通过接收管道123接收子功能模块的下游子功能模块数据;以及通过输出管道122输出管道数据帧给上游子功能模块,通过发送管道124发送管道数据帧给下游子功能模块,完成数据传输;其中,输入管道121通过输入管道执行函数注册实现,输出管道122通过输出管道执行函数注册实现,接收管道123通过接收管道执行函数注册实现,发送管道124通过发送管道执行函数注册实现。
管道通信管理模块120采用了管道通信技术,管道通信技术是提供的多进程间数据通信交互的一种高效实现方式,自带有数据缓冲、阻塞/非阻塞同步管理,数据以队列形式呈现于进程模块间,能够有效保证数据完整性,且传输延迟低,能够完全满足模块化机器人系统软件架构的设计要求。
所述命令解析模块130,主要用于处理上游子功能模块及下游子功能模块的命令数据解析及执行对应命令操作(如结束退出等命令),命令解析模块130通过命令解析函数注册实现,管道通信管理模块120的上半部分在获得输入和接收的数据后,调用命令解析模块130,传递输入和接收的数据给命令解析模块130,由命令解析模块130解析输入和接收的数据,转换成相应的键/键值对数据,具体为:将用户输入字符串进行词组分割,形成独立单词组,前后形成键与键值的对应关系;命令解析模块130再根据键/键值对数据,完成命令的相应动作判断和执行,若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行;当任务调度模块140的任务执行完成后,管道通信管理模块120的下半部分调用命令解析模块130,由命令解析模块130将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道。
所述任务调度模块140由任务执行函数接口、任务队列及动态调度策略算法组成,具有用户自定义任务集141,主要用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,保存用户任务上下文,实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度,在任务调度模块140执行本模块的任务前,根据机器人系统软件架构的子功能模块间的串联参数,采用子进程的方式动态创建子功能模块。
实施例2:
如图2所示,本实施例提供了一种机器人系统软件架构的实现方法,基于上述实施例1的装置(即四管道高度模块化机器人软件架构)实现,该方法结合图1进行说明,包括以下步骤:
S201、开始运行;
S202、初始化模块110初始化机器人系统软件架构的子功能模块数据结构和管道运行环境;
S203、初始化模块110将用户注册执行函数接口赋值给相应的用户注册执行函数指针;其中,所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
S204、由于机器人系统软件按功能划分为多个子功能模块,模块间以串联方式逐一被创建,第一个子功能模块为首模块,负责以子进程方式创建第二个子功能模块,以此类推;在任务调度模块140开始前,先判断是否创建子功能模块,若有子功能模块创建的参数,进入步骤S205;
S205、创建子功能模块,判断子功能模块是否创建完成,若还有子功能模块需要创建,返回步骤S201,如此递归反复,直到所有子功能模块完成创建,进入步骤S206和S207;
任务调度模块140嵌套了管道通信管理模块120和命令解析模块130,具体的,任务调度模块140在完成子功能模块创建后,进入正常的周期循环过程(步骤S206~S211);
S206、管道通信管理模块120通过输入管道121输入子功能模块的上游子功能模块数据;
S207、管道通信管理模块120通过接收管道123接收子功能模块的下游子功能模块数据;
在步骤S206和S207完成后,管道通信管理模块120的上半部分调用命令解析模块130,进入步骤S208;
S208、命令解析模块130解析输入和接收的数据,转换成相应的键/键值对数据,再根据键/键值对数据,完成命令的相应动作判断和执行,若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行;
S209、任务调度模块140实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度;
在任务执行完成后,管道通信管理模块120的下半部分调用命令解析模块130,命令解析模块130将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道,进入步骤S210和S211;
S210、管道通信管理模块120通过输出管道122输出管道数据帧给上游子功能模块;
S211、管道通信管理模块120通过发送管道124发送管道数据帧给下游子功能模块;
在步骤S210和S211完成后,管道通信管理模块120即完成数据传输,完成上述步骤S206~S211后,又回到任务调度模块140的周期循环过程起始,如此反复。
实施例3:
如图3所示,本实施例提供一种典型的机器人系统软件架构,基于上述实施例1的装置(即四管道高度模块化机器人软件架构),将机器人系统软件架构划分为以下子功能模块:HMI模块320、机器人指令译码模块330、机器人运动插补模块340、伺服系统控制模块350和虚拟仿真模块360,以独立进程的形式将HMI模块320、机器人指令译码模块330、机器人运动插补模块340、伺服系统控制模块350和虚拟仿真模块360进行串联,图3中用310表示上述子功能模块中任意一个子功能模块,311则表示该子功能模块的输入管道,312表示该子功能模块的输出管道,313表示该子功能模块的接收管道,314表示该子功能模块的发送管道。
具体的,以上述实施例1的装置(即四管道高度模块化机器人软件架构),逐步实现通过HMI模块320创建机器人指令译码模块330子功能模块,通过机器人指令译码模块330创建机器人运动插补模块340子功能模块,通过机器人运动插补模块340创建伺服系统控制模块350子功能模块,通过伺服系统控制模块350创建虚拟仿真模块360子功能模块。因此,各个子功能模块以实施例1的装置逐一串联,实现数据交互传输,构建了完整的机器人系统软件架构。
在本实施例中,HMI模块320和机器人指令译码模块330可在中间串入一个TCP/IP传输模块370的子功能模块,通过标准传输协议进行数据转发,形成上、下位机的控制方式。
在本实施例中,机器人指令译码模块330和机器人运动插补模块340可在中间串入第一数据监视模块380的子功能模块,机器人运动插补模块340和伺服系统控制模块350可在中间串入第二数据监视模块390的子功能模块;一方面,通过第一数据监视模块380和第二数据监视模块390进行中间数据转发;另一方面,可以有效采集并第一数据监视模块380与第二数据监视模块390之间数据交互的合理性及正确性,有助于机器人系统软件的整体调试。
上述各个子功能模块中,若有一个子功能模块结束退出,该子功能模块通过输出管道使该子功能模块的上游子功能模块结束退出,通过发送管道使该子功能模块的下游子功能模块结束退出,以此类推,结束所有功能模块运行。
在此需要说明的是,上述实施例中的装置中各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
综上所述,本发明所实现的机器人系统软件架构中,每一个子功能模块内都可以实现的上、下游子功能模块的命令接收、解析、转发、任务的动态调度,提供了多种应用接口,方便应用到机器人系统软件架构设计中,减少模块耦合性,增强设计灵活性和稳定性,方便软件维护,具有较高的实用价值和意义;同时,利用四管道数据传输模式,能够有效保证数据完整性,且传输延迟低,能够完全满足模块化机器人系统软件架构的设计要求。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。
Claims (10)
1.机器人系统软件架构的实现方法,其特征在于:所述方法包括:
初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,并将用户注册执行函数接口赋值给相应的用户注册执行函数指针;
根据机器人系统软件架构的子功能模块间的串联参数,采用子进程的方式动态创建子功能模块;
当子功能模块创建完成后,通过输入管道输入子功能模块的上游子功能模块数据,通过接收管道接收子功能模块的下游子功能模块数据;
解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行;
根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度;
当任务执行完成后,将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道;
通过输出管道输出管道数据帧给上游子功能模块,通过发送管道发送管道数据帧给下游子功能模块,完成数据传输。
2.根据权利要求1所述的机器人系统软件架构的实现方法,其特征在于:所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
所述用户注册执行函数包括用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数;
其中,在用户自定义模块初始化钩子函数中,利用任务执行函数接口注册用户自定义任务周期执行函数,任务执行函数接口所需参数包括任务优先级、任务执行周期和用户自定义任务周期执行函数指针;所述管道传输函数接口与输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数相对应;所述命令解析函数接口与命令解析函数相对应。
3.根据权利要求1所述的机器人系统软件架构的实现方法,其特征在于:所述解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行的步骤之后,还包括:
若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行。
4.根据权利要求1所述的机器人系统软件架构的实现方法,其特征在于:所述根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度,具体为:
根据用户自定义任务集内用户给定的任务优先级和任务执行周期,保存用户任务上下文,实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度。
5.机器人系统软件架构的实现装置,其特征在于:所述装置包括:
初始化模块,用于初始化机器人系统软件架构的子功能模块数据结构和管道运行环境,并将用户注册执行函数接口赋值给相应的用户注册执行函数指针;
管道通信管理模块,用于当子功能模块创建完成后,通过输入管道输入子功能模块的上游子功能模块数据,通过接收管道接收子功能模块的下游子功能模块数据;以及用于通过输出管道输出管道数据帧给上游子功能模块,通过发送管道发送管道数据帧给下游子功能模块,完成数据传输;
命令解析模块,用于解析输入和接收的数据,转换成相应的键/键值对数据,根据键/键值对数据,完成命令的相应动作判断和执行;以及用于当任务执行完成后,将子功能模块的键/键值对数据转换成管道数据帧,写入相应的管道;
任务调度模块,用于根据机器人系统软件架构的子功能模块间的串联参数,采用子进程的方式动态创建子功能模块;以及用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度。
6.根据权利要求5所述的机器人系统软件架构的实现装置,其特征在于:所述初始化模块中,所述用户注册执行函数接口包括任务执行函数接口、管道传输函数接口和命令解析函数接口;
所述用户注册执行函数包括用户自定义模块初始化钩子函数、用户自定义模块卸载钩子函数、输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数和命令解析函数;
其中,在用户自定义模块初始化钩子函数中,利用任务执行函数接口注册用户自定义任务周期执行函数,任务执行函数接口所需参数包括任务优先级、任务执行周期和用户自定义任务周期执行函数指针;所述管道传输函数接口与输入管道执行函数、输出管道执行函数、接收管道执行函数、发送管道执行函数相对应;所述命令解析函数接口与命令解析函数相对应。
7.根据权利要求5所述的机器人系统软件架构的实现装置,其特征在于:所述命令解析模块,还用于:若某个子功能模块中命令的相应动作在未被执行,则将命令转发给下一个子功能模块继续执行。
8.根据权利要求5所述的机器人系统软件架构的实现装置,其特征在于:所述任务调度模块中,用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,实现多任务间的执行调度,具体为:
用于根据用户自定义任务集内用户给定的任务优先级和任务执行周期,保存用户任务上下文,实时调度就绪状态下高优先级任务,并进入执行状态,实现多任务间的执行调度。
9.机器人系统软件架构,其特征在于:基于权利要求5-8任一项所述的装置,将机器人系统软件架构划分为多个子功能模块,并以独立进程的形式将多个子功能模块进行串联,第一个子功能模块的输入管道和输出管道与控制终端连接,该模块的接收管道与第二个子模块的输出管道连接,发送管道与第二个子模块的输入管道连接,以此类推,直至所有子功能模块连接完成;
在创建子功能模块时,以权利要求5-8任一项所述的装置,根据子功能模块间的串联参数,采用子进程的方式动态创建子功能模块,以此类推,逐步完成所有子功能模块的创建,各个子功能模块逐一串联,实现数据交互传输。
10.根据权利要求9所述的机器人系统软件架构,其特征在于:所述各个子功能模块中,若有一个子功能模块结束退出,该子功能模块通过输出管道使该子功能模块的上游子功能模块结束退出,通过发送管道使该子功能模块的下游子功能模块结束退出,以此类推,结束所有子功能模块运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610682554.3A CN106293757B (zh) | 2016-08-17 | 2016-08-17 | 机器人系统软件架构及其实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610682554.3A CN106293757B (zh) | 2016-08-17 | 2016-08-17 | 机器人系统软件架构及其实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106293757A true CN106293757A (zh) | 2017-01-04 |
CN106293757B CN106293757B (zh) | 2019-07-30 |
Family
ID=57678922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610682554.3A Active CN106293757B (zh) | 2016-08-17 | 2016-08-17 | 机器人系统软件架构及其实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106293757B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110293539A (zh) * | 2019-06-24 | 2019-10-01 | 佛山智异科技开发有限公司 | 工业机器人示教器软件架构的实现方法、装置及示教器 |
CN111597018A (zh) * | 2020-04-21 | 2020-08-28 | 清华大学 | 一种机器人作业调度方法及装置 |
CN111899150A (zh) * | 2020-08-28 | 2020-11-06 | Oppo广东移动通信有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112987595A (zh) * | 2021-03-06 | 2021-06-18 | 亚联美育(海南)教育科技集团有限公司 | 智能云计算机器人仿真系统软件及其操作方法 |
CN113254232A (zh) * | 2021-06-01 | 2021-08-13 | 苏州浪潮智能科技有限公司 | 软件模块化方法、系统、装置、设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567029A (zh) * | 2011-12-31 | 2012-07-11 | 深圳市中兴昆腾有限公司 | 一种可扩展的软件设计架构 |
CN102624762A (zh) * | 2011-01-30 | 2012-08-01 | 深圳市腾讯计算机系统有限公司 | 基于云计算提升机器人软件功能的方法和云计算服务器 |
CN103389666A (zh) * | 2013-07-19 | 2013-11-13 | 固高科技(深圳)有限公司 | 机器人的软件架构 |
WO2013189994A1 (fr) * | 2012-06-20 | 2013-12-27 | Université Blaise Pascal - CLERMONT II | Plateforme de simulation pour la validation d'une architecture logicielle et matérielle d'un robot |
CN105786502A (zh) * | 2016-02-26 | 2016-07-20 | 成都雅骏新能源汽车科技股份有限公司 | 一种调度式嵌入式应用软件架构及其实现方法 |
-
2016
- 2016-08-17 CN CN201610682554.3A patent/CN106293757B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102624762A (zh) * | 2011-01-30 | 2012-08-01 | 深圳市腾讯计算机系统有限公司 | 基于云计算提升机器人软件功能的方法和云计算服务器 |
CN102567029A (zh) * | 2011-12-31 | 2012-07-11 | 深圳市中兴昆腾有限公司 | 一种可扩展的软件设计架构 |
WO2013189994A1 (fr) * | 2012-06-20 | 2013-12-27 | Université Blaise Pascal - CLERMONT II | Plateforme de simulation pour la validation d'une architecture logicielle et matérielle d'un robot |
CN103389666A (zh) * | 2013-07-19 | 2013-11-13 | 固高科技(深圳)有限公司 | 机器人的软件架构 |
CN105786502A (zh) * | 2016-02-26 | 2016-07-20 | 成都雅骏新能源汽车科技股份有限公司 | 一种调度式嵌入式应用软件架构及其实现方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110293539A (zh) * | 2019-06-24 | 2019-10-01 | 佛山智异科技开发有限公司 | 工业机器人示教器软件架构的实现方法、装置及示教器 |
CN111597018A (zh) * | 2020-04-21 | 2020-08-28 | 清华大学 | 一种机器人作业调度方法及装置 |
CN111899150A (zh) * | 2020-08-28 | 2020-11-06 | Oppo广东移动通信有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112987595A (zh) * | 2021-03-06 | 2021-06-18 | 亚联美育(海南)教育科技集团有限公司 | 智能云计算机器人仿真系统软件及其操作方法 |
CN113254232A (zh) * | 2021-06-01 | 2021-08-13 | 苏州浪潮智能科技有限公司 | 软件模块化方法、系统、装置、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106293757B (zh) | 2019-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293757A (zh) | 机器人系统软件架构及其实现方法和装置 | |
US7984448B2 (en) | Mechanism to support generic collective communication across a variety of programming models | |
Drath et al. | AutomationML-the glue for seamless automation engineering | |
CN103488775A (zh) | 一种用于大数据处理的计算系统及计算方法 | |
Li et al. | Extensible discrete-event simulation framework in SimEvents | |
Chen et al. | UML and platform-based design | |
Peñil et al. | Generating heterogeneous executable specifications in SystemC from UML/MARTE models | |
Pelcat et al. | A system-level architecture model for rapid prototyping of heterogeneous multicore embedded systems | |
Baier et al. | Synthesis of Reo connectors for strategies and controllers | |
CN105528319A (zh) | 基于fpga的加速卡及其加速方法 | |
Tasharofi et al. | Modeling web service interactions using the coordination language reo | |
CN113132156B (zh) | 存储-计算-传输一体化的网络功能基础平台结构及方法 | |
Oliveira et al. | IMCReo: interactive Markov chains for stochastic Reo | |
Vidal et al. | IP reuse in an MDA MPSoPC co-design approach | |
Wodey et al. | LOTOS code generation for model checking of STBus based SoC: the STBus interconnection | |
Strehl | Symbolic methods applied to formal verification and synthesis in embedded systems design | |
Gorton et al. | Engineering high quality parallel software using PARSE | |
Sydow et al. | A safe and user-friendly graphical programming model for parallel stream processing | |
Matyasik et al. | Communication between agents in Alvis language | |
CN107818071A (zh) | 一种基于fpga的硬件线程实现方法 | |
Gorton et al. | Reliable parallel software construction using PARSE | |
Nejad et al. | Mapping kpn models of streaming applications on a network-on-chip platform | |
Boubana-Tebibel | Object dynamics formalization using object flows within UML state machines | |
JPH0950371A (ja) | プログラム作成支援装置およびプログラム作成支援方法 | |
Ong et al. | Interactive codesign for real-time embedded control systems: task graph generation from SA/VHDL models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |