ICRA AI Challenge 入坑指南

文章目录

    • 写在前面
    • 准备阶段
        • 设备准备
        • 软件准备
    • 比赛开发
    • 比赛阶段

写在前面

2019年5月19日早上4:30出发去机场,从西安出发去往加拿大蒙特利尔,2019年5月24日晚上22:46飞机在西安咸阳机场降落,用一个词来形容就是“五味杂陈”。本来应该准备写保研的材料,但是始终是静不下来,索性趁着记忆还算清晰,把想写的东西记录下来。计划先写三篇,分别是本篇入坑指南,视觉入坑指南和经验教训。东西比较多,一两篇可能写不完,回头再一边回忆一边更新吧。PS:如果是NWPU接手我工作的学弟学妹看到了的话,要是有问题,可以联系我,邮箱是 [email protected] ,我也只能做这么多了。
顺便说一下,我只是代表个人观点,包括技术能力和观点意见,如果有说得不对的地方,还请联系我。

准备阶段

设备准备

  1. 首先,一辆车是必须的,里面的各种部件你也是必须的,尤其说一下,云台的盖子是不用打开的,里面貌似有陀螺仪,打开可能会出现一些不好的后果(别问我怎么知道的);其次,有几根线很重要,是插在下位机的板子上的,一根3口对4口的是裁判机要用的,一根是连接在迷你主机上的(我专业是做软件的,描述不清楚别打我);雷达也是通过一个转换器直接插在主机USB上的,摄像头的话也是一样插在主机上,具体接口要看摄像头的接口。
  2. 要是卡弹了,一定是按住上面的摩擦轮转动下面的摩擦轮,从前面滑出来,否则限位开关会被废掉;
  3. 控制主机建议使用远程桌面(有无线网且稳定)或者网线(Ubuntu端在/etc/network/interface设置),Windows下要配置IPV4的IP等,使用VNC链接;
  4. 赛前检查好线是不是插好了,因为刚插上的瞬间就开设备可能会启动不成功;

软件准备

  1. 大疆官网的资料更新公告
  2. 首先要仔细阅读比赛规则,血淋淋的教训,稳赢的一场比赛自己因为枪口热量过高自己暴毙了…
  3. 裁判系统也要注意更新,配置的时候,记得要在车上设置WIFI连接,连接的无线网密码貌似必须是12345678,记不太清楚了,裁判机也要连上,同时设置裁判机主机IP
    ICRA AI Challenge 入坑指南_第1张图片
    要在这里添加上两个
  4. 记得及时更新固件代码,否则裁判机可能会出问题;
  5. 大疆写的RoboRTS的框架还是很有意思的,RoboRTS 里面对代码的讲解还是很详细的;
  6. 记得配置端口映射,这样就不用修改代码了,因为代码中设计设备数据读取路径不一定是对应的;
  7. 需要的系统环境最好是Ubuntu 16.04及以上,因为这个版本的gcc和g++编译器版本是足够的,编译器版本过低也会造成一些依赖的安装解析错误。
  8. 需要的环境按照文档中直接配就好了,但是文档中的环境也不全,一部分缺失的包可以用 apt-get install ros-kinetic-…来安装,后面的…自己看缺啥,sudo自己看情况;

比赛开发

  1. 代码编译的时候,一定要注意CMakeList和Package.xml文件,编译的时候很关键很重要,编译报红色字体错的时候,肯定是“硬伤”,就是文件找不到啊,定义啊,之类通常的错误;如果没有出现红色的字体但还是报错,说明可能就是“软伤”,这个时候一般是CMakeList没有配置对,比如directory或者target_link之类的,多检查两遍,但是也不要画蛇添足,否则可能也会出问题。
  2. 编译之后的build和devel也是非常重要的,devel的setup.bash储存了这个包里模块的路径,放到~/.bash.rc中就可以不用每次都source激活了,build里面有些神奇的东西,比如你在写消息的时候包含的都是.h文件,可是消息src里并没有.h,这是因为编译之后的build自动生成了这些文件。
  3. python节点执行前需要用chmod先赋予权限才能变成一个可执行的node;
  4. 一定要用python2.7,否则等着重装python吧;
  5. 建议使用python写代码,否则改一下参数就要重新编译,真的是要多复杂有多复杂;
  6. 如果发现摩擦轮开始旋转以后,但是打不出来弹丸,可以尝试在roborts_base,gimbal里面修改转速,1250应该就可以了;
  7. 一定要先开摩擦轮再发射,否则容易卡弹;
  8. 开发的接口一定要统一好,这个很重要,规范性的问题都是最基础的问题;
  9. 为了可以将摄像头的数据一图多用,建议可以使用驱动将数据作为话题发送出来,详细的下一篇博客再说;
  10. 雷达定位localization中有一个初始位置或许需要改,如果你发现无论如何转车都和静态地图差一个角度,那就改改试试吧;
  11. 大疆的armor_detection我试了下效果很不怎么样,鲁棒性不好,所以不用懒省事了;tracking的追踪在对方比较快的时候也是一直慢一拍,所以还是考虑自己搞吧;
  12. 进行地图点的标定的时候,可以考虑使用静态地图比较简单,使用也很简单,就是执行大疆decision包中behavior的6模式,同时改下代码输出一下就可以了;
  13. 建议使用滑条实时调参数,否则就会非常非常不愉悦…
  14. 建议参数都写成配置文件,否则改的时候就…令人非常烦躁而且会遗漏或者会出问题;
  15. 大疆的定位导航包还是非常准的,不过只用了雷达数据,没有使用UWB数据,所以想用UWB数据的还是自己写吧
  16. 数据类型也好找,如果不是自己写的,那就去/opt/ros/kinetic里面的include找吧,如果我没记错的话;
  17. 策略开发建议写成模块式,方便修改,而且最好有强制退出机制,避免陷入一个状态无法自拔;
  18. 如果有节点开启不成功,在代码没啥问题的情况下,大概率是硬件背锅。别说什么线都插好了,寒假的时候有一次就是策略一直无法执行,卡住了没有进入选模式的那一步,还记得队友说别找硬件的锅了,最后的原因是这样的:策略卡在动作服务器,动作服务器卡在底盘初始化,地盘卡在地图,地图也不是全凉,是本应生成的三张图中有一个凉了,而那张图的输入是里程计,最后发现是底盘的线没插好…
  19. 未完待续—————————————————————————————————————

比赛阶段

  1. 赛前改代码真的是不怎么样的选择;
  2. 有些东西不实际跑一跑是看不出来的;
  3. 调试的时候不要懒省事,就按照比赛来,这样会少很多问题;
  4. 调试的时候一定要缕清思路!缕清思路!缕清思路!找bug一定要思路清晰!不要被其他人影响,调着调着忘了问题出在哪里了,因为问题比较多,拐着拐着就把自己拐跑了。
  5. 出问题不要忙着推锅(虽然这次比赛过程中没出现),只是提个醒,解决问题才是最重要的。

你可能感兴趣的:(ICRA,AI,Challenge)