feat: 新增标签过滤器类
This commit is contained in:
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.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.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_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.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']))
|
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)
|
# self.by_cmd.send_speed_x(7)
|
||||||
pid_out = self.pid1.get(self.lane_error)
|
pid_out = self.pid1.get(self.lane_error)
|
||||||
# self.by_cmd.send_speed_omega(pid_out)
|
# self.by_cmd.send_speed_omega(pid_out)
|
||||||
self.lane_socket.send_string("infer")
|
# self.lane_socket.send_string("infer")
|
||||||
80
subtask.py
80
subtask.py
@@ -1,5 +1,7 @@
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
from utils import label_filter
|
||||||
|
from utils import tlabel
|
||||||
import time
|
import time
|
||||||
|
|
||||||
# 任务类
|
# 任务类
|
||||||
@@ -73,7 +75,16 @@ class task_queuem(task):
|
|||||||
# 人员施救
|
# 人员施救
|
||||||
class get_block():
|
class get_block():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测红/蓝方块
|
||||||
|
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
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -81,6 +92,12 @@ class get_block():
|
|||||||
# 紧急转移
|
# 紧急转移
|
||||||
class put_block():
|
class put_block():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测医院
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.HOSPITAL)
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -88,6 +105,12 @@ class put_block():
|
|||||||
# 整装上阵
|
# 整装上阵
|
||||||
class get_bball():
|
class get_bball():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测黄球
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.YBALL)
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -95,6 +118,12 @@ class get_bball():
|
|||||||
# 通信抢修
|
# 通信抢修
|
||||||
class up_tower():
|
class up_tower():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测通信塔
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.YBALL)
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -102,6 +131,12 @@ class up_tower():
|
|||||||
# 高空排险
|
# 高空排险
|
||||||
class get_rball():
|
class get_rball():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测红球
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.RBALL)
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -109,13 +144,40 @@ class get_rball():
|
|||||||
# 派发物资
|
# 派发物资
|
||||||
class put_bball():
|
class put_bball():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测通信塔
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.BASKET)
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# 物资盘点
|
# 物资盘点
|
||||||
class put_hanoi():
|
class put_hanoi1():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测左右转向标识
|
||||||
|
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
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -123,6 +185,14 @@ class put_hanoi():
|
|||||||
# 应急避险
|
# 应急避险
|
||||||
class move_area():
|
class move_area():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测标志牌
|
||||||
|
# TODO 如何确保在都检测标志牌的情况下,和下一个任务进行区分
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.SIGN)
|
||||||
|
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
pass
|
||||||
@@ -130,6 +200,14 @@ class move_area():
|
|||||||
# 扫黑除暴
|
# 扫黑除暴
|
||||||
class kick_ass():
|
class kick_ass():
|
||||||
def find():
|
def find():
|
||||||
|
# 目标检测标志牌
|
||||||
|
# TODO 如何确保在都检测标志牌的情况下,和上一个任务进行区分
|
||||||
|
filter = label_filter(None)
|
||||||
|
ret1, list1 = filter.get(tlabel.SIGN)
|
||||||
|
|
||||||
|
if ret1 > 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
return False
|
return False
|
||||||
def exec():
|
def exec():
|
||||||
pass
|
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