CN107943458B - 一种机器人开发系统 - Google Patents

一种机器人开发系统 Download PDF

Info

Publication number
CN107943458B
CN107943458B CN201711154003.0A CN201711154003A CN107943458B CN 107943458 B CN107943458 B CN 107943458B CN 201711154003 A CN201711154003 A CN 201711154003A CN 107943458 B CN107943458 B CN 107943458B
Authority
CN
China
Prior art keywords
layer
service
interface
robot
instruction
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
Application number
CN201711154003.0A
Other languages
English (en)
Other versions
CN107943458A (zh
Inventor
蒋化冰
熊伟
谭舟
梁兰
徐志强
严婷
郦莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI MUMU JUCONG ROBOT TECHNOLOGY Co.,Ltd.
Original Assignee
Shanghai Mumu Jucong Robot Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Mumu Jucong Robot Technology Co ltd filed Critical Shanghai Mumu Jucong Robot Technology Co ltd
Priority to CN201711154003.0A priority Critical patent/CN107943458B/zh
Publication of CN107943458A publication Critical patent/CN107943458A/zh
Application granted granted Critical
Publication of CN107943458B publication Critical patent/CN107943458B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/007Means or methods for designing or fabricating manipulators

Abstract

本发明公开了一种机器人开发系统,包括:底层工控服务层、内核层和接口层;底层工控服务层,用于接收内核层转发的控制指令,并调用控制指令对应的ROS节点执行相应的操作;以及,接收机器人上的各硬件的反馈数据,并把接收的反馈数据发送至内核层;内核层,用于接收底层工控服务层发送的反馈数据,并把反馈数据转发至接口层;以及,接收接口层发送的控制指令,并把控制指令转发至底层工控服务层;以及,当机器人启动时,发送唤醒指令以唤醒机器人的语音系统;接口层,用于接收内核层转发的反馈数据;以及,接收开发程序中的调用指令,并根据调用指令调用接口层中相应的应用程序编程接口发送对应的控制指令至内核层。本发明可以提供更灵活的调用。

Description

一种机器人开发系统
技术领域
本发明涉及机器人领域,尤其涉及一种机器人开发系统。
背景技术
目前的机器人软件系统的开发主要基于现有ROS系统,并基于该ROS系统和机器人硬件能力进行相应的应用程序的开发。
但是由于智能服务机器人的应用场景多变,要求机器人具有不同的应用层面的能力。特别地,在复杂且多变的应用场景中,不同的经销商客户的需求差异很大,往往需要根据不同客户的需求来定制相应的机器人,因此,在现有的开发设计过程中,需要机器人开发者重新设计硬件结构,以及,每次都需要设计与新的硬件结构相配套、且与不同需求相对应的不同层次的软件架构。在开发设计过程中,每次都需要根据不同的客户需求重新设计不同层次的软件架构,给机器人开发者带来了更高的开发成本。
发明内容
本发明的目的是提供一种机器人开发系统,具有较好的通用性,降低开发成本。
本发明提供的技术方案如下:
一种机器人开发系统,包括:底层工控服务层、内核层和接口层;所述底层工控服务层,用于接收所述内核层转发的控制指令,并调用所述控制指令对应的ROS节点执行相应的操作;以及,接收机器人上的各硬件的反馈数据,并把接收的所述反馈数据发送至所述内核层;所述内核层,集成有与底层工控服务层和接口层通信的框架,所述内核层用于接收所述底层工控服务层发送的所述反馈数据,并把所述反馈数据转发至所述接口层;以及,接收所述接口层发送的所述控制指令,并把所述控制指令转发至所述底层工控服务层;以及,当机器人启动时,发送唤醒指令以唤醒所述机器人的语音系统;所述接口层,用于接收所述内核层转发的所述反馈数据;以及,接收开发程序中的调用指令,并根据所述调用指令调用所述接口层中相应的应用程序编程接口发送对应的控制指令至所述内核层。
在上述技术方案中,接口层和底层工控层之间通过内核层耦合,接口层和具体的底层工控层(即机器人的硬件结构)无关,具有较好的通用性,降低机器人开发人员在开发过程中的开发成本。
进一步,所述接口层包括:软件开发工具包单元;所述软件开发工具包单元包括:若干个基于硬件体系封装的硬件类应用程序编程接口;所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的硬件类调用指令时,调用相应的硬件类应用程序编程接口发送对应的控制指令至所述内核层。
进一步,所述软件开发工具包单元还包括:若干个基于业务需求封装的业务类应用程序编程接口;所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的业务类调用指令时,调用相应的业务类应用程序编程接口发送对应的控制指令至所述内核层。
进一步,所述软件开发工具包单元还包括:若干个基于机器人能力封装的能力类应用程序编程接口;所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的能力类调用指令时,调用相应的能力类应用程序编程接口发送对应的控制指令至所述内核层。
在上述技术方案中,将内核层划分为了软件开发工具包单元,并根据开发需求划分为不同种类的API接口供开发人员使用,使开发人员可以根据自己的定制需求直接调用不同种类的API接口,提高了API接口调用的灵活性。
进一步,所述接口层包括:服务单元;所述服务单元包括:若干个基于开发系统开启而启动、并长效后台运行封装的服务类应用程序编程接口;所述服务单元,当接收到的开发程序中的调用指令为服务单元的服务类调用指令时,调用相应的服务类应用程序编程接口发送对应的控制指令至所述内核层。
在上述技术方案中,接口层为开发人员提供了不同模式的API接口,使开发人员可以根据自己的开发模式调用相应的API接口。另外,将长效运行的服务设置于服务单元,使软件开发工具包单元更轻量化。
进一步,所述内核层中集成的与底层工控服务层和接口层通信的框架为通讯服务单元;所述通讯服务单元包括:若干个基于不同通信协议封装的通信模块;所述通讯服务单元,用于通过不同的所述通信模块接收所述底层工控服务层发送的所述反馈数据;当接收到所述反馈数据时,通过接收所述反馈数据的所述通信模块将所述反馈数据转发至所述接口层;以及,通过不同的所述通信模块接收所述接口层发送的所述控制指令;当接收到所述控制指令时,通过接收所述控制指令的所述通信模块将所述控制指令转发至所述底层工控服务层。
在上述技术方案中,将不同的通信协议封装为不同的模块单独设置于通讯服务单元中,解决通信占有的问题,提高应用程序的使用效果。
进一步,所述内核层还包括:内核服务单元;所述内核服务单元包括:若干个基于不同语音系统封装的唤醒模块;所述内核服务单元,用于当开发系统启动时,若干个基于不同语音系统的唤醒模块向各自对应的语音系统发送唤醒指令,以唤醒所述机器人相应的所述语音系统。
在上述技术方案中,将唤醒模块设置于内核服务单元中,让语音系统在安卓板启动时就被唤醒,保证机器人的正常运行。
进一步,所述底层工控服务层还包括:底层业务逻辑单元;所述底层业务逻辑单元包括:若干个基于多个硬件类ROS节点的数据流组合进行封装的业务逻辑类ROS节点;所述底层业务逻辑单元,用于接收与所述业务逻辑类ROS节点对应的各硬件类ROS节点的反馈数据,并把接收的所述反馈数据发送至所述内核层;以及,当接收的所述控制指令与所述底层业务逻辑单元关联时,调用所述控制指令对应的业务逻辑类ROS节点执行相应的操作。
进一步,所述底层工控服务层包括:底层硬件驱动单元;所述底层硬件驱动单元包括:若干个基于ROS系统的硬件内部驱动数据流通讯封装的硬件类ROS节点;所述底层硬件驱动单元,用于接收与所述硬件类ROS节点对应的各硬件的反馈数据,并把接收的所述反馈数据通过所述底层业务逻辑单元发送至所述内核层;以及,当接收到驱动控制指令时,调用所述驱动控制指令对应的硬件类ROS节点执行相应的操作。
在上述技术方案中,底层工控服务层仍采用现有的ROS系统,实现机器人的正常控制。
与现有技术相比,本发明的有益效果在于:
将底层工控服务层、内核层和接口层进行逐层封装,为机器人的开发人员设计了统一、与硬件无关的软件调用接口(如:不同类型的API接口),使开发人员节省了机器人开发的成本。另外,将不同类型的API接口进行不同层级的封装,为开发人员根据不同量级的开发提供了对应的API接口,使机器人开发系统的调用更灵活,进一步贴近实际的需求,节约开发成本。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种机器人开发系统的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明机器人开发系统一个实施例的结构示意图;
图2是本发明底层工控服务层一个实施例的结构示意图;
图3是本发明接口层一个实施例的结构示意图;
图4是本发明接口层另一个实施例的结构示意图;
图5是本发明内核层一个实施例的结构示意图;
图6是本发明机器人开发系统另一个实施例的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
在本发明的一个实施例中,如图1所示,一种机器人开发系统,包括:
底层工控服务层1000、内核层2000和接口层3000;
所述底层工控服务层1000,用于接收所述内核层2000转发的控制指令,并调用所述控制指令对应的ROS节点执行相应的操作;以及,接收机器人上的各硬件的反馈数据,并把接收的所述反馈数据发送至所述内核层;
所述内核层2000,集成有与底层工控服务层和接口层通信的框架,所述内核层用于接收所述底层工控服务层发送的所述反馈数据,并把所述反馈数据转发至所述接口层3000;以及,接收所述接口层3000发送的所述控制指令,并把所述控制指令转发至所述底层工控服务层;以及,当机器人启动(开发板、电源、工控板等启动)时,发送唤醒指令以唤醒所述机器人的语音系统;
所述接口层3000,用于接收所述内核层2000转发的所述反馈数据;以及,接收开发程序中的调用指令,并根据所述调用指令调用所述接口层中相应的应用程序编程接口发送对应的控制指令至所述内核层。
具体的,本发明是应用于机器人上的。底层工控服务层1000是应用于机器人的工控板,也就是机器人开发系统中的现有ROS系统,因此,底层工控服务层也可以理解为底层ROS服务层。
ROS系统的主要目标是为机器人研究和开发提供代码复用的支持。ROS系统是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS系统也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。
机器人上除了工控板之外,还有一个安卓(Android)板,安卓板也称为开发板,为开发人员提供开发平台,使其开发的应用程序可以在用户的移动终端(例如:手机、平板电脑等)上安装,开发的应用程序也可以在机器人的开发板上安装,从而使用户的移动终端可以控制机器人。
内核层和接口层是针对安卓板而设置的软件开发平台。内核层是位于Framework中,而接口层不位于Framework中,其是以应用程序编程接口(Application ProgrammingInterface,API)形式开放给开发人员进行软件开发。接口层中封装有多个API接口,每个API接口都有属于自己的执行逻辑,即关联到内核层中相应的模块,从而转到底层工控板中相应的ROS节点实现控制机器人的目的。
本实施例中的机器人开发系统,接口层和底层工控层之间通过内核层耦合,接口层和具体的底层工控层(即机器人的硬件结构)无关,具有较好的通用性,降低机器人开发人员在开发过程中的开发成本。
优选地,如图2所示,底层工控服务层1000还包括:底层业务逻辑单元1100;
所述底层业务逻辑单元包括:若干个基于多个硬件类ROS节点的数据流组合进行封装的业务逻辑类ROS节点;
所述底层业务逻辑单元,用于接收与所述业务逻辑类ROS节点对应的各硬件类ROS节点的反馈数据,并把接收的所述反馈数据发送至所述内核层;以及,当接收的所述控制指令与所述底层业务逻辑单元关联时,调用所述控制指令对应的业务逻辑类ROS节点执行相应的操作。底层业务逻辑单元1100,进一步用于当接收的所述控制指令与所述底层业务逻辑层关联时,调用所述控制指令对应的业务逻辑类ROS节点,被调用的业务逻辑类ROS节点会向相应的硬件类ROS节点发送驱动控制指令。
优选地,底层工控服务层1000包括:底层硬件驱动单元1200;
所述底层硬件驱动单元包括:若干个基于ROS系统的硬件内部驱动数据流通讯封装的硬件类ROS节点;
所述底层硬件驱动单元1200,用于接收与所述硬件类ROS节点对应的各硬件的反馈数据,并把接收的所述反馈数据(通过所述底层业务逻辑单元或直接)发送至所述内核层;以及,当接收到(业务逻辑类ROS节点或内核层发送的)驱动控制指令时,调用所述驱动控制指令对应的硬件类ROS节点执行相应的操作。
控制指令包括驱动控制指令和调用控制指令,驱动控制指令是针对底层硬件驱动单元的硬件类ROS节点,而调用控制指令是针对底层业务逻辑单元的业务逻辑类ROS节点。
具体的,底层工控服务层直接采用了现有的ROS系统。底层硬件驱动单元,也可以理解为硬件ROS内核通讯层,其包括若干个基于ROS系统的硬件内部驱动数据流通讯封装的硬件类ROS节点,即机器人上的各硬件相应的ROS系统的驱动。
硬件类ROS节点可以参考如下(如图2):
导航驱动ROS节点1201,用于控制机器人的导航硬件和接收导航硬件的反馈数据;地图驱动ROS节点1202,用于构建机器人逻辑地图、接收地图数据反馈,在地图上创建逻辑点并定义点的属性,在地图上创建虚拟墙或者斜坡;主辅电源板驱动ROS节点1207,用于控制机器人主辅电源板和接收主辅电源板的反馈数据;外设驱动ROS节点1203,用于控制机器人的外接设备和接收外接设备的反馈数据;关节电机驱动ROS节点1204,用于控制机器人的关节部位做预先规划的肢体或者部件运动,关节电机驱动ROS节点针对头部电机运动(做摇头、点头、摆动)、手部电机运动(招手、握手、触摸等等)、camera电机运动(camera设备上下运动)、高拍仪电机运动(高拍仪进出运动)、脚部电机运动(前进、后退等等);传感器驱动ROS节点1208,用于控制机器人的各传感器和接收各传感器的反馈数据;壁障驱动ROS节点1205,用于控制机器人进行避障和接收壁障时的反馈数据;摄像头驱动ROS节点1209,用于控制机器人的摄像头和接收摄像头发送的反馈数据;灯带驱动ROS节点1206,用于控制机器人的灯带和接收灯头发送的反馈数据;CAN总线通讯驱动ROS节点1210,用于控制机器人的CAN总线接口的通信和接收CAN总线接口的反馈数据。
底层业务逻辑单元,即ROS系统的ROS脑,将机器人的核心能力对应的业务逻辑以及与此业务逻辑相关的硬件类ROS节点的数据流组合封装为业务逻辑类ROS节点,即一个业务逻辑类ROS节点为将多个硬件类ROS节点封闭成一个供上层调用的ROS节点。例如:一个关节电机驱动ROS节点(硬件类ROS节点)可以控制脚部电机的角速度和线速度,一个运动ROS节点(业务逻辑类ROS节点)可以控制机器人向前走几米(例如:10米),其可以计算得到相应的角速度、线速度及两者的持续时间,然后会调用关节电机驱动ROS节点,从而通过关节电机驱动ROS节点来控制脚部电机的线速度、角速度及两者的持续时间,以达到向前走10米的目的。
业务逻辑类ROS节点可以为:任务列表ROS节点1101,自动回充ROS节点1104,参数服务器ROS节点1102,外设ROS节点1103,导航ROS节点1106(例如:Slam),灯带ROS节点1107,传感器ROS节点1105,运动ROS节点1108,电源ROS节点1109,摄像头ROS节点1110。
本实施例中,机器人还是通过ROS系统进行控制,但是为了方便开发人员针对现有的Android系统进行应用程序的开发,在ROS系统的上层依次封装了内核层和接口层,使开发人员可以通过接口层各API接口的调用即可实现应用程序的开发,使用户可以通过应用程序实现控制机器人的目的。
在本发明的另一个实施例中,除与上述相同的之外,所述接口层3000包括:软件开发工具包单元3100;所述软件开发工具包单元包括:若干个基于硬件体系封装的硬件类应用程序编程接口;
所述软件开发工具包单元3100,当接收到的开发程序中的调用指令为软件开发工具包单元的硬件类调用指令时,调用相应的硬件类应用程序编程接口发送对应的控制指令至所述内核层。
具体的,接口层中设有软件开发工具包单元,即SDK(Software Development Kit)单元,开发人员可以使用SDK的调用指令来调用SDK单元中的各应用程序编程接口。
SDK单元可以根据需求划分为不同种类的API接口,将同一类的API接口归为一个层级。
本实施例中,SDK单元包括了若干个基于硬件体系封装的硬件类应用程序编程接口,例如:如图3所示,摄像头控制台API接口3101,其用于获取摄像头数据、控制摄像头拍照和录像;传感器控制台API接口3102,其用于获取各种传感器实时数据:运动控制台API接口3103,其用于控制机器人底盘运动、头手运动;灯带控制台API接口3104,其用于控制机器人灯带色彩变化;电源控制台API接口3105,其用于获取机器人电源值和充电状态;导航控制台API接口3106,其用于标签导航(Cooky)和SLAM导航(CookyPlus/Carson);机器人参数控制台API接口3107,其用于获取机器人硬件参数数值;外设接口API接口3108,其用于调用各种外挂设备能力(例如:热敏打印机、激光打印机、高拍仪、密码键盘、身份识别器、指纹识别器、IC发卡器、IC读卡器和条码扫描仪)。
当开发人员开发的应用程序属于较基础的硬件类应用程序,例如:灯光APP,控制机器人上不同位置的灯带打开或关闭,也可以做各种灯光效果,比如:流水灯、呼吸灯、流星,也可以做报警灯效果。灯光APP可以直接调用硬件类应用程序编程接口的灯带控制台API接口,灯带控制台API接口会自动将相应的控制指令(例如:开启头部灯带)采用其对应的通信协议发送至内核层,内核层会将此控制指令发送至底层工控服务层,底层工控服务层会让相应的底层硬件驱动单元中的灯带驱动ROS节点来控制机器人的头部灯带开启。
本实施例中,将内核层划分为了软件开发工具包单元,并根据开发需求划分为不同种类的API接口供开发人员使用,使开发人员可以根据自己的定制需求直接调用不同种类的API接口,提高了API接口调用的灵活性。
在本发明的另一个实施例中,除与上述相同的之外,软件开发工具包单元3100还包括:若干个基于业务需求封装的业务类应用程序编程接口;
所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的业务类调用指令时,调用相应的业务类应用程序编程接口发送对应的控制指令至所述内核层。
具体的,业务类应用程序编程接口是指基于核心业务需求开放的业务能力的API接口。
在本实施例中,如图3所示,业务类应用程序编程接口可以包括:视觉系统API接口3109,用于人脸识别、人脸检测;语音系统API接口3110,用于语音识别、语音合成、语义理解和知识库;表情控制API接口3111,用于控制机器人展示2D/3D表情;任务列表API接口3112,用于自定义任务组合和复杂逻辑组合。
当开发人员想开发人脸识别的功能时,其会用到摄像头的扫描、数据的比对等,因此,若直接调用硬件类应用程序编程接口无法完成开发人员想要的功能,还要写其他代码进行配合。而本实施例中的机器人开发系统中的接口层中会将一些核心业务用到的算法封装为一个业务类API接口,当开发人员想开发人脸识别的功能时,其直接调用视觉系统API接口即可,无需再编写其他的配合程序,大大方便了开发人员。
需要注意的是,业务类应用程序编程接口和硬件类应用程序编程接口属于不同类型的API接口,两者处于不同的层级,且两者之间也不会存在互相调用的关系。
在本发明的另一个实施例中,除与上述相同的之外,软件开发工具包单元还包括:若干个基于机器人能力封装的能力类应用程序编程接口;
所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的能力类调用指令时,调用相应的能力类应用程序编程接口发送对应的控制指令至所述内核层。
具体的,能力类应用程序编程接口与业务类应用程序编程接口相似,只是为了更好地对不同类型的API接口进行划分,设置了这两种类型的API接口。
本实施例中,如图4所示,能力类应用程序编程接口可以包括:视觉系统API接口3109,用于人脸识别、人脸检测;语音系统API接口3110,用于语音识别、语音合成、语义理解和知识库;表情控制API接口3111,用于控制机器人展示2D/3D表情;运动控制API接口3113,用于控制机器人运动;机器人状态信息API接口3114,用于管理机器人的状态信息。
业务类应用程序编程接口可以包括:任务列表API接口3112,用于自定义任务组合和复杂逻辑组合;人格化API接口3115,用于控制机器人的人格化组合(例如:高冷、活泼等);打印模板API接口3116,用于控制自定义打印格式模板;舞蹈招揽API接口3117,用于控制机器人跳舞。
每个API接口中都有与其功能对应的算法,开发人员只要根据其开发需求调用对应的API接口即可达到其想要的效果。需要注意的是,业务类应用程序编程接口、能力类应用程序编程接口和硬件类应用程序编程接口属于不同类型的API接口,它们处于不同的层级,它们之间也不会存在互相调用的关系。
本实施例给开发人员提供了不同类型的API接口,大实现了应用程序编程接口调用的灵活性,使客户可以根据其不同的定制需求让开发人员调用不同层级的API接口进行应用程序的开发。
在本发明的另一个实施例中,除与上述相同的之外,接口层3000包括:服务单元3200;所述服务单元包括:若干个基于开发系统开启而启动、并长效后台运行封装的服务类应用程序编程接口;
所述服务单元,当接收到的开发程序中的调用指令为服务单元的服务类调用指令时,调用相应的服务类应用程序编程接口发送对应的控制指令至所述内核层。
具体的,服务单元和软件开发工具包单元(SDK)属于不同类型的开发模式,即Service开发模式和SDK开发模式,开发人员可以根据自己的习惯采用相应的开发模式进行机器人的开发。
本实施例中,将需要进行长效后台运行服务的服务作为服务类应用程序编程接口设置于服务单元中,即机器人的开发系统开机后(例如:若是基于Andriod开发的,那就是Andriod系统启动后),被调用的服务单元中的服务类应用程序编程接口会在后台自动、长时间运行的服务。
服务类应用程序编程接口可以参考如下(如图3所示):
IPC通信服务API接口3201,其是基于Socket通信,直接与内核层的IPC模块发送和接收数据;打印机服务API接口3202;自动回充服务API接口3203;语音服务API接口3204;摄像头服务API接口3205;视觉服务API接口3206,用于做人脸检测、识别和比对服务;Websocket通信服务API接口3207,基于websocket的通信方式调用服务类API接口;升级服务API接口3208,后台运行的更新服务(更新应用、工控ROS以及各种硬件或者单片机的底层驱动服务)。
当开发人员需要对语音这方面进行开发时,其可以根据其开发模式(SDK或者Service)来调用相应的API接口,例如:当开发人员使用的是Service开发模式,其可以调用语音服务API接口进行开发。
需要注意的是,服务单元和软件开发工具包单元之间不具有互相调用的关系。
本实施例的接口层为开发人员提供了不同模式的API接口,使开发人员可以根据自己的开发模式调用相应的API接口。另外,将长效运行的服务设置于服务单元,使软件开发工具包单元更轻量化。
在本发明的另一个实施例中,除与上述相同的之外,内核层2000中集成的与底层工控服务层和接口层通信的框架为通讯服务单元2100;通讯服务单元2100包括:若干个基于不同通信协议封装的通信模块;
所述通讯服务单元,用于通过不同的所述通信模块接收所述底层工控服务层发送的所述反馈数据;当接收到所述反馈数据时,通过接收所述反馈数据的所述通信模块将所述反馈数据转发至所述接口层;以及,通过不同的所述通信模块接收所述接口层发送的所述控制指令;当接收到所述控制指令时,通过接收所述控制指令的所述通信模块将所述控制指令转发至所述底层工控服务层。
具体的,因原先的通信模块比较杂乱地隐含于API接口,存在通信占有的问题,即当有两个应用程序都需要使用Socket通信通道时,只有当第一个应用程序用好后,第二个应用程序才能使用此通道进行通信,会带很多不便。
考虑到机器人中不同的硬件会采用不同的通信协议与软件沟通,同时,为了解决通信占有的问题,单独设置了通讯服务单元,并在其内设置了基于不同通信协议封装的各通信模块,让他们只完成数据的接收、转发功能,解决通信占有的问题。
例如:麦克风阵列,其采用串口通信协议,当麦克风阵列将其反馈数据通过串口通信协议发送到COM模块时,COM模块将此反馈数据转发到所有能够进行串口通信的API接口,让API接口自行判断是否需要此反馈数据,不需要的话就忽略。
视觉系统API接口发送了控制指令(进行人脸识别)至ROS桥模块,ROS桥模块将此控制指令发送到底层工控服务层相应的摄像头ROS节点,摄像头ROS节点调用底层硬件驱动单元中的摄像头驱动ROS节点来进行人像采集,并反馈给摄像头ROS节点,摄像头ROS节点比对数据,把判断结果反馈给视觉系统API接口。
本实施例中的通讯服务单元可以包括(如图5所示):
IPC模块2101,其基于Socket通信协议封装而成,接收所有通过Socket通信协议通信的反馈数据、控制指令。
ROS桥模块2102,即ROS(Bridge)模块,其基于ROS节点通信协议封装而成,接收所有通过ROS节点通信协议通信的反馈数据、控制指令。
USB模块2103,其基于USB端口通信协议封装而成,接收所有通过USB端口通信协议通信的反馈数据、控制指令。
COM模块2104,其基于串口通信协议封装而成,接收所有通过串口通信协议通信的反馈数据、控制指令。
例如:若开发自动回充的功能时,开发人员会调用自动回充服务API接口,自动回充服务API接口会通过ROS桥模块与底层工控服务层的自动回充ROS节点进行通信,实现控制机器人的自动回充功能。
不同的机器人会采用不同类型的打印机,而不同类型的打印机会采用不同的通信模块。
例如:Cooky机型的打印机是接入在路由器上的,走的是RJ45的通信方式,它走的是网络通信的方式,即采用COM模块进行通信。
Carson机型的打印机是通过串口接在工控板上的,所以它走的是外设ROS节点,因此,其是通过ROS桥模块进行通信。
若开发打印模块功能,假设打印机是通过ROS桥模块进行通信,当开发人员调用打印模块API接口,打印模块API接口会通过ROS桥模块与打印机进行通信,控制打印机的打印格式模板。
工控模式服务API接口,会通过IPC模块与底层工控服务层进行通信,以获取各硬件上的反馈数据、驱动版本数据等。
本实施例中,将不同的通信协议封装为不同的模块单独设置于通讯服务单元中,解决通信占有的问题,提高应用程序的使用效果。
在本发明的另一个实施例中,除与上述相同的之外,内核层2000还包括:内核服务单元2200;
所述内核服务单元包括:若干个基于不同语音系统封装的唤醒模块;
所述内核服务单元,用于当所述开发系统启动(例如:若开发系统为Android系统,则是指Android系统启动)时,若干个基于不同语音系统的唤醒模块向各自对应的语音系统发送唤醒指令,以唤醒所述机器人相应的所述语音系统。
具体的,内核服务单元中的模块是当安卓板启动时,就自动开始运行的。考虑到机器人语音系统(即麦克风阵列)是机器人的核心,因此,专门根据其采用的类型,设置不同的唤醒模块。当安卓板启动时,唤醒模块会将唤醒指令发送给相应类型的语音系统,以唤醒此语音系统。唤醒指令主要包括:语音系统的接收范围、接收角度、增益等用于配置语音系统的指令。
例如,如图5所示:4MIC指令唤醒模块2201,用于唤醒4MIC的语音系统;6MIC指令唤醒模块2202,用于唤醒6MIC的语音系统。
本实施例中,将唤醒模块设置于内核服务单元中,让语音系统在安卓板启动时就被唤醒,保证机器人的正常运行。
在本发明的另一个实施例中,除与上述相同的之外,如图6所示,还包括:上层应用层4000;
所述上层应用层4000包括:若干个基于用户需求开发的应用程序;
所述上层应用层4000,用于接收用户输入的操作指令,根据所述操作指令调用对应的所述开发程序中的调用指令,并将所述调用指令发送至所述接口层。
具体的,上层应用层是面向经销商、开发者或者客户的,其可以根据开放的各API接口在开发板上开发出相应的应用程序。由应用程序对应的开发程序中的调用指令来调用相应的API接口,从而调用机器人相关的硬件和业务能力,完成一系列和用户紧密的相关的操作功能,实现控制机器人的目的。该层定义了多种开发模式,开发者可以根据已开放的SDK接口,进行单独APP开发,也可以基于已成型的出厂应用GAEA进行子APP应用开发,调用GAEA应用的相关功能。同时还可以调用出厂自带的一些功能或者演示或者能力APP应用程序。以此基于整体的开发系统完成功能开发和迭代。
上层应用层可以包括:核心应用程序和出厂应用程序。核心应用程序为基于SDK开发的ISV应用程序和Gaea应用程序,Gaea应用程序是将五种功能合并在一个应用程序上,基于主题变化,可以让ISV应用程序变化为五合一版本的UI风格和行业展示。
出厂应用程序包括:功能应用程序模组,用于将作为功能模组可以被Gaea或ISV应用程序调用界面、触摸逻辑操作并得到数据反馈;演示应用程序模组,用于将原有属于临时演示的模块,单独从Gaea中抽出来,作为供外部演示所用;能力应用程序模组,用于作为附属应用程序给ISV应用程序或者经销商对外展示机器人能力。
上层应用层还可以包括:ISV子应用程序,此供ISV开发的子应用程序,会调用SDK单元中的部分接口进行开发,具有二级子界面,由Gaea应用程序调取启动。
本实施例中将上层应用层根据不同用户需求进行了划分,提高了使用体验。
本实施例的机器人开发系统将底层工控服务层、内核层和接口层进行逐层封装,为机器人的开发人员设计了统一、与硬件无关的软件调用接口(如:不同类型的API接口),使开发人员节省了机器人开发的成本。另外,将不同类型的API接口进行不同层级的封装,为开发人员根据不同量级的开发提供了对应的API接口,使机器人开发系统的调用更灵活,进一步贴近实际的需求,节约开发成本。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种机器人开发系统,其特征在于,包括:
底层工控服务层、内核层和接口层,所述底层工控服务层为底层ROS服务层,所述内核层和所述接口层是用于开发板的软件开发平台;
所述底层工控服务层,用于接收所述内核层转发的控制指令,并调用所述控制指令对应的ROS节点执行相应的操作;以及,接收机器人上的各硬件的反馈数据,并把接收的所述反馈数据发送至所述内核层;
所述内核层,集成有与底层工控服务层和接口层通信的框架,所述内核层用于接收所述底层工控服务层发送的所述反馈数据,并把所述反馈数据转发至所述接口层;以及,接收所述接口层发送的所述控制指令,并把所述控制指令转发至所述底层工控服务层;以及,当机器人启动时,发送唤醒指令以唤醒所述机器人的语音系统;
所述接口层,用于接收所述内核层转发的所述反馈数据;以及,接收开发程序中的调用指令,并根据所述调用指令调用所述接口层中相应的应用程序编程接口发送对应的控制指令至所述内核层。
2.如权利要求1所述的机器人开发系统,其特征在于:
所述接口层包括:软件开发工具包单元;
所述软件开发工具包单元包括:若干个基于硬件体系封装的硬件类应用程序编程接口;
所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的硬件类调用指令时,调用相应的硬件类应用程序编程接口发送对应的控制指令至所述内核层。
3.如权利要求2所述的机器人开发系统,其特征在于,所述软件开发工具包单元还包括:若干个基于业务需求封装的业务类应用程序编程接口,所述业务类应用程序编程接口指基于核心业务需求开放的业务能力的API接口;
所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的业务类调用指令时,调用相应的业务类应用程序编程接口发送对应的控制指令至所述内核层。
4.如权利要求2所述的机器人开发系统,其特征在于,所述软件开发工具包单元还包括:若干个基于机器人能力封装的能力类应用程序编程接口,所述能力类应用程序编程接口包括:视觉系统API接口、语音系统API接口、表情控制API接口、运动控制API接口以及机器人状态信息API接口;
所述软件开发工具包单元,当接收到的开发程序中的调用指令为软件开发工具包单元的能力类调用指令时,调用相应的能力类应用程序编程接口发送对应的控制指令至所述内核层。
5.如权利要求1所述的机器人开发系统,其特征在于:
所述接口层包括:服务单元;
所述服务单元包括:若干个基于开发系统开启而启动、并长效后台运行封装的服务类应用程序编程接口,所述服务类应用程序编程接口包括:IPC通信服务API接口、打印机服务API接口、自动回充服务API接口、语音服务API接口、摄像头服务API接口、视觉服务API接口、Websocket通信服务API接口、升级服务API接口;
所述服务单元,当接收到的开发程序中的调用指令为服务单元的服务类调用指令时,调用相应的服务类应用程序编程接口发送对应的控制指令至所述内核层。
6.如权利要求1所述的机器人开发系统,其特征在于:
所述内核层中集成的与底层工控服务层和接口层通信的框架为通讯服务单元;
所述通讯服务单元包括:若干个基于不同通信协议封装的通信模块;
所述通讯服务单元,用于通过不同的所述通信模块接收所述底层工控服务层发送的所述反馈数据;当接收到所述反馈数据时,通过接收所述反馈数据的所述通信模块将所述反馈数据转发至所述接口层;以及,通过不同的所述通信模块接收所述接口层发送的所述控制指令;当接收到所述控制指令时,通过接收所述控制指令的所述通信模块将所述控制指令转发至所述底层工控服务层。
7.如权利要求6所述的机器人开发系统,其特征在于:
所述内核层还包括:内核服务单元;
所述内核服务单元包括:若干个基于不同语音系统封装的唤醒模块;
所述内核服务单元,用于当开发系统启动时,若干个基于不同语音系统的唤醒模块向各自对应的语音系统发送唤醒指令,以唤醒所述机器人相应的所述语音系统。
8.如权利要求1所述的机器人开发系统,其特征在于:
所述底层工控服务层还包括:底层业务逻辑单元;
所述底层业务逻辑单元包括:若干个基于多个硬件类ROS节点的数据流组合进行封装的业务逻辑类ROS节点;
所述底层业务逻辑单元,用于接收与所述业务逻辑类ROS节点对应的各硬件类ROS节点的反馈数据,并把接收的所述反馈数据发送至所述内核层;以及,当接收的所述控制指令与所述底层业务逻辑单元关联时,调用所述控制指令对应的业务逻辑类ROS节点执行相应的操作。
9.如权利要求8所述的机器人开发系统,其特征在于:
所述底层工控服务层包括:底层硬件驱动单元;
所述底层硬件驱动单元包括:若干个基于ROS系统的硬件内部驱动数据流通讯封装的硬件类ROS节点;
所述底层硬件驱动单元,用于接收与所述硬件类ROS节点对应的各硬件的反馈数据,并把接收的所述反馈数据发送至所述内核层;以及,当接收到驱动控制指令时,调用所述驱动控制指令对应的硬件类ROS节点执行相应的操作。
10.如权利要求1所述的机器人开发系统,其特征在于,还包括:上层应用层;
所述上层应用层包括:若干个基于用户需求开发的应用程序;
所述上层应用层,用于接收用户输入的操作指令,根据所述操作指令调用对应的所述开发程序中的调用指令,并将所述调用指令发送至所述接口层。
CN201711154003.0A 2017-11-20 2017-11-20 一种机器人开发系统 Active CN107943458B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711154003.0A CN107943458B (zh) 2017-11-20 2017-11-20 一种机器人开发系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711154003.0A CN107943458B (zh) 2017-11-20 2017-11-20 一种机器人开发系统

Publications (2)

Publication Number Publication Date
CN107943458A CN107943458A (zh) 2018-04-20
CN107943458B true CN107943458B (zh) 2020-07-24

Family

ID=61931870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711154003.0A Active CN107943458B (zh) 2017-11-20 2017-11-20 一种机器人开发系统

Country Status (1)

Country Link
CN (1) CN107943458B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108133701B (zh) * 2017-12-25 2021-11-12 江苏木盟智能科技有限公司 一种机器人语音交互的系统与方法
CN109284095B (zh) * 2018-08-07 2022-04-29 北京云迹科技股份有限公司 基于开放型机器人系统的用户自开发应用的方法
CN109079849B (zh) * 2018-08-07 2022-04-29 北京云迹科技股份有限公司 开放型机器人系统
CN110782889A (zh) * 2019-08-22 2020-02-11 腾讯科技(深圳)有限公司 一种语音操作方法及相关设备
CN111124576B (zh) * 2019-12-23 2022-08-09 焦点科技股份有限公司 一种多平台小程序及h5页面适配的方法及系统
CN111429030B (zh) * 2020-04-16 2023-08-18 蓓安科仪(北京)技术有限公司 一种自主移动机器人集成调度系统及集成调度方法
CN111755002B (zh) * 2020-06-19 2021-08-10 北京百度网讯科技有限公司 语音识别装置、电子设备和语音识别方法
CN112199208B (zh) * 2020-09-09 2023-07-07 福建天泉教育科技有限公司 一种在安卓系统上提供额外功能接口的方法与终端
CN112445728B (zh) * 2020-11-30 2023-07-21 中科院软件研究所南京软件技术研究院 一种支持多种硬件接口的机器人开发板ros通讯系统
CN116112310A (zh) * 2023-01-12 2023-05-12 北京理工大学 一种基于串口通信和总线通信的机器人通信架构及通信方法
CN117021083A (zh) * 2023-08-09 2023-11-10 北京小米机器人技术有限公司 机器人及其控制方法、装置、存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8467596B2 (en) * 2011-08-30 2013-06-18 Seiko Epson Corporation Method and apparatus for object pose estimation
CN106656706B (zh) * 2017-02-25 2020-06-19 华南理工大学 基于软件总线的面向服务的机器人开放式控制系统及方法
CN106936932B (zh) * 2017-04-26 2019-07-26 中国人民解放军国防科学技术大学 一种通过云服务协议访问机器人软件包的方法
CN107273137A (zh) * 2017-06-30 2017-10-20 上海棠棣信息科技股份有限公司 用于快速完成定制业务的可移植软件平台、方法和机器人

Also Published As

Publication number Publication date
CN107943458A (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN107943458B (zh) 一种机器人开发系统
WO2022100315A1 (zh) 应用界面的生成方法及相关装置
US7415270B2 (en) Middleware services layer for platform system for mobile terminals
CN106484394B (zh) 一种双引擎快速软件开发系统
WO2010091623A1 (zh) 应用程序界面动态生成装置及方法
KR20170047364A (ko) 유연한 인간-기계 협업을 위한 시스템 및 방법
CN113504902B (zh) 工业app集成开发系统及相关设备
CN113761427A (zh) 自适应生成卡片的方法、终端设备和服务器
Reitmayr et al. OpenTracker: A flexible software design for three-dimensional interaction
CN113419452A (zh) 车辆及其控制方法、移动终端
CN110865863B (zh) 快应用的界面显示方法、装置及存储介质
CN109753892A (zh) 人脸皱纹的生成方法、装置、计算机存储介质和终端
EP2449460A1 (en) A method, apparatus and computer program for creating software components for computing devices
CN109085927A (zh) 基于体感的操作控制组件、方法、智能终端及计算机可读存储介质
CN115543535A (zh) 安卓容器系统、安卓容器构建方法及装置、电子设备
WO2021254113A1 (zh) 一种三维界面的控制方法和终端
CN108415785A (zh) 自助终端sp实现方法、终端设备以及可读存储介质
CN108874554A (zh) 信息通信方法及装置
WO2021052488A1 (zh) 一种信息处理方法及电子设备
WO2023138001A1 (zh) 一种新型界面换肤系统及其方法
Horiuchi et al. Designing and implementing service framework for virtual agents in home network system
CN106020807A (zh) 驱动程序的调用方法及系统
KR20210081935A (ko) 제스처를 이용하여 대화 메시지에 감정을 표현하는 방법, 시스템, 및 컴퓨터 프로그램
CN110427260A (zh) 主机作业调度方法、装置及系统
CN109597611A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant after: Shanghai Zhihui Medical Technology Co.,Ltd.

Address before: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant before: SHANGHAI MROBOT TECHNOLOGY Co.,Ltd.

Address after: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant after: SHANGHAI MROBOT TECHNOLOGY Co.,Ltd.

Address before: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant before: SHANGHAI MUYE ROBOT TECHNOLOGY Co.,Ltd.

Address after: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant after: Shanghai zhihuilin Medical Technology Co.,Ltd.

Address before: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant before: Shanghai Zhihui Medical Technology Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200612

Address after: 201400 Shanghai Fengxian District Xinyang Highway 1800 Lane 2 2340 Rooms

Applicant after: SHANGHAI MUMU JUCONG ROBOT TECHNOLOGY Co.,Ltd.

Address before: Room 402, Building 33 Guangshun Road, Changning District, Shanghai, 2003

Applicant before: Shanghai zhihuilin Medical Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant