注:该框架为此项目的重构版:
https://github.com/superwyq/robomaster_S1framework
- 调整:移除了默认的自瞄代码;
- 调整:从本版本开始,将不再需要将模板覆盖原始代码的过程。
- (非常重要)DEBUG 模式和实机调试时所需要的控制器帧率并不相同,实机测试时调低此参数可导致图像传输卡顿;
- 由于控制进程和界面进程先后启动,程序开始运行时会短暂延迟,调整控制器和界面帧率可缓解。
本框架为校内赛视觉部分使用框架,基于 RoboMaster S1 步兵,使用 Python 编写。
请尽可能在 Windows + Anaconda 环境中使用此框架,并且建议为此框架单独建立 Conda 环境以保持运行环境整洁:
$ conda create -n <NAME> python=3.8
其中 <NAME>
为环境名称。
此程序未在其他操作系统和环境中测试,不保证程序在这些环境中的稳定性和运行效果。
程序依赖的 Python 包列表如下:
numpy>=1.21.2
opencv-python>=4.4.0.42
pygame>=2.0.1
robomaster>=0.1.1.63
在 Conda 环境中,请使用 pip
而非 conda
安装这些软件包:
$ conda activate <NAME>
$ cd <ROOT>
$ pip install -r ./requirements.txt
其中 <NAME>
为环境名称,<ROOT>
为框架主目录。
本项目的目录结构如下:
SRM_S1_NEW
├───assets # 资源文件
│ ├───*.ttf # 字体
│ ├───*.jpg # 图片
│ └───*.avi # 视频
├───app # 主代码
│ ├───core # 核心框架
│ │ ├───msg.py # 消息基类
│ │ ├───launcher.py # 启动器
│ │ ├───*vision.py* # *图像处理*
│ │ └───controller.py # 控制器基类
│ ├───controller # 控制器
│ │ ├───config # 配置
│ │ │ └───!S1Robot.py! # !2021 SRM 校内赛规则数据!
│ │ ├───proc.py # 控制器进程
│ │ ├───main.py # 功能实现
│ │ └───msg.py # 消息封装
│ ├───benchmark # 性能测试
│ │ ├───timer.py # 简易计时器
│ │ └───analyzer.py # 详细计时器
│ ├───test # 功能测试
│ │ └───*vision.py* # *视觉测试模块*
│ ├───ui # 界面
│ │ ├───proc.py # 界面进程
│ │ ├───main.py # 功能实现
│ │ └───msg.py # 消息封装
│ └───**config.py** # **各种设置**
├───logs # 日志
├───*test.py* # *测试入口*
└───main.py # 程序入口
在目录结构中:
- 标有
*
的文件为留空的代码文件,内含中文 TODO 注释,请根据这些注释添加、修改代码; - 标有
**
的文件为配置文件,内含中文 TODO 注释,在此处添加的设置项可被包括所有标*
文件在内的大部分代码读取; - 标有
!
的文件为规则数据,请根据现有规则修改,擅自修改可能导致预料之外的作弊判罚。
对于其他位置的代码,请在修改前确保你已完全理解代码功能。
主程序通过终端开启:python main.py
。
参数(不加参数无法运行):
-d, --debug
调试模式;-r, --red
选择红方;-b, --blue
选择蓝方;--record
开启录制。
通过 WSAD
操作移动;
按下 Q
开启自动瞄准、改变平滑模式;
按下 E
关闭自动瞄准;
按下 鼠标左键
开火;
使用自动瞄准时:
- 按下
R
重设滤波器和 ROI 以消除干扰; - 按下
鼠标右键
切换自瞄结果是否生效;
使用手动瞄准时:
- 按下
I
切换准星样式(十字线和圆圈);
按下 Esc
退出。
- 要测试某个函数的耗时,导入模块:
from app.benchmark.timer import *
在函数定义前一行插入修饰器@timer
,运行后可在对应的日志中查看。 - 要测试某个函数内部各个行为的耗时,导入模块:
from app.benchmark.analyzer import *
在函数定义前一行插入修饰器@analyzer
, 运行时将在控制台中显示。
修复:解决了直接套用模板后开启自动瞄准时报AssertionError
错误的问题;优化:使用未经修改的模板时自动瞄准将提供位于屏幕中心的目标。
- 修复:修正了网络卡顿后枪管热量不减的问题;
- 新增:在屏幕正上方显示运行时间;
- 调整:按照规则更正了参数和扣血机制;
- 调整:(实验性)提高了控制器的速度同步频率,按住移动的持续时间从一秒变为无限长;
- 移除:(1.2.0)在界面上显示半透明的背景矩形,增加重要信息的辨识度。
- 修复:解决了队列为满时界面和控制模块速度无法同步的问题;
- 修复:解决了在运行参数中多选颜色不会报错的问题;
- 优化:缩短了按下
ESC
后等待退出的时间; 新增:在界面上显示半透明的背景矩形,增加重要信息的辨识度;- 新增:在界面上显示 FPS 的区域右边增加了对数据流传输延迟的显示;
- 调整:修改了默认的控制灵敏度。
- 新增:自瞄模式下按右键可开关云台跟随(默认关闭),用于缓解延迟带来的抖动;
- 优化:在自瞄测试模块
/app/test/vision
及其模板的每一次循环开始处增加了复制当前帧图像代码,用于单帧调试; - 修正:更改了 UI 中绿色和黄色
F
标记的提示判定规则为自瞄目标与屏幕中心点的距离。
- 首个正式版。