掌桥专利:专业的专利平台
掌桥专利
首页

机器人动作生成方法和装置、机器人、存储介质

文献发布时间:2023-06-19 11:17:41


机器人动作生成方法和装置、机器人、存储介质

技术领域

本发明涉及计算机程序技术领域,尤其涉及一种机器人动作生成方法和装置、机器人、存储介质。

背景技术

现有的机器人(如餐厅机器人)由娱乐模式,在娱乐模式下,用户可以控制机器人进行跳舞。响应于用户操作,机器人将进入舞蹈模式,从舞蹈库中获取舞蹈动作,并在机器人开始播放舞蹈音乐时,机器人开始跳舞。然而现有的机器人在跳舞时,基本都是在舞蹈库中获取固有的舞蹈动作,并且该舞蹈动作与音乐无法融合,导致舞蹈动作生硬。

发明内容

本申请实施例提供一种机器人动作生成方法和装置、机器人、存储介质可提高机器人的动作与音乐之间的匹配度,减少生成的动作的生硬性。

第一方面,本申请提供一种机器人动作生成方法,包括:

获取输入的音频信息;

从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据;

根据所述第一动作数据生成动作数据包,所述动作数据包包含执行顺序依次相邻的至少两段动作数据,至少两段所述动作数据均为与所述音频信息的音频类型匹配的动作数据库中的动作数据,至少两段所述动作数据中相邻两段动作数据的匹配度符合匹配条件,至少两段所述动作数据包括所述第一动作数据;

将所述音频信息的节奏点数据与所述动作数据包进行融合得到待执行动作数据包。

进一步地,至少两段所述动作数据中任意两段动作数据不相同。

进一步地,所述从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据包括:

在从与所述音频信息的音频类型匹配的动作数据库中随机获取一段动作数据。

进一步地,所述相邻两段动作数据的匹配度符合匹配条件包括:

相邻两段所述动作数据的特征值的匹配度符合匹配条件;

其中,所述特征值包括机器人每个舵机的启动位置点、结束位置点和/或活动频率。

进一步地,所述根据所述第一动作数据生成动作数据包包括:

获取至少两段所述动作数据中每段动作数据的每个舵机的启动位置点、结束位置点以及活动频率;

所述启动位置点的确定步骤包括:

在获取当前动作数据中舵机的位置数组之后,获取所述位置数组中前设定个位置信息的第一平均位置信息,并将所述第一平均位置信息作为所述启动位置点;

所述结束位置点的确定步骤包括:

在获取当前动作数据中舵机的位置数组之后,获取所述位置数组中后设定个位置信息的第二平均位置信息,并将所述第二平均位置信息作为所述结束位置点;

所述活动频率的确定步骤包括:

在获取当前动作数据中舵机的位置数组之后,获取所述位置数组中每两个相邻位置之间的绝对位置差,并获取每个所述绝对位置差中的第一绝对位置差数量和第二绝对位置差数量,其中所述第一绝对位置差大于设定差值,所述第二绝对位置差小于等于所述设定差值;

根据所述第一绝对位置差数量、所述第二绝对位置差数量以及所述位置数组中相邻位置的组数确定目标舵机在执行当前动作数据时的活动频率。

进一步地,所述活动频率可通过以下计算公式来确定:

fsn=Abs(N1–N2)/(N3)

其中,n表示舵机ID,fs

进一步地,所述从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据之前,还包括:

获取所述音频信息的音频时长,并根据所述音频信息的音频时长确定所述至少两段动作数据的数量信息。

进一步地,所述相邻两段动作数据的匹配度符合匹配条件包括:

所述相邻两段动作数据中,后一段所述动作数据的特征值中每个舵机的启动位置点与前一段动作数据的特征值中相应舵机的结束位置点的位置差之和的绝对值为第一参数;

所述相邻两段动作数据中,后一段所述动作数据的特征值中每个舵机的活动频率与前一段动作数据的特征值中相应舵机的活动频率的频率差之和的绝对值为第二参数;

