Refactor main execution flow by enabling task execution based on arrow direction detection. Adjust max_time parameter in centering function for improved responsiveness. Update task 5's movement commands and section handling for clarity and consistency.

This commit is contained in:
havoc420ubuntu 2025-05-31 13:53:54 +00:00
parent 4200fb8aeb
commit 0979d10415
5 changed files with 31 additions and 25 deletions

View File

@ -7,7 +7,7 @@ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from utils.log_helper import LogHelper, get_logger, section, info, debug, warning, error, success, timing
from utils.detect_dual_track_lines import detect_dual_track_lines
def center_on_dual_tracks(ctrl, msg, max_time=15, max_deviation=8.0, observe=False,
def center_on_dual_tracks(ctrl, msg, max_time=3, max_deviation=8.0, observe=False,
mode=11, gait_id=26, step_height=[0.06, 0.06],
estimated_track_distance=1.0,
detect_height=0.4,
@ -18,7 +18,7 @@ def center_on_dual_tracks(ctrl, msg, max_time=15, max_deviation=8.0, observe=Fal
参数:
ctrl: Robot_Ctrl 对象包含里程计信息
msg: robot_control_cmd_lcmt 对象用于发送命令
max_time: 最大调整时间()默认为15
max_time: 最大调整时间()默认为3
max_deviation: 允许的最大偏差(像素)当偏差小于此值时认为已居中默认为8像素
observe: 是否输出中间状态信息和可视化结果默认为False
mode: 控制模式默认为11

28
main.py
View File

@ -51,29 +51,29 @@ def main():
# run_task_1(Ctrl, msg)
# arrow_direction = run_task_2(Ctrl, msg, xy_flag=False)
# arrow_direction = 'right' # TEST
arrow_direction = 'right' # TEST
# info(f"识别到箭头方向: {arrow_direction}", "info")
# run_task_2_5(Ctrl, msg, direction=arrow_direction)
# if arrow_direction == 'left':
# run_task_4(Ctrl, msg)
# else:
# run_task_3(Ctrl, msg)
if arrow_direction == 'left':
run_task_4(Ctrl, msg)
else:
run_task_3(Ctrl, msg)
# turn_degree_v2(Ctrl, msg, degree=90, absolute=True)
# run_task_5(Ctrl, msg, direction=arrow_direction)
turn_degree_v2(Ctrl, msg, degree=90, absolute=True)
run_task_5(Ctrl, msg, direction=arrow_direction)
# if arrow_direction == 'left':
# run_task_3_back(Ctrl, msg)
# else:
# run_task_4_back(Ctrl, msg)
if arrow_direction == 'left':
run_task_3_back(Ctrl, msg)
else:
run_task_4_back(Ctrl, msg)
# run_task_2_5_back(Ctrl, msg, direction=arrow_direction)
run_task_2_5_back(Ctrl, msg, direction=arrow_direction)
run_task_2_back(Ctrl, msg)
# run_task_2_back(Ctrl, msg)
run_task_1_back(Ctrl, msg)
# run_task_1_back(Ctrl, msg)
except KeyboardInterrupt:
print("\n程序被用户中断")

View File

@ -494,16 +494,16 @@ def run_task_3(ctrl, msg):
section('任务3上下坡', "启动")
info('开始执行任务3...', "启动")
turn_degree_v2(ctrl, msg, 90, absolute=True)
# go_lateral(ctrl, msg, distance=0.2, speed=0.1, observe=True)
# turn_degree_v2(ctrl, msg, 90, absolute=True)
# go_lateral(ctrl, msg, distance=0.2, speed=0.1, observe=True) # TEST
section('任务3-1up', "开始")
pass_up_down(ctrl, msg)
# section('任务3-1up', "开始")
# pass_up_down(ctrl, msg)
turn_degree_v2(ctrl, msg, 90, absolute=True)
center_on_dual_tracks(ctrl, msg, max_time=15, max_deviation=10.0, observe=False)
section('任务3-2yellow stop', "开始")
# section('任务3-2yellow stop', "开始")
go_until_yellow_area(ctrl, msg, yellow_ratio_threshold=0.15, speed=0.3)
# 原地站立3秒

View File

@ -81,7 +81,7 @@ def run_task_4_back(ctrl, msg):
def go_straight_until_sky_ratio_below(ctrl, msg,
sky_ratio_threshold=0.2,
step_distance=0.5,
max_distance=2,
max_distance=5,
speed=0.3
):
"""

View File

@ -210,7 +210,6 @@ def run_task_5(ctrl, msg, direction='left', observe=False):
"""
走向卸货
"""
center_on_dual_tracks(ctrl, msg, max_time=15, max_deviation=10.0, observe=False)
section('任务5-1直线移动并扫描二维码', "移动")
@ -242,7 +241,7 @@ def run_task_5(ctrl, msg, direction='left', observe=False):
ctrl.base_msg.lie_down(wait_time=3000)
ctrl.base_msg.stand_up()
# section('任务5-4返回', "移动")
section('任务5-4返回', "移动")
go_straight(ctrl, msg, distance=-1, speed=0.5, observe=observe)
move_to_hori_line(ctrl, msg, target_distance=1.3, observe=observe)
@ -251,7 +250,14 @@ def run_task_5(ctrl, msg, direction='left', observe=False):
go_straight(ctrl, msg, distance=1.2, speed=0.5, observe=observe)
section('任务5-6转弯', "转弯")
arc_turn_around_hori_line(ctrl, msg, angle_deg=90, target_distance=0.3, observe=observe)
arc_turn_around_hori_line(ctrl, msg, angle_deg=-90, target_distance=0.3, observe=observe)
section('任务5-5上货', "卸货")
ctrl.base_msg.lie_down(wait_time=3000)
ctrl.base_msg.stand_up()
section('任务5-7返回', "移动")
turn_degree_v2(ctrl, msg, degree=-90, absolute=True)
# 返回移动和扫描结果
return go_success, res['qr_result']