水中机器鱼大赛技术文档_第1页
水中机器鱼大赛技术文档_第2页
水中机器鱼大赛技术文档_第3页
水中机器鱼大赛技术文档_第4页
水中机器鱼大赛技术文档_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、参赛学校:某大学参赛队名:水中机器鱼队参赛项目:水中机器人全局视觉水球2VS2 文档容:摘要 本文章是参加2015年中国水中机器人大赛。本文描述了 软件功能介绍,硬件介绍,基本操作,策略编写,策略加载。引言今年来理工学院十分重视机器人比赛团队的建设,训练和参赛,并特地提供了实验室,给予了大量人力,物力和财力支持,以鼓励有兴趣的同学们投入到相关的学习和研究中。我队主要致力于机器智能的研究。在机器人的研究方面,着重于机器人编程软件与组装方面。在仿人形机器人中,我们队主要熟悉MURobot大平台(含小平台),摄像头驱动,CP210X驱动安装与应用,并用C+语言编写策略,使仿真鱼在水中完成各

2、项任务。机器鱼的控制,相当于参照一条真正鱼的行动方式,需要“眼睛”来识别,需要“尾巴”来获得动力,需要一个“脑子”做决策。我们针对实体鱼来说明一下,“眼睛”就是我们鱼池上方的摄像头,动力就是鱼体的舵机,决策的“脑子”就是我们的程序比赛规则如下:裁判鸣哨开球后,所有的机器鱼由各参赛队员手动启动。在裁判哨声前抢先启动的机器鱼将被警告,二次警告后将被移离比赛场地,不得再参加比赛。比赛分上下两个半场。在上半场开场时,A队机器鱼从靠近水球点出发,B队机器鱼从本方球门处出发,以体现开球优势;同理,在下半场开场时,B队机器鱼从靠近水球点出发,A队机器鱼从本方球门出发。若有一方进球后,则重新开球。被进球方的机

3、器鱼从靠近水球点出发,进球方的机器鱼则从本方球门出发。机器鱼要求:机器鱼游动方向定义为长度,摆动方向定义为厚度,两者垂直方向定义为高度。头部长度:150-180mm头部高度:60-90mm头部厚度:30-50mm 尾部长度(不包括尾鳍):160-190mm,尾部高度厚度不得超过头部尾鳍长度:沿长度方向50-80mm,沿高度方向90-120mm胸鳍尾鳍材料:采用较硬塑料材料,不得用金属材料,以免比赛中刮坏尾部材料:尾部统一使用橡胶皮套机器鱼颜色为黑色,可以在机器鱼的尾鳍侧面粘贴学校的名称、标志或编号,以区别不同球队的机器鱼。每个机器鱼重量不得超过2kg;在不受挤压的情况下,机器鱼必须能够放进一个

4、底面半径为75mm,高为450mm的圆筒里面。一、软硬件安装1.1水池的搭建比赛场地为长方形水池,包括两台比赛电脑、一个支架、两个个摄像头,两套球门、两个无线通信模块。水池部矩形区域为最终的有效比赛场地,不包括水池壁与球门架两侧区域,有效比赛场地尺寸为2700 mm ×2000 mm ×300mm(长×宽×高)1.2MURobot控制平台安装在U盘“软件驱动”目录下选择“MURobot”安装文件,例如上图所示电脑系统为32位,在安装文件时选择32位安装包,双击打开。(32位安装包和64位安装包区别:32位安装包为X86,64位安装包为X64)。如下图打开

5、32位“MURobot”安装文件,双击运行里面安装包,根据下图顺序进行安装。正常安装完成后桌面会出现三个快方式,此时MURobot控制平台安装完毕,如下图所示(如不能正常安装查阅附表1-001)二、软件功能介绍2. 1、串口介绍串行接口(Serial port)又称“串口”,主要用于串行式逐位数据传输。在全局视觉机器鱼上我们利用串口来进行数据交互。在使用全局鱼平台时,将无线发射模块(参考硬件篇)通过USB与电脑连接,就会出现对应串口的COM口。接下来介绍串口端口号的查找,鼠标右击桌面“计算机”图标,单机“属性”,出现计算机属性界面,单机打开左上角的设备管理器,按下图操作来找到串口端口