若所述第一参数小于第一设定值且所述第二参数小于第二设定值,则确定相邻两段动作数据的匹配度符合匹配条件。

进一步地,在所述从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据之前,还包括:

生成所述音频信息的节奏点数据,所述生成所述音频信息的节奏点数据包括:

获取所述音频信息的音频数据的原始节奏时刻列表;

根据机器人响应性能阈值对所述原始节奏时刻列表进行过滤,得到第一节奏时刻列表;

根据所述音频信息的音频类型获取对应类型音频的权重值,在所述第一节奏时刻列表中的第一个节奏时刻起,包含所述第一个节奏时刻,每经过所述权重值对应数量的节奏时刻后提取一个目标节奏时刻,所述节奏点数据包含所述第一个节奏时刻以及所提取的目标节奏时刻。

进一步地,所述节奏点数据中包括多个节奏点的时刻信息;

所述将所述音频信息的节奏点数据与所述动作数据包进行融合得到待执行动作数据包包括:

根据所述多个节奏点的时刻信息获取所述动作数据包中机器人每个舵机在相应时刻的位置信息;

根据所述多个节奏点中相邻节奏点的时刻信息以及每个舵机在所述相邻节奏点的时刻信息的位置信息获取相应舵机所有所述相邻节奏点之间的运行速度;

基于所述所有所述相邻节奏点之间的运行速度为所述动作数据包中每个相邻节奏点对应的位置信息进行配速后,得到所述待执行动作数据包。

第二方面,本申请还提供一种机器人动作生成装置,该装置包括:

处理器和存储器,所述存储器用于存储至少一条指令,所述指令由所述处理器加载并执行时以实现如上述第一方面提供的机器人动作生成方法。

第三方面,本申请还提供一种机器人,该机器人包括机器人本体以及上述第二方面提供的机器人动作生成装置。

第四方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,在所述计算机程序被处理器执行时以实现如上述第一方面提供的机器人动作生成方法。

通过上述技术方案,获取输入的音频信息,在与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据,并根据第一动作数据生成动作数据包,该动作数据包包含执行顺序依次相邻的至少两段动作数据,所述至少两段动作数据均为与所述音频信息的音频类型匹配的动作数据库中的动作数据,所述至少两段动作数据中任意两段动作数据不相同且相邻两段动作数据的匹配度符合匹配条件,所述至少两段动作数据包括所述第一动作数据。进一步地,获取音频信息的节奏点数据,并将音频信息的节奏点数据上述动作数据包进行融合得到待执行动作数据包。机器人运行上述方案所生成的待执行动作数据包所产生的动作更加贴合输入的音频信息的风格和节奏,提高机器人的动作与音乐之间的匹配度,减少生成的动作的生硬性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一个实施例提供的脉冲编码调制数据示意图;

图2为本申请一个实施例提供的原始音频列表示意图;

图3为本申请一个实施例提供的原始节奏时刻列表示意图;

图4为本申请一个实施例提供的第一节奏时刻列表示意图;

图5为本申请一个实施例提供的节奏点数据示意图;

图6为本申请另一个实施例提供的机器人左右臂4个舵机执行某一基础动作时的位置数组示意图;

图7为本申请一个实施例提供的机器人动作生成方法的流程示意图;

图8为本申请另一个实施例提供的机器人交互流程示意图;

图9为本申请另一个实施例提供的机器人动作生成装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请实施例提供一种机器人动作生成方法,基于该机器人动作生成方法可以生成待执行动作数据包,机器人可以基于待执行动作数据包执行相应动作。其中,该待执行动作数据包可以为待执行的舞蹈动作数据包。在执行上述机器人动作生成方法之前,可以在先执行以下预操作:1、获取机器人中存储的每个音频的节奏点数据;2、根据音频类型创建相应类型的基础动作。

关于节奏点数据的获取流程如下:

