比赛感想
总体上来说,电赛的备赛主要是对技术的训练,而真正的比赛主要是临场应变能力和团队协作能力。
由于电赛近年风格的改变,做软件的同学需要学习各种新东西。所以在备赛的时候,深入的了解了计算机网络(2017H,2019E)、各种协议及其实现、一些类人工智能算法(2017E),以及他们在各种不用型号的开发板上进行部署的方式。
在比赛场上来说,就是要快速学习新技术和快速解决新问题。比如由于限用ti,我们组临时学习msp432,试着使用它的各种外设,设计算法解决频谱泄露等等。在一个同学卡壳时,请及时给予帮助(可以是他现在的工作也可以是他的其他工作),保证团队效率最大化。
软件方向备赛建议
首先是要了解基地有的各种开发板。第一是ti的相关开发板,这是电赛必备的(因为每年必有一道限用ti)。尤其最好准备432系列和C2000系列,相较于430系列性能更强。第二针对于需要高速运算的开发板,建议准备ZYNQ,因为用锁相环ZYNQ可以超频到700MHz,这基本能满足电赛的高性能要求了。而且ZYNQ同时拥有PS端和PL端,所以可以靠PL端写硬件电路解决很多嵌入式板子不好解决的问题。针对于互联网,如果不涉及应用层,那么带网口的ZYNQ依然是最好的选择。如果仅涉及简单的数据传输而大部分还是系统控制那么esp32将是一个不错的选择。但从2021年的题目来看,很多互联网相关的题目已经到了不用树莓派(jetson nano等)不行的程度了。所以虽然我们没有准备,未来也需要准备了,好在基地有一些树莓派,至少不用花钱买了。
说完了选板子,就进入了软件层面。主要是两个方面,一是数据传输,二是数据处理。数据传输最重要的是通信协议。我们需要会用软件(和verilog硬件)写各种外设写入读取操作的代码。这其中涉及多设备控制(2013E),误码纠正(2017H双绞线那一问)等。也需要学会自己设计一些通信协议(按照计网的说法,这通常是应用层的需要)。而针对于互联网来说,应用层以下的传输协议所有知识点基本可以靠2019E全部学习(UDP,TCP各实现一遍基础部分就行)。应用层以上的2017H的WIFI那一问也可以训练的差不多,再后面就需要上树莓派了。
而针对数据处理,目前也基本上是两个方法——基于数学和基于AI。基于数学的主要是要了解系统整体的数学模型,知道从系统中获得的数据如何转化成结果。不过通常这个结果和实际情况有一定的出入,所以还要依据实际情况进行灵活的调参(这步其实相当的耗时间)。当然有时也要大胆的猜测(比如2021A靠各次谐波及其相邻边带的平方平均作为谐波幅值能有效的解决频谱泄露带来的问题就是我凭感觉猜出来的,当然这需要提前靠软件方法验证一下)。而AI法是我备赛的时候想到的一种方法,但没有实现过。就是可以通过系统获取所需的物理数据(比如2019D中的各个电压,以及这个电压数据族对应的电路状态标签)。然后通过AI算法拟合出一个有良好结果的模型和参数,最后部署在嵌入式系统上。(比完赛我才知道这个其实和预训练、边缘计算等工作有很大关系)。
最后,是与硬件同学的沟通问题以及一些基本的硬件常识。这个比赛硬件其实是基础。就比如AI法,一旦想使用,那么只能等硬件同学全部完成并调试正常后才能开始工作。所以软件的同学一定要和硬件的同学约定好指标(尤其是ADC峰峰值的问题、部署引脚问题)。同时即使不会设计也不想焊接也需要会硬件电路的验证(比如会用矢网),这可以大大降低沟通成本。也要清楚地意识到,杜邦线是非常不靠谱的,能用双绞线+RF就不要用杜邦线甚至可以做一个双绞线转单片机接口的板子,这可以大大节省最后的(玄学)调参环节复杂度。
祝大家都能取得好成绩!