diff --git a/competition_codes/sectionals/sectional_main_experimental.py b/competition_codes/sectionals/sectional_main_experimental.py index 715d7ba..64952ff 100644 --- a/competition_codes/sectionals/sectional_main_experimental.py +++ b/competition_codes/sectionals/sectional_main_experimental.py @@ -50,8 +50,24 @@ async def monitor_distance(): # Small delay to prevent overwhelming the sensor await wait(50) -# Experimental - Removed forge and who lived here part -async def Run1(): # From M8_5.py +""" +Run#1 +- Removed forge and who lived here part +- What's on sale + Silo +- Green Key +""" +async def Run1(): + await solve_whats_on_sale() + await solve_silo() + + # return to base + await drive_base.straight(-90) + #await drive_base.turn(-100) + await drive_base.arc(200,None,-300) + drive_base.stop() + +async def solve_whats_on_sale(): + right_arm.run_angle(500,30) left_arm.run_angle(500,90) await drive_base.straight(200) @@ -69,6 +85,7 @@ async def Run1(): # From M8_5.py await drive_base.turn(-20) await drive_base.turn(15) +async def solve_silo(): await drive_base.straight(-173) await drive_base.turn(45) await drive_base.straight(120) @@ -81,91 +98,86 @@ async def Run1(): # From M8_5.py await right_arm.run_angle(4000,-30, Stop.HOLD) right_arm.run_angle(4000,30, Stop.HOLD) - # await drive_base.turn(-35) - # await drive_base.straight(297) - # await drive_base.turn(63) - # await drive_base.straight(170) - # await drive_base.turn(-80) - # await drive_base.straight(87) - # await drive_base.turn(-15) +""" +Run#2 +- This to solve forge, who lived here and heavy lifting combined +- Red Key +""" +async def Run2(): + await solve_forge() + await solve_heavy_lifting() + await solve_who_lived_here() - await drive_base.straight(-90) - #await drive_base.turn(-100) - await drive_base.arc(200,None,-300) + # return to base + await drive_base.arc(-500,None,600) drive_base.stop() - -async def Run2(): # experiment with ferris wheel for silo - await drive_base.straight(410) - #await drive_base.turn(-20) - #await drive_base.straight(536) - #await drive_base.turn(60, Stop.HOLD) - #await drive_base.straight(30) - for i in range(3): - await right_arm.run_angle(10000, -360) - await drive_base.straight(-400) -# Experimental - This to solve forge, who lived here and heavy lifting combined -async def Run2_1(): +async def solve_forge(): await right_arm.run_target(50,50) - #await right_arm.re - #await multitask( await right_arm.run_angle(50,-30) await drive_base.arc(350,113, None) - #) + await drive_base.straight(20) await drive_base.turn(-60) await drive_base.straight(-47) +async def solve_heavy_lifting(): await right_arm.run_angle(500,-90) # arm down await wait(100) await drive_base.turn(20) # turn right a little bit - #await wait(100) await right_arm.run_angle(500,140) #arm up await drive_base.turn(-20) #reset position +async def solve_who_lived_here(): await drive_base.straight(50) await drive_base.turn(-15) await drive_base.straight(50) await drive_base.turn(-25) - await drive_base.straight(-50) await drive_base.turn(-100) + +""" +Run#2.1 +- Alternate solution for Forge, Who lived here and Heavy Lifting combined +- Light Blue Key +- Different alignment +""" +async def Run2_1(): + await solve_forge_straight() + await solve_heavy_lifting() + await solve_who_lived_here() + + # return to base await drive_base.arc(-500,None,600) drive_base.stop() +async def solve_forge_straight(): + await right_arm.run_target(50,50) + await right_arm.run_angle(50,-30) + await drive_base.straight(700) + # await drive_base.turn(-30) + # await drive_base.straight(20) + await drive_base.turn(-40) + await drive_base.straight(-30) -async def Run3(): # tip the scale.py - right_arm.run_angle(500,30) - await drive_base.straight(800) - await drive_base.turn(90) - await drive_base.straight(86) - await right_arm.run_angle(800,-140) - await right_arm.run_angle(900,140) +""" +Run#3 +- Combined angler artifacts and tip the scale +- Yellow key +""" +async def Run3(): + await solve_angler_artifacts() + await solve_tip_the_scale() - await drive_base.straight(-100) - await drive_base.turn(90) - await drive_base.straight(800) - drive_base.stop() - - -async def Run4(): # From Send_Over_Final.py - - await drive_base.straight(920) - await drive_base.turn(-90,Stop.HOLD) - await drive_base.straight(65) - #Solve - drive_base.turn(-10) - await left_arm.run_angle(10000,-3000) - await drive_base.straight(-110) - await drive_base.turn(90) - + #cross over to red side await multitask( drive_forward(), monitor_distance() ) -async def Run_3_4(): #combined angler artifacts and tip the scale - experimental + +async def solve_angler_artifacts(): await drive_base.straight(920) await drive_base.turn(-90,Stop.HOLD) await drive_base.straight(65) @@ -173,9 +185,11 @@ async def Run_3_4(): #combined angler artifacts and tip the scale - experimental drive_base.turn(-10) await left_arm.run_angle(10000,-3000) await drive_base.straight(-110) + await drive_base.turn(90) await drive_base.arc(-150,-100, None) +async def solve_tip_the_scale(): await drive_base.straight(135) await right_arm.run_angle(800,-150) await right_arm.run_angle(900,150) @@ -186,27 +200,48 @@ async def Run_3_4(): #combined angler artifacts and tip the scale - experimental await drive_base.arc(10,-47, None) #await drive_base.turn(-23, Stop.COAST_SMART) - await multitask( - drive_forward(), - monitor_distance() - ) + +""" +Run #4 +- Solves the Mineshaft explorer + 2/3 Surface Brush + 1/3 Map Reveal +- Blue Key +""" +async def Run4(): + await solve_brush_reveal() + await solve_mineshaft_explorer() + + #return to base + await drive_base.straight(-875) -# Add Rishi's code here -async def Run5(): +async def solve_brush_reveal(): await drive_base.straight(700) await drive_base.turn(-20) await drive_base.straight(110) await drive_base.straight(-210) + +async def solve_mineshaft_explorer(): await drive_base.turn(63) await drive_base.straight(130) await right_arm.run_angle(1000, -90) await drive_base.straight(84) await right_arm.run_angle(300, 90) - await drive_base.straight(-875) -# Add - Adi's code here +""" +Run#5 +- Solves Salvage Operation + Statue Rebuild +- Orange Key +""" async def Run6(): + await solve_salvage_operation() + await solve_statue_rebuild() + + #return to base + await drive_base.straight(-60) + await drive_base.turn(80) + await drive_base.straight(-900) + +async def solve_salvage_operation(): await drive_base.straight(500) await right_arm.run_angle(300,500) await drive_base.straight(-75) @@ -217,6 +252,8 @@ async def Run6(): await drive_base.straight(-200) await drive_base.turn(-15) await drive_base.straight(350) + +async def solve_statue_rebuild(): await drive_base.turn(-100) await drive_base.straight(-80) await left_arm.run_angle(500, -900) @@ -224,71 +261,33 @@ async def Run6(): await drive_base.straight(50) await left_arm.run_angle(700, 250) await drive_base.turn(30) - await drive_base.straight(-60) - await drive_base.turn(80) - await drive_base.straight(-900) -async def arc_back(radius, angle): - #print(radius, angle) - drive_base.arc(radius, angle, None) - -async def lift_right_arm(): - await right_arm.run_angle(100, -90) - -# This is a refactor of Salvage operation mission without wait and realignment -async def Run6_1(): #experimental - - await drive_base.straight(500) - await right_arm.run_angle(100,90) - await drive_base.straight(-75) - - #ack back while raising arm - await multitask ( - lift_right_arm(), - arc_back(-215, -45) - ) - - #align to raise the ship - await drive_base.straight(-150) - await drive_base.turn(-45) - - #await drive_base.straight(-350) - #await wait(1000) - - #Solve ship - await drive_base.straight(800) - await drive_base.straight(-200) - await drive_base.turn(-15) - await drive_base.straight(350) - await drive_base.turn(-100) - await drive_base.straight(-80) - await left_arm.run_angle(500, -700) - await drive_base.straight(50) - await drive_base.straight(50) - await left_arm.run_angle(700, 250) - await drive_base.turn(15) - await drive_base.straight(-80) - await drive_base.turn(80) - await drive_base.straight(-900) +""" +Run#6 +- Solve 2/3 Site Markings +- Run only if have time +- Purple Key +""" +async def Run6_7(): # experiment with ferris wheel for Site Markings + solve_site_mark_1() + solve_site_mark_2() + #return to base + await drive_base.straight(-300) drive_base.stop() -async def Run6_7(): # experiment with ferris wheel for Site Markings +async def solve_site_mark_1(): await drive_base.straight(500) - await right_arm.run_angle(100, -10) await wait(50) - #await multitask ( - #lift_right_arm() - #await right_arm.run_angle(100, 10) - #await arc_back(-215, -140) await drive_base.straight(-300) await drive_base.arc(-150, -140, None) - + +async def solve_site_mark_2(): await drive_base.straight(-300) await wait(50) await right_arm.run_angle(50, 50) - #await drive_base.straight(-300) - drive_base.stop() + + # Function to classify color based on HSV def detect_color(h, s, v, reflected): @@ -323,27 +322,27 @@ async def main(): print(color) - if color == "Red": - print('Running Mission 3') - await Run2_1() #red - elif color == "Orange": - print('Running Mission 6') - await Run6_1() #orange - elif color == "Yellow": - print('Running Mission 4') - await Run_3_4() #yellow - elif color == "Green": + if color == "Green": print('Running Mission 1') - await Run1() #green - vertically - elif color == "Blue": - print('Running Mission 5') - await Run5() #blue - vertically - elif color == "Purple": + await Run1() + elif color == "Red": print('Running Mission 2') - await Run6_7() #purple - vertically + await Run2() + elif color == "Yellow": + print('Running Mission 3') + await Run3() + elif color == "Blue": + print('Running Mission 4') + await Run4() + elif color == "Orange": + print('Running Mission 5') + await Run5() + elif color == "Purple": + print('Running Mission 6') + await Run6_7() elif color == "Light_Blue": print("Running Mission 2_1") - await Run3() + await Run2_1() else: print(f"Unknown color detected (Hue: {h}, Sat: {s}, Val: {v})") await wait(10)