Skip to content

Commit b6a1864

Browse files
committed
Updated throttle behaviour during takeoff
1 parent 4dbd7bb commit b6a1864

File tree

4 files changed

+33
-16
lines changed

4 files changed

+33
-16
lines changed

plane/source/docs/automatic-takeoff.rst

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,10 @@ ArduPlane 4.0 and later versions.
1212
Basic Instructions
1313
==================
1414

15-
The basic idea of automatic takeoff is for the autopilot to set the
16-
throttle to maximum and climb until a designated altitude is reached. To
17-
cause the plane to execute a takeoff, add a NAV_TAKEOFF command to your
15+
To cause the plane to execute a takeoff, add a NAV_TAKEOFF command to your
1816
mission, usually as the first command. There are two parameters to this
1917
command - the minimum pitch, and the takeoff altitude. The minimum pitch
20-
controls how steeply the aircraft will climb during the takeoff. A value
18+
controls how steeply the aircraft will climb at minimum during the takeoff. A value
2119
of between 10 and 15 degrees is recommended for most aircraft. The
2220
takeoff altitude controls the altitude above home at which the takeoff
2321
is considered complete. Make sure that this is high enough that the
@@ -26,8 +24,8 @@ for a wide range of aircraft.
2624

2725
During takeoff the wings will be held level to within
2826
:ref:`LEVEL_ROLL_LIMIT <LEVEL_ROLL_LIMIT>`
29-
degrees until 5 meters of altitude is reached, gradually allowing more roll until
30-
the normal :ref:`ROLL_LIMIT_DEG<ROLL_LIMIT_DEG>` limit is allowed once 15 meters of altitude is
27+
degrees until :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` (10m by default) meters of altitude is reached, gradually allowing more roll until
28+
the normal :ref:`ROLL_LIMIT_DEG<ROLL_LIMIT_DEG>` limit is allowed once 3x :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` meters of altitude is
3129
reached. This prevents a sharp roll from causing the wings to hit the
3230
runway for ground takeoffs.
3331

@@ -42,6 +40,11 @@ cross-wind.
4240

4341
You should try to launch into the wind whenever possible.
4442

43+
By default, the throttle will be set at :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>`
44+
during all of the climb. For more fine-grained control, please read :ref:`takeoff-throttle`.
45+
Note that the setting of :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` doesn't affect
46+
the throttle in AUTO flight mode.
47+
4548
Hand Launching
4649
==============
4750

@@ -238,8 +241,4 @@ general.
238241
Speed Scaling Issues with no Airspeed Sensor
239242
============================================
240243

241-
Since control effectiveness varies with airspeed, ArduPilot automatically scales the control gains in stabilized modes with airspeed to allow stability at low speeds and to avoid oscillations at high airspeeds. However, when an airspeed sensor is not used, an estimated airspeed based on GPS speed, accelerometer inputs, and position changes is used. During takeoffs into strong head wind, this estimate can be wrong and the gains scaled up, resulting in oscillations during the climb into the wind. Setting :ref:`FLIGHT_OPTIONS<FLIGHT_OPTIONS>` bit 7 to 1, the speed scaling will be limited during the takeoff phase of automatic takeoffs to eliminate oscillations, particularly on tightly tuned vehicles.
242-
243-
Catapult Launch without an Airspeed Sensor
244-
==========================================
245-
Taking off without an airspeed sensor using a catapult may cause less than maximum throttle to be used due to high initial climb rates. For heavy vehicles, this may result in a stall due to the long time constants used in TECS to adjust throttle after the initial launch. The parameter :ref:`TKOFF_THR_MAX_T<TKOFF_THR_MAX_T>` can be used to force maximum throttle for a time, irrespective of climb rates from an initial catapult launch to allow the vehicle to obtain sufficient speed.
244+
Since control effectiveness varies with airspeed, ArduPilot automatically scales the control gains in stabilized modes with airspeed to allow stability at low speeds and to avoid oscillations at high airspeeds. However, when an airspeed sensor is not used, an estimated airspeed based on GPS speed, accelerometer inputs, and position changes is used. During takeoffs into strong head wind, this estimate can be wrong and the gains scaled up, resulting in oscillations during the climb into the wind. Setting :ref:`FLIGHT_OPTIONS<FLIGHT_OPTIONS>` bit 7 to 1, the speed scaling will be limited during the takeoff phase of automatic takeoffs to eliminate oscillations, particularly on tightly tuned vehicles.

plane/source/docs/takeoff-mode.rst

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@ Automatic takeoff can be accomplished either as a mission control command in AUT
99
NAV_TAKEOFF Mission Command
1010
===========================
1111

