干货!血泪经验贴:盘点那些无数Botball先烈们挖过的大坑

Botball在线小课堂开课啦!

一年一度的Botball中国公开赛已经在美丽的大连海事大学落下了帷幕。今年,中国区的总体水平比去年又有了大幅度提升,国际主席Steve都惊叹中国队伍越来越惹不起。在很多队伍都带来精心设计的精(qi)妙(pa)方案的同时。作为裁判,我们也见证了很多队伍掉进每年相同大坑的过程。那么,Botballer们,是该总结一下技术的时候了。

 

大坑之一:wait_for_light()

wait_for_light()是Botball函数库中为我们提供的最实用的一个函数,它的参数只有1个就是用来连接环境光线传感器的模拟端口编号。它的功能更是简单:令机器人能够在比赛开始前进行光线传感器校准,并在再次开灯后用光线启动。

Wait_for_light() 这样用!

但就是这么个实用简单的函数,能够保证我们设计的各种复杂精巧的结构程序能够顺利启动,开始比赛。然而,我们今年再次惊讶地发现,发现有将近一半的队伍竟然不使用wait_for_light(),其中则有不少队伍比赛时遇到了机器人启动不起来的问题,白白浪费了自己精心设计的方案。

我们随机采访了几个队伍,得到了啼笑皆非的答案,“什么是wait_for_light()?无辜小白脸”,“我们自己写的灯光启动更好用”,“我们信不过wait_for_light()”……

那么问题来了,为什么我们又双叒叕,强调要求大家采用这个函数呢?其实原因特别简单:1. 我们永远没法保证场地上的灯光是完全一致的 2.场上队员永远没法保证启动灯和机器人上传感器的相对位置角度精确到误差可忽略。而这些误差都会大大影响光线传感器的读数。手工在程序里面设置灯光阈值的办法是肯定不行的,因为灯光条件变了,而程序里面硬编码的阈值没有随着变化,就很可能时灵时不灵,让Botballer们抓狂到死,。

wait_for_light()的使用则不同,在每次它被程序调用的时候,都会自动进行一次光线值的校准,自动选取当前最合适的启动阈值。只要校准后不对启动灯的位置再次移动,一定能保证机器人成功启动。

光线校准步骤

1.当灯光打开时,按R键(不知道R键在哪里的,快去翻手册)

2.当灯光关闭,再次按下R键

3. 若校正成功,屏幕显示good calibration。灯光再次亮起时机器启动。若显示Bad calibration需要重新校正

 

敲一下小黑板!

在Botball的正式比赛中,wait_for_light应该是程序中第一个被调用的函数

道理说穿了很简单,不是吗?那么Botballer们,快去翻阅手册吧,别让你准备几个月的方案毁在一个最简单的漏洞上。

 

写在文末:

Botball中国组委会将开启Botball机器人线上小课堂活动,我们会以微信稿的形式在中心公众号、Botball官网进行发布和更新。当然,仅凭组委会几位老师的力量还远远不够,我们也非常期待Botball这个大家庭的成员们多多贡献力量,如果您对于Botball机器人里的函数、结构设计、方案有非常好的使用心得和案例,欢迎您发送至:Botball@itccc.org.cn。我们会对您的程序、结构设计、机器人方案进行复核,确认无误后进行发布。