Maze platform

Overview#

Building off of my work in Rescue Maze, I developed a robotics platform utilizing the same custom-designed PCB to facilitate easy entry into robotics hardware, allowing one to focus on software. By having a powerful microcontroller, there is sufficient processing power available to use modern C++ programming practices with plenty of memory and CPU time to spare. In addition, many sensors are handled without core involvement, allowing the programmer even more processing time to utilize.

Comparison - Pololu Kits#

Table#

PlatformPololu ZumoPololu Balboa
ProcessorSTM32F4ATMega32u4ATMega32u4
Motor driverOn-boardOn-boardOn-board
Motor driver current*1A / 3A1.7A / 1.8A1.7A / 1.8A
EncodersOn-boardOn-boardOn-board
Distance Sensors6 Optional ToF Lasers3 IR ReflectanceNone
Light sensor1 Red-Light Reflectance5 IR ReflectanceNone
AHRS6-Axis Optional9-Axis On-Board9-Axis On-Board
Free IO Pins2008
DisplayOptional Graphic OLED 128x64Optional Character LCD 8x2Optional Character LCD 8x2
I2C Buses111
SPI Buses111
Serial Bus100
Power1 / 2 Cell LiPo6x AA6x AA
Battery SenseYesYesYes
Operating Voltage3.3V5V5V

*: Current shown is per channel, formatted as Continuous / Peak

In depth#

Processor features#

The board uses a powerful Cortex-M4F processor with on-board FPU (floating point unit) and many hardware “peripherals” that make your code execute more efficiently. The FPU, as its name suggests, accelerates floating-point math, making running complex mathematical algorithms (such as those for accurately tracking a robot’s orientation) in real time easy. The hardware peripherals allow for various functions to be performed without the main core (what is running your code) needing to be actively involved. For example, the hardware timers can generate PWM (much like analogWrite on Arduino, but with flexible frequencies), capture pulses (like Arduino’s pulseIn but running continuously in the background), and capture PWM (giving you the duty cycle and period of an incoming PWM signal).

Encoders#

Encoders are a common feature on robots, and it is important that they are implemented to both be accurate and have a low resource usage. While both this platform and the Zumo have built-in encoders, since the Zumo uses an ATMega32u4 (comparable to the ATMega328p used in the Ardunio Uno), the encoders cannot be handled as efficiently as on more powerful processors such as the STM32 on this board or the SAM on the Arduino Due, which are able to use hardware timers to handle encoder counting. This saves CPU time by essentially running it in the background, available for your program to read.

Planned Tiers#

Base#

Consists of only the populated circuit board and chassis plate for mounting Pololu treads. Does not contain any external sensors (sensors not on the circuit board - in other words, only contains encoders and floor reflectance sensor)

Capabilities

  • Basic navigation using on-board encoders

With sensors#

Contains everything from base tier with external sensors and mounting hardware, optimized for maze navigation

Sensors:

  • 6x Time of Flight distance sensor
  • 1x Ultrasonic sensor
  • 1x 6DoF IMU

Capabilities

  • Full maze navigation including position correction
  • Low resolution area mapping

Full#

Contains everything from previous tier and a NanoPi Air with mounting hardware for a laptop webcam

Capabilities

  • Image processing tasks such as letter and landmark recognition
  • Offload intensive processing to the Pi

Ethan Wu

Find me @ethanwu10