可以分别获取机器人中存储的音频的节奏点数据,该音频可以为音乐音频。

图1为本申请一个实施例提供的脉冲编码调制数据示意图,如图1所示,

音乐的节奏提取方式可以为将相应格式的音乐音频通过对应ffmpeg(FastForward Mpeg,)解码为脉冲编码调制数据(pcm,pulse-code modulation),然后生成如图2所示的原始音频列表(list)。

进一步地,可以基于相应的音频处理库(如Librosa库)获取音乐原始音频列表中信号从频域转为时域的list数据,并根据设置阈值BPM140(Beat Per Minute,每分钟节拍数)进行滤波,得到如图3所示的原始节奏时刻列表。

进一步地,根据舵机响应性能过滤过原始节奏时刻列表中相近的节奏点,此步骤主要为了匹配不同硬件对舞蹈动作的支持,避免出现舞蹈节奏过快,电机运行出现过载或者速度跟不上的情况。具体地,根据机器人响应性能阈值对所述原始节奏时刻列表进行过滤,该机器人响应性能阈值为t+0.1,t=πnJ/30Tar,其中n表示转速,n=1000r/min,J表示转动惯量kgm

从原始节奏时刻列表获取到一个包的数据后,计算该采样点的振幅+频率,振幅为16000个采样点中通过中位值滤波去掉的数据的平均值,频率为改采样点的时间轴长度,进而得到图4所示的第一节奏时刻列表。

其中,图4所示的第一节奏时刻列表中包含对应音乐的m个节奏时刻,分别为t1,t2,t3......tm-2,tm-1,tm。进一步地,可以根据当前音乐的音乐类型确定该音乐类型的权重值Wn,如机器人中存储的音乐对应10种音乐类型,可以设置对应的音乐类型标识,具体可以设置为音乐类型1、音乐类型2……音乐类型9、音乐类型10。该音乐类型对应的权重值可以为Wn=10-tn,其中,其中tn表示某一音乐类型的类型值,tn的取值为1、2、3….9、10,进而可以确定音乐类型1~10对应的权重值分别为9~0。

进一步地,在第一节奏时刻列表中的第一个节奏时刻起,每经过Wn个节奏时刻提取一个目标节奏时刻,进而节奏点数据包含上述第一节奏时刻列表中的第一个节奏时刻和所有的目标节奏时刻。举例来说,当音乐类型(type)为音乐类型2(type=2)时,该音乐类型对应的权重值W=10-2,即,音乐类型2对应的权重值为8。在包含m个节奏时刻的第一节奏时刻列表中提取节奏时刻,首先,提取第一节奏时刻t1,包含所提取的节奏时刻,每经过8个节奏时刻提取下一个节奏时刻作为目标节奏时刻,即,t1后提取t9,再提取t17、t25…以此类推。进而节奏点数据包含第一个节奏时刻和所有的目标节奏时刻。其中,权重值越高,所提取的节奏时刻越少,权重值越低,所提取的节奏时刻越多。

为实现机器人根据动作数据生成动作数据包,可以预先进行基础动作数据的创建,其中,该基础动作数据可以为基础舞蹈动作数据。

关于基础动作的创建流程可以包括如下操作:

可以根据不同的音乐类型录制相应类型的基础舞蹈,在录制基础舞蹈时并不关注舞蹈与音乐节奏的匹配程度,只进行完整性录制即可。

基础舞蹈的具体录制方法可以采用机器人手臂轨迹拖拽录制学习,开始录制时,主控可以通过总线方式,每设定检测周期(如1ms)发送一条查询指令给总线上的舵机编码器,查询目标舵机的当前绝对位置值。

举例来说,录制一套10s的基础舞蹈,且该10s的基础舞蹈需要机器人的10个舵机共同运行,则主控每1ms发送一条查询指令给总线上的舵机编码器,在10s内,会生成10000个点位数据,再根据具体舵机ID获取每个舵机生成的位置数组。

