11 Commits

3 changed files with 111 additions and 33 deletions

View File

@@ -45,35 +45,45 @@ async def monitor_distance():
# New Section
async def Run1(): # From M8_5.py
left_arm.run_angle(1000, 300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
right_arm.run_angle(1000,450)
left_arm.run_angle(500,80)
await drive_base.straight(200)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await right_arm.run_angle(5000,500, Stop.HOLD)
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-40)
await drive_base.straight(325)
await left_arm.run_angle(500,-80)
await drive_base.turn(-20)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(65)
await drive_base.straight(-100)
await drive_base.straight(50)
await left_arm.run_angle(500,170)
await drive_base.straight(-270)
await drive_base.turn(40)
await drive_base.straight(135)
left_arm.run_angle(1000,670)
await right_arm.run_angle(5000,-450, Stop.HOLD)
await right_arm.run_angle(5000,450, Stop.HOLD)
await right_arm.run_angle(5000,-450, Stop.HOLD)
await right_arm.run_angle(5000,450, Stop.HOLD)
await right_arm.run_angle(5000,-450, Stop.HOLD)
right_arm.run_angle(5000,450, Stop.HOLD)
await drive_base.turn(-35)
await drive_base.straight(300)
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)
await drive_base.straight(-120)
await drive_base.turn(-100)
await drive_base.straight(300)
await drive_base.turn(-45)
await drive_base.straight(500)
await drive_base.turn(-30)
right_arm.run_angle(70,500)
await drive_base.turn(45)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-150)
await left_arm.run_angle(1000,450)
await drive_base.straight(27.67) #turns back to solve market place
await drive_base.turn(90) #Will solve market place
await drive_base.straight(-450)
await drive_base.turn(70)
await drive_base.straight(600)
async def Run2(): # From Heavy_lifting_final.py
await drive_base.straight(200)
@@ -166,7 +176,6 @@ async def Run6():
await drive_base.straight(-60)
await drive_base.turn(80)
await drive_base.straight(-900)
# Function to classify color based on HSV
def detect_color(h, s, v, reflected):
if reflected > 4:

View File

@@ -26,13 +26,13 @@ async def main():
await drive_base.turn(-70)
await drive_base.straight(900)
await drive_base.turn(115)
await drive_base.turn(110)
await drive_base.straight(75)
await drive_base.straight(33)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(700,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(66)
await drive_base.turn(54)
await drive_base.straight(7)
await left_arm.run_angle(560,-390) #going down
@@ -41,8 +41,8 @@ async def main():
await left_arm.run_angle(-410,-400) #lift a little bit
await drive_base.turn(-46.5) #ma din din din dun
await drive_base.turn(-40)
await drive_base.turn(25)
await drive_base.straight(900)
run_task(main())

View File

@@ -0,0 +1,69 @@
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.tools import run_task, multitask
from pybricks.tools import wait, StopWatch
from pybricks.robotics import DriveBase
from pybricks.hubs import PrimeHub
# Initialize hub and devices
hub = PrimeHub()
color_sensor = ColorSensor(Port.F)
# Color Settings
# https://docs.pybricks.com/en/latest/parameters/color.html
print("Default Detected Colors:", color_sensor.detectable_colors())
# Custom color Hue, Saturation, Brightness value for Lego bricks
Color.MAGENTA = Color(315,100,60)
Color.BLUE = Color(240,100,100)
Color.CYAN = Color(180,100,100)
Color.RED = Color(350, 100, 100)
LEGO_BRICKS_COLOR = [
Color.BLUE,
Color.GREEN,
Color.WHITE,
Color.RED,
Color.YELLOW,
Color.MAGENTA,
Color.NONE
]
magenta_counter = 0
stable_color = None
real_color = None
#Update Detectable colors
color_sensor.detectable_colors(LEGO_BRICKS_COLOR)
print(f'Yellow:{Color.YELLOW} : {Color.YELLOW.h}, {Color.YELLOW.s}, {Color.YELLOW.v}')
print("Updated Detected Colors:", color_sensor.detectable_colors())
async def main():
while True:
global magenta_counter, stable_color, real_color
color_reflected_percent = await color_sensor.reflection()
print("Reflection: ", color_reflected_percent)
if color_reflected_percent > 15:
color_detected = await color_sensor.color()
if color_detected == Color.MAGENTA:
magenta_counter += 1
else:
magenta_counter = 0
stable_color = color_detected
# Only accept magenta if it's been stable for a while - usually triggers before other colors so we gotta do this :|
if magenta_counter > 10:
stable_color = Color.MAGENTA
if stable_color != Color.MAGENTA:
stable_color = await color_sensor.color()
real_color = stable_color
#if(color_detected != Color.NONE):
# return
print("Magenta counter: ", magenta_counter)
if real_color is not None:
print(f'Detected color: {real_color} : {real_color.h}, {real_color.s}, {real_color.v}')
else:
print("No valid color detected yet.")
await wait(50)
run_task(main())