ROBOMASTER机甲大师赛视觉学习方案
- 视觉技能
- 学习踩坑
- 硬件平台
- 环境配置
- 个人修为
- 坑
机甲大师(RoboMaster)是由大疆创新(DJI)的创始人汪滔发起并承办、由共青团中央、全国学联、深圳市人民政府联合主办的年度机器人竞技赛事,为全国大学生机器人大赛旗下的四大赛事之一,并且是全球首个射击对抗类的机器人比赛。其在2015年诞生伊始就凭借其颠覆传统的机器人比赛方式、震撼人心的视听冲击。
视觉技能
- C++/python程序语言学习
**按照机甲大师官方参赛攻略要求视觉(算法)组应当掌握一门熟悉一门汇编语言,对此个人建议如果自身有编程基础(理工科一般会要求学习C语言,但视各高校专业情况而定)可以直接入手C++,编程语言众多但是C++还是有其优势存在的,例如众多比赛强队的开源程序还是C++为主,它对于各参赛队来说是必不可少的语言。如果没有基础的同学可以从python入手学习,然后再过渡到学习C++。避免出现从入门到放弃的惨剧。
python可以在深度学习和日常生活中使用,简洁是其极大的优势。正所谓人生苦短,我用python。python语言的学习资料可以在哔哩哔里网站上找到很多,个人推荐小甲鱼,或者大学慕课北京理工大学的python语言程序设计;也可以通过借阅图书馆相关书籍来学习,一定要勤加练习!!!
C++可以选择哔哩哔里清华大学的课程或者其他课程、相关书籍都可以。刚开始学到“类”就可以着手解决问题了。要有解决问题的算法意识,一开始写不出来是正常的,可以模仿可以学习但是不能畏难不能放弃。
软件可以使用pythonIDE,pycharm,vs2019等等,python安装应当注意版本要求不是越高越好,推荐python3.5/3.6。
GitHub与robomaster论坛都是学习算法的好地方,有着大量优秀的开源程序。**
** 无论是对于什么程序的学习都不要试图在全部学习完语言后再入手解决问题,这是很多新人会有的想法。我们作为参赛队员是以解决实际问题为目的的,根本不会有足够的时间让你学习完一门语言。对于程序语言的学习也不应当追求全知全能,无论python/C++都只是语言想要实现任务还需要对相应的“库”进行学习,最基础的装甲、风车识别程序都是通过opencv库来实现的,但是编程语言强大的拓展性使得它几乎无所不能,如网络编程,网络爬虫,数据库等等。**
**切记明白自己需要用什么,再去学习什么。我们是做比赛,不是做研究,但基础和底层知识也是重要的。**
- Ubuntu操作系统
视觉成员应当熟悉LINUX操作系统,程序的运行环境一般都以ubuntu16.04为主,其他版本的系统稳定性较差,但并不绝对。应该熟悉linux不同于windows的命令行操作,并熟记常用的执行命令。
新队员无论是否接触过Linux系统都应该实际安装使用一下。这就要求应该掌握Windows系统的安装备份以防笔记本崩溃。对于ubuntu建议采用双系统方式,个人也可以尝试虚拟机但是他会限制性能,不利于程序的调试。
ubuntu/windows :一般需要准备一个专门的系统U盘,将系统镜像写入。在笔记本刚开机状态下按特定功能键进入BIOS,设置U盘为第一启动项安装程序。安装系统应当注意做好系统引导保证系统的切换。
3.机器学习与深度学习方面
对于RM比赛来说,视觉方面的识别还是具有明显光学特征的单一识别,使用传统的视觉识别方案即可,但是也可以尝试机器学习与深度学习的方案。关于机器学习主要涉及到线性代数,高等数学与概率论方面的知识;
机器学习推荐哔哩哔哩吴恩达机器学习系列课程[机器学习](https://www.bilibili.com/video/BV164411b7dx?from=search&seid=3561708656840252423) 该课程对于机器学习方面的初学者来说是较为友好的。
深度学习方面主要涉及到的是目标检测部分,对于目标检测有多种识别模型个人所接触过的主要是YOLO系列。对于YOLO目标检测从配置环境到训练模型,网上也已经有许多详细的教程可供参考。当然后期也将会开辟YOLO系列的文章,敬请期待。
4.操作软件
QT4、VMware虚拟机、anaconda(你们一定会喜欢的软件)、cmake、ipython、OpenMV IDE、Visual Studio 2019、jupyter、spyder(以上为windows平台)
QT4、qq、cmake、pythonIDE(ubuntu)
5.摄像头
具有一定的摄影方面的知识
可以参考如下链接进行学习
6. ROS机器人操作系统
ROS机器人操作系统是参加ICRA人工智能挑战赛所广泛采用的,也广泛应用于高校科研和工业生产之中。使用ROS可以快速的搭建出一套功能完备的机器人。
硬件平台
- 树莓派
作为新成员在学习之余还应该有一定的硬件平台用来实验和练手,个人建议可以从基础的树莓派入手学习安装系统和命令行的使用,价格一般在四百元左右。树莓派有自己完整的硬件系统可以根据自身需要搭配,但不要试图用它来参加robomaster比赛,首先线排摄像头的延迟过高,图像质量不高;其次树莓派性能较低不适合运行大型程序。作为入门装备还是不错的,也可以做一些自己感兴趣的小东西或者参加其他比赛项目,可以降低成本预算。 - openmv
openmv是不错的硬件平台,集成度高,兼容性好,入手简单。可以考虑使用在导弹等对设备重量大小有限制的设备上。openmv作为一个开源项目任何人都可以使用,如果有条件可以在GitHub上找到有关它的所有资料,openmv在许多比赛中都可以拿来使用,但是不建议通过它来学习视觉,因为openmv的集成度太高,只了解它是学习不到干货的。 - TX2
tx2是优秀并且强大的运算平台,传统视觉,深度学习都可以胜任,但是售价较为昂贵。ARM架构系统的安装可能会遇到各种各样的问题,有条件可以直接让商家装好程序。自己安装出现问题的话建议上网谷歌或者百度,一般你遇到的问题大家都遇到过。
但是TX2的性能也并没有很强,256颗流处理器只能在运行yolo-tiny版本时可以到实时性的要求,完整版运行起来基本就是PPT状态,在运行yolov4-tiny时效果最好的,但后续优化应该尽可能想办法去提高模型运行速度,提高视频解码速率。
- NUC
英特尔NUC是极为友好的计算平台,许多参赛队伍都有使用,可以安装黑苹果,windows,Ubuntu等系统。对于NUC它拥有强大的cpu,但是个人尝试在其上面运行yolov3模型纯CPU跑,视频帧率极低。并不了解其他参赛队的使用方式。但是NUC对于机甲大师来说其性能是绝对够用的,不够的很大原因可能来源于使用者自身。
该链接为加州伯克利大学 Robomaster视频,使用设备为NUCI5
加州伯克利大学 Robomaster
环境配置
在计算机视觉的学习和使用过程中最最麻烦和最应该担心的事情就是环境配置的问题,学习语言和程序编写相对于此则更为容易一下,环境配置难在他的不确定性太多。
需要考虑的环境有:
1.ubuntu与windows双系统的环境配置,尽量避免系统崩溃
2.(Windows与Ubuntu)python环境下的opencv配置,注意版本对应
3.(windows) C++一般使用Visual Studio 编译,每一个项目都需要进行一次配置较为繁琐
4.(Windows与Ubuntu) tensorflow或者pytorch与python的环境配置
5. Ubuntu下ros机器人操作系统的环境配置
6. 深度学习各个模型所需的环境配置需要自己摸索
个人修为
- 对于学习最重要的是要掌握学习方法,作为视觉组长面对新人很多时候都感觉到他们似乎并不会学习。一旦遇到无论怎样的问题都会向组长寻求解决方法,这并不是最好的解决方案。
遇到问题一定要首先尝试自己解决问题,可以思考,可以百度,可以谷歌;尝试自己解决不了之后再与其他组员讨论,开阔思路后再进行尝试;最后请求组长援助。程序报错并不可怕,找到原因都可以解决 - 对于比赛我们要求使用程序,但是对于自己我们需要学习程序
单从语言来说在写程序的过程中我们会对问题进行分析,然后按照流程来解决问题,我们要编写出可以满足我们需要的功能函数。但是由于时间有限我们仅仅学习了基础的语言并没有了解其内在的数据结构,所以一旦有需要就应该继续学习更高级的语言部分了。
再者许多问题的解决化解后都是数学问题,包括弹道问题,大风车的击打,反小陀螺的实现等等,对于这些问题需要有一定的数学能力,要相信一切知识都可以学习,一切问题都可以解决。
下面分享一个学习宝典,你可以搜索到任何自己想要的学习资料!!!
学习宝典
坑
在个人的备赛经历中遇到的数不尽的问题,系统安装问题、软件崩溃问题、环境配置问题、相机标定问题、视觉测距问题、坐标系转换问题、装甲板识别问题、卡尔曼滤波使用问题、串口通信问题、深度学习问题等等。后续我将针对我所遇到到的坑以及相关问题解决方案做出整理。