29 Commits

Author SHA1 Message Date
3fdd6ae9d1 Merge to main for Scrimmage 2025-10-09 12:01:36 -05:00
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
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
4b765b0e9d Update missions/M8_5.py 2025-10-07 14:18:07 +00:00
2eca0d7d24 Initial commit
Mission Run #5
2025-10-07 14:18:07 +00:00
8949003351 Mission 9 not in use 2025-10-06 18:10:02 +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
6931731ae1 Update LINEUPS.md 2025-10-04 00:09:55 +00:00
d172c70fe2 THIS CODE IS OUTDATED!!! DO NOT USE!!! 2025-10-03 23:28:16 +00:00
efcc011733 Initial Commit 2025-10-03 23:16:03 +00:00
28bb3fa48c Merge pull request 'Pull from Vickram to dev' (#2) from Vickram_dev_ into dev
Reviewed-on: #2
2025-10-03 21:26:08 +00:00
7ba2453152 Merge pull request 'Pull from Johannes_Dev to dev' (#3) from Johannes_Dev into dev
Reviewed-on: #3
2025-10-03 21:25:54 +00:00
c690ae451b Update members/Vickram.txt 2025-09-29 02:15:06 +00:00
d309b0098f '{Johannes}' 2025-09-12 20:32:12 +00:00
37fb0a647e Add members/Ayaan.txt 2025-09-12 20:29:44 +00:00
e895fd1d2c Add members/Vickram.txt 2025-09-12 20:28:02 +00:00
70e09fb42b Add members/Carlos.txt 2025-09-12 20:27:44 +00:00
ee0b8eb6a0 Update README.md 2025-09-10 13:28:54 +00:00
a745ed8c79 Merge pull request 'WIP - Test Merge ( dev to main )' (#1) from dev into main
Reviewed-on: #1
2025-09-02 02:32:19 +00:00
12 changed files with 249 additions and 16 deletions

15
LINEUPS.md Normal file
View File

@@ -0,0 +1,15 @@
# Lineups
## These are the line-up positions for the robot game for various missions.
- Mission Run #1 (Mission #1) [Right/Blue Home] - The left yellow part of the right arm attachment is positioned with its right edge on the 5th thin line from the left. Note that this is NOT positioned from the back of the robot.
- Mission Run #2 (Send Over) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 1st thin line from the top. Note that the 0th line is the one that is not part of the curve.
- Mission Run #3 (Sand mission) [Right/Blue Home] - The robot should be lined up on the vertical edge of the left home. The robot's left side should be positioned on the 1/2th thin line from the bottom.
- Mission Run #4 (Boat mission) [Left/Red Home] - The robot should be lined up on the vertical edge of the left home. The robot's right side should be positioned on the 2nd thick line from the bottom.
- Mission Run #5 (Bautism) [Left/Red Home] - The robot's left edge should be positioned at the 1st thick, 2nd thin line from the left.
- Mission Run #6 (Not-so-heavy Lifting) [Right/Blue Home] - The robot's right edge should be positioned at the 1st thick from the right.

View File

@@ -14,7 +14,11 @@ This repository contains the Pybricks code for Team 65266 Lego Dynamics' robot f
## Code Structure
<<<<<<< HEAD
Files are the different runs we do, with each run consisting of one or multiple mission completions. Another script combines these files into a "master" file, which then adds the color sensor to start logic.
=======
Files are the different runs we do, with each run consisting of one or multiple mission completions. Another script combines these files into a "master" file, which then adds the color-sensor-to-start logic.
>>>>>>> dev
## How to Use
@@ -22,4 +26,11 @@ Load the master file into PyBricks, then send it over to the robot. Then you hol
## License
GNU General Public License
<<<<<<< HEAD
You can take inspiration from our code, but you can't take our exact code.
=======
You can take inspiration from our code, but you can't take our exact code.
Read LICENSE for more information.
>>>>>>> dev

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)

0
members/Ayaan.txt Normal file
View File

0
members/Carlos.txt Normal file
View File

7
members/Johannes Normal file
View File

@@ -0,0 +1,7 @@
I am Johannes
I am the building manager for the team. I like making art.
Parthiv, Diddy will touch you tonight.

1
members/Vickram.txt Normal file
View File

@@ -0,0 +1 @@
Hello my name is Vickram and I like coding and video games.

45
missions/Bautism.py Normal file
View File

@@ -0,0 +1,45 @@
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, run_task
hub = PrimeHub()
# Initialize both motors. In this example, the motor on the
# left must turn counterclockwise to make the robot go forward.
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B)
arm_motor = Motor(Port.D, Direction.CLOCKWISE)
arm_motor_left= Motor(Port.C, Direction.CLOCKWISE)
# Initialize the drive base. In this example, the wheel diameter is 56mm.
# The distance between the two wheel-ground contact points is 112mm.
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=68.8, axle_track=180)
print('The default settings are: ' + str(drive_base.settings()))
drive_base.settings(300,1000,300,750)
# Optionally, uncomment the line below to use the gyro for improved accuracy.
drive_base.use_gyro(True)
async def main():
await drive_base.straight(519)
await arm_motor_left.run_angle(300, -100)
await arm_motor_left.run_angle(300, 500)
await drive_base.straight(180)
await drive_base.turn(-37)
await drive_base.straight(50)
await arm_motor.run_angle(300, -400)
await drive_base.straight(-150)
await drive_base.turn(135)
await drive_base.straight(50)
await arm_motor.run_angle(300, 400)
await drive_base.straight(-75)
await arm_motor.run_angle(300, 300)
await drive_base.turn(-50)
await drive_base.straight(162)
await arm_motor.run_angle(100, -200)
await drive_base.straight(30)
await arm_motor.run_angle(50,-500)
run_task(main())

View File

@@ -30,14 +30,14 @@ async def main():
await right_arm.run_angle(5000,-500, Stop.HOLD)
await drive_base.turn(-20)
await drive_base.straight(275)
await drive_base.straight(277)
await drive_base.turn(20)
await drive_base.straight(63)
await drive_base.straight(65)
await drive_base.turn(-30)
right_arm.run_angle(50,500)
await drive_base.turn(45)
await drive_base.straight(-135)
await drive_base.straight(-145)
await drive_base.turn(-60)
await drive_base.straight(90)
await left_arm.run_angle(1000,-450)
@@ -45,5 +45,5 @@ async def main():
await left_arm.run_angle(1000,450)
await drive_base.straight(10)
await drive_base.turn(35)
await drive_base.straight(-500)
await drive_base.straight(-600)
run_task(main())

View File

@@ -1,4 +1,5 @@
# ---JOHANNES---
# THIS CODE IS NOT USED ANYMORE AND SHOULD NOT BE USED!!!!!!
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor, ForceSensor
from pybricks.parameters import Button, Color, Direction, Port, Side, Stop

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']})")