文章目录
- 1.总体策略
- 上台策略:
- 备战策略:
- 传感器策略:
- 机器人硬件设计:
- 2.比赛经验总结
- 1.比赛前期车体安装及调试
- 2.比赛车体调试与经验汇总
比赛简介 智能机器人格斗大赛(Intelligent Robot Fighting Competition,简称IRFC),IRFC将中国武术、竞技运动与人工智能、机器人等技术结合,融技术性、对抗性、挑战性、观赏性于一体,参赛队伍进行一对一,多对多等不同项目的角逐,大赛分统一部件组及开放部件组两大类别。 统一部件组 参赛队伍选用统一标准和性能的控制器、传感器、动力模块、供电模块等部件,设计、制作符合规则要求的智能机器人参赛,通过策略的制定及程序的设计,参赛双方的机器人在擂台上对抗,依据竞赛内容与评分规定由裁判进行裁决,采取小组循环赛及淘汰赛相结合的赛制。统一部件组根据比赛形式不同,设置轮式自主格斗、仿人格斗、仿人视觉对抗等三个项目组别。
1.总体策略
上台策略:
首先,机器人需要识别自己是否在台下,这里通过前后左右的红外传感器是否被遮挡来判别,在台上时,至多有一个方向的红外传感器被遮挡,而在台下时,一定有两个或以上方向的红外传感器被遮挡,故我们可以通过红外传感器被遮挡的方向数来判断其是否在台下。 如果机器人判断自己在台下便会激活上台操作,先判断自己的朝向,将自己调整成前上台状态,再进行前上台操作。同时机器人还会同时判断敌人是否在阻止自己前上台,并避开敌人的骚扰再进行前上台。
备战策略:
机器人在台上时,优先保证自己不会掉下台,通过顶部的四个传感器时刻检测自己处于台上边缘的危险地带,并采取相应的行动避开这些危险地带,确认自己处于安全状态后才会进入与敌人博弈的对战状态。 应敌策略: 机器人通过中部的前后左右四个传感器来判断敌人的位置,当敌人在自己的两翼时立即避让保证自身安全,当敌人在自己前后时加速撞向敌人,将敌人撞下台。
传感器策略:
(1)底层传感器(AD1-AD4): 类型:红外光电传感器,返回数字量,当传感器被遮挡时值返回高电平,未被遮挡时返回低电平。 安装位置:四个方向各一个,垂直于小车边沿放置。 作用:①用于小车台下朝向检测;②用于检测小车是否在台上;③用于检测敌人。 (2)中层传感器(AD5-AD8): 类型:红外测距传感器,返回模拟量,传感器距前方物体越近,返回值越大。 安装位置:四个方向各一个,垂直于小车边沿放置。 作用:①用于检测小车是否在台上;②用于小车台下朝向检测;③用于小车台上边缘检测;④用于检测敌人;⑤用于小车搁浅检测。 (3)顶层传感器(AD9-AD12): 类型:红外光电传感器,当传感器被遮挡时值返回高电平,未被遮挡时返回低电平。 安装位置:小车左右两边各放置两个,传感器探头与小车车身成××角度。 作用:用于小车台上边缘检测。 (4)传感器配合使用方案 ①检测小车是否在台上:AD1-AD8 获取AD1-AD8的采样值,并转换为相应的数字量(大于500取1,小于500取0)。设置前、后、左、右四个方向值,各方向值为该方向上红外光电传感器返回值取反再与红外测距传感器对应的数字量返回值相或。总判断值为四个方向值相加,根据总判断值判断小车是否在台上。 ②小车在台下时朝向检测:AD1-AD8设置四个阈值,用于判断AD5-AD8四个传感器前方障碍物的情况。,根据AD1-AD8传感器返回值判断小车四周障碍物,以此得出小车在台下的朝向。 ③小车在台上时边缘检测:AD5-AD8根据AD5-AD8的返回值判断各传感器检测到擂台还是地面,以此判断小车是否处于擂台边缘。 ④小车搁浅检测:倾角传感器
机器人硬件设计:
本机器人主要由执行器、控制器、传感器以及连接件构成。 在执行器方面,底部我们使用开环驱动器将四个电机两两并联,并安装好塑胶轮胎,使得左侧两轮与右侧两轮能够同时同速度转动,为小车提供空间运动驱动。同时可通过调整左右电机转速,达到转弯、加速、后退等运动效果。我们在小车的上半部分固定四个舵机,并为舵机加装了塑料爪,可实现小车的蹬地,使之上台以及克服搁浅情况。 在控制器方面,我们将LUBY控制器与对其供电的白盒电池连接在一起,并将其固定在小车上半部分,压住对驱动器供电的电池。由于我们采用总线控制模式,故我们将四个舵机、两个驱动器串联在一起,并连接在控制器上,同时13个传感器也通过ADC接口逐一连接在控制器端口上。 在传感器方面,我们在底部前后左右分别安装了一个红外光电传感器,向控制器返回非高即低的控制信号,其被遮挡时发射低电平。在上半部分的前后左右我们加入了四个红外距离传感器,向控制器返回模拟信号,距离障碍物越近其值越高。通过这八个传感器我们可进行小车是否在台上以及方向的判断。在小车顶部我们安装了四个向下倾斜的红外光电传感器,目的是为了检测擂台边缘。防止小车运动时掉台。最后我们在小车中部安装倾角传感器,可判断小车是否侧向倾斜。 在连接件方面,我们用螺钉螺母,以及垫圈等固定住两部件,用L型件来固定传感器,舵机嵌入专门的舵机壳。同时也设计了能让顶部红外光电传感器全角度调节的连接结构。
2.比赛经验总结
整体来讲我们最后取得的奖项并不理想,现场比赛出现意外较多,尤其是最后决赛,小车线路接触不良,导致最后以一名之差获得三等奖,止步64强,还是颇为遗憾的,所以关于经验这一块也感想颇多。
1.比赛前期车体安装及调试
① 车体安装: 主要参考所给演示视频,但有些地方视频所给有错误,同时也要比对所给说明文档,确定各零件最终安装位置及方向。 车体安装避免不了自己打孔,位置事先要认真较量比对准确。 还有一点需注意,一般最后定型的车,从第一次安装好总免不了经过多次改装,所以有些重要部件不要绝对“粘死”,在保证整个车体安装稳定的情况下,还要考虑到车的“可拆卸性”。 安装时,注意车体的规格是否符合比赛要求。(长宽30cm*30,高度不限,重量4kg,误差不超过5%,即最重可达4.2kg)。车体中心尽可能低,重量尽可能靠近4.2kg(加重可用废弃电机,舵机,锂电池等其他合适部件)。 安装时,要多方考虑,能顾及到许多细节,比如舵机ID标签的放置位置;电池充电口的朝向(至少保证不影响正常充电);四个电机左右的对称性,以保障速度方向的一致性;传感器尽量往里收(避免直接受到外部撞击)等等。 ② 车体调试: 基本调试软件 keil,robotservo,luby crater 需掌握调试方法,具体可看参考文件。 #3个软件总结使用要点:keil点击下箭头才能生成可执行文件。 luby creater 调传感器,用5针杜邦线连接luby upload口,多功能调试器调节r开头模式,也就是第一个。 robot调舵机,端口输入正确,如果找不到控制器,看电源是不是连接了,这个需要用白盒电池充电线给额外供电,以及驱动和舵机连接线是否断开。 其实很多问题可以百度得到,或者问老师,并且参考文件里也有视频教程 ③ 调试常见问题: 硬件未实现软件相应功能:极大可能物理结构本身不合理性导致。 舵机运动异常:通电后,手稍用力转动舵机爪,看是否能轻易转动,若能则说明此舵机未供上电,极可能舵机连接线松动或故障。 正常情况下,初始化控制器时,四个舵机红色指示灯亮是正常,此外需注意,舵机通电运动正常情况下,不可用力强行转动舵机,否则会使舵盘及舵机受损。 若调试,轮子不转动,则先检查,驱动指示灯是否正常亮,若亮则说明不是电量原因引起。此时则可以检查驱动ID 号是否正常(ID可能消失或突变),若是正常,则可写一类似move()函数,来检测电机是否能正常工作。 舵机线接触不稳,关于此问题,首先舵机线接口处可以用热熔胶固定,此外,要尽量少的去来回拨动或拧舵机线,避免内部电线受损。 ④ 基本常识: 每次调试结束,走之前给小车两个电池充上电,注意蓝电池(给驱动供电电池)开关要打开,指示灯才变红充电,否则就充不上电,以免下次调试时小车没电。 螺钉装卸次数达到一定程度时,自己要主动更换新的螺钉,避免因螺纹磨损而导致螺钉卡住。 调试时发现有哪个零件损坏或工作异常,及时检查和更换。 参考代码的函数务必理清思路,才可根据小车传回参数或者异常表现知是哪些传感器原因导致。 代码中函数功能是调节传感器的的依据,通过调节传感器,才能给出合理的参数。
2.比赛车体调试与经验汇总
① 赛前调试 这一天(5.6)都在用于调试,对车的调整可能会比较多,一般没意外的话,小车也基本定型与该天晚上。由于参赛队伍比较多,所以要尽可能的早去场地,让车先在测试场地跑一下,检测上台,攻击,漫游,边缘检测,寻找擂台,寻找敌人功能,然后做相应调整。因为不同的学校的攻击力不同,测试时要注意保护自己车,还有场地可能会被一些铲子比较薄的车破坏,还有台上比较多,可能导致自己车误判,所以要尽可能早的测试这些功能函数,否则之后只能做一做边缘检测和模拟对战。比赛场地会开放一段时间,要利用好这次机会,检测小车功能和工作情况。 ② 小组初赛与决赛淘汰赛 在条件允许的情况下,可以事先观看下对手的实力,可适当做一些策略准备。 每次比赛开始前要确保检查小车功能是否正常,距离自己还有3-7组的时候可以事先去场地观看等待,并注意上场前提前检查小车功能是否正常。 每次比赛上场,兜里要带小螺丝刀,以备不时之需。 比赛时,队友可以分两侧站立,应至少有一个站在自己这一侧,可以帮助自己观察整个场上的情况,帮助场内队友做出正确的抉择,同时应至少有一个站在对手侧,及时反馈对手车况,辅助场内队员战略规划。 在本次比赛,通过观察强者队伍的车的特点,分析他们的物理结构上的优势,同时寻找代码上的优势,很明显的他们的车体,几乎流线型的3d打印结构,把控制器,电源,传感等核心部件几乎包嵌在车体中,车很干净利落,同时硬件保护的也很好,少了“肢爪”结构,可以避免被对方车体“带落”,同时也很大程度避免了卡台。他们的代码很明显的一处,就是加了守台函数,很值得借鉴。