6、号,此串口端口号是为使用大平台、小平台时打开串口号做准备的,在使用大平台、小平台时时会按照此端口号打开串口。2.2、大平台介绍大平台是对机器鱼所在环境进行分析处理另外处理程序代码与机器鱼互传指令实现人机交互的一个操作平台。双击桌面快捷方式,运行大平台,进入大平台主界面,如下图(1).通信参数设置通过大平台主界面的“通信参数设置”按键,单机打开,就可以进入通信时各参数设置,功能如下图所示(2).图像参数设置通过大平台主界面的“图像参数设置”按键,单机打开,可以对摄像头采集的图像。(3).目标识别控制通过大平台主界面的“目标识别”按键,单机打开,可对打开的原始图像(Original)中目标进行识别

7、控制。选择鱼或球或环方法:点击要选鱼、球或环序号在原始图像上框选要选择的对象即可选择,按住0框选需取消对象即可取消选择。选择A队1-8号鱼的快捷键分别是:1、2、3、4、5、6、7、8;选择B队1-8号鱼的快捷键分别是:Q、W、E、R、T、Y、U、I;选择1-9号鱼的快捷键分别是:A、S、D、F、G、H、J、K、L;(4).原始图像控制通过大平台主界面的“原始图像”按键,单机打开,可以设置加载策略时使用的临时目标点或是障碍物。(5).前景图像通过大平台主界面的“前景图像”按键,单机打开,能显示捕捉的背景图像。(6).信息显示通过大平台主界面的“信息显示”按键,单机打开,能实时显示摄像头捕获信息

8、。2.3.小平台介绍(1).小平台打开方式通过大平台主界面的“调试助手”按键,单机打开小平台。在U盘“软件驱动”目录下,按下图所示打开(2).基本控制通过基本控制可对机器鱼进行手动操控,连接检测等操作。(3).高级控制频率:单位时间完成周期性变化的次数,单位赫兹(HZ)。通常在发射和接收频率一样的情况下进行信号传递、交互。本机器鱼发射模块和机器鱼都有6个一一对应的频率,当两者频率一样时可以进行通讯。ID:身份标识,也称为序列号或,是某个体系中相对唯一的编码。在全局视觉机器鱼中,当发射模块和机器鱼频率一样时利用不同的ID来区分不同的鱼。在更改机器鱼时一定要辨清频率和ID之间的关系。(4).关节调

9、直当打开鱼的开关鱼不能正常绷直的时候,需要用到“关节调直“功能。(5).参数设置当机器鱼游动效果不理想时,或在做科研时需通过“参数设置”修改一些参数。(6).模式设置对一条或多条编辑一些小命令,进行自动执行,可用于机器鱼检测或展示。 单机“模式设置”打开设置界面,保证机器鱼与小平台连接正常,如下图操作 每条鱼(每个ID)可以编辑10个不同时间段的动作指令。三、硬件体系结构3.1机器鱼机器鱼是多水下机器人平台的执行者,可以实时接收信息执行相应任务,也可以实时反馈信息给大平台或小平台。机器鱼在使用时注意避免与尖锐物品碰撞,不要使电池过放电。机器鱼在不使用时气孔打开,放在干燥荫凉的环境中,保证机器鱼

