feat: add TaskType enumeration and integrate task handling in main program; adjust STONE_DISTANCE in task_4
This commit is contained in:
		
							parent
							
								
									e249627a3e
								
							
						
					
					
						commit
						7470426680
					
				
							
								
								
									
										46
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								main.py
									
									
									
									
									
								
							@ -32,11 +32,22 @@ from task_5.task_5 import run_task_5
 | 
			
		||||
from base_move.turn_degree import turn_degree_v2
 | 
			
		||||
from base_move.go_to_xy import go_to_x_v2, go_to_y_v2
 | 
			
		||||
from utils.log_helper import info
 | 
			
		||||
from task_4.pass_bar import pass_bar
 | 
			
		||||
 | 
			
		||||
pass_marker = True
 | 
			
		||||
TIME_SLEEP = 3000  # TODO 比赛时改成 5000
 | 
			
		||||
 | 
			
		||||
from enum import Enum, auto
 | 
			
		||||
 | 
			
		||||
class TaskType(Enum):
 | 
			
		||||
    TASK = auto()           # 默认任务
 | 
			
		||||
    PASS_BAR = auto()       # TODO 测试低头高度;可以修改代码,和 RED-BAR 一块测试。
 | 
			
		||||
    YELLOW_LIGHT = auto()   # TODO 设定 yellow threshold
 | 
			
		||||
    RED_BAR = auto()        # TODO 设定 red threshold
 | 
			
		||||
    UP_AND_DOWN = auto()    # TODO 调整其完成从上坡到下坡
 | 
			
		||||
    STONE_ROAD = auto()     # TODO 调整其完成从石板路到石板路
 | 
			
		||||
 | 
			
		||||
TASK = TaskType.STONE_ROAD
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    rclpy.init()  # 新增:在主程序中统一初始化 ROS 2 上下文
 | 
			
		||||
    Ctrl = Robot_Ctrl()
 | 
			
		||||
@ -65,13 +76,32 @@ def main():
 | 
			
		||||
        Ctrl.base_msg.stand_up()
 | 
			
		||||
        Ctrl.base_msg.stop()  # BUG 垃圾指令 for eat # INFO 但是正式比赛或许也有用
 | 
			
		||||
 | 
			
		||||
        # TEST #1: pass-bar
 | 
			
		||||
        pass_bar(Ctrl, msg)
 | 
			
		||||
        Ctrl.base_msg.stand_up()
 | 
			
		||||
        Ctrl.base_msg.stop()  # BUG 垃圾指令 for eat # INFO 但是正式比赛或许也有用
 | 
			
		||||
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
        if TASK == TaskType.PASS_BAR:
 | 
			
		||||
            from task_4.pass_bar import pass_bar
 | 
			
		||||
            # TEST #1: pass-bar
 | 
			
		||||
            pass_bar(Ctrl, msg)
 | 
			
		||||
        elif TASK == TaskType.YELLOW_LIGHT: # TODO image
 | 
			
		||||
            from task_3.task_3 import go_until_yellow_area
 | 
			
		||||
            turn_degree_v2(Ctrl, msg, degree=-90, absolute=True)
 | 
			
		||||
            go_until_yellow_area(Ctrl, msg)
 | 
			
		||||
        elif TASK == TaskType.RED_BAR:
 | 
			
		||||
            from task_3.task_3 import go_until_red_area
 | 
			
		||||
            go_until_red_area(Ctrl, msg)
 | 
			
		||||
        elif TASK == TaskType.UP_AND_DOWN:
 | 
			
		||||
            from task_3.task_3 import go_straight_with_enhanced_calibration
 | 
			
		||||
            go_straight_with_enhanced_calibration(Ctrl, msg, distance = 5, speed=0.5, observe=False, mode=11, gait_id=3, step_height=[0.21, 0.21])
 | 
			
		||||
        elif TASK == TaskType.STONE_ROAD:
 | 
			
		||||
            from task_3.task_3 import pass_stone
 | 
			
		||||
            turn_degree_v2(Ctrl, msg, degree=-90, absolute=True)
 | 
			
		||||
            Ctrl.base_msg.stand_up()
 | 
			
		||||
            Ctrl.base_msg.stop()  # BUG 垃圾指令 for eat # INFO 但是正式比赛或许也有用
 | 
			
		||||
            pass_stone(Ctrl, msg, distance = 4, observe=False)
 | 
			
		||||
        else:
 | 
			
		||||
            pass
 | 
			
		||||
        
 | 
			
		||||
        if TASK != TaskType.TASK:
 | 
			
		||||
            # 如果不是 task 类型,直接返回
 | 
			
		||||
            return
 | 
			
		||||
        
 | 
			
		||||
        # TAG task - 1
 | 
			
		||||
        run_task_1(Ctrl, msg, time_sleep=TIME_SLEEP)
 | 
			
		||||
 | 
			
		||||
@ -247,6 +247,7 @@ def go_straight_with_enhanced_calibration(ctrl, msg, distance, speed=0.5, observ
 | 
			
		||||
                                         mode=11, gait_id=3, step_height=[0.21, 0.21]):
 | 
			
		||||
    """
 | 
			
		||||
    控制机器人在石板路上沿直线行走,使用视觉校准和姿态传感器融合来保持直线
 | 
			
		||||
    现在用于 task-3 的上下坡
 | 
			
		||||
    
 | 
			
		||||
    参数:
 | 
			
		||||
    ctrl: Robot_Ctrl 对象
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ logger = get_logger("任务4")
 | 
			
		||||
 | 
			
		||||
observe = True
 | 
			
		||||
 | 
			
		||||
STONE_DISTANCE = 5.0  # TODO 距离参数需要微调
 | 
			
		||||
STONE_DISTANCE = 4.0  # TODO 距离参数需要微调
 | 
			
		||||
RED_RATIO_THRESHOLD = 0.35  # TODO 红色区域比例阈值需要微调
 | 
			
		||||
 | 
			
		||||
def run_task_4(ctrl, msg):
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user