概述

加入apollo已经一个学期了,相比于勤奋的3d组,2d这边感觉推进的确实很慢。一方面确实新队员的基础确实有差距,另一方面也确实没怎么催。但毕竟robocup是个很不错的比赛,还是要好好抽时间看一看,学习学习。

目前已知要用到的一些必要知识有:

  • cpp
    • 基础语法
    • 面对对象编程
    • 多文件(主要使用原生的makefile,可能会考虑CMake和xmake)
    • 少量设计模式
  • linux
    • shell
    • 虚拟机
  • 足球的基本规则和战术

以及一些可选但最好还是学一学的知识:

  • markdown
  • git
  • python

以及很有用但是不会用的东西:

  • 马尔科夫链
  • 遗传算法

寒假指南

这个寒假预计在三个方面做推进:

  1. 让cpp基础不好的同学从bhv*文件看起,基础稍好的同学看完后看看决策树。

  2. 让会python的同学看看已有的优化工具。

  3. 让搞linux的同学研究研究代码的可移植性。

本假期的目的有三:

  1. 选拔出能看懂cpp代码的正式队员
  2. 搞清楚具体要优化的方向
  3. 完善文档

已知情况

预计春天就会开始国赛,时间不等人。不过对国赛也没有什么特别大的期望,毕竟现在开始其实很晚了,至于世界赛肯定会更难啦。

一些通用技能

我这里应该贴一份计算机教育中缺失的一课,看完这门课,至少也要了解以下这里的工具,后面的路会轻松许多。

关于Cpp

已知我们使用的是来自日本的helios base,世界霸主的底层,相应的底层还有中科大的wrighteable和其他的自研底层。底层方面helios已经提供了相当丰富的选项,基于它的agent2d也是一份刚好能用的初始球队。所以对于还不熟悉cpp的同学来说,这份底层以及agent2d将会是最好的学习项目。

根据传统(?),agent2d最好从bhv文件看起,每个bhv文件封装了某种动作链,我们通过定义、修改和调用这些动作链,来让球员执行某些行为。这些文件往往封装的不错,所以可以从这里看起。

相对应的,从main函数开始,去看决策树也是一种思路,这样可以了解球员的大体执行流程。

在阅读相关代码时,趁手的工具相当重要。如果你只是单纯的看看代码,那么你可以选择在windows系统下任何一件趁手的工具来做这件事,我个人推荐的有:

  • vscode
  • vs

注意,这样做的话,可能会找不到某些依赖,因为agent2d是被设计为在ubuntu操作系统上运行的(虽然理论上win也可以跑,但是环境可能会比较难搞定)

但如果你想要让球队跑起来,那还是选择在ubuntu下跑起来比较好。关于操作系统,ubuntu可以选择虚拟机安装或双系统安装,这里推荐虚拟机。而在ubuntu下推荐的工具有:

  • vscode
  • kdevelop(来自apollo2d组组长的推荐)
  • Clion(来自电子部副部长的推荐)

我们推荐使用这些现代化的IDE或编辑器以优化读者的源码阅读体验。对于你感兴趣的流程,使用goto功能去往任何函数或变量的调用,声明,实现的位置。(这段怎么听起来这么像英文翻译过来的)

关于Python

我们已经搜集到了一部分基于python实现的球队优化工具,但我们对于它们如何运行以及有何效果完全没有概念,因此我希望能有人来告诉我们这些工具做了什么。

关于linux

这项工作是留给我自己的,我希望这份代码所需要的编译环境等可以“相当不错”的运行下去。因此需要对其编译过程,以及依赖的包有更深入的了解。同时需要配合做python的同学完成优化工具的开发。

结语

这个假期应该会相当的漫长,希望在这个假期结束后,2d能真正“上道”。