VOXL Vision PX4 Features

The voxl-vision-px4 package provides the software interface between the VOXL and PX4 flight controller. It enables GPS-denied position control via Visual Inertial Odometry (VIO), Visual Obstacle Avoidance (VOA), and AprilTag detection.

This project is under active development and currently provides the following features and functions:

Table of contents

  1. Telemetry Proxy
  2. VIO
  3. VOA
  4. Offboard Mode
  5. Time Synchronization
  6. ADS-B
  7. Local Telemetry Socket

Telemetry Proxy

Serve as a telemetry proxy between WiFi/LTE and PX4’s UART telemetry port. This is always enabled and removes the need to use a USB cable or Serial Radio Link for telemetry data.

Configure this by providing the IP address of your ground station computer in the “qgc_ip” field of the config file.

    "qgc_ip":                   "",


Send Visual Inertial Odometry data to PX4 for accurate position control (VIO). The VIO algorithm is provided by the ModalAI Vision Library and is sent to PX4 over UART in the form of VISION_POSITION_ESTIMATE packets.

This can be turned on and off with the “en_vio” field in the configuration file. For debugging purposes you may also enable “en_send_vio_to_qgc” which will send data back to QGC which can be viewed in QGC’s mavlink inspector or logged.

    "en_vio":                   true,
    "en_send_vio_to_qgc":       false,


Provides Visual Ostacle Avoidance data from stereo cameras (VOA) enabled by the ModalAI Vision Library. Enabling this feature only sends obstacle distance data to PX4 in the form of OBSTACLE_DISTANCE mavlink messages.

Currently, it is still PX4 providing the collision prevention algorithm and requires PX4 builds after October 24th to work. You will also need to set the CP_DIST PX4 parameter to a distance greater than 0 for Collision prevention to work. We suggest 1.5 meters for close-quarters indoor flight testing.

You will also need to calibrate your stereo cameras.

More information available at https://docs.px4.io/master/en/computer_vision/collision_prevention.html

    "en_voa":                   true,
    "en_send_voa_to_qgc":       false,

Offboard Mode

Sends a mavlink_msg_set_position_target_local_ned packet with position 2m above takeoff point. PX4 will fly to this position when put in offboard mode.

    "en_offboard_control":      true

Time Synchronization

Synchronizes time between PX4 and VOXL by responsing to PX4’s timsync mavlink packets. PX4 then filters and maintains an offset between the VOXL’s application’s processor time (clock_monotonic) and PX4’s time.


Automatic Dependent Surveillance-Broadcast (ADS-B) receive and relay to Ground Controller

    "en_adsb":                  false,
    "adsb_uart_bus":            7,
    "adsb_uart_baudrate":       57600,

Local Telemetry Socket

Work in Progress, more info soon.

    "en_local_telem_socket":    false,
    "local_telem_socket_port":  50075,