10、电量在50%以上。下面是机器鱼实物与结构图。3.2无线发射模块大平台发出的指令通过无线模块传递给机器鱼,同时可以接收机器鱼反馈的信息通过串口传递给大平台或小平台。下图为发射模块和USB接口线1、 摄像头摄像头在工作时采集图像信息相当于一个传感器,可获得机器鱼的各种信息传递给大平台进行处理,来分析鱼的坐标,方向以与其他运动信息。下图是摄像头以与摄像头USB线四、基本操作4.1机器鱼开机和充电根据机器硬件介绍的开关位置拨动机器鱼开关(开关在鱼皮部),开关有三个档位,当机器鱼不使用时将档位拨到中间档位,开关偏向鱼身左方或右方时可进行开启或充电(具体档位根据机器鱼而定,如果偏左是开启机器鱼那么另一方即

11、是充电)。开机:拨动开关,机器鱼会稍微颤动一下,然后尾部呈绷直状态。(若不绷直请参考“烧写底层”操作,如果仍然无法解决请查阅附表1-003)充电:充电器有两个输出接头,红接口为正极,黑接口为负极。把开关拨至与机器鱼开机相反方向,根据机器鱼硬件介绍中俯视图,充电器正极接机器鱼正极,充电器负极接机器鱼负极。充电器自带充电保护功能,一般情况下充两个小时就能充满。(如果充不上电或不能充电,查阅附表1-004)4.2小平台连接机器鱼 通过USB与发射模块连接后,通过大平台或直接打开小平台两种方式打开小平台,选定对应的com端口,并打开串口(串口号通过以上步骤已知道是COM3) 打开机器鱼,当机器鱼绷直时

12、,则表明机器鱼已开启。观看小平台接收区有没有数据显示(连接成功如下图)。当无数据时表示通讯模块发射频率和机器鱼的接收频率不配套,这时我们需要通过高级控制更改通讯模块的频率来找到机器鱼的频率(详见“更改频率和ID”)。 根据小平台介绍的功能来对机器鱼进行操作。以下是用键盘进行手动操作。速度键位:数字区19为速度19挡,键盘区05为速度1015挡(注:1最小,15最大) 方向键位:键盘区 YQ 为方向左键,小键盘区 为最大左转向。 键盘区 U 为方向右键,小键盘区 为最大右转向。直游键位:Z 停止键位:空格键4.3、更改频率和ID(1)修改无线发射模块频率当使用者不慎将机器鱼的频率弄混淆时导致机器

13、鱼和上位机无法通信时,此时就要用到更改无线发射模块频率了。首先,将无线模块通过USB接口与电脑连接。打开小平,然后将发射模块上的J2排针跳帽,由右边移到左边启动部工作模态如下图所示,完成后打开小平台“高级控制”,在“更改频率”按键左边,选择频率,单击“更改频率”,如果接收区出现一小段代码,说明更改完成,点击“返回当前频率”,将弹出对话框显示现在频率。此时再将跳帽恢复到右边启动外部工作模态就可以连接机器鱼了,如果连接不上,继续更改其他频率。4.4.修改机器鱼ID多条鱼使用一个频率上完成不同任务时,需要对机器鱼进行修改ID。当频率修改正常时,使用小平台连接机器鱼,小平台接收区有正常信号反馈,但使用

14、小平台无法控制机器鱼,此时可以尝试调节小平台ID按下图操作一次一次尝试。在小平台中打开“高级控制”,再按下图操作更改鱼ID。4.5.修改机器鱼频率将小平台连接和鱼,小平台与鱼能正常通讯的情况下更改机器鱼频率。打开“高级控制”更改鱼的频率。点击“更改频率”后,重启机器鱼机器鱼的频率更改完成。4.6.对机器鱼烧写底层对机器鱼进行无线烧写需要用到超级终端,超级终端的版本有好多种,但用法都小异,下面选其中一种进行讲解。在烧写底层时发射模块频率要和机器鱼频率一样,所以使用机器鱼的时候要养成良好习惯,每次记录使用的鱼的频率。(1)、在U盘“超级终端”中选择“hypertrm”软件双击打开,如下图所示(2)

