Skip to content

Thrust Calibration

Ajay Shankar edited this page Mar 14, 2021 · 2 revisions

Freyja works on physical/world units for various quantities, but few autopilots have any mechanism to command thrust as a direct input (in Newtons). For generic AscTec and Pixhawk builds, one has to scale the thrust to fall within a suitable (normalised) range. Freyja uses a single unitless launch argument, thrust_scaler, to control this scaling. This parameter is used only in the communication node; the output of the controller node is always in unscaled physical units.

Do this one-time setup to determine the value of thrust_scaler for your vehicle with its battery type.

NOTE: things that can necessitate a different value of thrust_scaler include (but are not limited to): different type of battery, different type of motors or propellers, different airframe, different flight controller board or firmware etc. Basically anything that alters the "thrust response" of the vehicle. This does not include adding payloads (you should adjust total_mass parameter for that).

Basic Outline

  1. Start with setting the correct total_mass, and set thrust_scaler to 200 (default). Set bias_compensation to "off".
  2. Send a hover target, with the target altitude (pd) to a known and safe value (say -0.75m).
  3. Pick a fresh battery, and fly in computer mode.
  4. Adjust thrust_scaler in steps of about 20 until close enough:
    • decrease if the vehicle settles below the target altitude
    • increase if the vehicle hovers above the target altitude.

Recommended/Typical values

  • 3-cell LiPo, standard DJI Flamewheel build := 100
  • 4-cell LiPo, standard DJI Flamewheel build := 200
  • 3-cell LiPo, standard AscTec Hummingbird := 20

Expert

If feasible, use a thrust stand to determine the accurate thrust response for the motor. The thrust_scaler parameter is meant to normalise the Freyja-generated thrust (Newtons) to a particular range (usually 0..1). You are looking for a scaling factor that converts the 0..1 range to correct range in Newtons ("what number within 0..1 produces X Newtons collective?").

Clone this wiki locally