机器鱼水中全局救援策略的改进与创新

2018-02-22 03:07:06林志舟夏庆锋南京大学金陵学院南京210089
机器人技术与应用 2018年6期
关键词:同心圆支柱机器

林志舟 张 燕 夏庆锋 (南京大学金陵学院,南京,210089)

0 引言

机器人的应用已成为全球工业的必然趋势[1]。在这一趋势下应运而生的各类机器人比赛,它们不仅可以对研究成果进行检验,还可以探索机器人在不可预测的动态环境中如何应对、解决问题,以使机器人技术更加成熟,加速机器人商品化、产品化的进程[2]。

国际水中机器人大赛是一项由中国发起创立的国际性机器人大赛,它以智能仿生机器鱼为主题,在水中进行各类竞赛,涉及机械电子学、机器人学、传感器信息融合、智能控制、通信、计算机视觉、计算机图形学、人工智能等领域[3]。在综合多门学科的基础上,智能算法如何实现尤为重要。在水中全局救援项目策略中,本文针对机器鱼甩尾救援策略的不足,提出一种双态三环同心圆策略。

1 甩尾策略

1.1 基本思路

水中全局救援比赛要求机器鱼救下受困于瓶中的小鱼,每支参赛队伍按照抽签顺序派出1 条机器鱼参加比赛。如图1 所示,在水池中放置5 个支柱,其中编号为1、2、3 的支柱是最低难度的支柱,4 号支柱为中等难度的支柱,5 号支柱为最高难度的支柱。每个支柱顶部放置一个装有真鱼的透明盒子,盒子上方贴有与支柱直径相当的红色色标,整个盒子代表受困待救的小鱼。机器鱼从水池右侧池壁中心点出发,逐一冲撞支柱,若支柱顶部的盒子落入水中,则代表营救成功受困的小鱼[4]。

原甩尾策略为机器鱼设置了5 个目标点,根据机器鱼与目标点距离的远近,将机器鱼撞击的整体动作分为准备态、攻击态和撤离态3 个状态。当满足准备态条件时,机器鱼进入准备状态,靠近目标;当目标处于攻击范围内时,机器鱼进入攻击态,对目标做出甩尾动作;攻击结束后,机器鱼将状态切换为撤离态,离开目标一定距离后进入下一个动作周期,实现循环救援。甩尾策略设计思路如图2 所示[5]。

图1 救援目标点平面示意

图2 甩尾策略示意图

1.2 算法缺点分析

1.2.1 惯性误差

准备态与攻击态的速度要求不同,当机器鱼经过二者边界时,由于本身具有一定的速度,不能立即达到攻击态要求的速度,从而错过最佳撞击时机,造成救援效率低下,无法满足救援要求。

1.2.2 甩尾动力不足

在救援项目比赛中,共有5 个目标点,如图1 所示。其中,五号目标点质量大,且重心低,经过多次实践与改进,笔者得出结论:简单的甩尾动作冲击力能够撞下五号目标点的概率较小。

1.2.3 循环攻击缺陷

在进行循环攻击时,机器鱼刚离开图2 所示的同心圆外环时,就会执行底层Roundp2p 函数,如图3 所示,机器鱼头部、机器鱼中心、目标点3 点构成夹角α,该函数表示通过α 的大小决定机器鱼游动方向的关系,α 越大,机器鱼摆动幅度也越大。

在循环攻击时,目标点与机器鱼鱼头连线所构成的矢量与机器鱼本身的方向矢量的角度相差近180°,这会导致机器鱼一离开外环,便大幅度改变游动方向再次进入圆环,也意味着再次进入准备态,使得机器鱼进入准备态的方向与预期的进入准备态方向相差较大,最终使得循环攻击的准确性比第一次攻击的准确性降低许多。虽然在改进的甩尾方案中,可以使机器鱼到达一个定点后再向目标点游去,但出现了效率低下等新问题。

1.2.4 攻击次数不足

