aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3898a1f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+### Rubik's Cube Solving Robot
+
+This repository is for a robot that solves the rubik's cube. The idea is that after a scrambled rubik's cube has been places in the robot, an ESP32 (master) gets the cube's state (using 2 cameras, looking at opposite corners, each seeing 3 faces). The data is then sent to a more powerful computer (slave) which puts the data through [kociemba's algorithm](http://kociemba.org/cube.htm). The solution is then sent back to the master for servos to execute and (hopefully) solve the cube.
+
+#### Master-Slave Relationship
+
+The data is sent through the default UART connection between the master and the slave in the simple RCTP protocol (Rubik's Cube Transfer Protocol) (see `include/rctp.h`) (Note that both machines have to have the same endianess since the protocol is binary)
+
+### Building
+
+The projects can all be built separately, but only the implementation of kociemba's algorithm (`kociemba/`) can be useful on its own.
+
+- **`kociemba/`:** built using `GNU make` (`kociemba/README.md` for more details)
+
+- **`slave/`:** built using `GNU make` (`slave/README.md` for more details)
+
+ - **`master/`:** in contrast with the other parts, the master is built using`esp-idf`'s build system (`master/README.md` for more details)
+
+The Makfile in the root of this repo is a wrapper around the other build systems, so just use:
+
+- **`make all/kociemba/slave/master`** to build all or a single one (with nondebug flags)
+
+- **`make run [FLASH=1] [PORT=ttyUSBn]`** to build and run the slave, and when `FLASH` is set the master program is flashed, and when `PORT` is set, the given port is tried instead of the default `ttyUSB0`
+
+Note that building `master/` using the wrapper requires the `esp-idf` export script to be sourced.
+
+### References
+
+- <http://kociemba.org/cube.htm>
+- <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/index.html>