Line maze resolution for an Arduino-based robot.
The robot will follow lines on the floor that form a maze. Mazes can be designed and plotted as shown below. The start location is indicated by a triangle, the goal location is indicated by a square.
The left and right servo motors have a reference signal with a pulse width of 1500 µs, meaning that a control signal of 1500 µs will cause the motor to stand still. Measured wheel rotations per minute (RPM) at different pulse widths are shown in the figure below.
The Arduino compiler includes all source code in the libraries
directory, regardless of what is indicated in header files.
For this reason, source and header files for use on Arduino are in ./src/libraries/<subfolder>
.
Build files and source code for testing and debugging in pure C++ are in ./src/<subfolder>
.
A capacity test with three 16 x 16 matrices runs, but this is approaching the maximum capacity of SRAM. Experiments with larger arrays made the Arduino unresponsive. Next things to look into:
- Check how much data is necessary for implementing an A* based maze solving algorithm.
- Change data type from
int
tobyte
. - Put data in Flash or EEPROM instead of SRAM where possible (abandon dynamic arrays).