15 Commits

Author SHA1 Message Date
1e612e2325 Updated license information 2025-10-09 12:23:15 +00:00
4456a5aab4 Merge pull request 'Johannes_Dev' (#9) from Johannes_Dev into dev
Reviewed-on: #9
2025-10-08 23:23:13 +00:00
ec745316e1 Merge pull request 'Vickram_dev_' (#8) from Vickram_dev_ into dev
Reviewed-on: #8
2025-10-08 23:23:08 +00:00
08e0b9a521 Delete missions/Lift2.py 2025-10-08 23:21:43 +00:00
95d7c0c2a3 Add final/1main.py 2025-10-08 23:18:23 +00:00
7e0c3d24c1 Delete Final Combined Codes 2025-10-08 23:14:29 +00:00
f190d38426 Add Final Combined Codes 2025-10-08 23:14:05 +00:00
cd21a73f82 Delete missions/main.py 2025-10-08 23:11:07 +00:00
0fa10194c2 Upload files to "missions"
This is the commit for all code excpet for Rishi's
2025-10-08 22:58:48 +00:00
62b76d44bc Merge pull request 'Add missions/tip the scale.py' (#4) from ayaan_dev into dev
Reviewed-on: #4
2025-10-07 14:23:38 +00:00
cba5cfc368 Merge pull request 'Update utils/combine_runs.py' (#5) from Vickram_dev_ into dev
Reviewed-on: #5
2025-10-07 14:23:26 +00:00
3349e7f20c Merge pull request 'Rishi_dev' (#7) from Rishi_dev into dev
Reviewed-on: #7
2025-10-07 14:18:58 +00:00
4533f952ed Add stuff from Johannes accidental fork 2025-10-07 12:32:40 +00:00
8008dafccf Add missions/tip the scale.py 2025-10-04 01:18:31 +00:00
bb89e01aa1 Update utils/combine_runs.py 2025-10-04 00:32:41 +00:00
5 changed files with 202 additions and 12 deletions

View File

@@ -22,4 +22,7 @@ Load the master file into PyBricks, then send it over to the robot. Then you hol
## License
GNU General Public License
You can take inspiration from our code, but you can't take our exact code.
Read LICENSE for more information.

116
final/1main.py Normal file
View File

@@ -0,0 +1,116 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor
from pybricks.parameters import Port, Stop, Color, Direction
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch, multitask, run_task
import asyncio
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
atarm1 = Motor(Port.E, Direction.COUNTERCLOCKWISE)
atarm2 = Motor(Port.F)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=112)
color_sensor = ColorSensor(Port.C)
drive_base.settings(300, 500, 300, 200)
Color.ORANGE = Color(10, 100, 100)
Color.MAGENTA = Color(321, 100, 86)
async def Run1():
left_arm.run_angle(1000, 300)
right_arm.run_angle(1000,500)
await drive_base.straight(320)
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(-20)
await drive_base.straight(275)
await drive_base.turn(20)
await drive_base.straight(63)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-135)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
await drive_base.straight(-145)
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-500)
async def Run2():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.turn(-100)
await drive_base.straight(-600)
async def Run3():
await drive_base.straight(915)
await drive_base.turn(-90)
await drive_base.straight(60)
await left_arm.run_angle(10000,-15000)
await drive_base.straight(-60)
await drive_base.turn(85)
await drive_base.straight(2000)
async def Run5():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def Run6():
await drive_base.straight(420)
await right_arm.run_angle(300,-100)
await drive_base.straight(-100)
await right_arm.run_angle(300, 100)
await drive_base.straight(-350)
async def main():
if color_sensor.color() == Color.ORANGE:
await Run1()
if color_sensor.color() == Color.GREEN:
await Run2()
if color_sensor.color() == Color.WHITE:
await Run3()
if color_sensor.color() == Color.YELLOW:
await Run5()
if color_sensor.color() == Color.BLUE:
await Run6()
print(f'Detected color: {color_sensor.color()}')
# Main execution loop
while True:
run_task(main())
wait(100)

34
missions/Lift.py Normal file
View File

@@ -0,0 +1,34 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(600,500,300,200)
drive_base.use_gyro(True)
async def main():
await drive_base.straight(200)
await drive_base.turn(-20)
await drive_base.straight(525)
await drive_base.turn(60)
await drive_base.straight(50)
await right_arm.run_angle(2000,1000)
await drive_base.straight(-50)
await drive_base.turn(45)
await drive_base.straight(50)
await right_arm.run_angle(350,-1000)
await drive_base.turn(-100)
await drive_base.straight(-600)
run_task(main())

42
missions/tip the scale.py Normal file
View File

@@ -0,0 +1,42 @@
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch
from pybricks.tools import run_task, multitask
hub = PrimeHub()
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
left_arm = Motor(Port.C, Direction.COUNTERCLOCKWISE)
right_arm = Motor(Port.D)
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
drive_base.settings(300,1000,300,200)
#drive_base.use_gyro(True)
async def main():
left_arm.run_angle(500,200)
right_arm.run_angle(500,200)
await drive_base.straight(70)
await drive_base.turn(-55)
await drive_base.straight(900)
await drive_base.turn(92.5)
await drive_base.straight(75)
await drive_base.straight(21)
await right_arm.run_angle(500,-250)
await right_arm.run_angle(500,250)
await drive_base.turn(55)
await left_arm.run_angle(300,-400)
await drive_base.turn(46.5)
await drive_base.turn(-40)
await drive_base.straight(900)
run_task(main())

View File

@@ -1,5 +1,5 @@
# Guys please use the same setup code and put into the imports for consistency
script_names = ["untitled14.py", "untitled13.py"] # This is a list of the files of the mission runs
script_names = ["Run1.py", "Run2.py", "Run3.py", "Run5.py", "Run6.py"] # This is a list of the files of the mission runs
content = ""
imports = """
from pybricks.hubs import PrimeHub
@@ -72,7 +72,7 @@ function_calls = []
# Define colors properly - one per script
colors = [
'Color.ORANGE', 'Color.GREEN', 'Color.BLACK', 'Color.WHITE',
'Color.ORANGE', 'Color.GREEN', 'Color.WHITE',
'Color.YELLOW', 'Color.BLUE', 'Color.MAGENTA', 'Color.RED', 'Color.BROWN'
]
@@ -96,7 +96,7 @@ for i, f_name in enumerate(script_names):
m.write(func_def)
# Assign one color per script
color_condition = colors[i % len(colors)]
color_condition = colors[i]
function_calls.append({
'name': func_name,
'is_async': is_async,
@@ -120,10 +120,10 @@ with open("main.py", 'a') as m:
m.write(f" await {func_info['name']}()\n")
else:
m.write(f" {func_info['name']}()\n")
m.write(" return # Exit after running one function\n")
m.write(" \n")
# Add a default case
m.write(" # Default case - no matching color detected\n")
m.write(" \n")
m.write(" print(f'Detected color: {color_sensor.color()}')\n")
# Write the main loop
@@ -132,8 +132,3 @@ with open("main.py", 'a') as m:
m.write("while True:\n")
m.write(" run_task(main())\n")
m.write(" wait(100)\n")
print("Script merger completed successfully!")
print("Functions created:")
for func_info in function_calls:
print(f" - {func_info['name']}() triggered by {func_info['color']} (from {func_info['filename']})")