机器鱼运动控制模式的优化

2016-06-30 13:14刘煦林信桐
科技视界 2016年15期

刘煦+林信桐

【摘 要】本文采取的是基于视觉的强化学习算法,利用摄像头平台检测机器鱼在水中的状态,将采样数据传入计算机中,利用强化学习算法得出机器鱼采取的下一组运动参数,并将运动参数以无线通信的方式发送到机器鱼中指导机器鱼的运动。本文的目的就是利用强化学习算法解决机器鱼运动控制模式的优化问题。

【关键词】机器鱼;运动控制模式;强化学习算法

1 优化过程的实现

在机器鱼运动模式的优化系统中,整个用于优化的强化学习算法过程都可以在计算机上得以实现。所以软件结构的建立并不是难点。但是在优化系统中还包括了机器鱼、状态检测机构等。这些部分必须依赖硬件,不可能在计算机内部来实现。这样机器鱼运动状态的检测以及各部分之间数据的传输就成为了问题的关键。对于我们构建的整个优化系统的结构来讲,有两个部分必须依赖于特定的硬件。这两个部分就是机器鱼运动状态的检测以及计算机与机器鱼之间的通信。

1.1 基于视觉的机器鱼运动模式检测

为了能够利用强化学习算法兑机器鱼的运动状态进行优化,我们必须要检测到机器鱼在当前的运动参数下的运动状态。有了运动状态的采样参数,才能够对其进行评价,得出奖励值,使整个优化过程得到实现。

针对检测机器鱼运动状态的问题,最直接的方式就是采取视觉的方式对机器鱼的运动状态进行采样。于是我们采用了视觉检测模块进行检测。在此,我们采用了实验室已经成熟的维视科技生产的摄像头物体检测平台。

1.2 无线通信

机器鱼在水中运动,如果采用有线的通信方式会因为导线施加的力量对机器鱼的运动状态产生干扰。并且安装导线需要在机器鱼表面打孔,这样在防水上也存在缺陷。为了有利于优化,所以在计算机与机器鱼的通信中应该使用无线的方式对机器鱼的运动参数进行传输。考虑到机器鱼内部体积和防水的因素,我们选择了工作频率为2.4GHz的无线收发模块NRF24L01,这款无线收发模块需要用程序的方式模拟SPI总线的时序才能够工作。

在机器鱼的内部,空间非常有限而且伸出体外的棒状天线必然会影响机器鱼的防水。所以这款于电路板上集成了内置天线的无线收发模块非常适合于机器鱼的使用。我们将其安装在机器鱼头内部的上方,以保证通信的畅通。但是这款无线收发模块使用的是SPI总线的驱动方式,不能和计算机接口直接相连。所以我们让计算机通过串口分三次向STC89C52单片机发送三个运动参数(A1,A2,θ),STC89C52单片机收到运动参数后在通过连接于单片机上的nRF24L01无线收发模块将数据一次性发送到控制机器鱼的STC89C52单片机中。再由机器鱼使用的单片机将数据运算成为控制数据,并存储于控制表中。

2 实验及结论

2.1 机器鱼运动参数范围和优化步长的确定

由于机器鱼使用的舵机的转角限度为120°,我们将机器鱼舵机的初始位置调节至转角范围的中心。这样在机器鱼中,关节向一边的扭动范围理论上就有60°。那么机器鱼转动角度的幅值就可以设置为60°。但是在试验中,舵机在接近转动范围极限的时候,会出现不稳定以及抖动的情况。所以我们将机器鱼转动角度的幅值设置为50°。此外,需要有一个固定的相位差θ。由于采用鳟行式的鱼类的体长都小于自身体波的波长,也就是鱼头到鱼尾的摆动相位差小于2π。且根据采用鳟行式的鱼类的身体摆动部分是后1/2这一特点,我们将机器鱼的两台舵机的轴都安装在了机器鱼的后半部分。于是我们可以肯定,机器鱼两台舵机的相位差应该在0到π之间。

于是,我们得到机器鱼三个运动参数(A1,A2,θ)的取值范围。这个范围就是0

机器鱼使用的舵机,其转角的控制精度为1°。所以我们没有必要对两个舵机的转角幅值的精度要求过高,其步长设置为1就可以。换算之后的相位差的取值范围是0<θ<64。其取值步长还是为1,大约相当于3°。

