URC国际水中机器人大赛是在合肥举办,收获满满,同时也是遗憾退场。最后虽斩获国家一等奖,但痛失冠亚季。(当时我哭了。。。enenn真丢人)
 
 
<center>赛前篇</center>


对于合肥之行,我觉得是挺不(nan)错(shou)的经历。人生第一次坐火车,22个小时的火车,躺到腰断,差点。可能是水土不服,还经常闹肚子。(可能我肚子矫情叭叭)在即将比赛的前一天,我还在不断地调试我的代码,以防万无一失。

那天,人超级多的,摄像头也不够用,还是几条队伍共用两个摄像头。我觉得最麻烦是调试机器鱼这环节,首先采集好环境背景,设置好参数。
 
 
<center>大赛介绍篇</center>


对于比赛,我先谈谈我对于抢球搏弈的看法,我觉得大家的实力都差不多,不仅是策略,还是操作上要求又比较高。操作其实没有那么多可操作的点,不能一昧地只圈鱼和球,有时要灵活点圈球门,或者其他的,也不能只圈一个球,可以就近圈球。自己自行选择最适合的方向和最短距离,择最优的方案。切记一定要稳打,不能太冒险,心态很重要,呜呜呜,切记切记。

对水球2v2,我觉得首先要统筹好两条鱼,分配不同的策略应对不同情况。而已鱼的力度要大,善于使用模态,鱼击打球的位置要适当到位,防范进乌龙球。

对水中角力,我觉得鱼的摆动位姿很重要,可以对点到点函数进行优化,什么样的位姿,力最大,如何才能控制鱼不跑出去。角度最佳,力最大,又稳。对鱼游动的姿势进行优化,这点才是最重要。

对于花样游泳,编排好故事,取材很重要,如热爱祖国,歌颂祖国之类的题材,由于这个赛项主观很多,朗读的人也很重要,声音要大,而有节奏,能用上麦克风最佳。在鱼的表演上,采用坐标,修改鱼的姿态,尽量保持一致,整齐,由于选鱼时会常有丢失,影响整齐,尽量少用坐标获取的函数,减少误差。
 
 
<center>难点篇</center>


在我准备的过程中,策略逻辑不难想,半个月写个十几套,基本就差不多了,策略代码不难写,调试才是最难的,调试调到连睡着都在想优化,就说明你用心去做了,能从中学到知识才是最重要的。

  困难一:摄像头的配置

先从物理设备上说,首先打开调试摄像头的那个软件,先调好距焦,要能看清楚底下的为宜,然后调配曝光时间为频率在30万左右为宜,灰度图像的采集最为饱满,这是经过我们多次测试,但是不同型号的摄像头要自个去调试了。最后进行摄像头摆正,正对水池中央。这就不多说。

然后去大平台的软件上的图像配置里,将配置白平衡配成蓝色,由灰度图像来决定,但是要先观察是否饱满再去配置白平衡。然后去图像进行失真处理,使边缘贴合摄像头的边缘。

最后去图像识别控制那里点选球的编号啊,或者呼拉圈的编号,点背景重新采样,如果灯光影响太明显,就拨动水面,分散灯光的影响,使它更加均匀,再去点背景重新采样,点背景叠加,减少闪动的灯光的影响。

   困难二:坐标问题

  由镜像中的左上角为原点。长为x轴正半轴,宽为y轴的正半轴。由于摄像头的反像原理,真实我们看到的是右下角。

  困难三:设置球门

  因为我们水池是2*3m的,而摄像头的所形成的坐标是480*750像素,我们可以通过官方的文件和通过像素所占比例进行换算推测球门的中心坐标,通过设置多个球门通道,进行多个球门设置,通道一的坐标返回值是g_pt[0],以此类推,可以在原始图像中进行设置。

  PS:抢球搏弈的四个球门坐标设置分别为:x:150,y:48、x:150,y:432、x:600,y:48、x:600,y:432。

  困难四:策略择优

  建议都去兵工自动化网站上找相关的论文,虽然有些不一定能实现,但是可以锻炼到你个人的思维能力,或许会有一些灵感。

  困难五:代码的编写

  一开始,你会发现先从哪一点开始去编写你的代码,会无从下手,这时候千万不要直接拿师兄的代码直接改写,这样就算你拿了冠军,你也于事无补,学不到任何东西。万事开头难,你先理清自己的逻辑如何去一步一步的接近,并推进球门,如何去判断要进攻的球门。怎么样才能稳妥的推球,减小其他因素的干扰。这些你可以往这个方向去思考,理清先哪一步,然后又哪一步,步步逼进,环环相扣。如果直接改写代码,那没意思了,不如退出别参加。

  
  困难六:代码的调试

  要知道并非你写得出代码,机器鱼就会照你的逻辑去运行,你会发现这其中会出现你意想不到的结果,慢慢耐心去调试。
 
   
<center>思路分享篇</center>


我也大概讲一下,我的思路,你们可以进行参考一下。

 一开始,我的想法是以“井”字将球的周围分成八个区域,以“米”字将鱼的方向分成八个方向。由于太过于繁杂,太过于精确,而鱼在游动过程中误差太大,许多想当然的情况并不能如愿,但这个方向是很不错的。希望能有人进行改进,改良;

 后来,我是以鱼和球的距离大于40,再利用点到点函数去接近球全速(速度为15)去接近球,这是个大圆。再用大圆套小圆进行,小圆进行减速(速度为13为宜)。运用变速进行接近球,也可以减小惯性。

以三点共线确定最优点的坐标。

顶球采用“黄式八字回顶”,(瞎编的名字hhh)

大致思路如下图:
<div align=center></div>

两条线分四个区域A,B,C,D,在正前方A区域,点到点函数直接撞击最优点,速度为13为宜;
<div align=center></div>

每个的角度的具体范围,自己在调试中寻找最佳的角度;

对于球场,我是分成三个区域A,B,C,假如A区域是进球区域,B区域是顶球区域,C区域是偷球区域。
<div align=center></div>

在A区域,将两个球门设置为进攻球门;还得实现鱼进去不会卡在里面,我这里设置取两球门的x轴,y轴的中点坐标。当我方鱼进去,我将两点到鱼的距离,取最小距离的点,利用点到点函数,寻点出去,先寻球门坐标中点,在寻球门中点坐标;

在B区域,主要是带好球,选好球,灵活运用作战策略;稳住,别浪,嘎嘎;

在C区域,直接将C区域设置成进攻球门就行了;

这里还能完善几个功能,如果当球在C区域,鱼在B区域,就采用寻点进入C区域;如果球在B区域,鱼在C区域,就采用寻点出去的方法。我就栽在这个功能,没有进行完善,导致鱼卡在球门1分钟左右;被逆转了局势,输了;