2021-2022寒假apollo2d划
概述
加入apollo已经一个学期了,相比于勤奋的3d组,2d这边感觉推进的确实很慢。一方面确实新队员的基础确实有差距,另一方面也确实没怎么催。但毕竟robocup是个很不错的比赛,还是要好好抽时间看一看,学习学习。
目前已知要用到的一些必要知识有:
- cpp
- 基础语法
- 面对对象编程
- 多文件(主要使用原生的makefile,可能会考虑CMake和xmake)
- 少量设计模式
- linux
- shell
- 虚拟机
- 足球的基本规则和战术
以及一些可选但最好还是学一学的知识:
- markdown
- git
- python
以及很有用但是不会用的东西:
- 马尔科夫链
- 遗传算法
寒假指南
这个寒假预计在三个方面做推进:
让cpp基础不好的同学从
bhv*
文件看起,基础稍好的同学看完后看看决策树。让会python的同学看看已有的优化工具。
让搞linux的同学研究研究代码的可移植性。
本假期的目的有三:
- 选拔出能看懂cpp代码的正式队员
- 搞清楚具体要优化的方向
- 完善文档
已知情况
预计春天就会开始国赛,时间不等人。不过对国赛也没有什么特别大的期望,毕竟现在开始其实很晚了,至于世界赛肯定会更难啦。
一些通用技能
我这里应该贴一份计算机教育中缺失的一课,看完这门课,至少也要了解以下这里的工具,后面的路会轻松许多。
关于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能真正“上道”。