# energy **Repository Path**: tju-rm-cv/energy ## Basic Information - **Project Name**: energy - **Description**: 基础小能量机关python算法 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2022-12-25 - **Last Updated**: 2025-07-23 ## Categories & Tags **Categories**: robot **Tags**: None ## README 能量机关 # 入门 ```shell python main.py ``` - 如果报错说少什么库,再一个一个去用 `pip` 或 `conda` 安装 - 成功运行后,在显示的图片上按 `q` 结束程序,按其他键则下一帧 # 算法基本流程 1. 图片预处理 2. 找到符中心 center 3. 识别待击打扇叶 target 4. 子弹在空中时,由于重力和扇叶旋转,进行补偿,调整击打点 5. 使用PID算法输出控制机器人的位姿调整角度 PS - 其中 识别待击打扇叶 较难理解,要运行着代码,看着 imshow 的图像来理解代码(先看懂 `cv2.findContours`,在 `rune/rune.py` 中有该函数的说明) - 算法详细步骤在注释里 # 重要文件说明 ```shell . ├── assets │ ├── params.json # 能量机关参数 │ └── rune.avi ├── main.py # 程序入口 └── rune # 能量机关相关实现 ├── center.py # 1. 负责找到符中心 center ├── target.py # 2. 负责找到要击打的扇叶 target、能量机关旋转补偿、负责重力补偿 ├── hiter.py # 3. PID计算位姿 └── rune.py # 能量机关主类, 调用上面几个类 ``` # 调试注意点 `assets/params.json` 中的 `debug` 参数作用,以调试 `find_target` 来说明: - 大部分 log 和 imshow,只有满足条件时才会执行,见 `rune/utils.py` 中的 `DEBUG` 字典 1. 查看 `rune/utils.py` 中的 `DEBUG` 字典,发现 `find_target` 对应的 `int` 为3 2. 为了调试 `find_target`,将 `assets/params.json` 中 `debug` 参数设置为3 3. 再运行 `main.py`,`find_target` 过程中,会执行更详细的 log 以及 imshow 后期调试的时候,可以这样: - `main.py` 中的 `cv2.waitKey(0)` 改为 `cv2.waitKey(1)` - 如果最终没有找到 `target`,给个 `cv2.waitKey(0)` 停下来看看