12-
The takeoff mission command specifies a takeoff pitch and a target altitude. During auto-takeoff
13-
Plane will use the maximum throttle set by the :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>` parameter.
12+
The takeoff mission command specifies a takeoff pitch and a target altitude.
1413
The takeoff mission item is considered complete when the plane has
1514
reached the target altitude specified in the mission. The mission will then execute its normal end of mission behavior if it runs out of commands in the mission list. For Plane, this is RTL.
1615

1716
TAKEOFF Flight Mode
1817
===================
1918

20-
In ArduPlane 4.0 and later, Automatic Takeoff is also a mode itself. When entered, the plane will use maximum throttle as set by the :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>` parameter, climbing with :ref:`TKOFF_LVL_PITCH<TKOFF_LVL_PITCH>` maximum and takeoff roll limits (:ref:`LEVEL_ROLL_LIMIT<LEVEL_ROLL_LIMIT>` ) ,climbing to the :ref:`TKOFF_ALT<TKOFF_ALT>` altitude and proceeding at the initial launch heading until :ref:`TKOFF_DIST<TKOFF_DIST>` from the point where the mode is entered. It will then loiter, as in LOITER mode, at :ref:`TKOFF_ALT<TKOFF_ALT>` altitude until the mode is changed.
19+
In ArduPlane 4.0 and later, Automatic Takeoff is also a mode itself. When entered, the plane will use maximum throttle as set by the :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>` parameter, climbing with :ref:`TKOFF_LVL_PITCH<TKOFF_LVL_PITCH>` maximum and takeoff roll limits (:ref:`LEVEL_ROLL_LIMIT<LEVEL_ROLL_LIMIT>` ), climbing to the :ref:`TKOFF_ALT<TKOFF_ALT>` altitude and proceeding at the initial launch heading until :ref:`TKOFF_DIST<TKOFF_DIST>` from the point where the mode is entered. It will then loiter, as in LOITER mode, at :ref:`TKOFF_ALT<TKOFF_ALT>` altitude until the mode is changed.
2120

2221
Once :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` is reached, or the loiter point distance is reached, maximum throttle and takeoff roll limits (:ref:`LEVEL_ROLL_LIMIT<LEVEL_ROLL_LIMIT>` ) are stopped and normal navigation begins to the loiter point and altitude. Normally, :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` is 5-10 meters and is intended to limit navigation (roll) in order to prevent wing tip ground strikes.
2322

@@ -36,8 +35,27 @@ highly recommended that a compass be enabled and properly configured for
3635
auto takeoff, as takeoff with a GPS heading can lead to poor initial heading
3736
control such that heading can different from the initial heading by tens of degrees during the climb. While this may not be an issue for hand launches, runway takeoffs require a compass for adequate heading control during the takeoff rollout.
3837

39-
4038
If you are using a wheeled aircraft then you should look at the
4139
``WHEELSTEER_*`` PID settings for controlling ground steering. If you
4240
are hand launching or using a catapult you should look at the
43-
``TKOFF_THR_MINACC`` and ``TKOFF_THR_MINSPD`` parameters.
41+
:ref:`TKOFF_THR_MINACC<TKOFF_THR_MINACC>` and :ref:`TKOFF_THR_MINSPD<TKOFF_THR_MINSPD>` parameters.
42+
43+
.. _takeoff-throttle:
44+
45+
TAKEOFF Throttle
46+
================
47+
48+
By default, Plane will set the throttle to :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>` (or if that is 0, to :ref:`THR_MAX<THR_MAX>`) up until it reaches :ref:`TKOFF_ALT<TKOFF_ALT>`.
49+
This behaviour is reflected in the :ref:`TKOFF_OPTIONS<TKOFF_OPTIONS>` bit 0 setting, which by default is 0.
50+
51+
In case more fine-grained throttle control is required, an airspeed sensor must be installed and enabled via the :ref:`ARPSD_USE<ARSPD_USE>` parameter and :ref:`TKOFF_OPTIONS<TKOFF_OPTIONS>` bit 0 must be set to 1.
52+
53+
In this configuration, right after takeoff the throttle is set to :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>` for :ref:`TKOFF_THR_MAX_T<TKOFF_THR_MAX_T>` or until :ref:`TKOFF_LVL_ALT<TKOFF_LVL_ALT>` (whichever lasts longer).
54+
55+
Finally, the throttle will be managed to achieve a controlled climb, ranging between :ref:`TKOFF_THR_MIN<TKOFF_THR_MIN>` and :ref:`TKOFF_THR_MAX<TKOFF_THR_MAX>`.
56+
57+
The difference between these two throttle control options can be seen in the following diagrams:
58+
59+
.. image:: ../images/plane_takeoff_throttle_option_0.png
60+
61+
.. image:: ../images/plane_takeoff_throttle_option_1.png
31.9 KB
Loading
50.5 KB
Loading

0 commit comments

Comments
 (0)