若通过拖拽机器人的左右两条手臂,录制了一套2.5s的基础舞蹈,且每个手臂包括4个舵机,该2.5s的基础舞蹈种机器人每个舵机位置数组如图6所示,每个舵机的动作数组包括多个按照运动时间排序的位置信息,即2.5s内按照运动时间排序的多个位置信息。

根据上述方式,为每种音乐类型录制多套相应类型的基础舞蹈,每套基础舞蹈中包括机器人每个舵机的位置数组,并根据舞蹈类型存储在相应类型的基础动作库中,至此完成基础动作库的构建。在所述基础动作为基础舞蹈动作时,该基础动作库可以视为基础舞蹈动作库或基础舞蹈库。

在完成上述预操作的基础上,以下可以进行新的舞蹈动作的生成操作。

图7为本申请一个实施例提供的机器人舞蹈动作生成方法的流程示意图,如图7所示,该机器人舞蹈动作生成方法包括以下步骤:

步骤701:获取输入的音频信息,从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据,可以将所述第一动作数据作为所述载入音乐的初始动作数据。

其中,输入的音频信息可以为:响应于用户所选择的音乐,机器人加载用户所选择的音乐,将加载的音乐视为所述输入的音频。从与所述音频信息的音频类型匹配的动作数据库中获取第一动作数据,可以将所述第一动作数据作为所述载入音乐的初始动作数据。具体地,在用户选择了音乐并需要机器人根据用户选择音乐进行跳舞时,机器人可以获取用户选择音乐的音乐类型,其中,在每个音乐录入时已经绑定了对应的音乐类型。在机器人获取到用户选择音乐的音乐类型后,可以在相应类型的基础舞蹈库获取一段基础舞蹈数据作为初始舞蹈数据,其中,该初始舞蹈数据的选取方式可以一种默认方式如按照基础舞蹈库中基础舞蹈数据的编号顺序进行选择,例如,上一次用户选择控制机器人跳音乐类型1的舞蹈时,机器人在相应类型的基础舞蹈库中选择了编号为003的基础舞蹈数据作为初始舞蹈数据,那么机器人本次可以在相应类型的基础舞蹈库中选择编号为004的基础舞蹈数据作为初始舞蹈数据。

在另一实现方式中,机器人还可以在与所述音频信息的音频类型匹配的动作数据库随机获取第一动作数据,其中,若该动作数据为舞蹈动作数据且该音频为音乐音频时,机器人可以在与音乐音频的音乐类型匹配的舞蹈动作库中随机获取一段舞蹈动作数据,进一步地还可以将获取到的该段舞蹈动作数据为初始舞蹈数据。

在本实施例中,在相应类型的基础舞蹈库中获取一段基础舞蹈作为初始舞蹈之前,还可以获取载入音乐的音频时长,并根据该载入音乐的音频时长获取需要获取的基础舞蹈的数量N。

步骤702:根据第一动作数据生成动作数据包。

其中,所述动作数据包包含执行顺序依次相邻的至少两段动作数据,所述至少两段动作数据均为与所述音频信息的音频类型匹配的动作数据库中的动作数据,所述至少两段动作数据中任意两段动作数据不相同且相邻两段动作数据的匹配度符合匹配条件,所述至少两段动作数据包括所述第一动作数据。换言之,所述动作数据包包含依次相邻的第1段至第N段动作数据,所述第1段动作数据可以为初始动作数据,在所述第1段至第N段动作数据中,第i段舞蹈与第i-1段动作的动作数据的匹配度符合匹配条件,N为大于1的整数,i的取值为2、3、…、N,所述第1段至第N段动作数据均为所述相应类型的基础动作库中的动作数据,且所述第1段至第N段动作数据中任意两个动作数据均不相同。

在一种实施例方式中,上述动作数据可以舞蹈动作数据,进而该动作数据包可以为舞蹈动作数据包。

具体地,上述舞蹈动作数据包的生成过程如下:

