Skip to content

Commit c96eb9a

Browse files
committed
Start of design doc
1 parent d2bc58f commit c96eb9a

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

docs/design.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Overarching thoughts (North Star)
2+
* The primary purpose for Blocks is to be an easier environment for students to program robots.
3+
* Students should be able to program in Blocks without any experienced software mentor help.
4+
* This means that reducing confusion in blocks is more important than being 1:1 mapping to Python
5+
* For ease of use, we are ok with not being able to do everything in Blocks you can do in Python.
6+
* You should be able to make a competitive robot using Blocks
7+
* Our goal is to rasie the floor, not lower the ceiling
8+
* Programming in Blocks is still programming. You can make logic errors and programs that don't work and have errors
9+
* Some students will move on from Blocks to text based languages
10+
* Students that want to do more than they can in Blocks can export from Blocks and use that as a starting point for their own Python coding.
11+
12+
# Intentional Limitations (for simplicity)
13+
* Each blockly workspace goes to one Python file (module) and can only contain one class
14+
* The only type of methods that can be created are class methods
15+
* All variables created in blockly will be class instance variables
16+
17+
# Design thoughts
18+
## OpModes
19+
* An OpMode can be either Autonomous or Teleop
20+
* An OpMode can be marked as Disabled or Enabled
21+
* An OpMode has access to the Robot class
22+
## Robot
23+
* There should be one robot class that is shared between all OpModes
24+
* A robot has zero or more mechanisms
25+
## Mechanisms
26+
* Every actuator is a mechanism
27+
* Every sensor is a mechanism
28+
* A mechansim can be created by the student and can have zero or more submechanisms
29+
* Example: A claw could have a servo (to open and close) and a range sensor (to determine when something is in the claw)

0 commit comments

Comments
 (0)