15、、如果电脑第一次使用超级终端会出现下面界面容,按图中所示操作(3)、点击确定后需要创建连接按下图操作(4)、完成以上操作,打开机器鱼,会出现如下界面(5)、关掉机器鱼,然后按住键盘按键“D”,同时打开机器鱼,会出现以下界面,界面中不断出现“C”。(6)、单机窗口中的“传送”键,进入发送界面,选择“发送文件”,按以下步骤操作。(7)、等待发送完毕,机器鱼出现绷直现象。此时先关闭机器鱼,然后关闭超级终端窗口,烧写底层完毕。五、机器鱼基本控制策略讲解5.1类函数的定义程序中变量都定义为C+语言中“类”的方式。至于什么是“类”,简单理解是定义的对象、变量包含同样的特性,作为一种形式提供给我们使用的一种

16、函数类型,定义一种类需要进行实例化,说明类的具体容,包含的参数,变量,对象是什么。更多的大家可以具体上网查,我们需要知道有这种东西,能用就行。它的基本形式是:Cpoint+变量名;通道临时目标点:指所控制的鱼在一定的区域围需要到达的位置。5.2最基本的定义变量说明1)程序的定义的最基本变量有四个:1、鱼中心坐标;2、球中心坐标;3、鱼头方向;4、球门中心坐标下面具体说明定义鱼中心坐标是:CPoint f_pt :f是fish的简写,pt表示坐标,f_pt是鱼的中心坐标,鱼中心坐标 f_pt。定义球的中心坐标是:CPoint b_pt :b是Ball的简写,pt是坐标,b_pt就是球的中心坐标。

17、定义球门中心坐标是: CPoint g_pt :g是goal(球门)的简写,pt是坐标,所以g_pt代表球门坐标。定义鱼头方向是: double f_dir :f就是fish简写,dir是direction的简写,这是一个双精度的变量。绝对坐标系中围是-,所以程序中鱼头方向的围就是-,。大家或许有疑问,为什么鱼头方向是双精度的变量而其他的三个是类呢。因为其他三个都是包含这x和y坐标,也就是类包含一样的参数(对象),而鱼头方向没有包含这些,仅仅是一个-,的变化围。2)基本变量在程序中的获取我们定义了最基本的四个变量,那么程序中是怎么获得的呢,我们下面来说明。针对三个类(鱼中心坐标,球中心坐标,球

18、门中心坐标),我们大平台已经写好对这些这些类的定义和例化函数,具体我们不需要了解。获取的函数也已经写好,就是简单的调用一个函数就行。具体程序是对鱼中心坐标的获取 f_pt=m_FishInfo0.GetCenterPt() ;m_FishInfo0.GetCenterPt()是一个类函数,不需要具体了解函数具体容,只需要记住其实现的功能。功能是获取鱼的中心坐标。m_FishInfo0m_是标识作用,fish代表“鱼”,info代表“输入”数字数字代表鱼的编号这个获取的是0号鱼的,GetCenterPt() 代表获得中心坐标。那么2 vs 2 程序获取0号是:f_pt0=m_FishInfo0.

19、GetCenterPt() ; 程序获取1号是;f_pt1=m_FishInfo1.GetCenterPt() ;对球中心坐标的获取是: b_pt=m_goalinfo.GetBallPt();m_goalinfo.GetBallPt()是一个类函数,功能是获得球中心坐标m_goalinfo0同时在2013的新平台上也需要输入鱼的编号m_ 是标识作用,goal代表球门,info是“输入”,GetBallPt() 代表球中心坐标对球门中心坐标的获取是:g_pt=m_Channel0.center ;数字 中括号部的数字代表获取的是第几个通道的坐标。如果很多个通道可以代替临时目标点的作用吗?对鱼头

