The Wombat robot uses a two-processor architecture. A Raspberry Pi handles high-level logic, vision, networking, and user code. An STM32F427 microcontroller handles everything that requires hard real-time guarantees: motor PWM generation, back-EMF sampling, closed-loop motor control, sensor ADC scanning, and IMU data acquisition. This split is not optional — the Linux scheduler on the Pi cannot provide the microsecond-level timing that back-EMF based position tracking requires.

This section documents the firmware running on the STM32 and the full data pipeline connecting it to user Python code.

Sections

Source Repositories

RepositoryLocation
STM32 firmwareFirmware-Stp/
Pi-side SPI bridgestm32-data-reader/
libstp hardware abstractionlibrary/modules/libstp-platforms/wombat/
raccoon-transport (LCM wrapper)library/raccoon-transport/
Shared SPI protocol headerstm32-data-reader/shared/spi/pi_buffer.h