feat: 增加扫黑除暴假动作
This commit is contained in:
85
subtask.py
85
subtask.py
@@ -2,7 +2,7 @@ from enum import Enum
|
||||
from loguru import logger
|
||||
from utils import label_filter
|
||||
from utils import tlabel
|
||||
from utils import LLM
|
||||
# from utils import LLM
|
||||
from utils import LLM_deepseek
|
||||
from utils import CountRecord
|
||||
import utils
|
||||
@@ -769,7 +769,8 @@ class get_rball():
|
||||
# 靠近塔
|
||||
by_cmd.send_angle_scoop(20)
|
||||
# 上古參數
|
||||
by_cmd.send_distance_y(-15, 50) # 50 # 70
|
||||
# by_cmd.send_distance_y(-15, 50) # 50 # 70
|
||||
by_cmd.send_distance_y(-15, 40) # 50 # 70
|
||||
# 6_9 參數
|
||||
# by_cmd.send_distance_y(-15, 35)
|
||||
# time.sleep(2)
|
||||
@@ -1236,8 +1237,10 @@ class put_hanoi3():
|
||||
def nexec(self):
|
||||
pass
|
||||
def after(self):
|
||||
by_cmd.send_angle_storage(20)
|
||||
by_cmd.send_position_axis_x(1, 150)
|
||||
var.pid_turning.set(cfg["put_hanoi3"]["pid_kp"], cfg["put_hanoi3"]["pid_ki"], cfg["put_hanoi3"]["pid_kd"])
|
||||
var.pid_turning.set(cfg["put_hanoi3"]["pid_kp"] - 0.2, cfg["put_hanoi3"]["pid_ki"], cfg["put_hanoi3"]["pid_kd"])
|
||||
# FIXME 此处 -0.2 在 `2e6ce3e1f7d326d6ce8110855e2339ebc03ab2da` 前没有
|
||||
|
||||
# 应急避险 第一阶段 找目标牌
|
||||
class move_area1():
|
||||
@@ -1257,7 +1260,7 @@ class move_area1():
|
||||
car_stop()
|
||||
time.sleep(1)
|
||||
# calibrate_new(tlabel.SIGN, offset = 8, run = True)
|
||||
calibrate_new(tlabel.SIGN, offset = -30, run = True, run_speed = 5)
|
||||
calibrate_new(tlabel.SIGN, offset = -1, run = True, run_speed = 5)
|
||||
time.sleep(1)
|
||||
|
||||
by_cmd.send_position_axis_x(1, 50)
|
||||
@@ -1290,11 +1293,14 @@ class move_area1():
|
||||
return
|
||||
logger.error(f"OCR 检出字符:\"{var.llm_text}\"")
|
||||
|
||||
llm_bot.request(var.llm_text)
|
||||
|
||||
|
||||
if len(var.llm_text) < 3:
|
||||
if len(var.llm_text) < 5:
|
||||
var.skip_llm_task_flag = True
|
||||
return
|
||||
else:
|
||||
# 当有效字符大于 5 个文字时 才请求大模型
|
||||
llm_bot.request(var.llm_text)
|
||||
else:
|
||||
# 不需要文字识别 直接使用传入的参数执行 action
|
||||
pass
|
||||
@@ -1356,6 +1362,7 @@ class move_area2():
|
||||
return 5000
|
||||
return False
|
||||
def add_item(self, item):
|
||||
# FIXME 没有对传入参数的范围进行校验,如果出现单位错误,可能会导致无法回位的问题
|
||||
try:
|
||||
return self.action_dict[item.get('action')](item.get('time'))
|
||||
except:
|
||||
@@ -1449,22 +1456,22 @@ class move_area2():
|
||||
speed_time_y = int(abs(_dis_y) * 750)
|
||||
by_cmd.send_distance_x(10 * direct_x, speed_time_x)
|
||||
by_cmd.send_distance_y(10 * direct_y, speed_time_y)
|
||||
time.sleep(max(speed_time_x, speed_time_y) / 100) #FIXME 除以 100 是否正确
|
||||
time.sleep(max(speed_time_x, speed_time_y) / 150) #FIXME 除以 100 是否正确
|
||||
return True
|
||||
def go_left_rotate(self, _time):
|
||||
self.abs_w += math.radians(_time) # 弧度制
|
||||
logger.info(f"向左旋转:[目标位置 ({self.abs_y:.2f}, {self.abs_x:.2f}) - 角度 {math.degrees(self.abs_w)} ]")
|
||||
self.sum_rotate_angle -= _time
|
||||
speed_time = int(abs(_time) * 7.25)
|
||||
by_cmd.send_angle_omega(30, speed_time)
|
||||
speed_time = int(abs(_time) * 3.8)
|
||||
by_cmd.send_angle_omega(50, speed_time)
|
||||
time.sleep(speed_time / 200 + 0.5)
|
||||
return True
|
||||
def go_right_rotate(self, _time):
|
||||
self.abs_w -= math.radians(_time) # 弧度制
|
||||
logger.info(f"向右旋转:[目标位置 ({self.abs_y:.2f}, {self.abs_x:.2f}) - 角度 {math.degrees(self.abs_w)} ]")
|
||||
self.sum_rotate_angle += _time
|
||||
speed_time = int(abs(_time) * 7.25)
|
||||
by_cmd.send_angle_omega(-30, speed_time)
|
||||
speed_time = int(abs(_time) * 3.8)
|
||||
by_cmd.send_angle_omega(-50, speed_time)
|
||||
time.sleep(speed_time / 200 + 0.5)
|
||||
return True
|
||||
def go_sleep(self, _time):
|
||||
@@ -1497,12 +1504,23 @@ class move_area2():
|
||||
calibrate_new(tlabel.SHELTER, offset = 30, run = True)
|
||||
time.sleep(0.5)
|
||||
if cfg_move_area == None:
|
||||
resp = None
|
||||
# 调用大模型 然后执行动作
|
||||
try:
|
||||
resp = llm_bot.get_command_json(var.llm_text)
|
||||
logger.info(f"llm 返回原数据 {resp}")
|
||||
logger.info("llm 阻塞等待服务器返回中")
|
||||
start_wait_time = time.perf_counter()
|
||||
while True:
|
||||
if llm_bot.success_status.isSet():
|
||||
resp = llm_bot.response.choices[0].message.content
|
||||
logger.info(f"llm 返回原数据 {resp}")
|
||||
break
|
||||
now_time = time.perf_counter()
|
||||
if llm_bot.error_status.isSet() or (now_time - start_wait_time) > 6.5 :
|
||||
logger.error("大模型 llm_bot 超时,跳过任务")
|
||||
return
|
||||
|
||||
except:
|
||||
logger.error("大模型 llm_bot 超时,跳过任务")
|
||||
logger.error("大模型 llm_bot 未知错误,跳过任务")
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -1583,15 +1601,40 @@ class kick_ass():
|
||||
by_cmd.send_position_axis_z(30, 80)
|
||||
by_cmd.send_position_axis_x(1, 130)
|
||||
|
||||
# 移动到中间
|
||||
by_cmd.send_distance_x(10, 295)
|
||||
time.sleep(4)
|
||||
if self.target_person == 1:
|
||||
target_distance = self.pos_gap1
|
||||
by_cmd.send_distance_x(-10, 150)
|
||||
time.sleep(1.5)
|
||||
car_stop()
|
||||
elif self.target_person == 2:
|
||||
by_cmd.send_distance_x(-10, 50)
|
||||
time.sleep(1.5)
|
||||
car_stop()
|
||||
elif self.target_person == 3:
|
||||
by_cmd.send_distance_x(10, 50)
|
||||
time.sleep(1.5)
|
||||
car_stop()
|
||||
else:
|
||||
target_distance = self.pos_gap1 + (self.target_person - 1) * self.pos_gap2 + (self.target_person - 1) * 10
|
||||
by_cmd.send_distance_x(10, target_distance)
|
||||
|
||||
logger.info(f"target distance {target_distance}")
|
||||
time.sleep(1.5 + (self.target_person - 1) * 0.7 )
|
||||
car_stop()
|
||||
by_cmd.send_distance_x(10, 150)
|
||||
time.sleep(1.5)
|
||||
car_stop()
|
||||
|
||||
# 先移动到第一个人的地方 假动作
|
||||
# by_cmd.send_distance_x(10, self.pos_gap1)
|
||||
# time.sleep(1.5)
|
||||
|
||||
# if self.target_person == 1:
|
||||
# # target_distance = self.pos_gap1
|
||||
# pass
|
||||
# else:
|
||||
# # target_distance = self.pos_gap1 + (self.target_person - 1) * self.pos_gap2 + (self.target_person - 1) * 10
|
||||
# target_distance = (self.target_person - 1) * self.pos_gap2 + (self.target_person - 1) * 10
|
||||
# by_cmd.send_distance_x(10, target_distance)
|
||||
# logger.info(f"target distance {target_distance}")
|
||||
# time.sleep(1.5 + (self.target_person - 1) * 0.7 )
|
||||
# car_stop()
|
||||
|
||||
# by_cmd.send_angle_claw_arm(225)
|
||||
# time.sleep(0.5)
|
||||
|
||||
Reference in New Issue
Block a user