20、方向的获取是: f_dir=m_FishInfo0.GetDirection() ;数字也是同样的含义,代表获取的方向是第几条鱼的。5.3三个基本服务函数程序中还有最简单的三个服务函数。1获取角度函数Angle(CPoint point,CPoint aimer);2获取距离函数Distance(x,y);其中形参都是定义为“类”。3转换角度函数Checkangle(double dir)形参类型是双精度。大家有英文字母的含义应该就了解函数的作用了。请记住三个函数的功能。1)角度函数 此函数所测算的角度建立于绝对坐标系基础上Angle(CPoint point,CPoint aimer)具体定

21、义如下:Angle(CPoint point,CPoint aimer) /声明函数,两个类的形参point和aimer double a;a=atan2(double)(aimer.y-point.y),(double)(aimer.x-point.x);/就是求一个反正切的角度return a;/返回一个角度值围是-/2,/2(这个很重要,记住围) 红色为point 黑色为aimer 2)距离函数Distance(CPoint point,CPoint aimer)函数具体定义如下:Distance(CPoint point,CPoint aimer)double a;a=sqrt(dou

22、ble)(point.x-aimer.x)*(point.x-aimer.x)+(double)(point.y-aimer.y)*(point.y-aimer.y);/ 就是一个求距离的平方根公式return a; /返回距离值,双精度类型3)转换角度函数Checkangle(double dir) 具体定义如下:Checkangle(double dir) /把dir换算成-pipi之间的数if(dir>PI)dir-=2*PI;else if(dir<-PI)dir+=2*PI;return dir;5.4点到点函数的讲解这是程序中核心的函数,机器鱼所执行的动作都是调用这个函

23、数来实现的,所以请大家一定要理解函数容,并且能够修改优化这个程序。先给出函数功能说明。点对点底层函数详解重在理解点对点函数是如何运行的,底层函数研究根据自身能力酌情处理。void Roundp2p(CPoint aimpt,CFishAction &action,int fishID,CFishInfo m_FishInfo)/定义一个函数,包含四个参变量,第一个是aimpt作为目标点的类,第二个是鱼的动作模式action(包括速度、方向以与运动模式)第三个是鱼的ID,第四个是鱼的入口参数(包含鱼中心坐标,鱼头方向等)。其中,鱼的ID是整数类型外,其他的都是“类”。 CPoint Fi

24、shPt;/ 鱼中心的位置double FishDir;/ 鱼头的方向CPoint FishHeadPt;/鱼头的位置CPoint LastFishPt;CPoint FishRotatePt;/;/鱼的转动位置,程序未用到,作为预留变量待开发使用。CPoint FishTailPt; /鱼尾巴的位置,程序未用到,作为预留变量待开发使用。CPoint GoalPt1, GoalPt2;/临时目标点,GoalPt2没有用到CPoint Pt1, Pt2, Pt3, Pt4;/CPoint f_headpt;/point of fish's head/f_headpt=m_FishInfo

25、0.GetHeadPoint();double dir1=0;double dir0;double dist0;double dist1=0;double dir2=0;double dist2=0;/临时用到的方向和距离CPoint centerpt1,centerpt2;/作为鱼要绕的中心来用CPoint centerpt3,centerpt4,centerpt5,centerpt6;CPoint centerpt0,centerpt00;double dis1,dis2;dis1=0;dis2=0; double radius;/需要游动的半径,可以随意的设置.FishPt=m_Fish

26、Info.GetCenterPt();/获取鱼的中心位置FishDir=m_FishInfo.GetDirection();/获取鱼头方向dist1=Distance(FishPt,aimpt);/计算鱼中心位置和所要游动目标点的距离dist1变量dir1=Angle(FishPt,aimpt);/计算鱼中心位置和所要游动目标点连线的夹角(绝对坐标系)dir1-=FishDir;/这个语句的作用是把绝对坐标系表示的角度转换为相对坐标系/就是以鱼和目标点的连线为参考轴,dir1代表此情况的鱼头方向dir1=Checkangle(dir1)*180/PI;/调用函数,把dir1的从弧度换为角度表示