在甩尾策略中,机器鱼每次靠近目标点,甩尾一次后就会转为撤离态,需要重新退出同心圆,才可以进行下一次攻击。如果机器鱼不能第一次就撞下目标点,则整个救援过程会循环很长时间,无论是在水中机器人竞赛中还是应用到实际救援中,都体现不出高效与实时的特性。

图3 Roundp2p 函数夹角示意图

2 双态三环同心圆策略

2.1 基本思路

图4 初态分区示意图

图5 次态分区示意图

双态三环同心圆策略是根据机器鱼完成的动作,将其状态分为初态和次态,其中,初态是指机器鱼还未撞击目标点的状态,次态是指已经至少完成一次撞击后的状态。

在初态下,机器鱼攻击目标点,需要经过准备区、缓冲区和最佳撞击区,3 个区共同构成一个三环同心圆,具体如图4 所示;次态对应的是与初态不同的另一个同心圆,如图5所示,次态下的同心圆有内区和外区2 个区,若在内区中,则表示机器鱼当前的状态适合继续撞击,机器鱼会再次进入初态中最佳撞击区进行再次撞击动作。需要注意的是,这时的机器鱼本身并没有进入初态,只是再次进入了初态中定义的最佳撞击区。

综合初态与次态,如图6所示,实线区域是初态下的区域,虚线区域是次态下的区域,次态的内区比初态的最佳撞击区要大,若机器鱼在撞击目标点一次后仍在内区中,则继续撞击;若在外区,则退出到外区后再将状态重置为初态,进行下一次进攻。

图6 初态次态综合图

2.2 初态分析

双态三环同心圆策略中的初态与甩尾策略中的准备态和攻击态近似,不过笔者在初态中加入一个缓冲区,并且将原先的甩尾动作改为甩头动作。

2.2.1 添加缓冲区

上文1.2.1 中提到,由于机器鱼自身具有惯性,其速度无法立即从准备态的速度降到攻击态(即进入最佳撞击区)要求的速度,故引入缓冲区来解决这一问题,从而使得机器鱼能够进入最佳撞击区,更加准确、高效地寻找最佳撞击点。

2.2.2 甩头动作

在初态中将原策略的甩尾动作改为甩头动作,主要原因是:第一,机器鱼头部安有位置传感器而尾部没有,采用甩头策略更有利于准确寻找最佳撞击点(在甩尾策略中,依靠头部坐标计算尾部坐标的方法难以实现,因为机器鱼并非一直呈笔直状态);第二,机器鱼采用甩头策略第一次进攻时,若在撞击一次后未撞下目标,则可能会连续撞击目标,如图7所示,连续撞击的机器鱼会在状态A 和状态B 之间不断切换,在笔者所做的实验中,机器鱼最多连续撞击3 次即可撞下目标点。因此,采用甩头策略可以提高机器鱼撞下目标点的概率。

图7 连续撞击的2 个状态

2.3 次态分析

上文提到,次态是机器鱼已经完成至少一次撞击后的状态。在次态下,机器鱼有可能继续撞击,也有可能离开圆环,这取决于机器鱼所处的位置。机器鱼在次态中没有采用与初态相同的同心圆,通常会出现以下几种情况(在甩尾策略中,撤离时所采用的同心圆与准备和进攻时采用的同心圆为同一个)。

2.3.1 外区扩大

在次态中,外区边界与撞击目标的距离为初态同心圆外边界(即图6 中最大的实线同心圆)到撞击目标距离的2 倍。这样设置是为了解决上文提到的循环攻击所带来的问题,如此,机器鱼进入准备态的方向与预期准备态的方向更加接近。

2.3.2 取消缓冲态

机器鱼撤离时不再需要考虑找点的准确性,只要求尽快撤离,若仍采用缓冲区则会使机器鱼退出次态的时间变长,导致救援效率低下。

2.3.3 创造内区

机器鱼实现多次撞击主要依靠内区。当机器鱼处在内区时,即使退出最佳撞击区(图6中内区比最佳撞击区大),也能够以较好的状态再次迅速进入最佳撞击区,实现一次初态、多次撞击,而且在内区中多次撞击的实现算法相对简单,容易实现。

