2025-12-30 17:29:49 +08:00
|
|
|
|
# RKNN 料袋(bag / bag35)检测与滚筒控制逻辑
|
|
|
|
|
|
|
|
|
|
|
|
本工程基于 **RKNN 模型** 对流水线上的料袋进行检测与分类(`bag` / `bag35`),
|
|
|
|
|
|
并根据检测结果与位置关系判断料袋状态(未到位 / 到位 / 掉出滚筒),
|
|
|
|
|
|
最终执行对应的 **滚筒控制逻辑** 或用于 **纯判断测试**。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 一、目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
detect_bagor35bag/
|
|
|
|
|
|
├── bag3568.rknn
|
|
|
|
|
|
├── detect_bag.py
|
|
|
|
|
|
├── main_bag_judgment.py
|
|
|
|
|
|
├── test_bag_onlyjudgment_withou-motor-contral.py
|
|
|
|
|
|
├── test_image/
|
|
|
|
|
|
└── README.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 二、功能说明
|
|
|
|
|
|
|
|
|
|
|
|
### 料袋检测
|
|
|
|
|
|
- RKNN 推理
|
|
|
|
|
|
- 支持 `bag` / `bag35` 目标检测
|
|
|
|
|
|
- 输出 `cls / conf / min_x` 50kg料包为bag,35kg为bag35;conf是置信度;min_x是判断料包底部距离现在传感器物理位置的距离,未到位是负数,到位后是正数距离
|
|
|
|
|
|
|
|
|
|
|
|
### 状态判断
|
|
|
|
|
|
|
|
|
|
|
|
| 状态 | 条件 |
|
|
|
|
|
|
|----|----|
|
|
|
|
|
|
| 没有料袋 | min_x is None |
|
|
|
|
|
|
| 料袋未到位 | min_x < THRESHOLD_X |
|
|
|
|
|
|
| 料袋到位 | THRESHOLD_X ≤ min_x ≤ THRESHOLD_maxX |
|
|
|
|
|
|
| 料包掉出滚筒 | min_x > THRESHOLD_maxX |
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
THRESHOLD_X = 537 # 到位阈值
|
|
|
|
|
|
THRESHOLD_maxX = 1430 # 掉出滚筒阈值
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 滚筒控制规则
|
|
|
|
|
|
|
|
|
|
|
|
- 未检测 / 未到位 → 不动作
|
|
|
|
|
|
- 掉出滚筒 → 停机报警
|
|
|
|
|
|
- 到位:
|
|
|
|
|
|
- bag → 立即停止滚筒
|
2025-12-30 18:03:47 +08:00
|
|
|
|
- bag35 → 延时2s → 这里不确定能不能直接正转变反转加了一个停止滚筒→ 反转2s → 停止
|
2025-12-30 17:29:49 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 三、依赖安装(已安装)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pip install opencv-python numpy rknnlite
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 四、使用方式
|
|
|
|
|
|
|
|
|
|
|
|
### 主程序(含电机控制)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python main_bag_judgment.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 仅判断测试(无电机)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python test_bag_onlyjudgment_withou-motor-contral.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 五、核心接口
|
|
|
|
|
|
|
|
|
|
|
|
### detect_bag
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
cls, conf, min_x = detect_bag(img) #不可视化图像
|
|
|
|
|
|
cls, conf, min_x, vis_img = detect_bag(img, return_vis=True) #可视化图像
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### bag_judgment
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
status_bool, status_text, conf, min_x, vis_img = bag_judgment(img) #不可视化图像+滚筒控制
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 六、状态文本规范
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
没有料袋
|
|
|
|
|
|
料袋未到位
|
|
|
|
|
|
料袋到位
|
|
|
|
|
|
料包掉出滚筒
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 七、说明
|
|
|
|
|
|
|
|
|
|
|
|
- 检测与控制逻辑解耦
|
|
|
|
|
|
- 易于扩展新料袋类型
|
|
|
|
|
|
- 支持现场与离线测试
|
|
|
|
|
|
|