27、action.speed=15;/定义鱼的速度为最快的15执行动作m_FishInfo.SetAction(action);/发送动作设置状态给鱼if(dist1>100) /下面是鱼和目标点的距离大于100像素的情况if(dir1>-5&&dir1<5)action.direction=7;else if(dir1<-5&&dir1>-10)action.direction=5;else if(dir1<-10&&dir1>-30)action.direction=4;else if(dir1<-

28、30&&dir1>-50)action.direction=2;else if(dir1<-50&&dir1>-70)action.direction=1;else if(dir1<-70&&dir1>-90)action.direction=0;else if(dir1<-90)action.direction=0;else if(dir1>5&&dir1<10)action.direction=9;else if(dir1>10&&dir1<20)ac

29、tion.direction=10;else if(dir1>20&&dir1<40)action.direction=12;else if(dir1>40&&dir1<50)action.direction=12;else if(dir1>50&&dir1<80)action.direction=14;else if(dir1>80&&dir1<90)action.direction=14;else action.direction=14;else /以下是鱼和目标点的距离小于10

30、0像素的情况。 if(dir1>-5&&dir1<5)action.direction=7;else if(dir1<-5&&dir1>-20)action.direction=4;else if(dir1<-20&&dir1>-40)action.direction=1;else if(dir1<-40&&dir1>-60)action.direction=0;else if(dir1<-60&&dir1>-70)action.direction=0;e

31、lse if(dir1<-70&&dir1>-90)action.direction=0;else if(dir1<-120)action.direction=0;else if(dir1>5&&dir1<20)action.direction=10;else if(dir1>20&&dir1<30)action.direction=12;else if(dir1>30&&dir1<50)action.direction=13;else if(dir1>50&&a

32、mp;dir1<70)action.direction=14;else if(dir1>70&&dir1<90)action.direction=14;else if(dir1<120)action.direction=14;else action.direction=14;m_FishInfo.SetAction(action);六、策略编写策略编写环境是Microsoft Visual Studio 2010与以上版本,此软件属于微软公司推出的开发环境,可在网上下载和查找安装过程。安装Visual Studio后图标会变成,在桌面找到,双击运行。程序

33、入口在程序中右上角的“解决方案与资源管理器”中能看到如下图所示的一个函数名为“strategy.cpp”,这就是策略编写的函数,在函数里面有一个名为“BOOL CStrategy:Strategy0()”,的子函数 就是策略编写的入口。编写策略时,程序的定义的最基本变量有四个。1、鱼中心坐标f_pt;2、球中心坐标b_pt;3、鱼头方向g_pt;4、球门中心坐标f_dir。其他函数名不知道什么意思可以通过其英文单词含义大致推断其含义,另外选中不清楚的函数,鼠标右击,可以“转到定义”或“转到声明”去具体了解函数的含义。另外,如果想增加其他策略可在函数声明中重新添加策略声明然后在策略中调用,如果想

34、添加一个策略1,按照下图两步操作。1、 策略编译(生成DLL代码)MURStrategy作为统一的策略入口函数(DLL导出的函数名),在Server端运行的时候动态加载与策略调度运算。传入的参数数据包含策略计算必要的所有信息。所以编译过程也就是将编写的代码按一定计算方式生成DLL代码。策略编译首先确定要编译哪个策略,例如,写了5个策略想编译策略1顶球的策略,那么我们需要打开MURStrategy程序入口,指定编译策略。如下图改好策略编译入口后,单机“生成”选择生成解决方案。如下图操作按照策略生成的路径找到策略剪切或复制出来放在自己常用的位置,以便使用大平台加载策略。2、 策略加载 电脑连接无线发射模块和摄像头,双击打开桌面程序,会出现三个窗,如下图 打开然后打开“通信参数设置”,串口号选择COM3打开串口,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论