在获取到初始舞蹈数据后,根据作为初始舞蹈数据的基础舞蹈数据中每个舵机的位置数组确定该初始舞蹈数据的特征值。其中特征值可以包括机器人每个舵机的启动位置点、结束位置点和/或活动频率。一种实现方式中,获取初始舞蹈数据的特征值可以为分别获取初始舞蹈中机器人每个舵机的启动位置点、结束位置点以及活动频率。

(1)、舵机的启动位置点的获取方式如下:

作为初始舞蹈(第1段舞蹈)的基础舞蹈包括每个舵机的位置数组,位置数组中包括n个位置信息,在上述位置数组中的n个位置信息中获取目标舵机的前设定个(前10个)位置信息,并获取该前设定个位置信息的第一平均位置信息,进而将该第一平均位置信息作为该目标舵机的启动位置点。

每个舵机的位置数组中包括按照运动时间排序的多个位置信息,按照该位置数组的运动时间排序,获取机器人左手臂舵机1的前10个位置信息为例,该机器人左手臂舵机1的启动位置点的计算方式如下:

startL1P=(motorL1[0]+motorL1[1]+...+motorL1[9])/10

其中,startL1P表示机器人左手臂舵机1的启动位置点,motorL1[0]表示机器人左手臂舵机1在该位置数组中的起始位置,motorL1[1]为机器人左手臂舵机1在该位置数组中的第二位置,以此类推。

根据上述方式获取关于初始舞蹈的每个舵机的启动位置点。

(2)、舵机的结束位置点的获取方式如下:

作为初始舞蹈(第1段舞蹈)的基础舞蹈包括每个舵机的位置数组,位置数组中包括n个位置信息,在上述位置数组中的n个位置信息中,按照该位置数组的运动时间排序,获取目标舵机的后设定个(后10个)位置信息,并获取该后设定个位置信息的第二平均位置信息,进而将该第二平均位置信息作为该目标舵机的结束位置点。

以获取机器人左手臂舵机1的后10个位置信息为例,该机器人左手臂舵机1的结束位置点的计算方式如下:

stopL1P=(motorL1[n-9]+motorL1[n-8]+...+motorL1[n-1]+motorL1[n])/10

其中,stopL1P表示机器人左手臂舵机1的启动位置点,motorL1[n]表示机器人左手臂舵机1在该位置数组中的结束位置,motorL1[n-1]为机器人左手臂舵机1在该位置数组中的倒数第二位置,以此类推。

根据上述方式获取关于初始舞蹈的每个舵机的结束位置点。

(3)、舵机的活动频率的获取方式如下:

作为初始舞蹈(第1段舞蹈)的基础舞蹈包括每个舵机的位置数组,位置数组中包括n个位置信息,获取所述位置数组中的n个位置信息中每两个相邻位置之间的绝对位置差,并获取每个所述绝对位置差中的第一绝对位置差数量和第二绝对位置差数量,其中所述第一绝对位置差大于设定差值(如位置差为10),所述第二绝对位置差小于等于该设定差值。

举例来说,位置数组中包括30个位置信息{n1、n2、n3、n4、n5、……n28、n29、n30、},确定上述位置数组中相邻两个位置之间的绝对位置差,具体可以计算得到29个绝对位置差。进一步地,上述29个绝对位置差中大于设定位置差(如位置差为10)的为第一绝对位置差,小于等于设定位置差(如位置差为10)的为第二绝对位置差。进而获取该29个绝对位置差中第一绝对位置差的数量N1以及第二绝对位置差的数量N2。

根据以下公式获取所述活动频率:

fsn=Abs(N1–N2)/(N3)

其中,n表示舵机ID,fsn表示舵机sn在执行当前基础舞蹈时的活动频率,Abs表示绝对值函数,N1表示所述第一绝对位置差数量,N2表示所述第二绝对位置差数量,N3表示所述位置数组中相邻位置的组数。

