Generic Setup

Guide for the setup steps to get ACO working on new installs on the VOXL2

Hardware setup

ACO is designed to run on ModalAI's VOXL2. It can operate either with an external flight controller (such as a Pixhawk) or using VOXL-PX4.

When using an external flight controller, connect the VOXL2 to the FCU using a serial connection from the VOXL2 to a TELEM port on the flight controller.

Connect the LightWare SF45 to a USB port on the VOXL2.

Mounting the SF45

The LightWare SF45 is a rotating 2D LiDAR. For best performance with ACO, mount the LiDAR either upright or upside down on the drone (the SF45 automatically detects its orientation). Ensure that the front of the LiDAR is perfectly aligned with the front of the drone and that its field of view is free from obstructions such as propellers or other payloads.

Install ACO on the VOXL2

To purchase the ACO software license, use this linkarrow-up-right.

Then use the Ascend Installerarrow-up-right to install ACO on the drone with the purchased license.

VOXL2 Setup

The next few steps would execute commands on the VOXL2, so make sure to have ssh/adb access.

1. VOXL2 setup

Enable and start voxl-mavlink-server

Enable and start voxl-vision-hub

2. Edit VOXL2 config files

Open voxl-mavlink-server.conf

Edit the following:

  • en_external_uart_ap : true

  • primary_static_gcs_ip: <ip_address_of_gcs_laptop>

  • autopilot_uart_bus : Set this value based on which UART bus is connected to the FCU. Refer to the VOXL2 expansion board table in the ModalAI documentation and select the corresponding UART bus value from herearrow-up-right.

    • This parameter tells the VOXL MAVLink server which UART interface is connected to the flight controller.

Save and exit: !qa

With the updated parameters, restart voxl-mavlink-server :

Open voxl-vision-hub.conf

Edit the following:

  • "en_localhost_mavlink_udp": true

Restart voxl-vision-hub :

3. FCU Setup

This step involves configuring the flight controller, the component responsible for the drone’s overall control and behavior.

If using external Flight Controller

If you are using an external flight controller such as a Pixhawk 6C, connect the VOXL2 to the Pixhawk via a serial connection on a TELEMx port.

Next, we have to configure the serial port to connect to the MAVLink Server:

  • Connect to the FCU over QGC

  • Go to the Parameters list, and edit the MAV_x_CONFIG to TELEMx , where TELEMx corresponds to the TELEM port the VOXL2 was connected to the FCU

  • Next, edit the SER_TELx_BAUD to 921600 (It should be by default)

circle-info

It should be noted that without setting MAV_x_CONFIG , the SER_TELx_BAUD parameter does not show up

For example, lets say the VOXL2 is connected to the TELEM2 port, then we could set MAV_1_CONFIG to TELEM2 , and so SER_TEL2_BAUD would need to be set to 921600 (It should be by default)

If using voxl-px4

If you are using the native voxl-px4 flight controller running on the VOXL2:

  • Make sure voxl-px4 is enabled and running:

  • Verify that it is active and running:

  • Edit the following sections in /etc/ascend/ascend-co.config

  • "MAVLink":

    • mavlink_port : "udp://0.0.0.0:14557"

Verify communication

To verify if the VOXL2 and FCU are connected, run this on the VOXL2:

-k switch shows debug info on messages coming FROM the FCU

You should be getting a stream of data like so:

4. Edit ascend-co.config file

Edit the following sections in /etc/ascend/ascend-co.config

  • "MAVLink":

    • gcs_ip: <ip_address_of_gcs_laptop>

    • system_id: <MAV Sys ID of the FCU>

  • View the output logs with:

You should see something similar to:

On QGC, you should see a status text Obstacle Avoidance System ONLINE.

Moreover, you should start to see the SF45 start spinning.

Foxglove

Install foxglove from here: https://foxglove.dev/downloadarrow-up-right.

On the Foxglove Dashboard page, click Open Connection.

Replace localhost with the drones IP address (Make sure to be on the same local network), and you should see the points populate in a 3D environment.

Edit PX4 Params

Make sure the SYS_VEHICLE_RESP is ≥ 0.5

  • This is to make sure the drone stops aggressively and in time

  • If the landing speed is aggressive, decrease the MPC_Z_VEL_MAX_DN to 1m/s

Diagnostics

  • Disconnecting the SF45 from the USB cable should result in a status text error on QGC

If this does not show up, that means the drone is not connected to QGC

  • Double check the entered QGC IP address

  • Ensure you are able to ping QGC from the device and vice versa

  • Restart the device and QGC

Final things to keep in mind

  • As a final setup step, please set SYS_VEHICLE_RESP = 0.5 and MPC_Z_VEL_MAX_DN = 1 m/s in the PX4 parameters. These values help the drone stop in time, without them we’ve seen it get a bit too close to obstacles.

  • The software is active only in Mission mode and while airborne (it’s inactive during takeoff, landing, or in other modes).

  • For a first test flight, we recommend the following settings:

    • Plan a simple mission, where the drone goes 15m forward, then returns to its take off point

    • Set the mission speed to 1 m/s.

    • Try holding a stick or any movable object in front of the drone at some distance after takeoff to see the system react.

    • Once that looks good, you can test it against a wall or tree. We’ve thoroughly tested this on our end and don’t expect issues, but it’s always good to take extra safety precautions when running it in a new environment.

circle-exclamation
  • Note that the SF45 can detect dust particles, so in dusty conditions, it might falsely flag fine dust as an obstacle.

Last updated