mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-29 02:44:07 +08:00
If the second bit of COM_ARM_MIS_EXT_REQ is set the vehicle will only arm after receive an authorization. The authorization flow: vehicle/external -> command: arm authorization request -> arm authorizer vehicle <- command ack with result in progress <- arm authorizer vehicle <- any data request <- arm authorizer vehicle -> data response -> arm authorizer vehicle <- command ack authorizing or denying <- arm authorizer Right now there is 2 ways to start the arm authorization request, that can be configured by COM_ARM_AUTH parameter. - One arm: When pilot request the vehicle to arm, it will request authorization blocking the arm process up to the timeout defined in COM_ARM_AUTH parameter. - Two arms request: The first arm request will request the authorization and will deny the first arm request, if authorizer approved the request, pilot can arm again within the authorized time and arm without any block. The arm authorizer can be running anywhere(compute board or PX4 itself) and it is responsible to request the mission list or any other information to vehicle before send a final response, it should send to vehicle a COMMAND_ACK with result = MAV_RESULT_IN_PROGRESS as soon as it receive the arm authorization request and the final result as after it got all the data that it needs authorize or deny the request.
640 lines
15 KiB
C
640 lines
15 KiB
C
/****************************************************************************
|
|
*
|
|
* Copyright (c) 2013-2015 PX4 Development Team. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name PX4 nor the names of its contributors may be
|
|
* used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
****************************************************************************/
|
|
|
|
/**
|
|
* @file commander_params.c
|
|
*
|
|
* Parameters defined by the sensors task.
|
|
*
|
|
* @author Lorenz Meier <lorenz@px4.io>
|
|
* @author Thomas Gubler <thomas@px4.io>
|
|
* @author Julian Oes <julian@px4.io>
|
|
*/
|
|
|
|
#include <px4_config.h>
|
|
#include <systemlib/param/param.h>
|
|
|
|
/**
|
|
* Roll trim
|
|
*
|
|
* The trim value is the actuator control value the system needs
|
|
* for straight and level flight. It can be calibrated by
|
|
* flying manually straight and level using the RC trims and
|
|
* copying them using the GCS.
|
|
*
|
|
* @group Radio Calibration
|
|
* @min -0.25
|
|
* @max 0.25
|
|
* @decimal 2
|
|
* @increment 0.01
|
|
*/
|
|
PARAM_DEFINE_FLOAT(TRIM_ROLL, 0.0f);
|
|
|
|
/**
|
|
* Pitch trim
|
|
*
|
|
* The trim value is the actuator control value the system needs
|
|
* for straight and level flight. It can be calibrated by
|
|
* flying manually straight and level using the RC trims and
|
|
* copying them using the GCS.
|
|
*
|
|
* @group Radio Calibration
|
|
* @min -0.25
|
|
* @max 0.25
|
|
* @decimal 2
|
|
* @increment 0.01
|
|
*/
|
|
PARAM_DEFINE_FLOAT(TRIM_PITCH, 0.0f);
|
|
|
|
/**
|
|
* Yaw trim
|
|
*
|
|
* The trim value is the actuator control value the system needs
|
|
* for straight and level flight. It can be calibrated by
|
|
* flying manually straight and level using the RC trims and
|
|
* copying them using the GCS.
|
|
*
|
|
* @group Radio Calibration
|
|
* @min -0.25
|
|
* @max 0.25
|
|
* @decimal 2
|
|
* @increment 0.01
|
|
*/
|
|
PARAM_DEFINE_FLOAT(TRIM_YAW, 0.0f);
|
|
|
|
/**
|
|
* Datalink loss time threshold
|
|
*
|
|
* After this amount of seconds without datalink the data link lost mode triggers
|
|
*
|
|
* @group Commander
|
|
* @unit s
|
|
* @min 5
|
|
* @max 300
|
|
* @decimal 1
|
|
* @increment 0.5
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_DL_LOSS_T, 10);
|
|
|
|
/**
|
|
* Datalink regain time threshold
|
|
*
|
|
* After a data link loss: after this this amount of seconds with a healthy datalink the 'datalink loss'
|
|
* flag is set back to false
|
|
*
|
|
* @group Commander
|
|
* @unit s
|
|
* @min 0
|
|
* @max 3
|
|
* @decimal 1
|
|
* @increment 0.5
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_DL_REG_T, 0);
|
|
|
|
/**
|
|
* Engine Failure Throttle Threshold
|
|
*
|
|
* Engine failure triggers only above this throttle value
|
|
*
|
|
* @group Commander
|
|
* @unit norm
|
|
* @min 0.0
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.01
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_EF_THROT, 0.5f);
|
|
|
|
/**
|
|
* Engine Failure Current/Throttle Threshold
|
|
*
|
|
* Engine failure triggers only below this current value
|
|
*
|
|
* @group Commander
|
|
* @min 0.0
|
|
* @max 50.0
|
|
* @unit A/%
|
|
* @decimal 2
|
|
* @increment 1
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_EF_C2T, 5.0f);
|
|
|
|
/**
|
|
* Engine Failure Time Threshold
|
|
*
|
|
* Engine failure triggers only if the throttle threshold and the
|
|
* current to throttle threshold are violated for this time
|
|
*
|
|
* @group Commander
|
|
* @unit s
|
|
* @min 0.0
|
|
* @max 60.0
|
|
* @decimal 1
|
|
* @increment 1
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_EF_TIME, 10.0f);
|
|
|
|
/**
|
|
* RC loss time threshold
|
|
*
|
|
* After this amount of seconds without RC connection the rc lost flag is set to true
|
|
*
|
|
* @group Commander
|
|
* @unit s
|
|
* @min 0
|
|
* @max 35
|
|
* @decimal 1
|
|
* @increment 0.1
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_RC_LOSS_T, 0.5f);
|
|
|
|
/**
|
|
* RC stick override threshold
|
|
*
|
|
* If an RC stick is moved more than by this amount the system will interpret this as
|
|
* override request by the pilot.
|
|
*
|
|
* @group Commander
|
|
* @unit %
|
|
* @min 5
|
|
* @max 40
|
|
* @decimal 0
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_RC_STICK_OV, 12.0f);
|
|
|
|
/**
|
|
* Home set horizontal threshold
|
|
*
|
|
* The home position will be set if the estimated positioning accuracy is below the threshold.
|
|
*
|
|
* @group Commander
|
|
* @unit m
|
|
* @min 2
|
|
* @max 15
|
|
* @decimal 2
|
|
* @increment 0.5
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_HOME_H_T, 5.0f);
|
|
|
|
/**
|
|
* Home set vertical threshold
|
|
*
|
|
* The home position will be set if the estimated positioning accuracy is below the threshold.
|
|
*
|
|
* @group Commander
|
|
* @unit m
|
|
* @min 5
|
|
* @max 25
|
|
* @decimal 2
|
|
* @increment 0.5
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_HOME_V_T, 10.0f);
|
|
|
|
/**
|
|
* RC control input mode
|
|
*
|
|
* The default value of 0 requires a valid RC transmitter setup.
|
|
* Setting this to 1 allows joystick control and disables RC input handling and the associated checks. A value of
|
|
* 2 will generate RC control data from manual input received via MAVLink instead
|
|
* of directly forwarding the manual input data.
|
|
*
|
|
* @group Commander
|
|
* @min 0
|
|
* @max 2
|
|
* @value 0 RC Transmitter
|
|
* @value 1 Joystick/No RC Checks
|
|
* @value 2 Virtual RC by Joystick
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_RC_IN_MODE, 0);
|
|
|
|
/**
|
|
* RC input arm/disarm command duration
|
|
*
|
|
* The default value of 1000 requires the stick to be held in the arm or disarm position for 1 second.
|
|
*
|
|
* @group Commander
|
|
* @min 100
|
|
* @max 1500
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_RC_ARM_HYST, 1000);
|
|
|
|
/**
|
|
* Time-out for auto disarm after landing
|
|
*
|
|
* A non-zero, positive value specifies the time-out period in seconds after which the vehicle will be
|
|
* automatically disarmed in case a landing situation has been detected during this period.
|
|
*
|
|
* The vehicle will also auto-disarm right after arming if it has not even flown, however the time
|
|
* will be longer by a factor of 5.
|
|
*
|
|
* A value of zero means that automatic disarming is disabled.
|
|
*
|
|
* @group Commander
|
|
* @min 0
|
|
* @max 20
|
|
* @unit s
|
|
* @decimal 0
|
|
* @increment 1
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_DISARM_LAND, 0);
|
|
|
|
/**
|
|
* Allow arming without GPS
|
|
*
|
|
* The default allows to arm the vehicle without GPS signal.
|
|
*
|
|
* @group Commander
|
|
* @boolean
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_ARM_WO_GPS, 1);
|
|
|
|
/**
|
|
* Arm switch is only a button
|
|
*
|
|
* The default uses the arm switch as real switch.
|
|
* If parameter set button gets handled like stick arming.
|
|
*
|
|
* @group Commander
|
|
* @min 0
|
|
* @max 1
|
|
* @value 0 Arm switch is a switch that stays on when armed
|
|
* @value 1 Arm switch is a button that only triggers arming and disarming
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_ARM_SWISBTN, 0);
|
|
|
|
/**
|
|
* Battery failsafe mode
|
|
*
|
|
* Action the system takes on low battery. Defaults to off
|
|
*
|
|
* @group Commander
|
|
* @value 0 Warning
|
|
* @value 1 Return to land
|
|
* @value 2 Land at current position
|
|
* @value 3 Return to land at critically low level, land at current position if reaching dangerously low levels
|
|
* @decimal 0
|
|
* @increment 1
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_LOW_BAT_ACT, 0);
|
|
|
|
/**
|
|
* Time-out to wait when offboard connection is lost before triggering offboard lost action.
|
|
* See COM_OBL_ACT and COM_OBL_RC_ACT to configure action.
|
|
*
|
|
* @group Commander
|
|
* @unit second
|
|
* @min 0
|
|
* @max 60
|
|
* @increment 1
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_OF_LOSS_T, 0.0f);
|
|
|
|
/**
|
|
* Set offboard loss failsafe mode
|
|
*
|
|
* The offboard loss failsafe will only be entered after a timeout,
|
|
* set by COM_OF_LOSS_T in seconds.
|
|
*
|
|
* @value 0 Land at current position
|
|
* @value 1 Loiter
|
|
* @value 2 Return to Land
|
|
*
|
|
* @group Mission
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_OBL_ACT, 0);
|
|
|
|
/**
|
|
* Set offboard loss failsafe mode when RC is available
|
|
*
|
|
* The offboard loss failsafe will only be entered after a timeout,
|
|
* set by COM_OF_LOSS_T in seconds.
|
|
*
|
|
* @value 0 Position control
|
|
* @value 1 Altitude control
|
|
* @value 2 Manual
|
|
* @value 3 Return to Land
|
|
* @value 4 Land at current position
|
|
* @value 5 Loiter
|
|
* @group Mission
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_OBL_RC_ACT, 0);
|
|
|
|
/**
|
|
* First flightmode slot (1000-1160)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE1, -1);
|
|
|
|
/**
|
|
* Second flightmode slot (1160-1320)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE2, -1);
|
|
|
|
/**
|
|
* Third flightmode slot (1320-1480)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE3, -1);
|
|
|
|
/**
|
|
* Fourth flightmode slot (1480-1640)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE4, -1);
|
|
|
|
/**
|
|
* Fifth flightmode slot (1640-1800)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE5, -1);
|
|
|
|
/**
|
|
* Sixth flightmode slot (1800-2000)
|
|
*
|
|
* If the main switch channel is in this range the
|
|
* selected flight mode will be applied.
|
|
*
|
|
* @value -1 Unassigned
|
|
* @value 0 Manual
|
|
* @value 1 Altitude
|
|
* @value 2 Position
|
|
* @value 3 Mission
|
|
* @value 4 Hold
|
|
* @value 10 Takeoff
|
|
* @value 11 Land
|
|
* @value 5 Return
|
|
* @value 6 Acro
|
|
* @value 7 Offboard
|
|
* @value 8 Stabilized
|
|
* @value 9 Rattitude
|
|
* @value 12 Follow Me
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_FLTMODE6, -1);
|
|
|
|
/**
|
|
* Maximum EKF position innovation test ratio that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit m
|
|
* @min 0.1
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_POS, 0.5f);
|
|
|
|
/**
|
|
* Maximum EKF velocity innovation test ratio that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit m/s
|
|
* @min 0.1
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_VEL, 0.5f);
|
|
|
|
/**
|
|
* Maximum EKF height innovation test ratio that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit m
|
|
* @min 0.1
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_HGT, 1.0f);
|
|
|
|
/**
|
|
* Maximum EKF yaw innovation test ratio that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit rad
|
|
* @min 0.1
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_YAW, 0.5f);
|
|
|
|
/**
|
|
* Maximum value of EKF accelerometer delta velocity bias estimate that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit m/s
|
|
* @min 0.001
|
|
* @max 0.01
|
|
* @decimal 4
|
|
* @increment 0.0005
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_AB, 5.0e-3f);
|
|
|
|
/**
|
|
* Maximum value of EKF gyro delta angle bias estimate that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit rad
|
|
* @min 0.0001
|
|
* @max 0.0017
|
|
* @decimal 5
|
|
* @increment 0.0001
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_EKF_GB, 8.7e-4f);
|
|
|
|
/**
|
|
* Maximum accelerometer inconsistency between IMU units that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit m/s/s
|
|
* @min 0.1
|
|
* @max 1.0
|
|
* @decimal 2
|
|
* @increment 0.05
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_IMU_ACC, 0.7f);
|
|
|
|
/**
|
|
* Maximum rate gyro inconsistency between IMU units that will allow arming
|
|
*
|
|
* @group Commander
|
|
* @unit rad/s
|
|
* @min 0.02
|
|
* @max 0.3
|
|
* @decimal 3
|
|
* @increment 0.01
|
|
*/
|
|
PARAM_DEFINE_FLOAT(COM_ARM_IMU_GYR, 0.25f);
|
|
|
|
/**
|
|
* Enable RC stick override of auto modes
|
|
*
|
|
* @boolean
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_RC_OVERRIDE, 0);
|
|
|
|
/**
|
|
* Require valid mission to arm
|
|
*
|
|
* The default allows to arm the vehicle without a valid mission.
|
|
*
|
|
* @group Commander
|
|
* @boolean
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_ARM_MIS_REQ, 0);
|
|
|
|
/**
|
|
* Position control navigation loss response.
|
|
*
|
|
* This sets the flight mode that will be used if navigation accuracy is no longer adequte for position control.
|
|
* Navigation accuracy checks can be disabled using the CBRK_VELPOSERR parameter, but doing so will remove protection for all flight modes.
|
|
*
|
|
* @value 0 Assume use of remote control after fallback. Switch to ALTCTL if a height estimate is available, else switch to MANUAL.
|
|
* @value 1 Assume no use of remote control after fallback. Switch to DESCEND if a height estimate is available, else switch to TERMINATION.
|
|
*
|
|
* @group Mission
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_POSCTL_NAVL, 0);
|
|
|
|
/**
|
|
* Arm authorization parameters, this uint32_t will be splitted between starting from the LSB:
|
|
* - 8bits to authorizer system id
|
|
* - 16bits to authentication method parameter, this will be used to store a timeout for the first 2 methods but can be used to another parameter for other new authentication methods.
|
|
* - 7bits to authentication method
|
|
* - one arm = 0
|
|
* - two step arm = 1
|
|
* * the MSB bit is not used to avoid problems in the conversion between int and uint
|
|
*
|
|
* Default value: (10 << 0 | 1000 << 8 | 0 << 24) = 256010
|
|
* - authorizer system id = 10
|
|
* - authentication method parameter = 10000msec of timeout
|
|
* - authentication method = during arm
|
|
* @group Commander
|
|
*/
|
|
PARAM_DEFINE_INT32(COM_ARM_AUTH, 256010);
|