aboutsummaryrefslogtreecommitdiff
path: root/maps/readme.md
diff options
context:
space:
mode:
Diffstat (limited to 'maps/readme.md')
-rw-r--r--maps/readme.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/maps/readme.md b/maps/readme.md
new file mode 100644
index 0000000..85f94b0
--- /dev/null
+++ b/maps/readme.md
@@ -0,0 +1,32 @@
+# maps
+
+this directory contains map files. a .map file contains a binary representation
+of a maze, and can be sent to the robot over the wireless serial connection.
+map files have the following structure: first the width of the map as an
+unsigned 16-bit integer, then the height of the map also as an unsigned 16-bit
+integer. the rest of the file is the map content in reading order, where each
+byte contains two (nibble) map tiles. tiles are stored in the most significant
+portion of the byte first, so the last byte of a map file containing an uneven
+amount of tiles would look like `0x?0`.
+
+example tile:
+
+```
+┌───────┐ ┌───┬───┐
+│ b │ │ │ │
+│ a c │ │ └───┤
+│ d │ │ │
+└───────┘ └───────┘
+ 0bDCBA 0b0110 (0x6)
+```
+
+garbage python scripts for generating and viewing these maps are included.
+[this](https://www.figma.com/file/GUKV1am9sqWpPoes9h8Ram/robotrun?node-id=0%3A1)
+figma file can be used to create a map, and then read out the hexadecimal
+notation for the map. google drive ocr works well enough to read out the red
+characters if you turn off path visibility in the figma document. figma also
+allows pdf export so you can print the maps, but the tiles are 24x24 pixels,
+not robot-sized (one tile is supposed to have about the same width and height
+as the robot's diameter). but maybe i'll make another script that stitches
+together the map tiles as svg, and then converts the whole thing to pdf.
+