From aa4621ed5577c865364b76509f2f9b8c693cbb11 Mon Sep 17 00:00:00 2001 From: havoc420ubuntu <2993167370@qq.com> Date: Wed, 14 May 2025 11:25:44 +0000 Subject: [PATCH] task-1 #1 --- base_move/move_base_hori_line.py | 29 ------------ main.py | 7 +-- res/path/test/edge_img.png | Bin 58998 -> 58387 bytes task_1/task_1.py | 78 ++++--------------------------- 4 files changed, 13 insertions(+), 101 deletions(-) diff --git a/base_move/move_base_hori_line.py b/base_move/move_base_hori_line.py index 4852718..2fd8512 100644 --- a/base_move/move_base_hori_line.py +++ b/base_move/move_base_hori_line.py @@ -268,35 +268,6 @@ def move_to_hori_line(ctrl, msg, image, target_distance=0.1, observe=False, imag if observe: print(f"移动完成,通过里程计计算的移动距离: {distance_moved:.3f}米") - # 如果提供了图像处理器,则使用视觉进行最终验证 - if image_processor is not None: - # 等待机器人完全停止 - time.sleep(0.5) - - # 获取新图像并重新检测横向线 - new_image = image_processor.get_image() - if new_image is not None: - edge_point, edge_info = detect_horizontal_track_edge(new_image, observe=observe) - - if edge_point is not None and edge_info is not None: - final_distance = calculate_distance_to_line(edge_info, camera_height) - - if final_distance is not None: - if observe: - print(f"最终到横向线的视觉距离: {final_distance:.3f}米, 目标距离: {target_distance:.3f}米") - - distance_error = abs(final_distance - target_distance) - - # 如果距离误差较大且需要精确定位,可以考虑进行小幅度的微调 - if distance_error > 0.05 and distance_error < 0.2: - if observe: - print(f"进行微调以达到精确距离") - - # 递归调用自身进行微调,但不再使用图像验证以避免无限循环 - return move_to_hori_line(ctrl, msg, new_image, target_distance, observe, None) - - return distance_error < 0.1 # 如果误差小于10厘米,则认为成功 - # 如果没有提供图像处理器或图像验证失败,则使用里程计数据判断 return abs(distance_moved - abs(distance_to_move)) < 0.1 # 如果误差小于10厘米,则认为成功 diff --git a/main.py b/main.py index 87ae312..0d64d1b 100644 --- a/main.py +++ b/main.py @@ -33,11 +33,12 @@ def main(): msg.life_count += 1 Ctrl.Send_cmd(msg) Ctrl.Wait_finish(12, 0) - # time.sleep(1) + + # time.sleep(100) # TEST - # run_task_1(Ctrl, msg, image_processor) + run_task_1(Ctrl, msg, image_processor) - run_task_5(Ctrl, msg) + # run_task_5(Ctrl, msg) # time.sleep(100) diff --git a/res/path/test/edge_img.png b/res/path/test/edge_img.png index 63e859a465baef2f6fab9ca6818b828e07a1b860..6ee1058b1d7384929a0c29cad0c57d008db80c18 100644 GIT binary patch literal 58387 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

*wSFeQh$2kvV(X8 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 U1FdKkU=zy1)M`Wey1mE$8>P8xaR2}S diff --git a/task_1/task_1.py b/task_1/task_1.py index a093245..d1df4ff 100644 --- a/task_1/task_1.py +++ b/task_1/task_1.py @@ -1,82 +1,22 @@ import time import cv2 +import sys +import os -def turn_90(ctrl, msg, direction="right"): - msg.mode = 11 - msg.gait_id = 10 - msg.vel_des = [1.1, 0, -1.5 if direction == "right" else 1.5] - msg.duration = 1500 - msg.step_height = [0.06, 0.06] - msg.life_count += 1 - ctrl.Send_cmd(msg) - time.sleep(1.5) +# 添加父目录到路径,以便能够导入utils +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -def turn_right_180(ctrl, msg): - msg.mode = 11 - msg.gait_id = 3 - msg.vel_des = [0.55, 0, -1.0] - msg.duration = 3500 - msg.step_height = [0.06, 0.06] - msg.life_count += 1 - ctrl.Send_cmd(msg) - time.sleep(3.5) - -def go_straight(ctrl, msg, time_ms, fb=True): - msg.mode = 11 - msg.gait_id = 26 - msg.vel_des = [1 if fb else -1, 0, 0] - msg.duration = time_ms - msg.life_count += 1 - ctrl.Send_cmd(msg) - time.sleep(time_ms / 1000) - -def stand_up(ctrl, msg): - msg.mode = 12 # Recovery stand - msg.gait_id = 0 - msg.life_count += 1 - ctrl.Send_cmd(msg) - time.sleep(1.5) - -def down_and_back(ctrl, msg): - # # TAG 趴下 - msg.mode = 7 - msg.gait_id = 1 - msg.duration = 2000 - msg.life_count += 1 - ctrl.Send_cmd(msg) - ctrl.Wait_finish(7, 1) - - stand_up(ctrl, msg) - - go_straight(ctrl, msg, 1500, False) - -def circle_90(ctrl, msg, direction="right"): - msg.mode = 11 - msg.gait_id = 10 - msg.duration = 1000 - msg.vel_des = [0, 0, -2 if direction == "right" else 2] - msg.life_count += 1 - ctrl.Send_cmd(msg) - time.sleep(1) +from base_move.move_base_hori_line import align_to_horizontal_line, move_to_hori_line def run_task_1(ctrl, msg, image_processor): print('Running task 1...') + + # v2 + # align_to_horizontal_line(ctrl, msg, image_processor.get_current_image()) - # 右前方 - turn_90(ctrl, msg) + move_to_hori_line(ctrl, msg, image_processor.get_current_image(), image_processor=image_processor) - # TAG take photo - qrcode_info = image_processor.decode_qrcode() - print(qrcode_info) - # TODO 不同的走向 - turn_right_180(ctrl, msg) - go_straight(ctrl, msg, 200) - down_and_back(ctrl, msg) - - circle_90(ctrl, msg) - - # turn_90(ctrl, msg, 'left')