2.4 多次撞击

在双态三环同心圆策略中,机器鱼实现多次撞击有2种途径:一种是依赖撞击时甩头方向的改变来实现多次撞击,如图7 所示,该算法较为复杂,实现时可以根据CPU的时钟频率来设计较为精准的延时函数,也可以直接调用库函数,同时还需要实时判断机器鱼方向与目标点和机器鱼连线矢量的方向关系,并控制好机器鱼的速度;另一种途径则是依靠内区,在2.3 节的次态分析中已提到,在此不再赘述。

需要采用延时函数是因为:当机器鱼处于图7 状态A时,若要切换到状态B,只需改变方向参数并给予一定速度即可,但是控制平台会在很短的时间周期内遍历执行策略代码,并周而复始地循环该周期,给定的方向和速度只能在瞬间生效,若没有延时函数,机器鱼来不及转换到对应状态就会执行下一次遍历代码,并被设置成新的方向和速度,导致无法实现在状态A 和B 之间的连续转换。因此,只有采用延时函数,机器鱼保持给定方向和速度一段时间后,才可转换成功。

2.5 算法实现建议

双态三环同心圆策略共使用5 个范围常量(对应图5中所有同心圆的半径)和 1 个布尔型变量(用来判断机器鱼处于初态还是次态)。其中,笔者将布尔型变量命名为AlreadyAttack,其初始值为false,表示机器鱼处于初态。由于控制平台在短周期内会遍历执行策略代码,并且不断循环该周期,为了避免 AlreadyAttack 被重复初始化,笔者将其定义为静态变量。经过一次撞击后,AlreadyAttack的值为true,则表明机器鱼进入次态。若撞击后机器鱼处于次态的外区时,便以最快速度向区域外游去,一旦游出外区边界,立即将AlreadyAttack 赋值为false,使机器鱼重新进入初态,开始下一轮的救援行动。为了体现封装性,将目标点撞倒与否的条件放在上层调用函数中判断,新策略中不作判断。一旦撞倒目标点,机器鱼就停止游动。

3 实践分析

机器鱼在实际水池中游动会受到水波的影响以及光线等因素的干扰,这样可能会造成机器鱼或者目标点坐标丢失,降低救援效率。原甩尾策略没有很好地规避这些因素的干扰,但是新策略在一定程度上改变了这些不良影响。例如,当机器鱼因外在因素导致坐标位置丢失,按照原甩尾策略则会采取默认的应对游动机制,离开最佳撞击区;而新策略在内区做了改进:若机器鱼离开最佳撞击区后仍在内区中,并会再次进入最佳撞击区进行救援(这也是内区存在的原因之一)。

另外,在设计该策略时,高效救援的原则在实践中得到了较好的应用。通过连续撞击的实现方式,机器鱼在第一次撞击时就撞倒目标的概率增加,避免了多次重复在初态和次态之间的转换,大大缩短了平均救援时间。

4 结语

正如机器人的不断改进与优化一样,机器鱼水中全局救援策略的改进也不会止步,只要把握好设计策略的基本原则和设计思想,救援策略就能够不断地得到优化。同理,当下应运而生的各种机器人比赛,使得各比赛策略不断得到实践优化,从而帮助机器人的应用技术更加成熟。

猜你喜欢
同心圆支柱机器
机器狗
环球时报(2022-07-13)2022-07-13 17:18:39
同心圆梦再出发
黄河之声(2022年1期)2022-03-16 02:41:22
机器狗
环球时报(2022-03-14)2022-03-14 18:19:44
同心圆梦再出发
黄河之声(2021年21期)2021-03-22 03:27:08
绣出里下河畔最美“同心圆”
华人时刊(2020年19期)2020-11-17 07:09:56
同心圆变变变
未来机器城
电影(2018年8期)2018-09-21 08:00:06
国电数字物资的三大支柱
能源(2017年7期)2018-01-19 05:05:05
实施五大支柱 落实五大任务
建一座带支柱的房子