前期准备
基本要求
改平台由C++语言编写, 所以要完成这个任务一定的C++基础是必须的. 我也是因为此才被朋友推荐过来的.系统安装
根据平台要求需要使用ubuntu系统, 还好我以前捣鼓过这些东西, 这个对我来说就相对简单了. 相关教程直接百度就有了, 注意一下分引导安装位置就行了, 一般在主硬盘就行, ubuntu会提供进windows系统的选项.平台安装
整个安装过程完全依照中科大提供的教程. 该平台依赖boost库, 该库安装好在修改一下配置文件就可以了.调试
平台中提供一份模板源码, 通过cmake预编译 在通过make编译后可以运行就说明平台安装成功了. 起初有不同的教程说需要python3的环境, 这个和大平台基本没太大关系, 它主要是为了运行测试提供的python的脚本用.
任务分析
初来乍到
刚来第一天真的是一脸蒙蔽, 学长给了我一份被称为底层代码的东西让拿回去看. 实话我是一点都看不懂, 上来就看这东西, 感觉是有点唐突. 对于平台基本的操作都不明白的我如何看得懂它这一句句是在干什么... 于是就带这一头雾水开始撸文档. 经过两天时间算是对平台有了初步的了解, 但还是不太明白. 这时指导老师放大招了, 把XX学校的高手请来了, 指导了我们大半天的时间, 终于算是对平台运行机制, 任务需求有了一定的了解.运行机制
在一次完整的测试中, 平台会为我们提供一个初始的场景, 根据这个初始场景, 平台又会给我们分配一定量的任务. 我们需要做的就是收集平台提供的信息, 完成相应的任务.任务需求
信息收集
根据平台运行机制, 我们需要做的第一步那就是对信息的收集. 上来就谈什么策略分析算法什么的那都很空, 而且真的能用到那些听起来很高大上的东西吗. 反正我陆陆续续写了有一个半月了, 到现在已经基本完成了也没用到什么算法(毕竟我也不会 哈哈). 对于指令语言因为描述的都比较清晰结构也很单一收集起来还是比较方便的. 自然语言就相对麻烦点了, 也没有那么的精确. 在我近一个星期的努力下也算是完成了. 在任务收集上我的想法就是最大化的还原真实场景, 尽量排除干扰 错误信息.任务处理
平台给我们的任务也就那么几种, 映射到机器人的行为上就是获取物体, 把物体放到规定位置. 因此我在处理上建了一个公用的方法getObject
用于获取物体, 该方法在正确场景下可以百分百获得物体. 对于无法获取物体的情况, 我构建了一个errortask
方法去处理. 为了平衡, 这里处理成功的概率我只让它达到60%.线路规划
怎么可能一点都不规划呢. 不过这里我也没有用什么算法 PS: 其实我很想用, 不会咋办呢~~~ 心塞. 对此我只能简单的规划了下, 效果也还行吧, 提高个一二十分还是有的. 在收集信息的时候对每个任务设置优先级, 在所有任务收集完成后对任务进行了一次重排序. 就这样简单处理了下. 自己感觉很low... 后期也想到了更好的方法,介于时间就没有去实现了.不断完善
在基本完成后, 那就拿题库跑吧. 就在跑分, 还被室友说我这不就是写了个鲁大师跑分吗~~~ 测试每一题, 寻找不合理的地方慢慢改, 这里才是最磨人的, 一题一题的看, 一行一行的排查. 昨天下午还找到一堆bug.
小结
实话这是我写的最久代码量最大的一次. 在这之前一直在学web相关知识, 为了这个比赛也是不得不放慢了进度. 不过收获还是挺多的, 在C++上学到啥, boost库, 这个东西挺好用的. 最主要的是逻辑思维能力的提高, 这是个无形的财富. 当然作为我校该比赛项目的开国元老还是比较有成就感的.
嘿嘿, 第一次用简书, 不知道写点啥, 就随便记了记最近做的事. 相关源码在比赛后整理整理在上传吧, 希望取得个好成绩~~