以机器人左手臂舵机1的位置数组为例,该机器人左手臂舵机1的活动频率的计算方式如下:

motorL1f=Abs(motorL1N1-motorL1N2)/(n-1)

其中,motorL1f表示机器人左手臂舵机1活动频率,Abs表示绝对值函数,motorL1N1表示机器人左手臂舵机1的第一绝对位置差数量,motorL1N2机器人左手臂舵机1的第二绝对位置差数量,n表示位置数组中位置信息的数量,n-1表示位置数组中相邻位置的组数。

按照上述位置数组的举例继续说明,若机器人左手臂舵机1的位置数组中包括30个位置信息,并确定该左手臂舵机1的位置数组的29个绝对位置差中包括10个第一绝对位置差N1以及20个第二绝对位置差N2,则该机器人左手臂舵机1的活动频率的计算方式如下:

motorL1f=Abs(10-20)/29

根据上述方式获取关于初始舞蹈的每个舵机的活动频率。

在采用上述操作(1)、(2)、(3)获取到关于初始舞蹈的每个舵机的启动位置点、结束位置点以及活动频率后,即获取到初始舞蹈的特征值。

以上述初始舞蹈需要机器人的两个手臂(左手臂和右手臂)来执行,且每个手臂具有4个舵机为例,采用上述操作(1)、(2)、(3)可以获取上述初始舞蹈的特征数组,该特征数组如下所示:

motor[3][8]=

{startL1P...startL4P,startR1P..startR4P,

stopL1P...stopL4P,stopR1P...stopR4P,

motorL1f...motorL4f,motorR1f...motorR4f

}

其中,特征数组motor[3][8]表示机器人左右手臂上8个舵机执行该初始舞蹈时的启动位置点、结束位置点以及活动频率。具体地,startL1P...startL4P,startR1P..startR4P分别为左右手臂上8个舵机的启动位置点,stopL1P...stopL4P,stopR1P...stopR4P分别为左右手臂上8个舵机的结束位置点,motorL1f...motorL4f,motorR1f...motorR4f分别为左右手臂上8个舵机的活动频率。

在获取到初始舞蹈(第1段舞蹈)的特征数组(上述特征值)后,根据初始舞蹈的特征值在相应类型的基础舞蹈库中匹配接在初始舞蹈(第1段舞蹈)后的第i段舞蹈。其中,第i段舞蹈的特征值中每个舵机的启动位置点与第i-1段舞蹈的特征值中相应舵机的结束位置点的位置差之和的绝对值为第一参数(x1);第i段舞蹈的特征值中每个舵机的活动频率与第i-1段舞蹈的特征值中相应舵机的活动频率的频率差之和的绝对值为第二参数(x2);x1小于第一设定值且x2小于第二设定值的情况下,第i-1段舞蹈的特征值与第i段舞蹈的特征值的匹配度符合匹配条件。

具体地,根据第i-1段舞蹈的特征值,从剩余舞蹈动作中,匹配第i段舞蹈的选取规则如下所示:

Motorstatus[3][8]=motor(i)[3][8]–motor(i-1)[3][8]

其中,[3]表示上述三种特征值启动位置点[0]、结束位置点[1]以及活动频率[2]的集合,[8]表示机器人左右臂上的8个舵机,该8个舵机分别为舵机[0]、舵机[1]、舵机[2]、…舵机[6]以及舵机[7]。motor(i-1)[3][8]表示机器人在执行第i-1段舞蹈动作时该8个舵机的特征值组成的特征数组,motor(i)[3][8]表示机器人在执行待选取舞蹈动作时该8个舵机的特征值组成的特征数组,Motorstatus[3][8]表示相邻两段舞蹈的特征值的匹配度。

确定相邻两段动作数据的匹配度是否符合匹配条件的匹配方式具体如下:

关于x1:

