Set up

Airframe and motors

The Motors page draws your airframe to scale, with every motor where it really is, and lists the same motors in a table beside the drawing: wire them, move them or spin one on the bench. The same page sets the frame size, the positions of the flight controller and GPS antenna, and the ESC output protocol.

The Motors setup page: a quadrotor airframe drawn to scale with numbered motors, their MAIN output pins and spin direction arrows.
Every motor at its real distance from the centre of gravity, with its output pin and spin direction.

The Setup pages

Setup in the left rail opens a vehicle card and one tile per job: First Setup, Calibration, Radio Control, PID Tuning, Motors, Safety & Sensors, Battery & Power, Telemetry Radio, RTK GPS, Remote ID, Parameters, Firmware and Video. Each page reads only the parameters it shows, so it opens in about a second even over a slow radio, and only shows what the connected firmware actually has. A setting your board does not carry is one row fewer, never an error. A page opened without a vehicle says Not connected beside its buttons and reads itself as soon as the link is up.

Every field is written the moment you change it, one at a time, and counts as written only when the aircraft confirms it. All of them are read only while the aircraft is armed.

First Setup

A new controller needs a handful of pages in a fixed order. First Setup is the first tile on the Setup page and walks through them, hosting the real pages one at a time under a short explanation of what to do there:

  1. Firmware. Flash PX4 or ArduPilot, including onto a board that has none yet.
  2. Aircraft. Choose what the controller is flying. PX4 offers the generic airframes (quadcopter, hexarotor and octocopter in X and plus layouts, plane, flying wing, three VTOL types and two rovers). ArduPilot Copter offers the same multirotors as a frame class and type. ArduPilot Plane and Rover pick their type with the firmware, so there is nothing to choose. The choice is written when you press Use this aircraft type, and the controller has to be rebooted to apply it. PX4 also resets its parameters to that airframe's defaults, which is why a controller that already has a type asks first.
  3. Frame and motors. Motor order and spin, and where the controller and the GPS sit on the drawing.
  4. Calibration. The controller's rotation first, then gyro, accelerometer, compass and level.
  5. Radio, Safety, Battery. Optional in the sense that you can leave each one, but a failsafe nobody set is a failsafe nobody has.
  6. Finish. What is done and what is open.

The row of steps is a map, not a gate: open any of them at any time. A step is marked done when the controller says so (an aircraft type is chosen, the sensors carry a calibration) or when you went through it. Everything else on the pages works as it does outside the wizard.

When Corvus offers it

Corvus offers the wizard in a dialog when a controller looks fresh: no airframe is selected (PX4), or no sensor was ever calibrated. A controller that is merely missing one calibration is not offered it, since that would be a dialog on every connect; the wizard still shows the step as open. It is also offered for a board with no firmware, which opens on the Firmware step.

  • Never unasked. The dialog offers, you choose. Not now lasts until the next connection. Do not ask again is remembered for that controller only, so the next fresh board is still offered the wizard. Finishing the wizard counts as the same.
  • Not on a simulator. A link over UDP or TCP is never offered it, because a simulator carries no calibrations the way a board does. Open it from the tile whenever you like.
  • Not while armed, and not on top of another dialog.

The drawing

Every motor sits at its real distance from the centre of gravity, with its number, its output and a spin direction arrow, so "the front left one" is something you point at instead of work out. The body behind the motors follows the airframe class:

  • arms for a multirotor,
  • a wing and tail for a plane,
  • booms and a wing for a quadplane,
  • a rotor disc and tail boom for a helicopter,
  • a chassis for a rover.

A rotor that pushes rather than lifts (a VTOL's pusher, a plane's tractor) is drawn with a thrust arrow instead of a boom, read from its own axis parameters. PX4 stores no wingspan, so the outline is schematic and the page says so; only the motors are measured.

Motor outputs

Every motor is one row of the table beside the drawing, so the whole airframe is read at once and two motors are compared down a column. Each row sets:

  • Which output drives it: one list of every pin on the board, MAIN, AUX, DroneCAN, or the simulated ESCs of a Gazebo SITL airframe.
  • Its position and rotation direction.
  • The limits of its output: minimum, maximum, disarmed and failsafe values, which current PX4 keeps per output rather than per header.

Clicking a row or a motor on the drawing selects that motor in both places. It is the one the motor test spins.

Picking a pin that already has a motor on it swaps the two, which is the one click fix for crossed motors. Picking a pin that drives a servo is refused by name rather than silently taken. A motor wired to nothing is flagged on the drawing.

The airframe type and the motor count sit on the airframe card, next to the picture they change. Adding or removing a motor, at the top of the table, redraws it.

Frame size and sensor positions

How far apart the motors are, measured the way a frame is named: the diagonal (a "450" frame is 450 mm motor to motor), front to back, and left to right. Changing one rescales every lift rotor at once and keeps the layout's shape.

The flight controller and the GPS antenna are drawn on the same airframe at their offset from the centre of gravity, and set under the frame size, one row per sensor with forward, right and down. PX4 1.18 moved the antenna offset to one set per receiver and ArduPilot 4.6 renamed it; the page writes whichever the aircraft has. ArduPilot mixes a fixed layout per frame type, so there the frame size is explained rather than offered.

Motor test

Spin one motor on the bench to find out which one it is.

Remove the propellers first. The button stays disabled until you confirm that you have.

  • Refused while armed.
  • The throttle stops at half.
  • The duration is limited on the vehicle, so the motor stops even if the link dies.
  • Leaving the page stops a running motor.

On PX4 the test uses MAV_CMD_ACTUATOR_TEST; ArduPilot uses DO_MOTOR_TEST. The page picks the right one.

Output protocol

DShot150, DShot300, DShot600, OneShot or a plain PWM rate, per timer group, and the DShot minimum. Only what the connected firmware reports is shown, so the page is correct across firmware versions and across both flight stacks rather than offering settings your board does not have.

ESC calibration

On PX4, ESC calibration sits behind a safety confirmation, because the motors are driven to full output during it.

Remove the propellers first. ESC calibration is refused while armed.

ArduPilot calibrates ESCs by setting ESC_CALIBRATION and rebooting with the throttle high, which is not something a ground station should put behind a button, so it is not offered there. The page says so.

Check values

A write can be lost on a radio or refused by the aircraft. Check values, on this page and on Safety & Sensors, PID Tuning, Radio Control, Battery & Power and Remote ID, reads every field back from the aircraft (never from Corvus's own copy), writes again whatever you set that did not stick, and redraws the page from what the aircraft holds now, with the outcome listed field by field.

Suggest a change to this page