mirror of https://github.com/ArduPilot/ardupilot
606 lines
27 KiB
Plaintext
606 lines
27 KiB
Plaintext
/// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
|
|
|
/*
|
|
APMRover2 parameter definitions
|
|
*/
|
|
|
|
#define GSCALAR(v, name, def) { g.v.vtype, name, Parameters::k_param_ ## v, &g.v, {def_value:def} }
|
|
#define GGROUP(v, name, class) { AP_PARAM_GROUP, name, Parameters::k_param_ ## v, &g.v, {group_info:class::var_info} }
|
|
#define GOBJECT(v, name, class) { AP_PARAM_GROUP, name, Parameters::k_param_ ## v, &v, {group_info:class::var_info} }
|
|
#define GOBJECTN(v, pname, name, class) { AP_PARAM_GROUP, name, Parameters::k_param_ ## pname, &v, {group_info : class::var_info} }
|
|
|
|
const AP_Param::Info var_info[] PROGMEM = {
|
|
GSCALAR(format_version, "FORMAT_VERSION", 1),
|
|
GSCALAR(software_type, "SYSID_SW_TYPE", Parameters::k_software_type),
|
|
|
|
// misc
|
|
// @Param: LOG_BITMASK
|
|
// @DisplayName: Log bitmask
|
|
// @Description: Two byte bitmap of log types to enable in dataflash
|
|
// @Values: 0:Disabled,3950:Default,4078:Default+IMU
|
|
// @User: Advanced
|
|
GSCALAR(log_bitmask, "LOG_BITMASK", DEFAULT_LOG_BITMASK),
|
|
GSCALAR(num_resets, "SYS_NUM_RESETS", 0),
|
|
|
|
// @Param: RST_SWITCH_CH
|
|
// @DisplayName: Reset Switch Channel
|
|
// @Description: RC channel to use to reset to last flight mode after geofence takeover.
|
|
// @User: Advanced
|
|
GSCALAR(reset_switch_chan, "RST_SWITCH_CH", 0),
|
|
|
|
// @Param: INITIAL_MODE
|
|
// @DisplayName: Initial driving mode
|
|
// @Description: This selects the mode to start in on boot. This is useful for when you want to start in AUTO mode on boot without a receiver. Usuallly used in combination with when AUTO_TRIGGER_PIN or AUTO_KICKSTART.
|
|
// @Values: 0:MANUAL,2:LEARNING,3:STEERING,4:HOLD,10:AUTO,11:RTL,15:GUIDED
|
|
// @User: Advanced
|
|
GSCALAR(initial_mode, "INITIAL_MODE", MANUAL),
|
|
|
|
// @Param: RSSI_PIN
|
|
// @DisplayName: Receiver RSSI sensing pin
|
|
// @Description: This selects an analog pin for the receiver RSSI voltage. It assumes the voltage is 5V for max rssi, 0V for minimum
|
|
// @Values: -1:Disabled, 0:APM2 A0, 1:APM2 A1, 2:APM2 A2, 13:APM2 A13, 103:Pixhawk SBUS
|
|
// @User: Standard
|
|
GSCALAR(rssi_pin, "RSSI_PIN", -1),
|
|
|
|
// @Param: SYSID_THIS_MAV
|
|
// @DisplayName: MAVLink system ID
|
|
// @Description: ID used in MAVLink protocol to identify this vehicle
|
|
// @Range: 1 255
|
|
// @User: Advanced
|
|
GSCALAR(sysid_this_mav, "SYSID_THISMAV", MAV_SYSTEM_ID),
|
|
|
|
// @Param: SYSID_MYGCS
|
|
// @DisplayName: MAVLink ground station ID
|
|
// @Description: ID used in MAVLink protocol to identify the controlling ground station
|
|
// @Range: 1 255
|
|
// @User: Advanced
|
|
GSCALAR(sysid_my_gcs, "SYSID_MYGCS", 255),
|
|
|
|
// @Param: SERIAL0_BAUD
|
|
// @DisplayName: USB Console Baud Rate
|
|
// @Description: The baud rate used on the USB console. The APM2 can support all baudrates up to 115, and also can support 500. The PX4 can support rates of up to 1500. If you setup a rate you cannot support on APM2 and then can't connect to your board you should load a firmware from a different vehicle type. That will reset all your parameters to defaults.
|
|
// @Values: 1:1200,2:2400,4:4800,9:9600,19:19200,38:38400,57:57600,111:111100,115:115200,500:500000,921:921600,1500:1500000
|
|
// @User: Standard
|
|
GSCALAR(serial0_baud, "SERIAL0_BAUD", SERIAL0_BAUD/1000),
|
|
|
|
// @Param: SERIAL1_BAUD
|
|
// @DisplayName: Telemetry Baud Rate
|
|
// @Description: The baud rate used on the first telemetry port. The APM2 can support all baudrates up to 115, and also can support 500. The PX4 can support rates of up to 1500. If you setup a rate you cannot support on APM2 and then can't connect to your board you should load a firmware from a different vehicle type. That will reset all your parameters to defaults.
|
|
// @Values: 1:1200,2:2400,4:4800,9:9600,19:19200,38:38400,57:57600,111:111100,115:115200,500:500000,921:921600,1500:1500000
|
|
// @User: Standard
|
|
GSCALAR(serial1_baud, "SERIAL1_BAUD", SERIAL1_BAUD/1000),
|
|
|
|
#if MAVLINK_COMM_NUM_BUFFERS > 2
|
|
// @Param: SERIAL2_BAUD
|
|
// @DisplayName: Telemetry Baud Rate
|
|
// @Description: The baud rate used on the second telemetry port. The APM2 can support all baudrates up to 115, and also can support 500. The PX4 can support rates of up to 1500. If you setup a rate you cannot support on APM2 and then can't connect to your board you should load a firmware from a different vehicle type. That will reset all your parameters to defaults.
|
|
// @Values: 1:1200,2:2400,4:4800,9:9600,19:19200,38:38400,57:57600,111:111100,115:115200,500:500000,921:921600,1500:1500000
|
|
// @User: Standard
|
|
GSCALAR(serial2_baud, "SERIAL2_BAUD", SERIAL2_BAUD/1000),
|
|
|
|
#if FRSKY_TELEM_ENABLED == ENABLED
|
|
// @Param: SERIAL2_PROTOCOL
|
|
// @DisplayName: SERIAL2 protocol selection
|
|
// @Description: Control what protocol telemetry 2 port should be used for
|
|
// @Values: 1:GCS Mavlink,2:Frsky D-PORT
|
|
// @User: Standard
|
|
GSCALAR(serial2_protocol, "SERIAL2_PROTOCOL", SERIAL2_MAVLINK),
|
|
#endif // FRSKY_TELEM_ENABLED
|
|
|
|
#endif // MAVLINK_COMM_NUM_BUFFERS
|
|
|
|
|
|
// @Param: TELEM_DELAY
|
|
// @DisplayName: Telemetry startup delay
|
|
// @Description: The amount of time (in seconds) to delay radio telemetry to prevent an Xbee bricking on power up
|
|
// @User: Standard
|
|
// @Units: seconds
|
|
// @Range: 0 10
|
|
// @Increment: 1
|
|
GSCALAR(telem_delay, "TELEM_DELAY", 0),
|
|
|
|
// @Param: SKIP_GYRO_CAL
|
|
// @DisplayName: Skip gyro calibration
|
|
// @Description: When enabled this tells the APM to skip the normal gyroscope calibration at startup, and instead use the saved gyro calibration from the last flight. You should only enable this if you are careful to check that your aircraft has good attitude control before flying, as some boards may have significantly different gyro calibration between boots, especially if the temperature changes a lot. If gyro calibration is skipped then APM relies on using the gyro drift detection code to get the right gyro calibration in the few minutes after it boots. This option is mostly useful where the requirement to hold the vehicle still while it is booting is a significant problem.
|
|
// @Values: 0:Disabled,1:Enabled
|
|
// @User: Advanced
|
|
GSCALAR(skip_gyro_cal, "SKIP_GYRO_CAL", 0),
|
|
|
|
// @Param: MAG_ENABLED
|
|
// @DisplayName: Magnetometer (compass) enabled
|
|
// @Description: This should be set to 1 if a compass is installed
|
|
// @User: Standard
|
|
// @Values: 0:Disabled,1:Enabled
|
|
GSCALAR(compass_enabled, "MAG_ENABLE", MAGNETOMETER),
|
|
|
|
// @Param: AUTO_TRIGGER_PIN
|
|
// @DisplayName: Auto mode trigger pin
|
|
// @Description: pin number to use to enable the throttle in auto mode. If set to -1 then don't use a trigger, otherwise this is a pin number which if held low in auto mode will enable the motor to run. If the switch is released while in AUTO then the motor will stop again. This can be used in combination with INITIAL_MODE to give a 'press button to start' rover with no receiver.
|
|
// @Values: -1:Disabled,0-8:TiggerPin
|
|
// @User: standard
|
|
GSCALAR(auto_trigger_pin, "AUTO_TRIGGER_PIN", -1),
|
|
|
|
// @Param: AUTO_KICKSTART
|
|
// @DisplayName: Auto mode trigger kickstart acceleration
|
|
// @Description: X acceleration in meters/second/second to use to trigger the motor start in auto mode. If set to zero then auto throttle starts immediately when the mode switch happens, otherwise the rover waits for the X acceleration to go above this value before it will start the motor
|
|
// @Units: m/s/s
|
|
// @Range: 0 20
|
|
// @Increment: 0.1
|
|
// @User: standard
|
|
GSCALAR(auto_kickstart, "AUTO_KICKSTART", 0.0f),
|
|
|
|
// @Param: CRUISE_SPEED
|
|
// @DisplayName: Target cruise speed in auto modes
|
|
// @Description: The target speed in auto missions.
|
|
// @Units: m/s
|
|
// @Range: 0 100
|
|
// @Increment: 0.1
|
|
// @User: Standard
|
|
GSCALAR(speed_cruise, "CRUISE_SPEED", 5),
|
|
|
|
// @Param: SPEED_TURN_GAIN
|
|
// @DisplayName: Target speed reduction while turning
|
|
// @Description: The percentage to reduce the throttle while turning. If this is 100% then the target speed is not reduced while turning. If this is 50% then the target speed is reduced in proportion to the turn rate, with a reduction of 50% when the steering is maximally deflected.
|
|
// @Units: percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(speed_turn_gain, "SPEED_TURN_GAIN", 50),
|
|
|
|
// @Param: SPEED_TURN_DIST
|
|
// @DisplayName: Distance to turn to start reducing speed
|
|
// @Description: The distance to the next turn at which the rover reduces its target speed by the SPEED_TURN_GAIN
|
|
// @Units: meters
|
|
// @Range: 0 100
|
|
// @Increment: 0.1
|
|
// @User: Standard
|
|
GSCALAR(speed_turn_dist, "SPEED_TURN_DIST", 2.0f),
|
|
|
|
// @Param: BRAKING_PERCENT
|
|
// @DisplayName: Percentage braking to apply
|
|
// @Description: The maximum reverse throttle braking percentage to apply when cornering
|
|
// @Units: percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(braking_percent, "BRAKING_PERCENT", 0),
|
|
|
|
// @Param: BRAKING_SPEEDERR
|
|
// @DisplayName: Speed error at which to apply braking
|
|
// @Description: The amount of overspeed error at which to start applying braking
|
|
// @Units: m/s
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(braking_speederr, "BRAKING_SPEEDERR", 3),
|
|
|
|
// @Param: PIVOT_TURN_ANGLE
|
|
// @DisplayName: Pivot turn angle
|
|
// @Description: Navigation angle threshold in degrees to switch to pivot steering when SKID_STEER_OUT is 1. This allows you to setup a skid steering rover to turn on the spot in auto mode when the angle it needs to turn it greater than this angle. An angle of zero means to disable pivot turning. Note that you will probably also want to set a low value for WP_RADIUS to get neat turns.
|
|
// @Units: degrees
|
|
// @Range: 0 360
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(pivot_turn_angle, "PIVOT_TURN_ANGLE", 30),
|
|
|
|
// @Param: CH7_OPTION
|
|
// @DisplayName: Channel 7 option
|
|
// @Description: What to do use channel 7 for
|
|
// @Values: 0:Nothing,1:LearnWaypoint
|
|
// @User: Standard
|
|
GSCALAR(ch7_option, "CH7_OPTION", CH7_OPTION),
|
|
|
|
// @Group: RC1_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp
|
|
GGROUP(rc_1, "RC1_", RC_Channel),
|
|
|
|
// @Group: RC2_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp
|
|
GGROUP(rc_2, "RC2_", RC_Channel_aux),
|
|
|
|
// @Group: RC3_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp
|
|
GGROUP(rc_3, "RC3_", RC_Channel),
|
|
|
|
// @Group: RC4_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_4, "RC4_", RC_Channel_aux),
|
|
|
|
// @Group: RC5_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_5, "RC5_", RC_Channel_aux),
|
|
|
|
// @Group: RC6_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_6, "RC6_", RC_Channel_aux),
|
|
|
|
// @Group: RC7_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_7, "RC7_", RC_Channel_aux),
|
|
|
|
// @Group: RC8_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_8, "RC8_", RC_Channel_aux),
|
|
|
|
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
|
// @Group: RC9_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_9, "RC9_", RC_Channel_aux),
|
|
#endif
|
|
|
|
#if CONFIG_HAL_BOARD == HAL_BOARD_APM2 || CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
|
// @Group: RC10_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_10, "RC10_", RC_Channel_aux),
|
|
|
|
// @Group: RC11_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_11, "RC11_", RC_Channel_aux),
|
|
#endif
|
|
|
|
#if CONFIG_HAL_BOARD == HAL_BOARD_PX4 || CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN
|
|
// @Group: RC12_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_12, "RC12_", RC_Channel_aux),
|
|
|
|
// @Group: RC13_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_13, "RC13_", RC_Channel_aux),
|
|
|
|
// @Group: RC14_
|
|
// @Path: ../libraries/RC_Channel/RC_Channel.cpp,../libraries/RC_Channel/RC_Channel_aux.cpp
|
|
GGROUP(rc_14, "RC14_", RC_Channel_aux),
|
|
#endif
|
|
|
|
// @Param: THR_MIN
|
|
// @DisplayName: Minimum Throttle
|
|
// @Description: The minimum throttle setting to which the autopilot will apply. This is mostly useful for rovers with internal combustion motors, to prevent the motor from cutting out in auto mode.
|
|
// @Units: Percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(throttle_min, "THR_MIN", THROTTLE_MIN),
|
|
|
|
// @Param: THR_MAX
|
|
// @DisplayName: Maximum Throttle
|
|
// @Description: The maximum throttle setting to which the autopilot will apply. This can be used to prevent overheating a ESC or motor on an electric rover.
|
|
// @Units: Percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(throttle_max, "THR_MAX", THROTTLE_MAX),
|
|
|
|
// @Param: CRUISE_THROTTLE
|
|
// @DisplayName: Base throttle percentage in auto
|
|
// @Description: The base throttle percentage to use in auto mode. The CRUISE_SPEED parameter controls the target speed, but the rover starts with the CRUISE_THROTTLE setting as the initial estimate for how much throttle is needed to achieve that speed. It then adjusts the throttle based on how fast the rover is actually going.
|
|
// @Units: Percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(throttle_cruise, "CRUISE_THROTTLE", 50),
|
|
|
|
// @Param: THR_SLEWRATE
|
|
// @DisplayName: Throttle slew rate
|
|
// @Description: maximum percentage change in throttle per second. A setting of 10 means to not change the throttle by more than 10% of the full throttle range in one second. A value of zero means no limit. A value of 100 means the throttle can change over its full range in one second. Note that for some NiMH powered rovers setting a lower value like 40 or 50 may be worthwhile as the sudden current demand on the battery of a big rise in throttle may cause a brownout.
|
|
// @Units: Percent
|
|
// @Range: 0 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(throttle_slewrate, "THR_SLEWRATE", 100),
|
|
|
|
// @Param: SKID_STEER_OUT
|
|
// @DisplayName: Skid steering output
|
|
// @Description: Set this to 1 for skid steering controlled rovers (tank track style). When enabled, servo1 is used for the left track control, servo3 is used for right track control
|
|
// @Values: 0:Disabled, 1:SkidSteeringOutput
|
|
// @User: Standard
|
|
GSCALAR(skid_steer_out, "SKID_STEER_OUT", 0),
|
|
|
|
// @Param: SKID_STEER_IN
|
|
// @DisplayName: Skid steering input
|
|
// @Description: Set this to 1 for skid steering input rovers (tank track style in RC controller). When enabled, servo1 is used for the left track control, servo3 is used for right track control
|
|
// @Values: 0:Disabled, 1:SkidSteeringInput
|
|
// @User: Standard
|
|
GSCALAR(skid_steer_in, "SKID_STEER_IN", 0),
|
|
|
|
// @Param: FS_ACTION
|
|
// @DisplayName: Failsafe Action
|
|
// @Description: What to do on a failsafe event
|
|
// @Values: 0:Nothing,1:RTL,2:HOLD
|
|
// @User: Standard
|
|
GSCALAR(fs_action, "FS_ACTION", 2),
|
|
|
|
// @Param: FS_TIMEOUT
|
|
// @DisplayName: Failsafe timeout
|
|
// @Description: How long a failsafe event need to happen for before we trigger the failsafe action
|
|
// @Units: seconds
|
|
// @User: Standard
|
|
GSCALAR(fs_timeout, "FS_TIMEOUT", 5),
|
|
|
|
// @Param: FS_THR_ENABLE
|
|
// @DisplayName: Throttle Failsafe Enable
|
|
// @Description: The throttle failsafe allows you to configure a software failsafe activated by a setting on the throttle input channel to a low value. This can be used to detect the RC transmitter going out of range. Failsafe will be triggered when the throttle channel goes below the FS_THR_VALUE for FS_TIMEOUT seconds.
|
|
// @Values: 0:Disabled,1:Enabled
|
|
// @User: Standard
|
|
GSCALAR(fs_throttle_enabled, "FS_THR_ENABLE", 1),
|
|
|
|
// @Param: FS_THR_VALUE
|
|
// @DisplayName: Throttle Failsafe Value
|
|
// @Description: The PWM level on channel 3 below which throttle sailsafe triggers.
|
|
// @Range: 925 1100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(fs_throttle_value, "FS_THR_VALUE", 910),
|
|
|
|
// @Param: FS_GCS_ENABLE
|
|
// @DisplayName: GCS failsafe enable
|
|
// @Description: Enable ground control station telemetry failsafe. When enabled the Rover will execute the FS_ACTION when it fails to receive MAVLink heartbeat packets for FS_TIMEOUT seconds.
|
|
// @Values: 0:Disabled,1:Enabled
|
|
// @User: Standard
|
|
GSCALAR(fs_gcs_enabled, "FS_GCS_ENABLE", 0),
|
|
|
|
// @Param: RNGFND_TRIGGR_CM
|
|
// @DisplayName: Rangefinder trigger distance
|
|
// @Description: The distance from an obstacle in centimeters at which the rangefinder triggers a turn to avoid the obstacle
|
|
// @Units: centimeters
|
|
// @Range: 0 1000
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(sonar_trigger_cm, "RNGFND_TRIGGR_CM", 100),
|
|
|
|
// @Param: RNGFND_TURN_ANGL
|
|
// @DisplayName: Rangefinder trigger angle
|
|
// @Description: The course deviation in degrees to apply while avoiding an obstacle detected with the rangefinder. A positive number means to turn right, and a negative angle means to turn left.
|
|
// @Units: centimeters
|
|
// @Range: -45 45
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(sonar_turn_angle, "RNGFND_TURN_ANGL", 45),
|
|
|
|
// @Param: RNGFND_TURN_TIME
|
|
// @DisplayName: Rangefinder turn time
|
|
// @Description: The amount of time in seconds to apply the RNGFND_TURN_ANGL after detecting an obstacle.
|
|
// @Units: seconds
|
|
// @Range: 0 100
|
|
// @Increment: 0.1
|
|
// @User: Standard
|
|
GSCALAR(sonar_turn_time, "RNGFND_TURN_TIME", 1.0f),
|
|
|
|
// @Param: RNGFND_DEBOUNCE
|
|
// @DisplayName: Rangefinder debounce count
|
|
// @Description: The number of 50Hz rangefinder hits needed to trigger an obstacle avoidance event. If you get a lot of false sonar events then raise this number, but if you make it too large then it will cause lag in detecting obstacles, which could cause you go hit the obstacle.
|
|
// @Range: 1 100
|
|
// @Increment: 1
|
|
// @User: Standard
|
|
GSCALAR(sonar_debounce, "RNGFND_DEBOUNCE", 2),
|
|
|
|
// @Param: LEARN_CH
|
|
// @DisplayName: Learning channel
|
|
// @Description: RC Channel to use for learning waypoints
|
|
// @User: Advanced
|
|
GSCALAR(learn_channel, "LEARN_CH", 7),
|
|
|
|
// @Param: MODE_CH
|
|
// @DisplayName: Mode channel
|
|
// @Description: RC Channel to use for driving mode control
|
|
// @User: Advanced
|
|
GSCALAR(mode_channel, "MODE_CH", MODE_CHANNEL),
|
|
|
|
// @Param: MODE1
|
|
// @DisplayName: Mode1
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
// @Description: Driving mode for switch position 1 (910 to 1230 and above 2049)
|
|
GSCALAR(mode1, "MODE1", MODE_1),
|
|
|
|
// @Param: MODE2
|
|
// @DisplayName: Mode2
|
|
// @Description: Driving mode for switch position 2 (1231 to 1360)
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
GSCALAR(mode2, "MODE2", MODE_2),
|
|
|
|
// @Param: MODE3
|
|
// @DisplayName: Mode3
|
|
// @Description: Driving mode for switch position 3 (1361 to 1490)
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
GSCALAR(mode3, "MODE3", MODE_3),
|
|
|
|
// @Param: MODE4
|
|
// @DisplayName: Mode4
|
|
// @Description: Driving mode for switch position 4 (1491 to 1620)
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
GSCALAR(mode4, "MODE4", MODE_4),
|
|
|
|
// @Param: MODE5
|
|
// @DisplayName: Mode5
|
|
// @Description: Driving mode for switch position 5 (1621 to 1749)
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
GSCALAR(mode5, "MODE5", MODE_5),
|
|
|
|
// @Param: MODE6
|
|
// @DisplayName: Mode6
|
|
// @Description: Driving mode for switch position 6 (1750 to 2049)
|
|
// @Values: 0:Manual,2:LEARNING,3:STEERING,4:HOLD,10:Auto,11:RTL,15:Guided
|
|
// @User: Standard
|
|
GSCALAR(mode6, "MODE6", MODE_6),
|
|
|
|
// @Param: WP_RADIUS
|
|
// @DisplayName: Waypoint radius
|
|
// @Description: The distance in meters from a waypoint when we consider the waypoint has been reached. This determines when the rover will turn along the next waypoint path.
|
|
// @Units: meters
|
|
// @Range: 0 1000
|
|
// @Increment: 0.1
|
|
// @User: Standard
|
|
GSCALAR(waypoint_radius, "WP_RADIUS", 2.0f),
|
|
|
|
// @Param: TURN_MAX_G
|
|
// @DisplayName: Turning maximum G force
|
|
// @Description: The maximum turning acceleration (in units of gravities) that the rover can handle while remaining stable. The navigation code will keep the lateral acceleration below this level to avoid rolling over or slipping the wheels in turns
|
|
// @Units: gravities
|
|
// @Range: 0.2 10
|
|
// @Increment: 0.1
|
|
// @User: Standard
|
|
GSCALAR(turn_max_g, "TURN_MAX_G", 2.0f),
|
|
|
|
// @Group: STEER2SRV_
|
|
// @Path: ../libraries/APM_Control/AP_SteerController.cpp
|
|
GOBJECT(steerController, "STEER2SRV_", AP_SteerController),
|
|
|
|
GGROUP(pidSpeedThrottle, "SPEED2THR_", PID),
|
|
|
|
// variables not in the g class which contain EEPROM saved variables
|
|
|
|
// @Group: COMPASS_
|
|
// @Path: ../libraries/AP_Compass/Compass.cpp
|
|
GOBJECT(compass, "COMPASS_", Compass),
|
|
|
|
// @Group: SCHED_
|
|
// @Path: ../libraries/AP_Scheduler/AP_Scheduler.cpp
|
|
GOBJECT(scheduler, "SCHED_", AP_Scheduler),
|
|
|
|
// barometer ground calibration. The GND_ prefix is chosen for
|
|
// compatibility with previous releases of ArduPlane
|
|
// @Group: GND_
|
|
// @Path: ../libraries/AP_Baro/AP_Baro.cpp
|
|
GOBJECT(barometer, "GND_", AP_Baro),
|
|
|
|
// @Group: RELAY_
|
|
// @Path: ../libraries/AP_Relay/AP_Relay.cpp
|
|
GOBJECT(relay, "RELAY_", AP_Relay),
|
|
|
|
// @Group: RCMAP_
|
|
// @Path: ../libraries/AP_RCMapper/AP_RCMapper.cpp
|
|
GOBJECT(rcmap, "RCMAP_", RCMapper),
|
|
|
|
// @Group: SR0_
|
|
// @Path: GCS_Mavlink.pde
|
|
GOBJECTN(gcs[0], gcs0, "SR0_", GCS_MAVLINK),
|
|
|
|
// @Group: SR1_
|
|
// @Path: GCS_Mavlink.pde
|
|
GOBJECTN(gcs[1], gcs1, "SR1_", GCS_MAVLINK),
|
|
|
|
#if MAVLINK_COMM_NUM_BUFFERS > 2
|
|
// @Group: SR2_
|
|
// @Path: GCS_Mavlink.pde
|
|
GOBJECTN(gcs[2], gcs2, "SR2_", GCS_MAVLINK),
|
|
#endif
|
|
|
|
// @Group: NAVL1_
|
|
// @Path: ../libraries/AP_L1_Control/AP_L1_Control.cpp
|
|
GOBJECT(L1_controller, "NAVL1_", AP_L1_Control),
|
|
|
|
// @Group: RNGFND
|
|
// @Path: ../libraries/AP_RangeFinder/RangeFinder.cpp
|
|
GOBJECT(sonar, "RNGFND", RangeFinder),
|
|
|
|
// @Group: INS_
|
|
// @Path: ../libraries/AP_InertialSensor/AP_InertialSensor.cpp
|
|
GOBJECT(ins, "INS_", AP_InertialSensor),
|
|
|
|
#if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL
|
|
// @Group: SIM_
|
|
// @Path: ../libraries/SITL/SITL.cpp
|
|
GOBJECT(sitl, "SIM_", SITL),
|
|
#endif
|
|
|
|
// @Group: AHRS_
|
|
// @Path: ../libraries/AP_AHRS/AP_AHRS.cpp
|
|
GOBJECT(ahrs, "AHRS_", AP_AHRS),
|
|
|
|
#if CAMERA == ENABLED
|
|
// @Group: CAM_
|
|
// @Path: ../libraries/AP_Camera/AP_Camera.cpp
|
|
GOBJECT(camera, "CAM_", AP_Camera),
|
|
#endif
|
|
|
|
#if MOUNT == ENABLED
|
|
// @Group: MNT_
|
|
// @Path: ../libraries/AP_Mount/AP_Mount.cpp
|
|
GOBJECT(camera_mount, "MNT_", AP_Mount),
|
|
#endif
|
|
|
|
// @Group: BATT_
|
|
// @Path: ../libraries/AP_BattMonitor/AP_BattMonitor.cpp
|
|
GOBJECT(battery, "BATT_", AP_BattMonitor),
|
|
|
|
// @Group: BRD_
|
|
// @Path: ../libraries/AP_BoardConfig/AP_BoardConfig.cpp
|
|
GOBJECT(BoardConfig, "BRD_", AP_BoardConfig),
|
|
|
|
// GPS driver
|
|
// @Group: GPS_
|
|
// @Path: ../libraries/AP_GPS/AP_GPS.cpp
|
|
GOBJECT(gps, "GPS_", AP_GPS),
|
|
|
|
#if AP_AHRS_NAVEKF_AVAILABLE
|
|
// @Group: EKF_
|
|
// @Path: ../libraries/AP_NavEKF/AP_NavEKF.cpp
|
|
GOBJECTN(ahrs.get_NavEKF(), NavEKF, "EKF_", NavEKF),
|
|
#endif
|
|
|
|
// @Group: MIS_
|
|
// @Path: ../libraries/AP_Mission/AP_Mission.cpp
|
|
GOBJECT(mission, "MIS_", AP_Mission),
|
|
|
|
AP_VAREND
|
|
};
|
|
|
|
/*
|
|
This is a conversion table from old parameter values to new
|
|
parameter names. The startup code looks for saved values of the old
|
|
parameters and will copy them across to the new parameters if the
|
|
new parameter does not yet have a saved value. It then saves the new
|
|
value.
|
|
|
|
Note that this works even if the old parameter has been removed. It
|
|
relies on the old k_param index not being removed
|
|
|
|
The second column below is the index in the var_info[] table for the
|
|
old object. This should be zero for top level parameters.
|
|
*/
|
|
const AP_Param::ConversionInfo conversion_table[] PROGMEM = {
|
|
{ Parameters::k_param_battery_monitoring, 0, AP_PARAM_INT8, "BATT_MONITOR" },
|
|
{ Parameters::k_param_battery_volt_pin, 0, AP_PARAM_INT8, "BATT_VOLT_PIN" },
|
|
{ Parameters::k_param_battery_curr_pin, 0, AP_PARAM_INT8, "BATT_CURR_PIN" },
|
|
{ Parameters::k_param_volt_div_ratio, 0, AP_PARAM_FLOAT, "BATT_VOLT_MULT" },
|
|
{ Parameters::k_param_curr_amp_per_volt, 0, AP_PARAM_FLOAT, "BATT_AMP_PERVOLT" },
|
|
{ Parameters::k_param_pack_capacity, 0, AP_PARAM_INT32, "BATT_CAPACITY" },
|
|
};
|
|
|
|
static void load_parameters(void)
|
|
{
|
|
if (!AP_Param::check_var_info()) {
|
|
cliSerial->printf_P(PSTR("Bad var table\n"));
|
|
hal.scheduler->panic(PSTR("Bad var table"));
|
|
}
|
|
|
|
if (!g.format_version.load() ||
|
|
g.format_version != Parameters::k_format_version) {
|
|
|
|
// erase all parameters
|
|
cliSerial->printf_P(PSTR("Firmware change: erasing EEPROM...\n"));
|
|
AP_Param::erase_all();
|
|
|
|
// save the current format version
|
|
g.format_version.set_and_save(Parameters::k_format_version);
|
|
cliSerial->println_P(PSTR("done."));
|
|
} else {
|
|
unsigned long before = micros();
|
|
// Load all auto-loaded EEPROM variables
|
|
AP_Param::load_all();
|
|
|
|
cliSerial->printf_P(PSTR("load_all took %luus\n"), micros() - before);
|
|
}
|
|
|
|
// set a lower default filter frequency for rovers, due to very
|
|
// high vibration levels on rough surfaces
|
|
ins.set_default_filter(5);
|
|
|
|
// set a more reasonable default NAVL1_PERIOD for rovers
|
|
L1_controller.set_default_period(8);
|
|
}
|