计算第i段舞蹈的特征值中每个舵机的启动位置点与第i-1段舞蹈的特征值中相应舵机的结束位置点的位置差之和的绝对值x1。确定x1是否小于第一设定值(例如,第一设定值为80)。该第一设定值可以根据实际情况(如机器人的运动性能)动态设定。

x1=Abs[(Motorstatus(i)[0][0]-Motorstatus(i-1)[1][0])+(Motorstatus(i)[0][1]-Motorstatus(i-1)[1][1])+…+(Motorstatus(i)[0][6]-Motorstatus(i-1)[1][6])+(Motorstatus(i)[0][7]-Motorstatus(i-1)[1][7])]

其中,Motorstatus(i)[0][0]表示舵机[0]在执行第i段舞蹈动作时的启动位置点[0],Motorstatus(i-1)[1][0]表示舵机[0]在执行第i-1段舞蹈动作时结束位置点[1];因此,(Motorstatus(i)[0][0]-Motorstatus(i-1)[1][0])则表示舵机[0]执行第i段舞蹈动作时的启动位置点与舵机[0]执行第i-1段舞蹈动作时的结束位置点之间的位置差,以此类推,确定其余每个舵机的上述位置差,并将每个位置差求和后取其绝对值以得到x1。

关于x2:

计算第i段舞蹈的特征值中每个舵机的活动频率与第i-1段舞蹈的特征值中相应舵机的活动频率的频率差之和的绝对值x2。确定x2是否小于第二设定值(例如,第二设定值为0.5)。该第二设定值可以根据实际情况(如机器人的运动性能)动态设定。

X2=Abs[(Motorstatus(i)[2][0]-Motorstatus(i-1)[2][0])+(Motorstatus(i)[2][1]-Motorstatus(i-1)[2][1])+…+(Motorstatus(i)[2][6]-Motorstatus(i-1)[2][6])+(Motorstatus(i)[2][7]-Motorstatus(i-1)[2][7])]

其中,Motorstatus(i)[2][0]表示舵机[0]在执行第i段舞蹈动作时的活动频率[2],Motorstatus(i-1)[2][0]表示舵机[0]在执行第i-1段舞蹈动作时的活动频率[2]。因此,(Motorstatus(i)[2][0]-Motorstatus(i-1)[2][0])则表示表示舵机[0]执行第i段舞蹈动作时的活动频率与舵机[0]执行第i-1段舞蹈动作时的活动频率之间的频率差。以此类推,确定其余每个舵机的上述频率差,并将每个频率差求和后取其绝对值以得到x2。

基于上述操作,将相邻两段动作(第i-1段和第i段)的特征值进行匹配,在确定x1<80且x2<0.5的情况下,则可以确定第i段动作数据的特征值与第i-1段动作数据的特征值的匹配度符合匹配条件。

需要说明的是,后续匹配流程中不再选取以匹配的动作数据,即,至少两段动作数据中任意两段动作数据不相同。

具体地,根据第i-1段动作(舞蹈动作)的特征值匹配第i段动作(舞蹈动作)的过程可以包括第一匹配方式和第二匹配方式,具体如下:

第一匹配方式

基于上述匹配条件,为第i-1段舞蹈动作数据匹配出相应类型动作数据库中多个符合匹配条件的舞蹈动作数据,并在多个符合匹配条件的舞蹈动作数据中按设定顺序或者随机选取一段动作数据作为第i段舞蹈动作。

第二匹配方式

基于上述匹配条件,以轮询的方式为第i-1段舞蹈动作数据匹配一个符合匹配条件的舞蹈动作数据后,立即停止本轮匹配操作,并将符合匹配条件的舞蹈动作数据作为第i段舞蹈动作数据。然后开启下一轮匹配操作。

采用上述第一匹配方式或第二匹配方式匹配得到N段基础舞蹈,上述动作数据包(可以为一种舞蹈动作数据包)包含依次相邻的第1段至第N段基础舞蹈。其中,舞蹈动作数据包中包括其中第1段至第N段基础舞蹈中的位置数组,对第1段至第N段基础舞蹈中的位置数组中的各个位置信息进行时间自适应调整,具体地,其中第i段舞蹈的开始时间为第i-1段舞蹈的结束时间。

