1.本技术属于机器人技术领域,尤其涉及一种机器人动作控制方法、装置、计算机可读存储介质及机器人。
背景技术:2.随着机器人技术的不断发展,多种多样的机器人在人们的各种工作及生活场景中已越来越普及。对于表演型人形机器人而言,为了增强其运动表现力,需要其能够灵活地做出像人类一样的各种动作。但是,在现有技术中,表演型人形机器人在运动时,在每一帧动作里,一般都是多个部位同时开始运动,又同时结束运动,动作显得比较僵硬,运动表现力较差。
技术实现要素:3.有鉴于此,本技术实施例提供了一种机器人动作控制方法、装置、计算机可读存储介质及机器人,以解决现有的机器人动作控制方法所存在的动作僵硬、运动表现力较差的问题。
4.本技术实施例的第一方面提供了一种机器人动作控制方法,可以包括:
5.读取预设的机器人动作文件;所述机器人动作文件包括若干层,每一层均对应于机器人的一个运动部位的动作;
6.对所述机器人动作文件按层进行解析,得到所述机器人的各个运动部位的动作数据帧流;
7.按照所述机器人的各个运动部位的动作数据帧流分别对所述机器人的各个运动部位的动作进行控制。
8.在第一方面的一种具体实现方式中,在对所述机器人动作文件按层进行解析,得到所述机器人的各个运动部位的动作数据帧流之后,还包括:
9.将所述机器人的各个运动部位的动作数据帧流分别存储在预设的各个动作数据帧队列中;
10.所述按照所述机器人的各个运动部位的动作数据帧流分别对所述机器人的各个运动部位的动作进行控制,包括:
11.分别播放各个动作数据帧队列中的动作数据帧流,以对所述机器人的各个运动部位的动作进行控制。
12.在第一方面的一种具体实现方式中,所述机器人动作文件的每一层均包括本层信息和动作数据帧列表;
13.所述本层信息包括本层标识符、本层总字节数、本层总播放时长和本层总帧数;
14.所述动作数据帧列表包括若干动作数据帧。
15.在第一方面的一种具体实现方式中,所述动作数据帧列表中的每一动作数据帧均包括当前帧号、当前帧长、当前帧播放前等待时长、当前帧运动时长以及关节运动参数列
表;
16.所述关节运动参数列表包括若干组关节运动参数,每组关节运动参数包括运动关节标识以及与所述运动关节标识对应的运动角度。
17.在第一方面的一种具体实现方式中,所述机器人动作文件包括三层,分别对应于所述机器人的头部动作、手部动作和脚部动作。
18.本技术实施例的第二方面提供了一种机器人动作控制装置,可以包括:
19.解析器,用于读取预设的机器人动作文件;所述机器人动作文件包括若干层,每一层均对应于机器人的一个运动部位的动作;对所述机器人动作文件按层进行解析,得到所述机器人的各个运动部位的动作数据帧流;
20.播放控制器,用于按照所述机器人的各个运动部位的动作数据帧流分别对所述机器人的各个运动部位的动作进行控制。
21.在第二方面的一种具体实现方式中,所述解析器还可以用于将所述机器人的各个运动部位的动作数据帧流分别存储在预设的各个动作数据帧队列中;
22.所述播放控制器可以具体用于分别播放各个动作数据帧队列中的动作数据帧流,以对所述机器人的各个运动部位的动作进行控制。
23.在第二方面的一种具体实现方式中,所述机器人动作文件的每一层均包括本层信息和动作数据帧列表;
24.所述本层信息包括本层标识符、本层总字节数、本层总播放时长和本层总帧数;
25.所述动作数据帧列表包括若干动作数据帧。
26.在第二方面的一种具体实现方式中,所述动作数据帧列表中的每一动作数据帧均包括当前帧号、当前帧长、当前帧播放前等待时长、当前帧运动时长以及关节运动参数列表;
27.所述关节运动参数列表包括若干组关节运动参数,每组关节运动参数包括运动关节标识以及与所述运动关节标识对应的运动角度。
28.在第二方面的一种具体实现方式中,所述机器人动作文件包括三层,分别对应于所述机器人的头部动作、手部动作和脚部动作。
29.本技术实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种机器人动作控制方法的步骤。
30.本技术实施例的第四方面提供了一种机器人,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种机器人动作控制方法的步骤。
31.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在机器人上运行时,使得机器人执行上述任一种机器人动作控制方法的步骤。
32.本技术实施例与现有技术相比存在的有益效果是:本技术实施例读取预设的机器人动作文件;所述机器人动作文件包括若干层,每一层均对应于机器人的一个运动部位的动作;对所述机器人动作文件按层进行解析,得到所述机器人的各个运动部位的动作数据帧流;按照所述机器人的各个运动部位的动作数据帧流分别对所述机器人的各个运动部位的动作进行控制。通过本技术实施例,将机器人动作文件按照运动部位划分为若干层,并对
各层分别进行解析和动作控制,从而实现了对各个运动部位的动作之间的控制解耦,可以对各个运动部位的动作分别进行独立控制,使得机器人的动作更加灵活自然,具有更好的运动表现力。
附图说明
33.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
34.图1为本技术实施例中一种机器人动作控制方法的一个实施例流程图;
35.图2为机器人动作文件的分层示意图;
36.图3为机器人动作文件的示例图;
37.图4为整个动作控制过程的示意图;
38.图5为本技术实施例中一种机器人动作控制装置的一个实施例结构图;
39.图6为本技术实施例中一种机器人的示意框图。
具体实施方式
40.为使得本技术的发明目的、特征、优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本技术一部分实施例,而非全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
41.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
42.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
43.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
44.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0045]
另外,在本技术的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0046]
请参阅图1,本技术实施例中一种机器人动作控制方法的一个实施例可以包括:
[0047]
步骤s101、读取预设的机器人动作文件。
[0048]
机器人动作文件可以包括若干层,每一层均可以对应于机器人的一个运动部位的
动作。其中,具体的层数,以及每一层所对应的运动部位动作均可以根据实际情况进行设置。
[0049]
如图2所示,在本技术实施例的一种具体实现方式中,机器人动作文件可以包括三层,分别记为头部层、手部层和脚部层,其中,头部层对应于机器人的头部动作,手部层对应于机器人的手部动作,脚部层对应于机器人的脚部动作。需要注意的是,上述的分层方式仅为示例,在实际应用中,可以根据具体情况设置更多或更少的层数,并为每层设置相对应的运动部位动作,本技术实施例对此不做具体限定。
[0050]
机器人动作文件的各层相互独立,可以独立裁剪而不影响其他层(例如,可以只有手部层)。各层在机器人动作文件中的相对位置本质上是无区别的,无先后之分,可以根据实际情况自由排列。
[0051]
在本技术实施例的一种具体实现方式中,机器人动作文件的每一层均可以包括本层信息和动作数据帧列表。
[0052]
本层信息可以包括本层标识符、本层总字节数、本层总播放时长和本层总帧数。其中,本层标识符为预设的固定字符串,用于指示不同的分层,例如,头部层的本层标识符可以设置为“head\x0”,手部层的本层标识符可以设置为“hand\x0”,脚部层的本层标识符可以设置为“foot\x0”。需要注意的是,上述的本层标识符设置方式仅为示例,在实际应用中,可以根据具体情况设置其它形式的本层标识符,本技术实施例对此不做具体限定。本层总字节数即为本层中包含的总字节数,设置该参数可以方便层与层之间的跳转、偏移、索引,以头部层为例,该参数可记做head_tl。本层总播放时长为完整播放本层中的所有动作数据帧所需的总播放时长,机器人的播放控制器可以根据该参数来确定本层的总播放时长,以头部层为例,该参数可记做head_tt。本层总帧数为本层中的所有动作数据帧的总帧数,机器人的解析器可以根据该参数来确定本层需要解析的总帧数,以头部层为例,该参数可记做head_tf。
[0053]
动作数据帧列表可以包括若干动作数据帧,具体的帧数与本层信息中的本层总帧数保持一致。动作数据帧列表中的每一动作数据帧均包括当前帧号、当前帧长、当前帧播放前等待时长、当前帧运动时长以及关节运动参数列表。其中,当前帧号为当前的动作数据帧的标识号,机器人的解析器可以根据该参数来对不同的动作数据帧进行区分,以便控制播放流程,以头部层为例,该参数可记做head_fn。当前帧长为当前的动作数据帧的字节数,机器人的解析器可以根据该参数快速偏移到下一帧进行播放,以头部层为例,该参数可记做head_fl。当前帧播放前等待时长为当前的动作数据帧在开始播放前需等待的时长,有时其他层的动作先做时,当前的动作数据帧可做空等待,以头部层为例,该参数可记做head_fwt。当前帧运动时长为当前的动作数据帧控制运动的时长,可以根据该参数控制运动关节的运动时长,运动过程中,机器人的播放控制器也需要做同步计时,以头部层为例,该参数可记做head_fmt。本层总播放时长等于所有动作数据帧的当前帧播放前等待时长和当前帧运动时长之和,以头部层为例,即:head_tt=∑(head_fwt+head_fmt)。
[0054]
关节运动参数列表可以包括若干组关节运动参数,具体的组数可以根据实际情况进行设置,与当前的动作数据帧所需控制的运动关节数目保持一致。每组关节运动参数包括运动关节标识以及与运动关节标识对应的运动角度。其中,运动关节标识(id)为当前的运动关节的标识号,用于对运动关节进行指定。与运动关节标识对应的运动角度为当前的
运动关节需要在当前帧运动时长内运动到的角度。
[0055]
以头部层为例,该层的结构如下所示:
[0056]
/***本层信息***/
[0057]
本层标识符head\x0
[0058]
本层总字节数head_tl
[0059]
本层总播放时长head_tt
[0060]
本层总帧数head_tf
[0061]
/***帧列表{}***/
[0062]
{
[0063]
当前帧号head_fn
[0064]
当前帧长head_fl
[0065]
当前帧播放前等待时长head_fwt
[0066]
当前帧运动时长head_fmt
[0067]
/***关节运动参数列表[]***/
[0068]
[
[0069]
运动关节标识id
[0070]
与运动关节标识id对应的运动角度
[0071]
]
[0072]
[]
[0073]
[]
[0074]
...
[0075]
}
[0076]
{}
[0077]
{}
[0078]
...
[0079]
其他层的结构均与之类似,此处不再赘述。
[0080]
步骤s102、对机器人动作文件按层进行解析,得到机器人的各个运动部位的动作数据帧流。
[0081]
图3所示为机器人动作文件的一个示例,机器人的解析器在读取该文件之后,对其按层进行解析,可得如下所示的解析结果:
[0082]
头部层:
[0083]
本层标识符head\x0;
[0084]
本层总字节数head_tl=0x23=35b;
[0085]
本层总播放时长head_tt=0x1388=5000ms=(1000+1000+1000+2000)ms;
[0086]
本层总帧数head_tf=0x0002=2帧;
[0087]
当前帧号head_fn:第1帧
[0088]
当前帧长head_fl=0x000a=10b;
[0089]
当前帧播放前等待时长head_fwt=0x03e8=1000ms;
[0090]
当前帧运动时长head_fmt=0x32=50,单位为20ms,即50*20ms=1000ms;
[0091]
运动关节标识id=0x11=17,对应的运动角度=0x1e=30
°
;
[0092]
当前帧号head_fn:第2帧
[0093]
当前帧长head_fl=0x000a=10b;
[0094]
当前帧播放前等待时长head_fwt=0x03e8=1000ms;
[0095]
当前帧运动时长head_fmt=0x64=100,即100*20ms=2000ms;
[0096]
运动关节标识id=0x11=17,对应的运动角度=0x78=128
°
;
[0097]
手部层:以此类推...
[0098]
脚部层:以此类推...
[0099]
机器人的解析器在完成对机器人动作文件的解析之后,即可得到机器人的各个运动部位的动作数据帧流。
[0100]
步骤s103、按照机器人的各个运动部位的动作数据帧流分别对机器人的各个运动部位的动作进行控制。
[0101]
在本技术实施例的一种具体实现方式中,机器人的播放控制器中可以预先设置若干个动作数据帧队列,其中,每一个动作数据帧队列均对应于机器人的一个运动部位,用于对该运动部位的动作数据帧流进行存储。各个动作数据帧队列之间相互独立。
[0102]
机器人的解析器在解析得到机器人的各个运动部位的动作数据帧流之后,可以将机器人的各个运动部位的动作数据帧流分别存储在对应的各个动作数据帧队列中。
[0103]
机器人的播放控制器可以分别播放各个动作数据帧队列中的动作数据帧流,生成控制信号,以对机器人的各个运动部位的动作进行控制。
[0104]
图4所示即为整个动作控制过程的示意图,如图所示,机器人的解析器在读取机器人动作文件后,从中解析出头部帧流、手部帧流和脚部帧流,并将这些动作数据帧流分别存储在对应的各个动作数据帧队列中,机器人的播放控制器分别播放这些动作数据帧流,生成头控制信号对机器人头部的动作进行控制,生成手控制信号对机器人手部的动作进行控制,生成脚控制信号对机器人脚部的动作进行控制。
[0105]
综上所述,本技术实施例读取预设的机器人动作文件;所述机器人动作文件包括若干层,每一层均对应于机器人的一个运动部位的动作;对所述机器人动作文件按层进行解析,得到所述机器人的各个运动部位的动作数据帧流;按照所述机器人的各个运动部位的动作数据帧流分别对所述机器人的各个运动部位的动作进行控制。通过本技术实施例,将机器人动作文件按照运动部位划分为若干层,并对各层分别进行解析和动作控制,从而实现了对各个运动部位的动作之间的控制解耦,可以对各个运动部位的动作分别进行独立控制,使得机器人的动作更加灵活自然,具有更好的运动表现力。
[0106]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0107]
对应于上文实施例所述的一种机器人动作控制方法,图5示出了本技术实施例提供的一种机器人动作控制装置的一个实施例结构图。
[0108]
本实施例中,一种机器人动作控制装置可以包括:
[0109]
解析器501,用于读取预设的机器人动作文件;所述机器人动作文件包括若干层,每一层均对应于机器人的一个运动部位的动作;对所述机器人动作文件按层进行解析,得
programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0126]
所述存储器61可以是所述机器人6的内部存储单元,例如机器人6的硬盘或内存。所述存储器61也可以是所述机器人6的外部存储设备,例如所述机器人6上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器61还可以既包括所述机器人6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述机器人6所需的其它程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
[0127]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0128]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0129]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0130]
在本技术所提供的实施例中,应该理解到,所揭露的装置/机器人和方法,可以通过其它的方式实现。例如,以上所描述的装置/机器人实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0131]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0132]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0133]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例
方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
[0134]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。