2.2 机器鱼运动模式的优化实验和结论

距离阈值决定了在检测区域中搜索标志物的范围。在检测的程序中,在没有检测到标志物的时候是全范围搜索,当检测到标志物后,下一个采样周期会以上一次检测到标志物的点作为圆心,在一定的半径内搜索标志物。距离阈值就代表了半径。如果设置值过小,可能就会导致下一次搜索不到标志物得情况。设置值过小,就会导致搜索范围过大,影响实时性。通常的调节方式是,标志物的速度越快,取值就应该相应增加。我们在整个实验过程中,由于机器鱼的速度不断加快,所以多次调节了距离阈值的取值。在检测参数确定之后就是反复多次的进行实验。

在实验中,我们始终保持机器鱼的体波频率在1Hz。经过多次机器鱼运动控制模式的优化实验,我们得到了机器鱼的运动控制模式的一组较好的参数,可以满足机器鱼的使用。经过多次实验,我们一共对机器鱼的参数ω1取了四组不同的取值。但是不管对机器鱼的奖励函数的权值如何改变,机器鱼始终向着速度更快,头部摆动更小的方向改变。只是在优化的收敛时间和优化过程有所不同。

在实验开始时,首先我们采取了一组初始的运动参数发送到机器鱼中。这组参数的三个值(A1,A2,θ)都是在各自取值范围内的随意值。

由实验可以看到,机器鱼的两个驱动舵机并不是没有运动,相反两个舵机的转角还是比较大的。但是由于转角幅值A1、A2和两个舵机的转角相位差θ的取值搭配不合理,机器鱼的尾部始终处于摆动很小的状态。身体侧向上的运动更多的是自身的扭动而不是有效的推水摆动。这样并没有带来良好的推进效率。参照图中水下的参照物,机器鱼几乎没有向前的运动。接近于一种原地摆头的状况。根据视频的观察,机器鱼游过整个屏幕大约1.2m的长度,时间超过了30s,这是难以接受的。

在我们的优化目标中,优化了机器鱼的速度。在达到一定速度的情况下,鱼类为了保持这样的高速,必然会减小摆头的幅度。这样才能保证在一定的推进效率的基础上,减小机器鱼在水中受到的阻力,节省能量。这样的参数会在对机器鱼速度的优化中达到要求。没有优化之前的运动状态速度是很慢的。

随后,我们使用四组数据各自进行了几次优化试验,在所有的优化试验中,机器鱼的三个运动参数稍有不同,但是差距很小。由于驱动机器鱼的舵机的转角定位精度的限制,所以不能够完全的表现出计算机的计算结果。因此有几组试验数据在收敛的时候都有微小的波动,并未出现一个确定的值,但是这样的波动幅度微小,可以接受。我们可以把这组数据视为是收敛的。在所有的结果数据中,我们制作的机器鱼1号舵机的转角幅值均小于10,2号舵机的幅值范围在27至33之间有所波动。两个舵机的相位差几乎都集中于30左右,也就是略小于90°。

我们最终得到的优化结果为:1号舵机转角幅值为5°,2号舵机转角幅值为30°,两台舵机之间相位差为90°。

由实验可知,机器鱼的摆动部分集中于身体的后半部分,而前半部分基本上可以视作刚性的结构。以水下的横线作为参考标志,机器鱼的头部并没有出现大幅度的摆动。在体波频率为1Hz的情况下,速度大约为0.3m/s。

但是因为机器鱼所处的鱼缸体积狭小,在系统改变机器鱼的运动参数之前的机器鱼的运动和人为的操作带来的水流会对改变运动参数之后的运动产生一定的影响,而且机器鱼的舵机精度也有限,所以不能完全表现出优化程序得到的结果。在这样的条件下我们得到的并不是最优解,而是可以接受的次优解。但是还是在一定的程度上解决了机器鱼运动控制模式的问题,取得了良好的效果。

【参考文献】

[1]戴坡.仿生机器鱼的控制系统设计与实验研究[D].哈尔滨:哈尔滨工业大学,2006.

[2]梁建宏,王田苗,魏洪兴.水下仿生机器鱼的研究进展Ⅰ—鱼类推进机理[J].机器人,2002,24(2):107-111.

[责任编辑:王伟平]