1.本发明涉及水下仿生机器人技术领域,尤其涉及一种基于仿生机器鱼的仿生波动控制方法及系统。
背景技术:2.21世纪以来,随着海洋资源的开发与利用,仿生机器鱼的研究受到了国内外研究学者的高度关注。仿生机器鱼具有推进效率高、能耗低、机动性能好、噪音低、隐蔽性高等优点,因而具有广泛的应用,例如海洋资源的探测和开发、军事侦察、水下考古等。
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.本发明提供的基于仿生机器鱼的仿生波动控制方法及系统,通过鱼体波函数确定期望鱼尾摆角,再根据期望鱼尾摆角和预设映射表,确定目标舵机转角,最后使用目标舵机转角对仿生机器鱼的仿生波动状态进行控制,以达到期望的控制效果,该方法完全基于数据驱动,不需要求解复杂机构的运动学模型,解决了存在控制耦合的机构的控制问题,适用于具有强耦合的机构,并且简单、高效,还具有较强的实用性。
附图说明
35.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是本发明实施例提供的基于仿生机器鱼的仿生波动控制方法的流程示意图;
37.图2是本发明实施例提供的仿生机器鱼的俯视图;
38.图3是本发明实施例提供的视觉测量平台示意图;
39.图4是本发明实施例提供的基于仿生机器鱼的仿生波动控制系统的结构示意图;
40.图5是本发明提供的电子设备的结构示意图。
具体实施方式
41.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.由于在使用基于拟合鱼体波函数的控制方法控制机器鱼时,需要运动学模型,但是对于难以求解运动学模型的结构,再使用该方法控制就会变得尤为困难,因此,本发明提供一种基于仿生机器鱼的仿生波动控制方法。
43.图1是本发明实施例提供的基于仿生机器鱼的仿生波动控制方法的流程示意图。如图1所示,该方法包括:
44.s1,基于仿生机器鱼的鱼体波函数,确定所述仿生机器鱼在当前时刻的期望鱼尾摆角;
45.s2,基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角;所述舵机用于驱动所述仿生机器鱼的鱼尾摆动;
46.s3,基于所述目标舵机转角,对所述仿生机器鱼在所述当前时刻的仿生波动状态进行控制;
47.其中,所述预设映射表用于表征所述仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。
48.本发明实施例中提供的基于仿生机器鱼的仿生波动控制方法,其执行主体为服务器,该服务器可以是本地服务器,也可以是云端服务器,本地服务器具体可以是计算机,本
发明实施例中对此不作具体限定。
49.首先执行步骤s1,根据仿生机器鱼的鱼体波函数,确定仿生机器鱼在当前时刻的期望鱼尾摆角。
50.其中,仿生机器鱼是按照仿生学原理设计的、形似鲤鱼的机器鱼,鱼尾可以靠内部的驱动力来回摆动,进而通过鱼尾改变其游动的方向。仿生机器鱼游动时的身体波动曲线可以用一个波动方程表示,在某一特定时刻,这个波动方程所表示的身体波动曲线就是仿生机器鱼的鱼体波函数。当仿生机器鱼的鱼尾摆动时,仿生机器鱼的鱼体波函数也会随之波动。仿生机器鱼的鱼体波函数可以表示为:
51.y(x,t)=(c1+c2x2)sin(kx
‑
ωt)(1)
52.其中,y(x,t)表示在t时刻横坐标x处的侧向位移,c1和c2分别表示鱼体波振幅包络系数,k=2π/λ,表示波数,λ为波长,ω=2πf,表示角频率,f为频率。
53.对鱼体波函数在一个周期t内进行离散采样,对于任意采样点时刻t,都能根据上述公式(1)得到采样点时刻t横坐标x处的侧向位移y,也就能够获取到采样点时刻t的坐标位置(x,y)。其中,鱼体波函数的一个周期可以是一个波动周期,即以鱼体波函数上的某一点s为参考点,若在t1时刻,点s开始发生波动,在t2时刻,如果点s第一次回到了t1时刻所在的位置,且点s在t2时刻的运动方向和在t1时刻的运动方向相同,则鱼体波函数的周期t就可以是t=t2‑
t1。离散采样的采样频率可以根据实际需要进行设置,本发明实施例对此不作具体限定。
54.仿生机器鱼在当前时刻的期望鱼尾摆角就可以通过对当前时刻的鱼体波函数进行采样,获取当前时刻的侧向位移,然后确定当前时刻的期望鱼尾摆角。其中,期望鱼尾摆角是通过鱼体波函数确定的鱼尾摆角,也是最终控制仿生机器鱼想要达到的鱼尾摆角,即最终期望通过控制仿生机器鱼,使仿生机器鱼在真实环境下的鱼尾摆角达到或无线接近期望鱼尾摆角。
55.本发明实施例中,可以通过在仿生机器鱼的尾部固定标记块的方法确定仿生机器鱼在当前时刻的期望鱼尾摆角,可以在仿生机器鱼的尾部顶部固定两个标记块。仿生机器鱼的鱼头和鱼尾位于同一条直线,即仿生机器鱼没有受到任何驱动时,建立坐标系。设置鱼头和鱼尾交界处的中心为原点o,ox轴方向始终沿着初始鱼尾体轴方向并指向鱼尾,其中,所述初始鱼尾体轴方向即仿生机器鱼静止,鱼尾没有任何摆动时的鱼尾方向。
56.当仿生机器鱼的尾部摆动时,仿生机器鱼的尾部的两个标记块也会随之改变位置,由于仿生机器鱼的尾部摆动引起的鱼体波函数的波动是上下波动,因此,即使两个标记块在ox方向上有一定的偏移,所述偏移也可以忽略不计,所以,可以通过人工测量的方式获取两个标记块在ox方向上距离原点o的距离。例如,两个标记块可以是第一标记块和第二标记块,测量出的第一标记块距离原点o的距离可以是x1,测量出的第二标记块距离原点o的距离可以是x2。
57.在当前时刻对鱼体波函数进行采样时,就可以根据公式(1),获取仿生机器鱼尾部的第一标记块在当前时刻的x1处的侧向位移y1,也可以获取仿生机器鱼尾部的第二标记块在当前时刻的x2处的侧向位移y2,也即是可以获取第一标记块在当前时刻的期望坐标位置(x1,y1),以及第二标记块在当前时刻的期望坐标位置(x2,y2)。
58.在获取第一标记块和第二标记块在当前时刻的期望坐标位置后,就可以根据所述
期望坐标位置,确定第一标记块和原点o构成的第一向量以及第二标记块和原点o构成的第二向量当前时刻的期望鱼尾摆角就是第一向量和ox轴之间的第一夹角和第二向量和ox轴之间的第二夹角根据以下公式即可确定第一夹角和第二夹角:
[0059][0060]
然后执行步骤s2。基于预设的映射表和期望鱼尾摆角,确定仿生机器鱼内的舵机在当前时刻的目标舵机转角。
[0061]
其中,舵机用于驱动仿生机器鱼的鱼尾摆动,预设映射表用于表征仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。当舵机旋转某一角度时,舵机会驱动仿生机器鱼的鱼尾摆动,鱼尾摆动的角度就是鱼尾摆角,因此,舵机转角和鱼尾摆角之间具有对应关系,该对应关系通过预设映射表表征。
[0062]
预设映射表可以通过多次测量实验确定。测量实验可以是在舵机的角度转动范围内,对舵机的转动角度进行采样,得到采样舵机转角。采样的频率可以根据实际需要进行设置,本发明实施例对此不作具体限定。
[0063]
本发明实施例中,在制作预设映射表时,还可以在仿生机器鱼的头部顶部再固定两个标记块,所述标记块可以设置在上述的ox方向上,即根据四个红块的质心位置来计算出两个鱼尾摆角。控制舵机旋转至任一采样转动角度,记录此时的采样舵机转角;仿生机器鱼的鱼尾会在舵机的驱动下摆动,记录此时仿生机器鱼的顶部图像。对所述仿生机器鱼的顶部图像进行处理,提取图像中仿生机器鱼的头部顶部固定的两个标记块的质心位置以及第一标记块和第二标记块的质心位置,再根据四个标记块的质心位置,确定与此时的采样舵机转角对应的鱼尾摆角,即可以得到采样舵机转角与鱼尾摆角之间的映射关系。其中,提取图像中四个标记块的质心位置可以使用神经网络模型的方法进行提取,也可以使用传统的图像处理的方法,本发明实施例对此不作具体限定。
[0064]
重复上述过程,直到获取所有的采样舵机转角对应的鱼尾摆角,将采样舵机转角和对应的鱼尾摆角用矩阵描述,即可得到舵机转角与鱼尾摆角的关系模型,所述矩阵即是预设映射表。
[0065]
在得到预设映射表后,就可以知道任意采样舵机转角对应的鱼尾摆角,根据期望鱼尾摆角,就能够在预设映射表中,找到与期望鱼尾摆角最接近的鱼尾摆角,最接近的鱼尾摆角对应的舵机转角就是目标舵机转角。
[0066]
最后执行步骤s3。基于目标舵机转角,对仿生机器鱼在当前时刻的仿生波动状态进行控制。
[0067]
根据目标舵机转角,控制舵机使其转角为目标舵机转角,可以使仿生机器鱼的鱼尾摆角接近或等于通过鱼体波函数确定的期望鱼尾摆角,仿生机器鱼的仿生波动状态接近或等于鱼体波函数表征的仿生波动状态,达到期望控制效果。
[0068]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过鱼体波函数确定期望鱼尾摆角,再根据期望鱼尾摆角和预设映射表,确定目标舵机转角,最后使用目标舵机转
角对仿生机器鱼的仿生波动状态进行控制,以达到期望的控制效果,该方法完全基于数据驱动,不需要求解复杂机构的运动学模型,解决了存在控制耦合的机构的控制问题,适用于具有强耦合的机构,并且简单、高效,还具有较强的实用性。
[0069]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方法,所述舵机包括第一舵机和第二舵机,所述第一舵机沿鱼尾方向连接有第一金属板,所述第二舵机沿鱼尾方向连接有第二金属板;所述仿生机器鱼的顶部设置有四个标识块,各所述标识块均位于同一条直线上,且各所述标识块的位置分别与所述第二舵机、所述仿生机器鱼的头尾连接点、所述第一金属板以及所述第二金属板的位置在竖直方向上相对应。
[0070]
如图2所示,图2是本发明实施例提供的仿生机器鱼的俯视图。在图2中,10为第一舵机,11为第二舵机,12为第一驱动线对,13为第一金属板,14为第二金属板,15为标识块a,16为标识块b,17为第二驱动线对,18为标识块c,19为标识块d。第一金属板13以及第二金属板14的形状可以是椭圆形,本发明实施例中对此不作具体限定。
[0071]
其中,第一舵机10的输出力矩通过第一驱动线对12传递至第一金属板13,第二舵机11的输出力矩通过第二驱动线对17传递至第二金属板14。当第一舵机10和第二舵机11转动时,仿生机器鱼的鱼尾就会摆动。
[0072]
在仿生机器鱼没有受到驱动,即仿生机器鱼静止时,如图2所示,标识块a、标识块b、标识块c和标识块d均位于同一条直线上;且标识块a位于第二舵机的顶部;标识块b位于仿生机器鱼的头尾连接点;标识块c位于第一金属板的顶部;标识块d位于第二金属板的顶部。
[0073]
为了更好的描述鱼尾的姿态,还可以定义目标坐标系{0}:oxyz,其中原点o位于鱼头和鱼尾交界处的中心,ox始终沿着初始鱼尾体轴方向并指向鱼尾,oz垂直于水平面指向上方,oy遵循右手定则。各个标识块均位于所定义的坐标系的xoz平面内。
[0074]
通过标识块a在所定义的坐标系下的位置和标识块b在目标坐标系下的位置,可以构成向量同理,也可以获取向量向量则此时可以定义鱼尾摆角为向量和向量之间的夹角θ1以及向量和向量之间的夹角θ2。
[0075]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过设置各标识块的位置,简化了鱼尾摆角的计算过程。
[0076]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方法,所述预设映射表基于如下方法构建:
[0077]
确定所述舵机的各舵机转角采样值,并获取各舵机转角采样值对应的仿生机器鱼顶部图像;
[0078]
基于所述仿生机器鱼顶部图像,确定所述仿生机器鱼的鱼尾摆角,并基于所述舵机转角采样值和所述鱼尾摆角之间的对应关系,构建所述预设映射表。
[0079]
具体地,本发明实施例中,可以在舵机的角度转动范围内,先确定舵机的各舵机转角采样值,然后获取各舵机转角采样值对应的仿生机器鱼顶部图像。
[0080]
其中,舵机的角度转动范围和采样频率均可以根据实际需要进行设置,本发明实施例对此不作具体限定。例如,由上述可知,舵机包括第一舵机和第二舵机,则第一舵机的角度转动范围可以是[
‑
41
°
,41
°
],第二舵机的角度转动范围可以是[
‑
36
°
,36
°
],其中,0
°
表
示舵机没有偏转,即仿生机器鱼的鱼头和鱼尾处于同一直线时的位置。可以在第一舵机的角度转动范围内采样65个点,在第二舵机的角度转动范围内采样57个点。
[0081]
对于任一对舵机转角采样值,控制舵机转动至所述舵机转角采样值,则舵机会驱动仿生机器鱼鱼尾摆动,记录此时的仿生机器鱼顶部图像,即为舵机转角采样值对应的仿生机器鱼顶部图像。
[0082]
如图3所示,图3是本发明实施例提供的视觉测量平台示意图。在图3中,1为基于stm32f407zgt6的主控制板,2为蓝牙模块,3为稳压电路模块,4为锂电池,5为计算机,6为usb摄像头,7为支架台,8为仿生机器鱼,9为水箱。
[0083]
视觉测量平台包括计算机,摄像头,仿生机器鱼,主控制电路和通讯模块。主控制电路包括基于stm32f407zgt6的主控制板,稳压电路模块和锂电池。通讯模块采用2个蓝牙模块,一个蓝牙模块设置于计算机5内,另一个蓝牙模块设置于仿生机器鱼8内。仿生机器鱼浸没在水中,并固定头部。摄像头安装在仿生机器鱼的顶部。计算机通过摄像头采集仿生机器鱼的鱼尾摆动时的仿生机器鱼顶部图像,同时通过蓝牙与仿生机器鱼通信以同步数据。
[0084]
当分别控制第一舵机和第二舵机旋转至任一对舵机转角采样值时,摄像头会记录鱼尾摆动的过程。为了确定舵机转角采样值和每一帧仿生机器鱼顶部图像中鱼尾摆角的对应关系,可以采用同步数据方法。对于任意一对舵机转角采样值,当主控板控制两个舵机转动时,同时还会通过蓝牙模块将舵机转角采样值发送给计算机;当计算机接收到来自主控板的一对舵机转角采样值时,则会采集预设帧数的仿生机器鱼顶部图像。其中,预设帧数可以根据实际需要进行设定,本发明实施例对此不做具体限定,例如,可以设置为20帧。
[0085]
在记录鱼尾摆动的过程时,也可以使用双目测量法,即安装两个摄像头进行记录。双目测量法需要先对摄像头标定,在后续的鱼尾摆角计算中,也需要根据标定的结果,将图像坐标系下的鱼尾摆角映射到世界坐标系下进行计算。
[0086]
对获取到的预设帧数的仿生机器鱼顶部图像进行处理,就可以确定仿生机器鱼的鱼尾摆角,再根据舵机转角采样值和鱼尾摆角之间的对应关系,就能够构建预设映射表。
[0087]
其中,对获取到的预设帧数的仿生机器鱼顶部图像进行处理可以是对每一帧图像通过神经网络模型或通过提取特征点的方法等确定上述标识块a、标识块b、标识块c和标识块d在图像中的位置,再计算确定出的位置的平均值作为各标识块在图像中的最终位置,再根据各个标识块在图像中的最终位置确定向量向量和向量最后确定向量和向量之间的夹角θ1作为第一鱼尾摆角,以及向量和向量之间的夹角θ2作为第二鱼尾摆角。
[0088]
本发明实施例中,预设映射表可以用一个n*4的矩阵来描述,n为映射项总数,m(i)表示预设映射表中第i项,预设映射表中的每一项都包含两个舵机转角,即第一舵机转角和第二舵机转角,以及第一鱼尾摆角和第二鱼尾摆角。
[0089]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过获取各舵机转角采样值对应的仿生机器鱼顶部图像,确定仿生机器鱼的鱼尾摆角,再基于舵机转角采样值和鱼尾摆角之间的对应关系,构建预设映射表,便于后续使用预设映射表确定目标舵机转角,无需建立复杂的运动学模型,更加简单、高效。
[0090]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方
法,所述基于所述仿生机器鱼顶部图像,确定所述仿生机器鱼的鱼尾摆角,具体包括:
[0091]
对所述仿生机器鱼顶部图像进行高斯滤波,得到目标仿生机器鱼顶部图像;
[0092]
提取所述目标仿生机器鱼顶部图像中各标识块的轮廓特征;
[0093]
基于各标识块的轮廓特征,确定各标识块的质心位置;
[0094]
基于各标识块的质心位置,确定各标识块的质心位置之间形成的向量,并基于所述向量,确定所述仿生机器鱼的鱼尾摆角。
[0095]
具体地,本发明实施例中,对获取到的仿生机器鱼顶部图像,可以先进行高斯滤波,以消除高斯噪声,得到目标仿生机器鱼顶部图像。
[0096]
再对目标仿生机器鱼顶部图像中各标识块的轮廓特征进行提取,确定各标识块的轮廓特征。
[0097]
其中,提取轮廓特征可以先根据各标识块的颜色特征确定各标识块的粗略位置。例如,可以将各标识块均设置为红色,则可以根据图像中各个像素点的像素值是否在红色范围内进行过滤,将处于红色范围内的像素值对应的像素点标记为1,不在红色范围内的像素值对应的像素点均标记为0,则可以根据所有标记为1的像素点确定出各标识块的粗略位置。
[0098]
在确定出各标识块的粗略位置后,还可以再进行膨胀,腐蚀等形态学处理,以消除一些由噪声引起的细小的轮廓。
[0099]
然后再根据确定出的各标识块的粗略位置,提取各标识块的轮廓特征,例如,可以使用边缘检测等方法确定出各标识块的轮廓特征。
[0100]
在确定出各标识块的轮廓特征后,就可以确定各标识块的质心位置,可以根据下列公式计算各标识块的质心位置:
[0101][0102]
其中,分别表示第l个红块的质心坐标,n
l
表示第l个红块轮廓的像素点总数,分别表示第l个红块轮廓的像素点p在图像坐标系的横、纵坐标。
[0103]
在确定各标识块的质心时,由于光照和噪声扰动的影响,有时候某个标识块检测出来的质心不止一个,所以可以通过聚类得到各标识块的质心的平均位置。可以使用k
‑
means聚类算法或其他聚类算法,本发明实施例对聚类算法不作具体限定。
[0104]
由上述可知,任意一对舵机转角采样值均对应有预设帧数的仿生机器鱼顶部图像,因此,需要对每一帧图像进行如上述的处理,获取每一帧仿生机器鱼顶部图像中的各标识块的质心,最后计算其平均值,将其平均值作为各标识块的质心位置。
[0105]
在确定出各标识块的质心位置后,即确定了标识块a、标识块b、标识块c和标识块d在图像中的坐标位置,则根据各标识块的质心位置,可以确定出各标识块的质心位置之间形成的向量,即上述的向量向量和向量最后确定向量和向量之间的夹角θ1作为第一鱼尾摆角,以及向量和向量之间的夹角θ2作为第二鱼尾摆角。
[0106]
其中,由于标识块a和标识块b分别位于第二舵机的顶部和标仿生机器鱼的头尾连接点,因此,当仿生机器鱼的鱼尾摆动时,标识块a和标识块b的位置是不会发生改变的。可以利用增量式计算均值的方法,将预设帧数的仿生机器鱼顶部图像中计算出的标识块a和标识块b的质心位置的平均位置分别作为标识块a和标识块b的质心位置,以提高测量的精度。其中,预设帧数可以根据实际需要进行设置,本发明实施例对此不作具体限定,只需满足预设帧数足够大即可,例如可以设置为10000。
[0107]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过对仿生机器鱼顶部图像进行过滤、提取质心等操作确定各标识块的质心位置,再确定各标识块的质心位置之间形成的向量,并基于所述向量,确定仿生机器鱼的鱼尾摆角,无需建立复杂的运动学模型即可获取仿生机器鱼的鱼尾摆角,提高了效率,具有较强的实用性。
[0108]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方法,所述基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角,具体包括:
[0109]
基于所述期望鱼尾摆角与所述预设映射表内各鱼尾摆角之间的第一误差值,确定所述舵机在所述当前时刻的若干个候选鱼尾摆角;
[0110]
基于所述舵机在所述当前时刻的前一时刻的舵机转角以及各候选鱼尾摆角对应的候选舵机转角之间的第二误差值,确定所述目标舵机转角。
[0111]
具体地,本发明实施例中,确定当前时刻的期望鱼尾摆角后,可以先将期望鱼尾摆角与预设映射表中的所有鱼尾摆角进行比较,计算期望鱼尾摆角与预设映射表中的各鱼尾摆角之间的第一误差值;根据第一误差值确定舵机在当前时刻的若干个候选鱼尾摆角,若干个候选鱼尾摆角与其对应的舵机转角可以构成候选映射表m1。
[0112]
其中,可以初始化一个n*1的向量e1用于表示各第一误差值,n为正整数,表示所有第一误差值的数量,也即预设映射表m中总项数。第i个第一误差值可以根据下列公式确定:
[0113][0114]
其中,和分别为第一期望鱼尾摆角和第二期望鱼尾摆角;和分别为预设映射表中的第一鱼尾摆角和第二鱼尾摆角,i的取值范围为1至n。
[0115]
在确定出若干个候选鱼尾摆角后,由于舵机需要平稳转动,因此还可以再根据舵机在当前时刻的前一时刻的舵机转角以及各候选鱼尾摆角对应的候选舵机转角之间的第二误差值确定最终需要的目标舵机转角。
[0116]
其中,可以用α1(t
‑
1)和α2(t
‑
1)分别表示t
‑
1时刻第一舵机和第二舵机的舵机转角。初始化一个n1*1的向量e2用于表示各第二误差值,n1为正整数,表示所有第二误差值的数量,也是候选映射表m1中的总项数。第j个第二误差值可以根据以下公式确定:
[0117][0118]
其中,分别为候选映射表m1中第一舵机和第二舵机的舵机转角,α
max1
,α
max2
分别表示第一舵机和第二舵机在相邻时刻允许的最大角度差,q为一个很大的正数,||表示
或运算,j的取值范围为1至n1。
[0119]
根据上述第二误差值,就可以确定出目标舵机转角,目标舵机转角可以是所有第二误差值中最小第二误差值对应的舵机转角。
[0120]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过第一误差值和第二误差值,确定目标舵机转角,能够使最终确定出的目标舵机转角最接近期望鱼尾摆角,达到对仿生机器鱼的仿生波动状态控制的最佳效果。
[0121]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方法,所述基于所述期望鱼尾摆角与所述预设映射表内各鱼尾摆角之间的第一误差值,确定所述舵机在所述当前时刻的若干个候选鱼尾摆角,具体包括:
[0122]
基于所述期望鱼尾摆角与所述预设映射表内各鱼尾摆角之间的第一误差值,确定所有第一误差值中小于预设阈值的第一误差值对应鱼尾摆角为所述候选鱼尾摆角;
[0123]
其中,所述预设阈值基于所有第一误差值中最小的第一误差值确定。
[0124]
具体地,本发明实施例中,由公式(4)可确定出期望鱼尾摆角与预设映射表内各鱼尾摆角之间的第一误差值,然后可以确定所有第一误差值中小于预设阈值的第一误差值对应鱼尾摆角为候选鱼尾摆角,其中,预设阈值基于所有第一误差值中最小的第一误差值确定。
[0125]
预设阈值可以根据下列公式确定:
[0126]
e
up
=k*min(e1)(6)
[0127]
其中,k为略大于1的常数,min(e1)表示所有第一误差值中最小的第一误差值。
[0128]
候选鱼尾摆角是所有第一误差值中小于e
up
的第一误差值对应的鱼尾摆角,所有候选鱼尾摆角及其对应的舵机转角构成了候选映射表m1,也可以称为候选映射表m1,用于表征所有第一误差值中小于e
up
的第一误差值对应的舵机转角和鱼尾摆角之间的对应关系。
[0129]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过第一误差值和预设阈值,确定候选鱼尾摆角,使后续确定目标舵机转角更方便,也可以使仿生机器鱼的鱼尾摆角更接近期望鱼尾摆角。
[0130]
在上述实施例的基础上,本发明实施例提供的基于仿生机器鱼的仿生波动控制方法,所述基于所述舵机在所述当前时刻的前一时刻的舵机转角以及各候选鱼尾摆角对应的候选舵机转角之间的第二误差值,确定所述目标舵机转角,具体包括:
[0131]
确定所有第二误差值中最小的第二误差值;
[0132]
将最小的第二误差值对应的候选舵机转角作为所述目标舵机转角。
[0133]
具体地,本发明实施例中,可以根据公式(5)确定第二误差值,然后在所有第二误差值中确定最小的第二误差值。最小的第二误差值对应的候选舵机转角即为目标舵机转角。
[0134]
其中,最小的第二误差值为min(e2),min(e2)在e2中所在的位置可以通过下列公式确定:
[0135]
n=argmin(e2)(7)
[0136]
其中,n表示min(e2)在e2中所在的位置,即e2中第n个第二误差值最小。同时,n也表示取候选映射表m1中第n项的候选舵机转角计算第二误差值时,会使得到的第二误差值最小。
[0137]
则目标舵机转角可以表示为:
[0138][0139][0140]
其中,α1(t)和α2(t)分别表示与当前时刻的期望鱼尾摆角对应的第一目标舵机转角和第二目标舵机转角,和表示候选映射表m1中第n项的第一舵机的候选舵机转角和第二舵机的候选舵机转角。
[0141]
本发明实施例中的基于仿生机器鱼的仿生波动控制方法,通过将最小的第二误差值对应的候选舵机转角作为目标舵机转角,即保证了目标舵机转角对应的鱼尾摆角最接近期望鱼尾摆角,又保证了舵机的平稳转动,达到了期望的控制效果。
[0142]
如图4所示,在上述实施例的基础上,本发明实施例中提供了一种基于仿生机器鱼的仿生波动控制系统,包括:
[0143]
期望鱼尾摆角确定模块401,用于基于仿生机器鱼的鱼体波函数,确定所述仿生机器鱼在当前时刻的期望鱼尾摆角;
[0144]
目标舵机转角确定模块402,用于基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角;所述舵机用于驱动所述仿生机器鱼的鱼尾摆动;
[0145]
控制模块403,用于基于所述目标舵机转角,对所述仿生机器鱼在所述当前时刻的仿生波动状态进行控制;
[0146]
其中,所述预设映射表用于表征所述仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。
[0147]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,具体还包括:预设映射表构建模块,所述预设映射表构建模块,具体包括:
[0148]
图像获取子模块,用于确定所述舵机的各舵机转角采样值,并获取各舵机转角采样值对应的仿生机器鱼顶部图像;
[0149]
映射表构建子模块,用于基于所述仿生机器鱼顶部图像,确定所述仿生机器鱼的鱼尾摆角,并基于所述舵机转角采样值和所述鱼尾摆角之间的对应关系,构建所述预设映射表。
[0150]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,所述舵机包括第一舵机和第二舵机,所述第一舵机沿鱼尾方向连接有第一金属板,所述第二舵机沿鱼尾方向连接有第二金属板;所述仿生机器鱼的顶部设置有四个标识块,各所述标识块均位于同一条直线上,且各所述标识块的位置分别与所述第二舵机、所述仿生机器鱼的头尾连接点、所述第一金属板以及所述第二金属板的位置在竖直方向上相对应。
[0151]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,所述映射表构建子模块,具体包括:
[0152]
过滤单元,用于对所述仿生机器鱼顶部图像进行高斯滤波,得到目标仿生机器鱼顶部图像;
[0153]
轮廓提取单元,用于提取所述目标仿生机器鱼顶部图像中各标识块的轮廓特征;
[0154]
质心确定单元,用于基于各标识块的轮廓特征,确定各标识块的质心位置;
[0155]
鱼尾摆角确定单元,用于基于各标识块的质心位置,确定各标识块的质心位置之间形成的向量,并基于所述向量,确定所述仿生机器鱼的鱼尾摆角。
[0156]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,所述目标舵机转角确定模块具体包括:
[0157]
候选鱼尾摆角确定子模块,用于基于所述期望鱼尾摆角与所述预设映射表内各鱼尾摆角之间的第一误差值,确定所述舵机在所述当前时刻的若干个候选鱼尾摆角;
[0158]
目标舵机转角确定子模块,用于基于所述舵机在所述当前时刻的前一时刻的舵机转角以及各候选鱼尾摆角对应的候选舵机转角之间的第二误差值,确定所述目标舵机转角。
[0159]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,所述候选鱼尾摆角确定子模块,具体用于:
[0160]
基于所述期望鱼尾摆角与所述预设映射表内各鱼尾摆角之间的第一误差值,确定所有第一误差值中小于预设阈值的第一误差值对应鱼尾摆角为所述候选鱼尾摆角;
[0161]
其中,所述预设阈值基于所有第一误差值中最小的第一误差值确定。
[0162]
在上述实施例的基础上,本发明实施例中提供的一种基于仿生机器鱼的仿生波动控制系统,所述目标舵机转角确定子模块,具体包括:
[0163]
最小第二误差确定单元,用于确定所有第二误差值中最小的第二误差值;
[0164]
目标舵机转角确定单元,用于将最小的第二误差值对应的候选舵机转角作为所述目标舵机转角。
[0165]
具体地,本发明实施例中提供的基于仿生机器鱼的仿生波动控制系统中各模块的作用与上述方法类实施例中各步骤的操作流程是一一对应的,实现的效果也是一致的,具体参见上述实施例,本发明实施例中对此不再赘述。
[0166]
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行基于仿生机器鱼的仿生波动控制方法,该方法包括:基于仿生机器鱼的鱼体波函数,确定所述仿生机器鱼在当前时刻的期望鱼尾摆角;基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角;所述舵机用于驱动所述仿生机器鱼的鱼尾摆动;基于所述目标舵机转角,对所述仿生机器鱼在所述当前时刻的仿生波动状态进行控制;其中,所述预设映射表用于表征所述仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。
[0167]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种
可以存储程序代码的介质。
[0168]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例所提供的基于仿生机器鱼的仿生波动控制方法,该方法包括:基于仿生机器鱼的鱼体波函数,确定所述仿生机器鱼在当前时刻的期望鱼尾摆角;基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角;所述舵机用于驱动所述仿生机器鱼的鱼尾摆动;基于所述目标舵机转角,对所述仿生机器鱼在所述当前时刻的仿生波动状态进行控制;其中,所述预设映射表用于表征所述仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。
[0169]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于仿生机器鱼的仿生波动控制方法,该方法包括:基于仿生机器鱼的鱼体波函数,确定所述仿生机器鱼在当前时刻的期望鱼尾摆角;基于预设映射表和所述期望鱼尾摆角,确定所述仿生机器鱼内的舵机在所述当前时刻的目标舵机转角;所述舵机用于驱动所述仿生机器鱼的鱼尾摆动;基于所述目标舵机转角,对所述仿生机器鱼在所述当前时刻的仿生波动状态进行控制;其中,所述预设映射表用于表征所述仿生机器鱼的鱼尾摆角与舵机转角之间的对应关系。
[0170]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0171]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0172]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。