# Omnicopter

An Omnicopter is a multicopter that can provide thrust in all directions (6 degrees of freedom). This allows it to move in any direction without having to tilt, and it can hover at an arbitrary tilt angle. All of this is achieved by arranging the motor positions and thrust axis in specific ways:


This build follows the original design from Brescianini, Dario, and Raffaello D'Andrea (opens new window).

# Bill of Materials

The components needed for this build are:

Parts List

# Assembly

# Frame

  • Print the 3D parts


    The orientation of the corner pieces matters. You will notice if it's wrong when the angles of the rods are not correct.

  • Cut the rods

  • Test that it all works by connecting the frame pieces together:


  • Place the motors as far out as possible, without the propellers touching the rods.

# Electronics

Solder the peripherals to the flight controller. We used the following assignments:

  • ESCs: the 2 ESCs can be connected directly to the two connectors of the KakuteH7. To avoid conflicts we removed the power pin (right-most pin) from one of the connectors.
  • Telemetry to UART1
  • GPS to UART4
  • RC to UART6 FC closeup


  • Make sure the magnetometer is placed away from power. We ended up placing it to the bottom of the center-piece with a 4cm padding styrofoam.
  • Put some tape on the barometer (without taping the opening!) to avoid any influence from light.
  • We did not glue the frame. It is certainly advisible to do so after initial test flights, but it might work without.

# Software Configuration


First, configure the ESCs to 3D mode (bidirectional). We had issues with the stock ESC settings in 3D mode: when trying to switch direction, a motor sometimes did not start anymore until the ESC was rebooted. So we had to change ESC settings.

To do so, you can use Betaflight on the flight controller and then use pass-through mode and the BL Heli suite (make sure there is an airframe with 8 motors configured in Betaflight). These are the settings:

ESC settings

In particular:

  • set the Motor Direction to Bidirectional Soft
  • increase the Rampup Power to 100% (this is conservative and might reduce efficiency)


Make sure the motors do not overheat with the changed settings.

# PX4

  • Select a generic multicopter airframe
  • Use an arming switch, do not use stick arming
  • Select DShot as output protocol on all eight outputs
  • Configure the motors according to this: Motor Config We used the following convention: the motors are facing the direction of where the axis points to. The spinning direction matches the direction of positive thrust (moving the motor slider up). Make sure to use the right props, as there is a CCW and a CW version.
  • Parameters:
    • Change the desaturation logic for better attitude tracking: set CA_METHOD to 0.
    • Disable failure detection: set FD_FAIL_P and FD_FAIL_R to 0.
  • This file (opens new window) contains all the relevant parameters.

# Video

# Simulation

There is an omnicopter gazebo simulation target:

make px4_sitl gazebo_omnicopter

Gazebo Sim

# Remarks

Some general remarks:

  • The hover throttle is about 30%.
  • The flight time is around 4-5min. This could probably be improved a bit by using larger propellers.