Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Flight Performance VTOL
In this section we want to provide more informations about the whole building process of the Arkbird VTOL used for the Flight Performance Task at IMAV 2017.
In the table stated below we provide our detailed hardware setup.
Basic Firmware Settings
The tailsitter configuration is defined by the following parameters.
|Q_ENABLE||1||0:Disable 1:Enable 2:Enable VTOL AUTO||This enables QuadPlane functionality, assuming multicopter motors start on output 5. If this is set to 2 then when starting AUTO mode it will initially be in VTOL AUTO mode.|
|Q_FRAME_CLASS||10||0:Undefined 1:Quad 2:Hexa 3:Octa 4:OctaQuad 5:Y6 7:Tri 10: TailSitter||Controls major frame class for multicopter component|
Moreover, the servo function must be defined. Be sure, to connect the servos in the correct order to the pins of the flight controller.
|SERVO1_FUNCTION||74||[...] 70:Throttle 71:TrackerYaw 72:TrackerPitch 73:ThrottleLeft 74:ThrottleRight 75:tiltMotorLeft 76:tiltMotorRight 77:ElevonLeft 78:ElevonRight 79:VTailLeft 80:VTailRight [...]||Function assigned to this servo. Seeing this to Disabled(0) will setup this output for control by auto missions or MAVLink servo set commands. any other value will enable the corresponding function|
Hand Launch and Belly Landing
For hand launch the following parameters have to be adjusted.
|TKOFF_THR_DELAY||0||ds||0 127||This parameter sets the time delay (in 1/10ths of a second) that the ground speed check is delayed after the forward acceleration check controlled by TKOFF_THR_MINACC has passed. For hand launches with pusher propellers it is essential that this is set to a value of no less than 2 (0.2 seconds) to ensure that the aircraft is safely clear of the throwers arm before the motor can start. For bungee launches a larger value can be used (such as 30) to give time for the bungee to release from the aircraft before the motor is started.|
|TKOFF_THR_MINACC||5||m/s/s||0 30||Minimum forward acceleration in m/s/s before arming the ground speed check in auto-takeoff. This is meant to be used for hand launches. Setting this value to 0 disables the acceleration test which means the ground speed check will always be armed which could allow GPS velocity jumps to start the engine. For hand launches and bungee launches this should be set to around 15.|
|TKOFF_THR_MINSPD||1||m/s||0 30||Minimum GPS ground speed in m/s used by the speed check that un-suppresses throttle in auto-takeoff. This can be be used for catapult launches where you want the motor to engage only after the plane leaves the catapult, but it is preferable to use the TKOFF_THR_MINACC and TKOFF_THR_DELAY parameters for catapult launches due to the errors associated with GPS measurements. For hand launches with a pusher prop it is strongly advised that this parameter be set to a value no less than 4 m/s to provide additional protection against premature motor start. Note that the GPS velocity will lag the real velocity by about 0.5 seconds. The ground speed check is delayed by the TKOFF_THR_DELAY parameter.|
As auto land in VTOL mode did not work, an automatic belly landing be achieved by defining the following parameters.
|LAND_ABORT_THR||1||0:Disabled 1:Enabled||Allow a landing abort to trigger with a throttle > 95%|
|LAND_FLARE_SEC||2||s||Vertical time before landing point at which to lock heading and flare with the motor stopped. This is vertical time, and is calculated based solely on the current height above the ground and the current descent rate. Set to 0 if you only wish to flare based on altitude (see LAND_FLARE_ALT).|
|LAND_PITCH_CD||0||cdeg||Used in autoland to give the minimum pitch in the final stage of landing (after the flare). This parameter can be used to ensure that the final landing attitude is appropriate for the type of undercarriage on the aircraft. Note that it is a minimum pitch only - the landing code will control pitch above this value to try to achieve the configured landing sink rate.|
|TECS_LAND_ARSPD||13||-1 127||When performing an autonomous landing, this value is used as the goal airspeed during approach. Note that this parameter is not useful if your platform does not have an airspeed sensor (use TECS_LAND_THR instead). If negative then this value is not used during landing.|
Auto-Mode and Mission Planning
To automatically fly a mission you want to adjust the following parameters.
|NAVL1_PERIOD||8||s||1 60||Period in seconds of L1 tracking loop. This parameter is the primary control for aggressiveness of turns in auto mode. This needs to be larger for less responsive airframes. The default of 20 is quite conservative, but for most RC aircraft will lead to reasonable flight. For smaller more agile aircraft a value closer to 15 is appropriate, or even as low as 10 for some very agile aircraft. When tuning, change this value in small increments, as a value that is much too small (say 5 or 10 below the right value) can lead to very radical turns, and a risk of stalling.|
|WP_LOITER_RAD||25||m||-32767 32767||Defines the distance from the waypoint center, the plane will maintain during a loiter. If you set this value to a negative number then the default loiter direction will be counter-clockwise instead of clockwise.|
|WP_MAX_RADIUS||10||m||0 32767||Sets the maximum distance to a waypoint for the waypoint to be considered complete. This overrides the "cross the finish line" logic that is normally used to consider a waypoint complete. For normal AUTO behaviour this parameter should be set to zero. Using a non-zero value is only recommended when it is critical that the aircraft does approach within the given radius, and should loop around until it has done so. This can cause the aircraft to loop forever if its turn radius is greater than the maximum radius set.|
|TRIM_ARSPD_CM||1900||cm/s||Airspeed in cm/s to aim for when airspeed is enabled in auto mode. This is a calibrated (apparent) airspeed.|
PID Tuning - Hover Mode
For the hover mode we found the following PID gains to be satisfying.
|Q_A_ANG_PIT_P||3||3.000 12.000||Pitch axis angle controller P gain. Converts the error between the desired pitch angle and actual angle to a desired pitch rate|
|Q_A_ANG_RLL_P||2||3.000 12.000||Roll axis angle controller P gain. Converts the error between the desired roll angle and actual angle to a desired roll rate|
|Q_A_ANG_YAW_P||2||3.000 6.000||Yaw axis angle controller P gain. Converts the error between the desired yaw angle and actual angle to a desired yaw rate|
|Q_A_RAT_PIT_D||0.004||0.0 0.02||Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual pitch rate|
|Q_A_RAT_PIT_FF||0.2||0 0.5||Pitch axis rate controller feed forward|
|Q_A_RAT_PIT_P||0.3||0.08 0.30||Pitch axis rate controller P gain. Converts the difference between desired pitch rate and actual pitch rate into a motor speed output|
|Q_A_RAT_RLL_D||0||0.0 0.02||Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll rate|
|Q_A_RAT_RLL_I||0.13||0.01 0.5||Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate|
|Q_A_RAT_RLL_P||0.3||0.08 0.30||Roll axis rate controller P gain. Converts the difference between desired roll rate and actual roll rate into a motor speed output|
|Q_A_RAT_YAW_D||0.03||0.000 0.02||Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw rate|
|Q_A_RAT_YAW_FF||0.2||0 0.5||Yaw axis rate controller feed forward|
|Q_A_RAT_YAW_I||0.01||0.010 0.05||Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate|
|Q_A_RAT_YAW_P||0.6||0.10 0.50||Yaw axis rate controller P gain. Converts the difference between desired yaw rate and actual yaw rate into a motor speed output|
|Q_ANGLE_MAX||6000||cdeg||1000 8000||Maximum lean angle in all VTOL flight modes|
|Q_PXY_P||1||0.500 2.000||Loiter position controller P gain. Converts the distance (in the latitude direction) to the target location into a desired speed which is then passed to the loiter latitude rate controller|
|Q_TAILSIT_ANGLE||30||5 80||This is the angle at which tailsitter aircraft will change from VTOL control to fixed wing control.|
PID Tuning - Cruise
|PTCH2SRV_D||0.07||0 0.1||This is the gain from pitch rate to elevator. This adjusts the damping of the pitch control loop. It has the same effect as PTCH2SRV_D in the old PID controller and can be set to the same value, but without the spikes in servo demands. This gain helps to reduce pitching in turbulence. Some airframes such as flying wings that have poor pitch damping can benefit from increasing this gain term. This should be increased in 0.01 increments as too high a value can lead to a high frequency pitch oscillation that could overstress the airframe.|
|PTCH2SRV_I||0.15||0 0.5||This is the gain applied to the integral of pitch angle. It has the same effect as PTCH2SRV_I in the old PID controller and can be set to the same value. Increasing this gain causes the controller to trim out constant offsets between demanded and measured pitch angle.|
|PTCH2SRV_P||0.4||0.1 3.0||This is the gain from pitch angle to elevator. This gain works the same way as PTCH2SRV_P in the old PID controller and can be set to the same value.|
|RLL2SRV_D||0.02||0 0.1||This is the gain from roll rate to aileron. This adjusts the damping of the roll control loop. It has the same effect as RLL2SRV_D in the old PID controller but without the spikes in servo demands. This gain helps to reduce rolling in turbulence. It should be increased in 0.01 increments as too high a value can lead to a high frequency roll oscillation that could overstress the airframe.|
|RLL2SRV_I||0.1||0 1.0||This is the gain from the integral of bank angle to aileron. It has the same effect as RLL2SRV_I in the old PID controller. Increasing this gain causes the controller to trim out steady offsets due to an out of trim aircraft.|
|RLL2SRV_P||0.8||0.1 4.0||This is the gain from bank angle error to aileron.|
|RUDD_DT_GAIN||10||%||0 100||gain control from rudder to differential thrust|
|KFF_RDDRMIX||0.02||0 1||The amount of rudder mix to apply during aileron movement 0 = 0 %, 1 = 100%|
|YAW2SRV_DAMP||0.2||0 2||This is the gain from yaw rate to rudder. It acts as a damper on yaw motion. If a basic yaw damper is required, this gain term can be incremented, whilst leaving the YAW2SRV_SLIP and YAW2SRV_INT gains at zero. Note that unlike with a standard PID controller, if this damping term is zero then the integrator will also be disabled.|