VOXL 2 IO Developer Guide
Table of contents
Overview
Hardware

- A battery powers VOXL2 (
M0054) through a Power Module (M0041), and the battery also powers the ESCs/Motors - VOXL2 J19 connects to VOXL2 IO J4 to provide both power and communications using a UART
- VOXL2 IO connects to an RC receiver (either J2 or J3, depending on user’s receiver type)
- VOXL2 IO J1 connects to a PWM breakboard board (
M0022) and ‘communicates’ to the ESCs using PWM, which in turn spin the motors
Software

High Level Idea
VOXL2 runs PX4 and VOXL2 IO runs PX4IO. They share a register map and keep it synchronized. The VOXL2 IO has a control loop that includes mixing, and reacts to updates that are from VOXL2s px4io driver which populates the register map based updates to subscriptions.
Rumning on VOXL2
- On VOXL2 (
M0054), thepx4iodriver runs on the sDSP/SLPI proc - The
px4iodriver creates a bit of a hybrid device which has a few similarities aspwm_outputdevice - The
voxl-px4.configscript starts the detection and configuration process, including loading a mixer, which actually runs on VOXL2 IO (M0065) - The
px4iodriver subscribes to various topics and updates the ‘registers’ on the VOXL2 IO board by sending commands over UART following a simple protocol
Rumning on VOXL2 IO
- Upon bootup, VOXL2 (
M0054) detects the VOXL2 IO (M0065) board, and configures the VOXL2 IO board including loading of a mixer - A control loop takes place, which involves checking various flags, updating status based upon updates from VOXL2, checking for inputs, handling outputs, etc