步骤703:获取输入的音频信息的节奏点数据,将所述节奏点数据与动作数据包进行融合得到待执行动作数据包。

其中,该输入的音频信息可以为用户选择后载入的音乐。获取到的载入音乐的节奏点数据中包括多个节奏点的时刻信息,具体地,某一音乐的节奏点数据如图5所示,该音乐的节奏点分别在2.31s、3.44s……184.87s、186.26s。进一步地,可以根据节奏点数据中的多个节奏点的时刻信息获取到舞蹈动作数据包的位置数组中机器人每个舵机在相应时刻的位置信息。

进一步地,根据所述多个节奏点中相邻节奏点的时刻信息以及每个舵机在所述相邻节奏点的时刻信息的位置信息获取相应舵机所有所述相邻节奏点之间的运行速度。

以机器人的左臂的舵机1举例来说,相邻节奏点的时刻信息分别为15.75s、17.30s,舞蹈动作数据包中机器人的左臂的舵机1在15.75s对应的位置为0x812,舞蹈动作数据包中机器人的左臂的舵机1在17.30s对应的位置为0x818,即,在此区间机器人的左臂的舵机1由0x812向0x818。

进一步地,根据以下公式为机器人的左臂的舵机1由0x812向0x818的移动进行配速:

(0x818-0x812)/(17.3-15.75)*Wn;

其中,Wn为当前载入音乐的音乐类型对应的权重值。

在通过上述方式获取到机器人的左臂的舵机1由0x812向0x818的运行速度后,根据该运行速度为机器人的左臂的舵机1由0x812向0x818的移动进行配速。

通过上述方式在为所述舞蹈动作数据包中每个相邻节奏点对应的位置信息进行配速后,得到所述待执行舞蹈数据,进而可以将得到的待执行舞蹈数据发送给机器人进行动作执行,以使机器人的舞蹈节奏与音乐节奏相吻合。

在本实施例中,获取到上述待执行舞蹈数据后还可以根据机器人的实际限制范围对待执行舞蹈数据的位置数据进行过滤,以过滤掉待执行舞蹈数据可能损伤机器人的动作的位置数据,进而在过滤后进行相应适应性调整。例如,运行速度的适应性重新配置。

图8为本申请另一个实施例提供的机器人交互流程示意图,如图8所示,该机器人交互流程包括以下步骤:

步骤801:响应于用户操作,触发进入舞蹈模式;

步骤802:根据用户选择音乐类型生成相应类型的待执行舞蹈数据;

步骤803:播放音乐播放并跟随音乐节奏跳舞;

步骤804:音乐播放完成,舞蹈停止,机器人动作归位。

关于步骤801-804中,需要说明的,其步骤802中所述的根据用户选择音乐类型生成相应类型的待执行舞蹈数据的操作流程可以为上述步骤701~703所示实施例中相应舞蹈动作生成的操作流程。

图9为本申请另一个实施例提供的机器人动作生成装置的结构示意图,如图9所示,该装置可以包括处理器901和存储器902,所述存储器902用于存储至少一条指令,所述指令由所述处理器901加载并执行时以实现如上述图7所示实施例提供的机器人动作生成方法。

本申请另一个实施例提供一种机器人,该机器人包括机器人本体以及图9所示实施例提供的机器人动作生成装置。

本申请另一个实施例提供一种计算机可读存储介质,其上存储有计算机程序,在所述计算机程序被处理器执行时以实现如图7所示实施例提供的机器人动作生成方法。

可以理解的是,所述应用可以是安装在终端上的应用程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本发明实施例对此不进行限定。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 机器人动作指令生成方法以及机器人动作指令生成装置
  • 自主学习型机器人装置以及自主学习型机器人装置的动作生成方法
技术分类

06120112870455