// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- // #ifndef __ARDUCOPTER_CONFIG_H__ #define __ARDUCOPTER_CONFIG_H__ ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // // WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING // // DO NOT EDIT this file to adjust your configuration. Create your own // APM_Config.h and use APM_Config.h.example as a reference. // // WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING /// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // // Default and automatic configuration details. // // Notes for maintainers: // // - Try to keep this file organised in the same order as APM_Config.h.example // #include "defines.h" /// /// DO NOT EDIT THIS INCLUDE - if you want to make a local change, make that /// change in your local copy of APM_Config.h. /// #ifdef USE_CMAKE_APM_CONFIG #include "APM_Config_cmake.h" // <== Prefer cmake config if it exists #else #include "APM_Config.h" // <== THIS INCLUDE, DO NOT EDIT IT. EVER. #endif ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // HARDWARE CONFIGURATION AND CONNECTIONS ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// #ifdef CONFIG_APM_HARDWARE #error CONFIG_APM_HARDWARE option is deprecated! use CONFIG_HAL_BOARD instead #endif #ifndef CONFIG_HAL_BOARD #error CONFIG_HAL_BOARD must be defined to build ArduCopter #endif #ifdef __AVR_ATmega1280__ #error ATmega1280 is not supported #endif ////////////////////////////////////////////////////////////////////////////// // APM2 HARDWARE DEFAULTS // #if CONFIG_HAL_BOARD == HAL_BOARD_APM2 # define CONFIG_IMU_TYPE CONFIG_IMU_MPU6000 # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN # define MAGNETOMETER ENABLED # ifdef APM2_BETA_HARDWARE # define CONFIG_BARO AP_BARO_BMP085 # else // APM2 Production Hardware (default) # define CONFIG_BARO AP_BARO_MS5611 # define CONFIG_MS5611_SERIAL AP_BARO_MS5611_SPI # endif #elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL # define CONFIG_IMU_TYPE CONFIG_IMU_SITL # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN # define MAGNETOMETER ENABLED #elif CONFIG_HAL_BOARD == HAL_BOARD_PX4 # define CONFIG_IMU_TYPE CONFIG_IMU_PX4 # define CONFIG_BARO AP_BARO_PX4 # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN # define MAGNETOMETER ENABLED #elif CONFIG_HAL_BOARD == HAL_BOARD_FLYMAPLE # define CONFIG_IMU_TYPE CONFIG_IMU_FLYMAPLE # define CONFIG_BARO AP_BARO_BMP085 # define CONFIG_COMPASS AP_COMPASS_HMC5843 # define CONFIG_ADC DISABLED # define MAGNETOMETER ENABLED # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN #elif CONFIG_HAL_BOARD == HAL_BOARD_LINUX # define CONFIG_IMU_TYPE CONFIG_IMU_L3G4200D # define CONFIG_BARO AP_BARO_BMP085 # define CONFIG_COMPASS AP_COMPASS_HMC5843 # define CONFIG_ADC DISABLED # define MAGNETOMETER ENABLED # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN #endif ////////////////////////////////////////////////////////////////////////////// // FRAME_CONFIG // #ifndef FRAME_CONFIG # define FRAME_CONFIG QUAD_FRAME #endif #ifndef FRAME_ORIENTATION # define FRAME_ORIENTATION X_FRAME #endif #ifndef TOY_EDF # define TOY_EDF DISABLED #endif #ifndef TOY_MIXER # define TOY_MIXER TOY_LINEAR_MIXER #endif ///////////////////////////////////////////////////////////////////////////////// // TradHeli defaults #if FRAME_CONFIG == HELI_FRAME # define RC_FAST_SPEED 125 # define WP_YAW_BEHAVIOR_DEFAULT YAW_LOOK_AT_HOME # define RATE_INTEGRATOR_LEAK_RATE 0.02f # define RATE_ROLL_D 0 # define RATE_PITCH_D 0 # define HELI_PITCH_FF 0 # define HELI_ROLL_FF 0 # define HELI_YAW_FF 0 # define STABILIZE_THROTTLE THROTTLE_MANUAL # define MPU6K_FILTER 10 #endif ///////////////////////////////////////////////////////////////////////////////// // Y6 defaults #if FRAME_CONFIG == Y6_FRAME # define RATE_ROLL_P 0.1f # define RATE_ROLL_D 0.006f # define RATE_PITCH_P 0.1f # define RATE_PITCH_D 0.006f # define RATE_YAW_P 0.150f # define RATE_YAW_I 0.015f #endif // optical flow doesn't work in SITL yet #ifdef DESKTOP_BUILD # define OPTFLOW DISABLED #endif ////////////////////////////////////////////////////////////////////////////// // IMU Selection // #ifndef CONFIG_IMU_TYPE # define CONFIG_IMU_TYPE CONFIG_IMU_OILPAN #endif #ifndef MPU6K_FILTER # define MPU6K_FILTER MPU6K_DEFAULT_FILTER #endif ////////////////////////////////////////////////////////////////////////////// // ADC Enable - used to eliminate for systems which don't have ADC. // #ifndef CONFIG_ADC # if CONFIG_IMU_TYPE == CONFIG_IMU_OILPAN # define CONFIG_ADC ENABLED # else # define CONFIG_ADC DISABLED # endif #endif ////////////////////////////////////////////////////////////////////////////// // PWM control // default RC speed in Hz #ifndef RC_FAST_SPEED # define RC_FAST_SPEED 490 #endif //////////////////////////////////////////////////////// // LED and IO Pins // #if CONFIG_HAL_BOARD == HAL_BOARD_APM1 # define LED_ON HIGH # define LED_OFF LOW # define BATTERY_VOLT_PIN 0 // Battery voltage on A0 # define BATTERY_CURR_PIN 1 // Battery current on A1 #elif CONFIG_HAL_BOARD == HAL_BOARD_APM2 # define LED_ON LOW # define LED_OFF HIGH # define BATTERY_VOLT_PIN 1 // Battery voltage on A1 # define BATTERY_CURR_PIN 2 // Battery current on A2 #elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL # define LED_ON LOW # define LED_OFF HIGH # define BATTERY_VOLT_PIN 1 // Battery voltage on A1 # define BATTERY_CURR_PIN 2 // Battery current on A2 #elif CONFIG_HAL_BOARD == HAL_BOARD_PX4 # define LED_ON LOW # define LED_OFF HIGH # define BATTERY_VOLT_PIN -1 # define BATTERY_CURR_PIN -1 #elif CONFIG_HAL_BOARD == HAL_BOARD_FLYMAPLE # define BATTERY_VOLT_PIN 20 # define BATTERY_CURR_PIN 19 # define LED_ON LOW # define LED_OFF HIGH #elif CONFIG_HAL_BOARD == HAL_BOARD_LINUX # define BATTERY_VOLT_PIN -1 # define BATTERY_CURR_PIN -1 # define LED_ON LOW # define LED_OFF HIGH #endif //////////////////////////////////////////////////////////////////////////////// // CopterLEDs // #ifndef COPTER_LEDS #define COPTER_LEDS ENABLED #endif #define COPTER_LED_ON HIGH #define COPTER_LED_OFF LOW #if CONFIG_HAL_BOARD == HAL_BOARD_APM2 #define COPTER_LED_1 AN4 // Motor or Aux LED #define COPTER_LED_2 AN5 // Motor LED or Beeper #define COPTER_LED_3 AN6 // Motor or GPS LED #define COPTER_LED_4 AN7 // Motor LED #define COPTER_LED_5 AN8 // Motor LED #define COPTER_LED_6 AN9 // Motor LED #define COPTER_LED_7 AN10 // Motor LED #define COPTER_LED_8 AN11 // Motor LED #elif CONFIG_HAL_BOARD == HAL_BOARD_APM1 || CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL || CONFIG_HAL_BOARD == HAL_BOARD_PX4 #define COPTER_LED_1 AN8 // Motor or Aux LED #define COPTER_LED_2 AN9 // Motor LED #define COPTER_LED_3 AN10 // Motor or GPS LED #define COPTER_LED_4 AN11 // Motor LED #define COPTER_LED_5 AN12 // Motor LED #define COPTER_LED_6 AN13 // Motor LED #define COPTER_LED_7 AN14 // Motor LED #define COPTER_LED_8 AN15 // Motor LED #else // not supported yet on this board #undef COPTER_LEDS #endif ////////////////////////////////////////////////////////////////////////////// // Barometer // #ifndef CONFIG_BARO # define CONFIG_BARO AP_BARO_BMP085 #endif ////////////////////////////////////////////////////////////////////////////// // Sonar // #ifndef CONFIG_SONAR_SOURCE # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ADC #endif #if CONFIG_SONAR_SOURCE == SONAR_SOURCE_ADC && CONFIG_ADC == DISABLED # warning Cannot use ADC for CONFIG_SONAR_SOURCE, becaude CONFIG_ADC is DISABLED # warning Defaulting CONFIG_SONAR_SOURCE to ANALOG_PIN # undef CONFIG_SONAR_SOURCE # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN #endif #if CONFIG_SONAR_SOURCE == SONAR_SOURCE_ADC # ifndef CONFIG_SONAR_SOURCE_ADC_CHANNEL # define CONFIG_SONAR_SOURCE_ADC_CHANNEL 7 # endif #elif CONFIG_SONAR_SOURCE == SONAR_SOURCE_ANALOG_PIN # ifndef CONFIG_SONAR_SOURCE_ANALOG_PIN # define CONFIG_SONAR_SOURCE_ANALOG_PIN 0 # endif #else # warning Invalid value for CONFIG_SONAR_SOURCE, disabling sonar # define CONFIG_SONAR DISABLED #endif #ifndef CONFIG_SONAR # define CONFIG_SONAR ENABLED #endif #ifndef SONAR_ALT_HEALTH_MAX # define SONAR_ALT_HEALTH_MAX 3 // number of good reads that indicates a healthy sonar #endif #ifndef SONAR_RELIABLE_DISTANCE_PCT # define SONAR_RELIABLE_DISTANCE_PCT 0.60f // we trust the sonar out to 60% of it's maximum range #endif #ifndef SONAR_GAIN_DEFAULT # define SONAR_GAIN_DEFAULT 2.0 // gain for controlling how quickly sonar range adjusts target altitude (lower means slower reaction) #endif #ifndef THR_SURFACE_TRACKING_VELZ_MAX # define THR_SURFACE_TRACKING_VELZ_MAX 150 // max vertical speed change while surface tracking with sonar #endif ////////////////////////////////////////////////////////////////////////////// // Channel 7 and 8 default options // #ifndef CH7_OPTION # define CH7_OPTION AUX_SWITCH_SAVE_WP #endif #ifndef CH8_OPTION # define CH8_OPTION AUX_SWITCH_DO_NOTHING #endif ////////////////////////////////////////////////////////////////////////////// // HIL_MODE OPTIONAL #ifndef HIL_MODE #define HIL_MODE HIL_MODE_DISABLED #endif #if HIL_MODE != HIL_MODE_DISABLED // we are in HIL mode # undef GPS_PROTOCOL # define GPS_PROTOCOL GPS_PROTOCOL_NONE #undef CONFIG_SONAR #define CONFIG_SONAR DISABLED #endif ////////////////////////////////////////////////////////////////////////////// // GPS_PROTOCOL // #ifndef GPS_PROTOCOL # define GPS_PROTOCOL GPS_PROTOCOL_AUTO #endif #ifndef MAV_SYSTEM_ID # define MAV_SYSTEM_ID 1 #endif ////////////////////////////////////////////////////////////////////////////// // Serial port speeds. // #ifndef SERIAL0_BAUD # define SERIAL0_BAUD 115200 #endif #ifndef SERIAL3_BAUD # define SERIAL3_BAUD 57600 #endif ////////////////////////////////////////////////////////////////////////////// // Battery monitoring // #ifndef FS_BATT_VOLTAGE_DEFAULT # define FS_BATT_VOLTAGE_DEFAULT 10.5f // default battery voltage below which failsafe will be triggered #endif #ifndef FS_BATT_MAH_DEFAULT # define FS_BATT_MAH_DEFAULT 0 // default battery capacity (in mah) below which failsafe will be triggered #endif #ifndef BOARD_VOLTAGE_MIN # define BOARD_VOLTAGE_MIN 4300 // min board voltage in milli volts for pre-arm checks #endif #ifndef BOARD_VOLTAGE_MAX # define BOARD_VOLTAGE_MAX 5800 // max board voltage in milli volts for pre-arm checks #endif // Battery failsafe #ifndef FS_BATTERY # define FS_BATTERY DISABLED #endif // GPS failsafe #ifndef FS_GPS # define FS_GPS ENABLED #endif #ifndef FAILSAFE_GPS_TIMEOUT_MS # define FAILSAFE_GPS_TIMEOUT_MS 5000 // gps failsafe triggers after 5 seconds with no GPS #endif #ifndef GPS_HDOP_GOOD_DEFAULT # define GPS_HDOP_GOOD_DEFAULT 200 // minimum hdop that represents a good position. used during pre-arm checks if fence is enabled #endif // GCS failsafe #ifndef FS_GCS # define FS_GCS DISABLED #endif #ifndef FS_GCS_TIMEOUT_MS # define FS_GCS_TIMEOUT_MS 5000 // gcs failsafe triggers after 5 seconds with no GCS heartbeat #endif // possible values for FS_GCS parameter #define FS_GCS_DISABLED 0 #define FS_GCS_ENABLED_ALWAYS_RTL 1 #define FS_GCS_ENABLED_CONTINUE_MISSION 2 ////////////////////////////////////////////////////////////////////////////// // MAGNETOMETER #ifndef MAGNETOMETER # define MAGNETOMETER ENABLED #endif // expected magnetic field strength. pre-arm checks will fail if 50% higher or lower than this value #if CONFIG_HAL_BOARD == HAL_BOARD_APM1 || CONFIG_HAL_BOARD == HAL_BOARD_APM2 #ifndef COMPASS_MAGFIELD_EXPECTED # define COMPASS_MAGFIELD_EXPECTED 330 // pre arm will fail if mag field > 544 or < 115 #endif #else // PX4, SITL #ifndef COMPASS_MAGFIELD_EXPECTED #define COMPASS_MAGFIELD_EXPECTED 530 // pre arm will fail if mag field > 874 or < 185 #endif #endif ////////////////////////////////////////////////////////////////////////////// // OPTICAL_FLOW #ifndef OPTFLOW // sets global enabled/disabled flag for optflow (as seen in CLI) # define OPTFLOW DISABLED #endif #ifndef OPTFLOW_ORIENTATION # define OPTFLOW_ORIENTATION AP_OPTICALFLOW_ADNS3080_PINS_FORWARD #endif #ifndef OPTFLOW_RESOLUTION # define OPTFLOW_RESOLUTION ADNS3080_RESOLUTION_1600 #endif #ifndef OPTFLOW_FOV # define OPTFLOW_FOV AP_OPTICALFLOW_ADNS3080_08_FOV #endif // optical flow based loiter PI values #ifndef OPTFLOW_ROLL_P #define OPTFLOW_ROLL_P 2.5f #endif #ifndef OPTFLOW_ROLL_I #define OPTFLOW_ROLL_I 0.5f #endif #ifndef OPTFLOW_ROLL_D #define OPTFLOW_ROLL_D 0.12f #endif #ifndef OPTFLOW_PITCH_P #define OPTFLOW_PITCH_P 2.5f #endif #ifndef OPTFLOW_PITCH_I #define OPTFLOW_PITCH_I 0.5f #endif #ifndef OPTFLOW_PITCH_D #define OPTFLOW_PITCH_D 0.12f #endif #ifndef OPTFLOW_IMAX #define OPTFLOW_IMAX 100 #endif ////////////////////////////////////////////////////////////////////////////// // Auto Tuning #ifndef AUTOTUNE # define AUTOTUNE ENABLED #endif ////////////////////////////////////////////////////////////////////////////// // Crop Sprayer #ifndef SPRAYER # define SPRAYER DISABLED #endif ////////////////////////////////////////////////////////////////////////////// // RADIO CONFIGURATION ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // FLIGHT_MODE // #if !defined(FLIGHT_MODE_1) # define FLIGHT_MODE_1 STABILIZE #endif #if !defined(FLIGHT_MODE_2) # define FLIGHT_MODE_2 STABILIZE #endif #if !defined(FLIGHT_MODE_3) # define FLIGHT_MODE_3 STABILIZE #endif #if !defined(FLIGHT_MODE_4) # define FLIGHT_MODE_4 STABILIZE #endif #if !defined(FLIGHT_MODE_5) # define FLIGHT_MODE_5 STABILIZE #endif #if !defined(FLIGHT_MODE_6) # define FLIGHT_MODE_6 STABILIZE #endif ////////////////////////////////////////////////////////////////////////////// // Throttle Failsafe // // possible values for FS_THR parameter #define FS_THR_DISABLED 0 #define FS_THR_ENABLED_ALWAYS_RTL 1 #define FS_THR_ENABLED_CONTINUE_MISSION 2 #define FS_THR_ENABLED_ALWAYS_LAND 3 #ifndef FS_THR_VALUE_DEFAULT # define FS_THR_VALUE_DEFAULT 975 #endif #ifndef MINIMUM_THROTTLE # define MINIMUM_THROTTLE 130 #endif #ifndef MAXIMUM_THROTTLE # define MAXIMUM_THROTTLE 1000 #endif #ifndef LAND_SPEED # define LAND_SPEED 50 // the descent speed for the final stage of landing in cm/s #endif #ifndef LAND_START_ALT # define LAND_START_ALT 1000 // altitude in cm where land controller switches to slow rate of descent #endif #ifndef LAND_DETECTOR_TRIGGER # define LAND_DETECTOR_TRIGGER 50 // number of 50hz iterations with near zero climb rate and low throttle that triggers landing complete. #endif ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // STARTUP BEHAVIOUR ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // GROUND_START_DELAY // #ifndef GROUND_START_DELAY # define GROUND_START_DELAY 3 #endif ////////////////////////////////////////////////////////////////////////////// // CAMERA TRIGGER AND CONTROL // #ifndef CAMERA # define CAMERA ENABLED #endif ////////////////////////////////////////////////////////////////////////////// // MOUNT (ANTENNA OR CAMERA) // #ifndef MOUNT # define MOUNT ENABLED #endif #ifndef MOUNT2 # define MOUNT2 DISABLED #endif ////////////////////////////////////////////////////////////////////////////// // Attitude Control // // definitions for earth frame and body frame // used to specify frame to rate controllers #define EARTH_FRAME 0 #define BODY_FRAME 1 #define BODY_EARTH_FRAME 2 // Flight mode roll, pitch, yaw, throttle and navigation definitions // Acro Mode #ifndef ACRO_YAW # define ACRO_YAW YAW_ACRO #endif #ifndef ACRO_RP # define ACRO_RP ROLL_PITCH_ACRO #endif #ifndef ACRO_THR # define ACRO_THR THROTTLE_MANUAL #endif #ifndef ACRO_LEVEL_MAX_ANGLE # define ACRO_LEVEL_MAX_ANGLE 3000 #endif // Sport Mode #ifndef SPORT_YAW # define SPORT_YAW YAW_HOLD #endif #ifndef SPORT_RP # define SPORT_RP ROLL_PITCH_SPORT #endif #ifndef SPORT_THR # define SPORT_THR THROTTLE_HOLD #endif // Alt Hold Mode #ifndef ALT_HOLD_YAW # define ALT_HOLD_YAW YAW_HOLD #endif #ifndef ALT_HOLD_RP # define ALT_HOLD_RP ROLL_PITCH_STABLE #endif #ifndef ALT_HOLD_THR # define ALT_HOLD_THR THROTTLE_HOLD #endif // AUTO Mode // Note: Auto mode yaw behaviour is controlled by WP_YAW_BEHAVIOR parameter #ifndef WP_YAW_BEHAVIOR_DEFAULT # define WP_YAW_BEHAVIOR_DEFAULT WP_YAW_BEHAVIOR_LOOK_AT_NEXT_WP_EXCEPT_RTL #endif #ifndef AUTO_RP # define AUTO_RP ROLL_PITCH_AUTO #endif #ifndef AUTO_THR # define AUTO_THR THROTTLE_AUTO #endif // CIRCLE Mode #ifndef CIRCLE_YAW # define CIRCLE_YAW YAW_CIRCLE #endif #ifndef CIRCLE_RP # define CIRCLE_RP ROLL_PITCH_AUTO #endif #ifndef CIRCLE_THR # define CIRCLE_THR THROTTLE_HOLD #endif #ifndef CIRCLE_NAV # define CIRCLE_NAV NAV_CIRCLE #endif #ifndef CIRCLE_RADIUS # define CIRCLE_RADIUS 10 // radius in meters for circle mode #endif #ifndef CIRCLE_RATE # define CIRCLE_RATE 20.0f // degrees per second turn rate #endif // Guided Mode // Note: Guided mode yaw behaviour is controlled by WP_YAW_BEHAVIOR parameter #ifndef GUIDED_RP # define GUIDED_RP ROLL_PITCH_AUTO #endif #ifndef GUIDED_THR # define GUIDED_THR THROTTLE_AUTO #endif #ifndef GUIDED_NAV # define GUIDED_NAV NAV_WP #endif // LOITER Mode #ifndef LOITER_YAW # define LOITER_YAW YAW_HOLD #endif #ifndef LOITER_RP # define LOITER_RP ROLL_PITCH_LOITER #endif #ifndef LOITER_THR # define LOITER_THR THROTTLE_HOLD #endif #ifndef LOITER_NAV # define LOITER_NAV NAV_LOITER #endif // POSITION Mode #ifndef POSITION_YAW # define POSITION_YAW YAW_HOLD #endif #ifndef POSITION_RP # define POSITION_RP ROLL_PITCH_LOITER #endif #ifndef POSITION_THR # define POSITION_THR THROTTLE_MANUAL_TILT_COMPENSATED #endif #ifndef POSITION_NAV # define POSITION_NAV NAV_LOITER #endif // RTL Mode // Note: RTL Yaw behaviour is controlled by WP_YAW_BEHAVIOR parameter #ifndef RTL_RP # define RTL_RP ROLL_PITCH_AUTO #endif #ifndef RTL_THR # define RTL_THR THROTTLE_AUTO #endif #ifndef SUPER_SIMPLE # define SUPER_SIMPLE DISABLED #endif #ifndef SUPER_SIMPLE_RADIUS # define SUPER_SIMPLE_RADIUS 1000 #endif // RTL Mode #ifndef RTL_ALT_FINAL # define RTL_ALT_FINAL 0 // the altitude the vehicle will move to as the final stage of Returning to Launch. Set to zero to land. #endif #ifndef RTL_ALT # define RTL_ALT 1500 // default alt to return to home in cm, 0 = Maintain current altitude #endif #ifndef RTL_ALT_MAX # define RTL_ALT_MAX 8000 // Max height to return to home in cm (i.e 80m) #endif #ifndef RTL_LOITER_TIME # define RTL_LOITER_TIME 5000 // Time (in milliseconds) to loiter above home before begining final descent #endif // Optical Flow LOITER Mode #ifndef OF_LOITER_YAW # define OF_LOITER_YAW YAW_HOLD #endif #ifndef OF_LOITER_RP # define OF_LOITER_RP ROLL_PITCH_STABLE_OF #endif #ifndef OF_LOITER_THR # define OF_LOITER_THR THROTTLE_HOLD #endif #ifndef OF_LOITER_NAV # define OF_LOITER_NAV NAV_NONE #endif ////////////////////////////////////////////////////////////////////////////// // Attitude Control // // Acro mode gains #ifndef ACRO_RP_P # define ACRO_RP_P 4.5f #endif #ifndef ACRO_YAW_P # define ACRO_YAW_P 4.5f #endif // Stabilize (angle controller) gains #ifndef STABILIZE_ROLL_P # define STABILIZE_ROLL_P 4.5f #endif #ifndef STABILIZE_ROLL_I # define STABILIZE_ROLL_I 0.0f #endif #ifndef STABILIZE_ROLL_IMAX # define STABILIZE_ROLL_IMAX 0 #endif #ifndef STABILIZE_PITCH_P # define STABILIZE_PITCH_P 4.5f #endif #ifndef STABILIZE_PITCH_I # define STABILIZE_PITCH_I 0.0f #endif #ifndef STABILIZE_PITCH_IMAX # define STABILIZE_PITCH_IMAX 0 #endif #ifndef STABILIZE_RATE_LIMIT # define STABILIZE_RATE_LIMIT 18000 #endif #ifndef STABILIZE_YAW_P # define STABILIZE_YAW_P 4.5f // increase for more aggressive Yaw Hold, decrease if it's bouncy #endif #ifndef STABILIZE_YAW_I # define STABILIZE_YAW_I 0.0f #endif #ifndef STABILIZE_YAW_IMAX # define STABILIZE_YAW_IMAX 0 #endif #ifndef YAW_LOOK_AHEAD_MIN_SPEED # define YAW_LOOK_AHEAD_MIN_SPEED 100 // minimum ground speed in cm/s required before copter is aimed at ground course #endif ////////////////////////////////////////////////////////////////////////////// // Stabilize Rate Control // #ifndef ROLL_PITCH_INPUT_MAX # define ROLL_PITCH_INPUT_MAX 4500 // roll, pitch input range #endif #ifndef DEFAULT_ANGLE_MAX # define DEFAULT_ANGLE_MAX 4500 // ANGLE_MAX parameters default value #endif #ifndef RATE_ROLL_P # define RATE_ROLL_P 0.150f #endif #ifndef RATE_ROLL_I # define RATE_ROLL_I 0.100f #endif #ifndef RATE_ROLL_D # define RATE_ROLL_D 0.004f #endif #ifndef RATE_ROLL_IMAX # define RATE_ROLL_IMAX 500 #endif #ifndef RATE_PITCH_P # define RATE_PITCH_P 0.150f #endif #ifndef RATE_PITCH_I # define RATE_PITCH_I 0.100f #endif #ifndef RATE_PITCH_D # define RATE_PITCH_D 0.004f #endif #ifndef RATE_PITCH_IMAX # define RATE_PITCH_IMAX 500 #endif #ifndef RATE_YAW_P # define RATE_YAW_P 0.200f #endif #ifndef RATE_YAW_I # define RATE_YAW_I 0.020f #endif #ifndef RATE_YAW_D # define RATE_YAW_D 0.000f #endif #ifndef RATE_YAW_IMAX # define RATE_YAW_IMAX 800 #endif ////////////////////////////////////////////////////////////////////////////// // Rate controlled stabilized variables // #ifndef MAX_ROLL_OVERSHOOT #define MAX_ROLL_OVERSHOOT 3000 #endif #ifndef MAX_PITCH_OVERSHOOT #define MAX_PITCH_OVERSHOOT 3000 #endif #ifndef MAX_YAW_OVERSHOOT #define MAX_YAW_OVERSHOOT 1000 #endif #ifndef ACRO_BALANCE_ROLL #define ACRO_BALANCE_ROLL 1.0f #endif #ifndef ACRO_BALANCE_PITCH #define ACRO_BALANCE_PITCH 1.0f #endif ////////////////////////////////////////////////////////////////////////////// // Loiter position control gains // #ifndef LOITER_P # define LOITER_P 1.0f #endif #ifndef LOITER_I # define LOITER_I 0.0f #endif #ifndef LOITER_IMAX # define LOITER_IMAX 0 #endif ////////////////////////////////////////////////////////////////////////////// // Loiter rate control gains // #ifndef LOITER_RATE_P # define LOITER_RATE_P 1.0f #endif #ifndef LOITER_RATE_I # define LOITER_RATE_I 0.5f #endif #ifndef LOITER_RATE_D # define LOITER_RATE_D 0.0f #endif #ifndef LOITER_RATE_IMAX # define LOITER_RATE_IMAX 400 // maximum acceleration from I term build-up in cm/s/s #endif ////////////////////////////////////////////////////////////////////////////// // Autopilot rotate rate limits // #ifndef AUTO_YAW_SLEW_RATE # define AUTO_YAW_SLEW_RATE 60 // degrees/sec #endif ////////////////////////////////////////////////////////////////////////////// // Throttle control gains // #ifndef THROTTLE_CRUISE # define THROTTLE_CRUISE 450 // default estimate of throttle required for vehicle to maintain a hover #endif #ifndef THR_MID # define THR_MID 500 // Throttle output (0 ~ 1000) when throttle stick is in mid position #endif #ifndef ALT_HOLD_TAKEOFF_JUMP # define ALT_HOLD_TAKEOFF_JUMP 20 // jump in altitude target when taking off in Loiter or AltHold flight modes #endif #ifndef ALT_HOLD_P # define ALT_HOLD_P 1.0f #endif #ifndef ALT_HOLD_I # define ALT_HOLD_I 0.0f #endif #ifndef ALT_HOLD_IMAX # define ALT_HOLD_IMAX 300 #endif // RATE control #ifndef THROTTLE_RATE_P # define THROTTLE_RATE_P 6.0f #endif #ifndef THROTTLE_RATE_I # define THROTTLE_RATE_I 0.0f #endif #ifndef THROTTLE_RATE_D # define THROTTLE_RATE_D 0.0f #endif #ifndef THROTTLE_RATE_IMAX # define THROTTLE_RATE_IMAX 300 #endif // default maximum vertical velocity the pilot may request #ifndef PILOT_VELZ_MAX # define PILOT_VELZ_MAX 250 // maximum vertical velocity in cm/s #endif // max distance in cm above or below current location that will be used for the alt target when transitioning to alt-hold mode #ifndef ALT_HOLD_INIT_MAX_OVERSHOOT # define ALT_HOLD_INIT_MAX_OVERSHOOT 200 #endif // the acceleration used to define the distance-velocity curve #ifndef ALT_HOLD_ACCEL_MAX # define ALT_HOLD_ACCEL_MAX 250 // if you change this you must also update the duplicate declaration in AC_WPNav.h #endif // Throttle Accel control #ifndef THROTTLE_ACCEL_P # define THROTTLE_ACCEL_P 0.75f #endif #ifndef THROTTLE_ACCEL_I # define THROTTLE_ACCEL_I 1.50f #endif #ifndef THROTTLE_ACCEL_D # define THROTTLE_ACCEL_D 0.0f #endif #ifndef THROTTLE_ACCEL_IMAX # define THROTTLE_ACCEL_IMAX 500 #endif ////////////////////////////////////////////////////////////////////////////// // Dataflash logging control // #ifndef LOGGING_ENABLED # define LOGGING_ENABLED ENABLED #endif #ifndef LOG_ATTITUDE_FAST # define LOG_ATTITUDE_FAST DISABLED #endif #ifndef LOG_ATTITUDE_MED # define LOG_ATTITUDE_MED ENABLED #endif #ifndef LOG_GPS # define LOG_GPS ENABLED #endif #ifndef LOG_PM # define LOG_PM ENABLED #endif #ifndef LOG_CTUN # define LOG_CTUN ENABLED #endif #ifndef LOG_NTUN # define LOG_NTUN ENABLED #endif #ifndef LOG_IMU # define LOG_IMU DISABLED #endif #ifndef LOG_CMD # define LOG_CMD ENABLED #endif // current #ifndef LOG_CURRENT # define LOG_CURRENT ENABLED #endif // quad motor PWMs #ifndef LOG_MOTORS # define LOG_MOTORS DISABLED #endif // optical flow #ifndef LOG_OPTFLOW # define LOG_OPTFLOW DISABLED #endif #ifndef LOG_PID # define LOG_PID DISABLED #endif #ifndef LOG_COMPASS # define LOG_COMPASS DISABLED #endif #ifndef LOG_INAV # define LOG_INAV DISABLED #endif #ifndef LOG_CAMERA # define LOG_CAMERA ENABLED #endif // calculate the default log_bitmask #define LOGBIT(_s) (LOG_ ## _s ? MASK_LOG_ ## _s : 0) #define DEFAULT_LOG_BITMASK \ LOGBIT(ATTITUDE_FAST) | \ LOGBIT(ATTITUDE_MED) | \ LOGBIT(GPS) | \ LOGBIT(PM) | \ LOGBIT(CTUN) | \ LOGBIT(NTUN) | \ LOGBIT(IMU) | \ LOGBIT(CMD) | \ LOGBIT(CURRENT) | \ LOGBIT(MOTORS) | \ LOGBIT(OPTFLOW) | \ LOGBIT(PID) | \ LOGBIT(COMPASS) | \ LOGBIT(INAV) ////////////////////////////////////////////////////////////////////////////// // AP_Limits Defaults // // Enable/disable AP_Limits #ifndef AC_FENCE #define AC_FENCE ENABLED #endif ////////////////////////////////////////////////////////////////////////////// // Developer Items // // use this to completely disable the CLI #ifndef CLI_ENABLED # define CLI_ENABLED ENABLED #endif #endif // __ARDUCOPTER_CONFIG_H__