Skip to content

trantuan-20048607/SRM_S1_NEW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SRM 校内赛 S1 框架

注:该框架为此项目的重构版:
https://github.com/superwyq/robomaster_S1framework

更新记录

VER 2.0.0: 2021.11.6

  • 调整:移除了默认的自瞄代码;
  • 调整:从本版本开始,将不再需要将模板覆盖原始代码的过程。

注意事项

  1. (非常重要)DEBUG 模式和实机调试时所需要的控制器帧率并不相同,实机测试时调低此参数可导致图像传输卡顿;
  2. 由于控制进程和界面进程先后启动,程序开始运行时会短暂延迟,调整控制器和界面帧率可缓解。

框架说明

本框架为校内赛视觉部分使用框架,基于 RoboMaster S1 步兵,使用 Python 编写。

运行环境

系统环境

请尽可能在 Windows + Anaconda 环境中使用此框架,并且建议为此框架单独建立 Conda 环境以保持运行环境整洁:

$ conda create -n <NAME> python=3.8

其中 <NAME> 为环境名称。

此程序未在其他操作系统和环境中测试,不保证程序在这些环境中的稳定性和运行效果。

Python 环境

程序依赖的 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 , 运行时将在控制台中显示。

更新历史

VER 1.3.1 BETA: 2021.10.30

  • 修复:解决了直接套用模板后开启自动瞄准时报 AssertionError 错误的问题;
  • 优化:使用未经修改的模板时自动瞄准将提供位于屏幕中心的目标。

VER 1.3.0 BETA: 2021.10.30

  • 修复:修正了网络卡顿后枪管热量不减的问题;
  • 新增:在屏幕正上方显示运行时间;
  • 调整:按照规则更正了参数和扣血机制;
  • 调整:(实验性)提高了控制器的速度同步频率,按住移动的持续时间从一秒变为无限长;
  • 移除:(1.2.0)在界面上显示半透明的背景矩形,增加重要信息的辨识度。

VER 1.2.0: 2021.10.30

  • 修复:解决了队列为满时界面和控制模块速度无法同步的问题;
  • 修复:解决了在运行参数中多选颜色不会报错的问题;
  • 优化:缩短了按下 ESC 后等待退出的时间;
  • 新增:在界面上显示半透明的背景矩形,增加重要信息的辨识度;
  • 新增:在界面上显示 FPS 的区域右边增加了对数据流传输延迟的显示;
  • 调整:修改了默认的控制灵敏度。

VER 1.1.0: 2021.10.28

  • 新增:自瞄模式下按右键可开关云台跟随(默认关闭),用于缓解延迟带来的抖动;
  • 优化:在自瞄测试模块 /app/test/vision 及其模板的每一次循环开始处增加了复制当前帧图像代码,用于单帧调试;
  • 修正:更改了 UI 中绿色和黄色 F 标记的提示判定规则为自瞄目标与屏幕中心点的距离。

VER 1.0.0: 2021.10.26

  • 首个正式版。