feat: 新增标签过滤器类
This commit is contained in:
@@ -3,12 +3,12 @@ logger_filename = "log/file_{time}.log"
|
||||
logger_format = "{time} {level} {message}"
|
||||
|
||||
[task]
|
||||
GetBlock_enable = true # 人员施救使能
|
||||
GetBlock_enable = true # 人员施救使能
|
||||
PutBlock_enable = false # 紧急转移使能
|
||||
GetBBall_enable = true # 整装上阵使能
|
||||
UpTower_enable = true # 通信抢修使能
|
||||
GetRBall_enable = true # 高空排险使能
|
||||
PutBBall_enable = true # 派发物资使能
|
||||
PutHanoi_enable = true # 物资盘点使能
|
||||
MoveArea_enable = true # 应急避险使能
|
||||
KickAss_enable = true # 扫黑除暴使能
|
||||
GetBBall_enable = true # 整装上阵使能
|
||||
UpTower_enable = true # 通信抢修使能
|
||||
GetRBall_enable = true # 高空排险使能
|
||||
PutBBall_enable = true # 派发物资使能
|
||||
PutHanoi_enable = true # 物资盘点使能
|
||||
MoveArea_enable = true # 应急避险使能
|
||||
KickAss_enable = true # 扫黑除暴使能
|
||||
|
||||
3
main.py
3
main.py
@@ -19,7 +19,8 @@ task_queue.put(sb.task(sb.get_bball.exec, sb.get_bball.find, cfg_main['task']['G
|
||||
task_queue.put(sb.task(sb.up_tower.exec, sb.up_tower.find, cfg_main['task']['UpTower_enable']))
|
||||
task_queue.put(sb.task(sb.get_rball.exec, sb.get_rball.find, cfg_main['task']['GetRBall_enable']))
|
||||
task_queue.put(sb.task(sb.put_bball.exec, sb.put_bball.find, cfg_main['task']['PutBBall_enable']))
|
||||
task_queue.put(sb.task(sb.put_hanoi.exec, sb.put_hanoi.find, cfg_main['task']['PutHanoi_enable']))
|
||||
task_queue.put(sb.task(sb.put_hanoi1.exec, sb.put_hanoi1.find, True)) # 无论是否进行任务,检测标识并转向都是必须进行的
|
||||
task_queue.put(sb.task(sb.put_hanoi2.exec, sb.put_hanoi2.find, cfg_main['task']['PutHanoi_enable']))
|
||||
task_queue.put(sb.task(sb.move_area.exec, sb.move_area.find, cfg_main['task']['MoveArea_enable']))
|
||||
task_queue.put(sb.task(sb.kick_ass.exec, sb.kick_ass.find, cfg_main['task']['KickAss_enable']))
|
||||
|
||||
|
||||
@@ -67,4 +67,4 @@ class main_task():
|
||||
# self.by_cmd.send_speed_x(7)
|
||||
pid_out = self.pid1.get(self.lane_error)
|
||||
# self.by_cmd.send_speed_omega(pid_out)
|
||||
self.lane_socket.send_string("infer")
|
||||
# self.lane_socket.send_string("infer")
|
||||
98
subtask.py
98
subtask.py
@@ -1,5 +1,7 @@
|
||||
from enum import Enum
|
||||
from loguru import logger
|
||||
from utils import label_filter
|
||||
from utils import tlabel
|
||||
import time
|
||||
|
||||
# 任务类
|
||||
@@ -73,7 +75,16 @@ class task_queuem(task):
|
||||
# 人员施救
|
||||
class get_block():
|
||||
def find():
|
||||
return True
|
||||
# 目标检测红/蓝方块
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.RBLOCK)
|
||||
ret2, list2 = filter.get(tlabel.BBLOCK)
|
||||
|
||||
if (ret1 > 0) or (ret2 > 0):
|
||||
logger.info("[TASK1]# find label")
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
@@ -81,56 +92,123 @@ class get_block():
|
||||
# 紧急转移
|
||||
class put_block():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测医院
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.HOSPITAL)
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 整装上阵
|
||||
class get_bball():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测黄球
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.YBALL)
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 通信抢修
|
||||
class up_tower():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测通信塔
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.YBALL)
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 高空排险
|
||||
class get_rball():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测红球
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.RBALL)
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 派发物资
|
||||
class put_bball():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测通信塔
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.BASKET)
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 物资盘点
|
||||
class put_hanoi():
|
||||
class put_hanoi1():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测左右转向标识
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.MARKL)
|
||||
ret2, list2 = filter.get(tlabel.MARKR)
|
||||
|
||||
if (ret1 > 0) or (ret2 > 0):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
class put_hanoi2():
|
||||
def find():
|
||||
# 目标检测左右转向标识
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.LPILLAR)
|
||||
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 应急避险
|
||||
class move_area():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测标志牌
|
||||
# TODO 如何确保在都检测标志牌的情况下,和下一个任务进行区分
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.SIGN)
|
||||
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 扫黑除暴
|
||||
class kick_ass():
|
||||
def find():
|
||||
return False
|
||||
# 目标检测标志牌
|
||||
# TODO 如何确保在都检测标志牌的情况下,和上一个任务进行区分
|
||||
filter = label_filter(None)
|
||||
ret1, list1 = filter.get(tlabel.SIGN)
|
||||
|
||||
if ret1 > 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
|
||||
49
utils.py
Normal file
49
utils.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from enum import Enum
|
||||
|
||||
# 根据标签修改
|
||||
class tlabel(Enum):
|
||||
BBLOCK = 1 # 蓝色方块
|
||||
RBLOCK = 2 # 红色方块
|
||||
HOSPITAL = 3 # 医院
|
||||
BBALL = 4 # 蓝球
|
||||
YBALL = 5 # 黄球
|
||||
TOWER = 6 # 通信塔
|
||||
RBALL = 7 # 红球
|
||||
BASKET = 8 # 球筐
|
||||
MARKL = 9 # 指向标
|
||||
MARKR = 10 # 指向标
|
||||
SPILLAR = 11 # 小柱体 (红色)
|
||||
MPILLAR = 12 # 中柱体 (蓝色)
|
||||
LPILLAR = 13 # 大柱体 (红色)
|
||||
SIGN = 14 # 文字标牌
|
||||
TARGET = 15 # 目标靶
|
||||
SHELTER = 16 # 停车区
|
||||
BASE = 17 # 基地
|
||||
|
||||
class label_filter:
|
||||
def __init__(self, list_src):
|
||||
self.num = 0
|
||||
self.pos = []
|
||||
self.list = list_src # 获取目标检测输出的接口 (含标签,位置,置信度)
|
||||
# TODO 添加置信度阈值
|
||||
pass
|
||||
def get(self, tlabel):
|
||||
# TODO 循环查找匹配的标签值
|
||||
# TODO 返回对应标签的个数,以及坐标列表
|
||||
return self.num, self.pos
|
||||
def find(self, tlabel):
|
||||
# TODO 遍历返回的列表,有对应标签则返回 True
|
||||
return False
|
||||
def aim_left(self, tlabel):
|
||||
# TODO 如果标签存在,则返回列表中位置最靠左的目标框和中心的偏移值
|
||||
error = 0
|
||||
return error
|
||||
def aim_right(self, tlabel):
|
||||
# TODO 如果标签存在,则返回列表中位置最靠右的目标框和中心的偏移值
|
||||
error = 0
|
||||
return error
|
||||
def aim_near(self, tlabel):
|
||||
# TODO 如果标签存在,则返回列表中位置最近的目标框和中心的偏移值
|
||||
error = 0
|
||||
return error
|
||||
|
||||
Reference in New Issue
Block a user