To configure MatrixPilot to work for your plane, you'll probably need to edit your options.h file. This page describes all the settings in that file.
To set up Waypoints, see the WayPoints wiki page.
First make sure to set which UAV Dev Board version you have. The older green board or the newer red board.
//////////////////////////////////////////////////////////////////////////////// // Set Up Board Type (Set to RED_BOARD or GREEN_BOARD or RED_GREEN_BOARD or RUSTYS_BOARD) #define BOARD_TYPE RED_BOARD
Then choose your airframe type: Standard, V-Tail, or Delta Wing.
//////////////////////////////////////////////////////////////////////////////// // Choose your airframe type: // AIRFRAME_STANDARD Elevator, and Ailerons and/or Rudder control // AIRFRAME_VTAIL Ailerons(optional), and Elevator and Rudder as V-tail controls // AIRFRAME_DELTA Aileron and Elevator as Elevons, and Rudder(optional) // (Note that although AIRFRAME_HELI is also recognized, the code for this airframe type is not ready.) #define AIRFRAME_TYPE AIRFRAME_STANDARD
And choose which GPS you're using. Currently we support the EM-406A, and the UBlox GS407.
//////////////////////////////////////////////////////////////////////////////// // Set this value to your GPS type. (Set to GPS_STD, GPS_UBX_2HZ, or GPS_UBX_4HZ) #define GPS_TYPE GPS_STD
Next, you can choose which MatrixPilot features you'd like to use.
You can enable or disable each axis of stabilization.
// Roll, Pitch, and Yaw Stabilization // Set any of these to 0 to disable the stabilization in that axis. #define ROLL_STABILIZATION 1 #define PITCH_STABILIZATION 1 #define YAW_STABILIZATION_RUDDER 1 #define YAW_STABILIZATION_AILERON 1
and navigation using either rudder, ailerons, or both.
// Aileron and Rudder Navigation // Set either of these to 0 to disable use of that control surface for navigation. #define AILERON_NAVIGATION 1 #define RUDDER_NAVIGATION 1
Here you can enable altitude hold independently for stabilized mode and for waypoint mode. Each mode can be set to maintain altitude either using elevator (AH_PITCH_ONLY), both elevator and throttle (AH_FULL), or to disable altitude hold all together (AH_NONE). If altitude hold is enabled, you can configure it in more detail later in the file.
// Altitude Hold // Use altitude hold in stabilized mode? In waypoint mode? // Each of these settings can be AH_NONE, AH_FULL, or AH_PITCH_ONLY #define ALTITUDEHOLD_STABILIZED AH_PITCH_ONLY #define ALTITUDEHOLD_WAYPOINT AH_FULL
You can enable stabilization of inverted flight, and of vertical, nose-up hovering. These can be enabled separately for stabilized mode and for waypoint mode. If enabled for stabilized mode, the UDB will try to stabilize the closest orientation to your current orientation. For example, if you manually override stabilization to flip upside down, the UDB will then start stabilizing inverted. In waypoint mode, the UDB will stabilize whichever orientation is defined for the current target waypoint in the waypoints.h file.
// Inverted flight // Set these to 1 to enable stabilization of inverted flight in stabilized and/or waypoint modes. #define INVERTED_FLIGHT_STABILIZED_MODE 0 #define INVERTED_FLIGHT_WAYPOINT_MODE 0 // Hovering // Set these to 1 to enable stabilization of hovering in stabilized and/or waypoint modes. #define HOVERING_STABILIZED_MODE 0 #define HOVERING_WAYPOINT_MODE 0
You can enable dead reckoning here.
// Dead reckoning // Use DEADRECKONING to select the dead reckoning option. // DEADRECKONING 0 selects the GPS to perform navigation, at the GPS update rate. // DEADRECKONING 1 selects the dead reckoning computations to perform navigation, at 40 Hz. #define DEADRECKONING 0
And wind estimation and navigation here.
// Wind Estimation and Navigation // Set this to 1 to use automatic wind estimation and navigation. // Wind estimation is done using a mathematical model developed by William Premerlani. // Every time the plane performs a significant turn, the plane estimates the wind. // This facility only requires a working GPS and the UAV DevBoard. #define WIND_ESTIMATION 0
You can also enable camera stabilization if you have servo channels available.
// Camera Stabilization // To enable, set this value to 1, and assign one or more of the CAMERA_*_OUTPUT_CHANNELS below. #define USE_CAMERA_STABILIZATION 0
If you have a magnetometer attached to the UDB, set this to 1.
// Define MAG_YAW_DRIFT to be 1 to use magnetometer for yaw drift correction. // Otherwise, if set to 0 the GPS will be used. #define MAG_YAW_DRIFT 0
Racing mode can be useful when trying to keep up your speed, or when fighting stronger winds.
// Racing Mode // Setting RACING_MODE to 1 will keep the plane at a set throttle value while in waypoint mode. // RACING_MODE_WP_THROTTLE is the throttle value to use, and should be set between 0.0 and 1.0. // Racing performance can be improved by disabling CROSSTRACKING in waypoints.h. #define RACING_MODE 0 #define RACING_MODE_WP_THROTTLE 1.0
You shouldn't use this NORADIO unless you need it for some esoteric ground testing of some otherwise untestable edge cases.
// Set this to 1 if you want the UAV Dev Board to fly your plane without a radio transmitter or // receiver. (Totally autonomous.) This is just meant for debugging. It is not recommended that // you acually use this since there is no automatic landing code yet, and you'd have no manual // control to fall back on if things go wrong. It may not even be legal in your area. #define NORADIO 0
In this section you can configure how many input and output chanels you're using, and what you're using each channel for. To eable the 5th input chanel, and the 4th-6th output channels, see the ConnectingExtraChannels wiki page.
// NUM_INPUTS: Set to 1-5 // 1-4 enables only the first 1-4 of the 4 standard input channels // 5 also enables E8 as the 5th input channel #define NUM_INPUTS 5 // Channel numbers for each input. // Use as is, or edit to match your setup. // - If you're set up to use Rudder Navigation (like MatrixNav), then you may want to swap // the aileron and rudder channels so that rudder is CHANNEL_1, and aileron is 5. #define THROTTLE_INPUT_CHANNEL CHANNEL_3 #define AILERON_INPUT_CHANNEL CHANNEL_1 #define ELEVATOR_INPUT_CHANNEL CHANNEL_2 #define RUDDER_INPUT_CHANNEL CHANNEL_5 #define MODE_SWITCH_INPUT_CHANNEL CHANNEL_4 #define CAMERA_ROLL_INPUT_CHANNEL CHANNEL_UNUSED #define CAMERA_PITCH_INPUT_CHANNEL CHANNEL_UNUSED #define CAMERA_YAW_INPUT_CHANNEL CHANNEL_UNUSED // NUM_OUTPUTS: Set to 3, 4, 5, or 6 // 3 enables only the standard 3 output channels // 4 also enables E0 as the 4th output channel // 5 also enables E2 as the 5th output channel // 6 also enables E4 as the 6th output channel #define NUM_OUTPUTS 5 // Channel numbers for each output // Use as is, or edit to match your setup. // - Only assign each channel to one output purpose // - If you don't want to use an output channel, set it to CHANNEL_UNUSED // - If you're set up to use Rudder Navigation (like MatrixNav), then you may want to swap // the aileron and runner channels so that rudder is CHANNEL_1, and aileron is 5. // // NOTE: If your board is powered from your ESC through the throttle cable, make sure to // connect THROTTLE_OUTPUT_CHANNEL to one of the built-in Outputs (1, 2, or 3) to make // sure your board gets power. // #define THROTTLE_OUTPUT_CHANNEL CHANNEL_3 #define AILERON_OUTPUT_CHANNEL CHANNEL_1 #define ELEVATOR_OUTPUT_CHANNEL CHANNEL_2 #define RUDDER_OUTPUT_CHANNEL CHANNEL_4 #define AILERON_SECONDARY_OUTPUT_CHANNEL CHANNEL_5 #define CAMERA_ROLL_OUTPUT_CHANNEL CHANNEL_UNUSED #define CAMERA_PITCH_OUTPUT_CHANNEL CHANNEL_UNUSED #define CAMERA_YAW_OUTPUT_CHANNEL CHANNEL_UNUSED #define TRIGGER_OUTPUT_CHANNEL CHANNEL_UNUSED
Here you can choose which of your radio/servo channels are reversed. If a servo requires a reversed signal, make sure you first have your transmitter set up to correctly control the plane manually, and then set these settings to match your radio.
// Servo Reversing Configuration // Here you can choose which reversing switches use hardware switches, and hard code the rest. // Note that your servo reversing settings here should match what you set on your transmitter. // For any of these that evaluate to 1 (either hardcoded or by flipping a switch on the board, // as you define below), that servo will be sent reversed controls. #define AILERON_CHANNEL_REVERSED HW_SWITCH_1 #define ELEVATOR_CHANNEL_REVERSED HW_SWITCH_2 #define RUDDER_CHANNEL_REVERSED HW_SWITCH_3 #define AILERON_SECONDARY_CHANNEL_REVERSED 0 // Hardcoded to be unreversed, since we have only 3 switches. #define THROTTLE_CHANNEL_REVERSED 0 // Set to 1 to hardcode a channel to be reversed #define CAMERA_ROLL_CHANNEL_REVERSED 0 #define CAMERA_PITCH_CHANNEL_REVERSED 0 #define CAMERA_YAW_CHANNEL_REVERSED 0 // Set this to 1 if you need to switch the left and right elevon or vtail surfaces #define ELEVON_VTAIL_SURFACES_REVERSED 0
Here you can set up the thresholds for your mode switching channel. A 3-way switch works best for this channel, but a knob can also work, as could a 2-way switch combined with a trim for this channel. These values are the positions where we switch between the low and middle, and then the middle and high positions of the 3-way mode switch.
// Mode Switch is ideally controlled by a 3-position switch on your transmitter. // Often the Flap channel will be controlled by a 3-position switch. // These are the thresholds for the cutoffs between low and middle, and between middle and high. // Normal signals should fall within about 2000 - 4000. #define MODE_SWITCH_THRESHOLD_LOW 2600 #define MODE_SWITCH_THRESHOLD_HIGH 3400
Setting up the Failsafe Chanel allows your plane to know when it loses transmitter signal, and act accordingly. You can set it up to either return to where it was launched via a set of Failsafe/RTL waypoints, or to just continue following the main set of waypoints uninterrupted.
// The Failsafe Channel is the RX channel that is monitored for loss of signal // Make sure this is set to a channel you actually have plugged into the UAV Dev Board! // // For a receiver that remembers a failsafe value for when it loses the transmitter signal, // like the Spektrum AR6100, you can program the receiver's failsafe value to a value below // the normal low value for that channel. Then set the FAILSAFE_INPUT_MIN value to a value // between the receiver's programmed failsafe value and the transmitter's normal lowest // value for that channel. This way the firmware can detect the difference between a normal // signal, and a lost transmitter. // // FAILSAFE_INPUT_MIN and _MAX define the range within which we consider the radio on. // Normal signals should fall within about 2000 - 4000. #define FAILSAFE_INPUT_CHANNEL THROTTLE_INPUT_CHANNEL #define FAILSAFE_INPUT_MIN 1500 #define FAILSAFE_INPUT_MAX 4500 // FAILSAFE_TYPE controls the UDB's behavior when in failsafe mode due to loss of transmitter // signal. (Set to FAILSAFE_RTL or FAILSAFE_WAYPOINTS.) // // When using FAILSAFE_RTL (Return To Launch), the UDB will begin following the rtlWaypoints // course as defined near the bottom of the waypoints.h file. By default, this is set to // return to a point above the location where the UDB was powered up, and to loiter there. // See the waypoints.h file for info on modifying this behavior. // // When set to FAILSAFE_WAYPOINTS, the UDB will instead follow the main waypoints definition from // waypoints.h. If the UDB was already in waypoint mode when it lost signal, the plane will // just continue following the waypoints without starting them over. And if the transmitter is // still in waypoint mode when the UDB sees it again, the UDB will still continue following the // waypoints without restarting. If the UDB loses signal while not in waypoint mode, it will // start the waypoint list from the beginning. #define FAILSAFE_TYPE FAILSAFE_RTL
// Serial Output Format (Can be SERIAL_NONE, SERIAL_DEBUG, SERIAL_ARDUSTATION, SERIAL_UDB, // SERIAL_UDB_EXTRA, or SERIAL_OSD_REMZIBI) // This determines the format of the output sent out the spare serial port. // Note that SERIAL_OSD_REMZIBI only works with GPS_UBX. // SERIAL_UDB_EXTRA will add additional telemetry fields to those of SERIAL_UDB. // SERIAL_UDB_EXTRA can be used with the OpenLog without characters being dropped. // SERIAL_UDB_EXTRA may result in dropped characters if used with the XBEE wireless transmitter. #define SERIAL_OUTPUT_FORMAT SERIAL_NONE
// Trigger Action // Use the trigger to do things like drop an item at a certain waypoint, or take a photo every // N seconds during certain waypoint legs. // TRIGGER_TYPE can be set to TRIGGER_TYPE_NONE, TRIGGER_TYPE_SERVO, or TRIGGER_TYPE_DIGITAL. // If using TRIGGER_TYPE_SERVO, set the TRIGGER_OUTPUT_CHANNEL above to choose which output channel // receives trigger events, and set the TRIGGER_SERVO_LOW and TRIGGER_SERVO_HIGH values below. // If using TRIGGER_TYPE_DIGITAL, the trigger will be on pin RE4. In this case make sure to set // NUM_OUTPUTS to be less than 6 to avoid a conflict between digital output and servo output on // that pin. // TRIGGER_ACTION can be: TRIGGER_PULSE_HIGH, TRIGGER_PULSE_LOW, TRIGGER_TOGGLE, or TRIGGER_REPEATING // The trigger action output is always either low or high. In servo mode, low and high are servo // values set below. In digital mode, low and high are 0V and 5V on pin RE4. // The action is triggered when starting on a waypoint leg that includes the F_TRIGGER flag (see the // waypoints.h file). // If set to TRIGGER_PULSE_HIGH or TRIGGER_PULSE_LOW, then the output will pulse high or low for the // number of milliseconds set by TRIGGER_PULSE_DURATION. // If set to TRIGGER_TOGGLE, the output will just switch from high to low, or low to high each time // the action is triggered. // If set to TRIGGER_REPEATING, then during any waypoint leg with F_TRIGGER set, high pulses will be // sent every TRIGGER_REPEAT_PERIOD milliseconds. // Note, durations in milliseconds are rounded down to the nearest 25ms. #define TRIGGER_TYPE TRIGGER_TYPE_NONE #define TRIGGER_ACTION TRIGGER_PULSE_HIGH #define TRIGGER_SERVO_LOW 2000 #define TRIGGER_SERVO_HIGH 4000 #define TRIGGER_PULSE_DURATION 250 #define TRIGGER_REPEAT_PERIOD 4000
Servo Saturation controls the maximum throw of the servos. Typical value is 1.0. Maximum recommended value is 1.0, maximum valid value is 1.999. Lower values will stop servos from moving too far.
// SERVOSAT limits servo throw by controlling pulse width saturation. // set it to 1.0 if you want full servo throw, otherwise set it to the portion that you want #define SERVOSAT 1.0
There are several gains that you can adjust. They should all be set to positive numbers. If you think any gain needs to be reversed, you should instead reversals in the Reversal section above, and with the board reversing switches SR1, SR2 and SR3. Use the same gains on either the red board or the green board, the appropriate multipliers are now built into the firmware.
AILERON_BOOST � This is an amplification, or �boost� factor for manual control of the ailerons, used during stabilized and waypoint modes to restore control authority to the ailerons in the face of the damping effect of stabilization. Typical value is 1.0. This factor is in addition to the manual control, so a value of PITCHBOOST of 0 turns the boost off, and provides unmodified response to manual control. A PITCHBOOST of 1 makes the elevator response to manual control approximately twice as great. Maximum valid value is 1.999.
// Aileron/Roll Control Gains
// ROLLKP is the proportional gain, approximately 0.25
// ROLLKD is the deriviate (gyro) gain, approximately 0.125
// YAWKP_AILERON is the proportional feedback gain for ailerons in response to yaw error
// YAWKD_AILERON is the derivative feedback gain for ailerons in reponse to yaw rotation
// AILERON_BOOST is the additional gain multiplier for the manually commanded aileron deflection
PITCHGAIN � This is the proportional feedback for the elevator control of pitch. Setting it higher will improve precision of the pitch leveling. If you set it too high, it may cause pitch flutter, but it is not dangerous, just annoying. Typical value is 0.250. Maximum valid value is 1.999.
ELEVATOR_BOOST � This is an amplification, or �boost� factor for manual control of the elevator, used during stabilized mode to restore control authority to the elevator in the face of the damping effect of stabilization. Typical value is 0.5. This factor is in addition to the manual control, so a value of ELEVATOR_BOOST of 0 turns the boost off, and provides unmodified response to manual control. A ELEVATOR_BOOST of 1 makes the elevator response to manual control approximately twice as great. Maximum valid value is 1.999.
// Elevator/Pitch Control Gains
// PITCHGAIN is the pitch stabilization gain, typically around 0.125
// PITCHKD feedback gain for pitch damping, around 0.0625
// RUDDER_ELEV_MIX is the degree of elevator adjustment for rudder and banking
// AILERON_ELEV_MIX is the degree of elevator adjustment for aileron
// ELEVATOR_BOOST is the additional gain multiplier for the manually commanded elevator deflection
// Neutral pitch angle of the plane (in degrees) when flying inverted
// Use this to add extra "up" elevator while the plane is inverted, to avoid losing altitude.
YAWKP_RUDDER � This is the turning gain used by RTL for using the rudder to make a turn. Typical value is 0.1. Larger values will produce tighter turns. Using a value that is too large will produce a �dutch roll�. Maximum valid value is 1.999.
RUDDER_BOOST � This is an amplification, or �boost� factor for manual control of the rudder, used during stabilized mode to restore control authority to the rudder in the face of the damping effect of stabilization. Typical value is 1.0. This factor is in addition to the manual control, so a value of RUDDER_BOOST of 0 turns the boost off, and provides unmodified response to manual control. A RUDDER_BOOST of 1 makes the rudder response to manual control approximately twice as great. Maximum valid value is 1.999.
// Rudder/Yaw Control Gains
// YAWKP_RUDDER is the proportional feedback gain for rudder navigation
// YAWKD_RUDDER is the yaw gyro feedback gain for the rudder in reponse to yaw rotation
// MANUAL_AILERON_RUDDER_MIX is the fraction of manual aileron control to mix into the rudder when
// in stabilized or waypoint mode. This mainly helps aileron-initiated turning while in stabilized.
// RUDDER_BOOST is the additional gain multiplier for the manually commanded rudder deflection
Set up the gains for vertical, nose-up hovering here. These gains are only used if hovering is enabled above.
// Gains for Hovering // Gains are named based on plane's frame of reference (roll means ailerons) // HOVER_ROLLKP is the roll-proportional feedback gain applied to the ailerons while navigating a hover // HOVER_ROLLKD is the roll gyro feedback gain applied to ailerons while stabilizing a hover // HOVER_PITCHGAIN is the pitch-proportional feedback gain applied to the elevator while stabilizing a hover // HOVER_PITCHKD is the pitch gyro feedback gain applied to elevator while stabilizing a hover // HOVER_PITCH_OFFSET is the neutral pitch angle for the plane (in degrees) while stabilizing a hover // HOVER_YAWKP is the yaw-proportional feedback gain applied to the rudder while stabilizing a hover // HOVER_YAWKD is the yaw gyro feedback gain applied to rudder while stabilizing a hover // HOVER_YAW_OFFSET is the neutral yaw angle for the plane (in degrees) while stabilizing a hover // HOVER_PITCH_TOWARDS_WP is the max angle in degrees to pitch the nose down towards the WP while navigating // HOVER_NAV_MAX_PITCH_RADIUS is the radius around a waypoint in meters, within which the HOVER_PITCH_TOWARDS_WP // value is proportionally scaled down. #define HOVER_ROLLKP 0.05 #define HOVER_ROLLKD 0.05 #define HOVER_PITCHGAIN 0.2 #define HOVER_PITCHKD 0.25 #define HOVER_PITCH_OFFSET 0.0 // + leans towards top, - leans towards bottom #define HOVER_YAWKP 0.2 #define HOVER_YAWKD 0.25 #define HOVER_YAW_OFFSET 0.0 #define HOVER_PITCH_TOWARDS_WP 30.0 #define HOVER_NAV_MAX_PITCH_RADIUS 20
One or two servo channels can be used to stabilize and target a camera mounted on a pan/tilt gimball.
//////////////////////////////////////////////////////////////////////////////// // Camera Stabilization and Targeting // // In Manual Mode the camera is fixed straight ahead. // In Stabilized Mode, the camera stabilizes in the pitch axis but keeps a constant yaw // relative to the plane's frame of reference. // In Waypoint Mode, the direction of the camera is driven from a flight camera plan in waypoints.h // // To save cpu cycles, you will need to pre-compute the tangent of the desired pitch of the camera // when in stabilized mode. This should be expressed in 2:14 format. // Example: You require the camera to be pitched down by 15 degrees from the horizon. // CAM_TAN_PITCH_IN_STABILIZED_MODE = TAN((15/180)*3.1414) * 16384 = 0.2679 * 16384 = 4389 // Note that CAM_TAN_PITCH_IN_STABILIZED_MODE should not exceed 32767 (integer overflows to negative). #define CAM_TAN_PITCH_IN_STABILIZED_MODE 0 // in degrees down relative to the ground horizon. Example: 4389 #define CAM_YAW_IN_STABILIZED_MODE 90 // in degrees relative to the plane's yaw axis. Example: 0 // Camera values to set at installation of camera servos // All number should be integers #define CAM_PITCH_SERVO_THROW 90 // Camera lens rotation at maximum servo movement in Degrees. Example: 90 #define CAM_PITCH_SERVO_MAX 25 // Max forward throw of camera from centred servo in Degrees Example: 45 #define CAM_PITCH_SERVO_MIN -45 // Max reverse throw of camera from centred servo in Degrees Example -45 #define CAM_PITCH_OFFSET_CENTRED 35 // Offset in Degrees of servo that results in a level camera. Example 35 // Example: 35 would mean that a centred pitch servo points the camera // 35 degrees down from horizontal when looking to the front of the plane. #define CAM_YAW_SERVO_THROW 360 // Camera yaw movement for maximum yaw servo movement in Degrees. Example: 360 #define CAM_YAW_SERVO_MAX 100 // Max yaw of camera from a centred servo in Degrees. Example: 130 #define CAM_YAW_SERVO_MIN -160 // Max reverse yaw of camera from a centred servo in Degrees. Example:-160 #define CAM_YAW_OFFSET_CENTRED 30 // Yaw offset in degrees that results in camera pointing forward Example: 10
These settings are only used when Altitude Hold is enabled above.
ALT_HOLD_PITCH_HIGH � This is the pitch angle, in degrees, that the control will attempt to hold the plane�s pitch, at ZERO throttle. In other words, this is the pitch angle that you want when your sailplane is gliding, or when your plane is flying �dead stick�. The suggested value for this parameter is 0. If you do not want to use this feature, set it to 0. Otherwise, set it to the pitch angle that you would normally control the plane at zero throttle. Positive values means the nose points upward, negative values means the nose pitches downward.
// Min and Max target heights in meters. These only apply to stabilized mode.
// The range of altitude within which to linearly vary the throttle
// and pitch to maintain altitude. A bigger value makes altitude hold
// smoother, and is suggested for very fast planes.
// Use ALT_HOLD_THROTTLE_MAX when below HEIGHT_MARGIN of the target height.
// Interpolate between ALT_HOLD_THROTTLE_MAX and ALT_HOLD_THROTTLE_MIN
// when within HEIGHT_MARGIN of the target height.
// Use ALT_HOLD_THROTTLE_MIN when above HEIGHT_MARGIN of the target height.
// Throttle values are from 0.0 - 1.0.
// Use ALT_HOLD_PITCH_MAX when below HEIGHT_MARGIN of the target height.
// Interpolate between ALT_HOLD_PITCH_MAX and ALT_HOLD_PITCH_MIN when
// within HEIGHT_MARGIN of the target height.
// Use ALT_HOLD_PITCH_HIGH when above HEIGHT_MARGIN of the target height.
// Pitch values are in degrees. Negative values pitch the plane down.
// The throttle will be turned off for an F_LAND waypoint.
// The plane will use the line between the F_LAND waypoint and the previous
// waypoint to define a target glide slope that serves as a ceiling during landing.
RTL_PITCH_DOWN is used if you want the nose to pitch down during return to launch. It is the same as in previous versions of AileronAssist. If you use this feature, enter a positive value for this parameter, which is the angle, in degrees, that you want the nose to pitch down during RTL. The idea is that you may have a dead motor and a head wind during a loss of signal RTL, so you might be willing to sacrifice some altitude to get your plane back to you. Some pilots use this feature, some do not. Typical value if you use it is 2. If you do not use it, set it to zero. Maximum recommended value is 10.0.
// Return To Launch Pitch Down in degrees, a real number. // this is the real angle in degrees that the nose of the plane will pitch downward during a return to launch. // it is used to increase speed (and wind penetration) during a return to launch. // set it to zero if you do not want to use this feature. // This only takes effect when entering RTL mode, which only happens when the plane loses the transmitter signal. #define RTL_PITCH_DOWN 0.0
Set this when using the UDB to control the X-Plane simulator instead of controlling a real plane. See the wiki page.
// Hardware In the Loop Simulation // See the MatrixPilot wiki for info on using HILSIM. // Only set this to 1 for testing in the simulator. // Do not try to fly with this set to 1! #define HILSIM 0
The waypoint handling options live at the top of the waypoints.h file.
//////////////////////////////////////////////////////////////////////////////// // Waypoint handling // You have the option of using either cross tracking, // in which navigation is based on the distance of the plane // to the line between the waypoints. // Or you can use navigation directly toward the goal point. // If you want to use cross tracking, set USE_CROSSTRACKING to 1, // otherwise, to use navigation directly toward the goal, // set USE_CROSSTRACKING to 0. #define USE_CROSSTRACKING 0 // Move on to the next waypoint when getting within this distance of the current goal (in meters) // Only applies if not using cross tracking. #define WAYPOINT_RADIUS 25 // Origin Location // When using relative waypoints, the default is to interpret those waypoints as relative to the // plane's power-up location. Here you can choose to use any specific, fixed 2D location as the // origin point for your relative waypoints. (The code will still use the plane's power-up // altitude as the altitude origin.) // // USE_FIXED_ORIGIN should be 0 to use the power-up location as the origin for relative waypoints. // Set it to 1 to use a fixed location as the origin, no matter where you power up. // FIXED_ORIGIN_LOCATION is the location to use as the origin for relative waypoints. It uses the // format { X, Y } where: // X is Logitude in degrees * 10^7 // Y is Latitude in degrees * 10^7 // #define USE_FIXED_ORIGIN 0 #define FIXED_ORIGIN_LOCATION { -1219950467, 374124664 } // A point in Baylands Park in Sunnyvale, CA
Or read the configuration documentation for MatrixPilot 2.0 here.
Wiki: AileronAssist
Wiki: ConnectingExtraChannels
Wiki: HardwareInLoop
Wiki: HowToConfigure
Wiki: HowToConfigureMP20
Wiki: HowToConfigureMP30
Wiki: HowToConfigureMP33
Wiki: MatrixPilot
Wiki: WayPoints