项目的规划要清晰
步兵:第一阶段-装甲识别与追踪 第二阶段-能量符(小)击打 第三阶段-能量符(大)击打
英雄:第一阶段-装甲识别与追踪 第二阶段-小弹丸自动击打,大弹丸辅助击打
工程:第一阶段-取弹机构识别弹药并辅助对位 第二阶段-取弹机构识别弹药并辅助对位
哨兵:第一阶段-装甲识别与追踪 第二阶段-自动识别(索敌状态)第三阶段-自动识别并反击与防御策略
无人机:第一阶段-装甲识别与追踪
硬件必须确定好环境
既然使用串口通信,那么自然是要连接串口线的,在调试硬件上的代码前需要确保硬件的连接无误,小心线在调试时插反,让计算平台(nuc,妙算)将电流噪声当做了下位机发来的信息。
开发环境需要统一
计算平台
考虑到计算平台以minipc——ubuntu16.04为主,需要注意代码移植问题
各个库的版本
oepncv普遍采用3.4.6版本
试试IPP加速与SIMD加速
Eigen
OpenCV_contrib3.4.6
语言标准
C++语言 所有战队一致认为在机器人实际运行中的语言首选,编译型语言其优点为直接明了,直接调用底层。缺点就是不好入门,学习时间较长。运行效率C++ >> python
python语言 人工智能的宠儿,解释型语言优点为好理解,库丰富,灵活性强,配合GPU强势,不需要像C++一样要去关心底层内存的操作;缺点为需要了解所有数学运算,有很好的数学基础,除了卷积神经网络与点云处理外,其他算法并未证明用并行计算有什么优势。
编译器
在Windows系统上
VS20xx系列,作为主要的编译器,负责大面积的修改或是重写代码,其视觉算法上有很多插件、库之类的,方便安装,且网上教程多。(C++,python)
其他待定
在ubuntu16.04系统上(编写C++的主要以vscode或是vim之类的为主,一般做零散的调参用)
vscode,作为主要的编译器,负责零碎的修改。(C++,python)
vim,要是有用过vim经历的可以自行使用
在ubuntu上进行编译将采用cmakelists或g++
代码必须能够保证运行,而这件事在测试前很难保证,因而实际环境下测试是非常重要的
代码同步问题
逐步学习git管理代码并协同工作,在码云上托管一个远程仓库。
1、熟悉远离图形界面后的操作流程
2、需要有意识明白同步情况
移植的一些情况
1、opencv必须要使用V4L库先做处理才能打开摄像头,直接调用VideoCapture类会出现打不开的问题,而且,调用V4L的opencv程序必须要正常退出,而不能使用Crtl - c 用信号退出,因为系统不能自动回收摄像头资源,多次Crtl-C之后会导致摄像头无法再次打开的问题。另外,C++不保证正常return以外的退出main函数的操作会调用析构函数。
已知解决办法是捕获SIGINT信号,让它改变一个全局变量,主函数轮询这个变量之后退出。
另外,出现类似需要解决动态库链接等与系统相关的问题时,开发人员缺少独立解决问题的能力,可能查百度都不能照着解决。
2、紧密联系电控
就我个人而言,教训是在做项目时,需要对目标平台有明确的认识,对所使用到的技术要详细地调查,并且能够熟练地使用,在此之前,需要确定开发的目标平台不要变。
先确认团队的资金,进而确定最终使用的平台,然后确认使用的库版本以及标准,确保这些东西能够和目标平台兼容。把所有的程序隔三差五就在妙算上跑一遍,最好就要求每个人的代码都要自己在linux上跑。make cmake shell脚本 程序的编译链接 动态库静态库等知识。
项目中心化不能太强
1、采取博客教学方法
2、项目进展情况至少需要跟3个人说明并同步