mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-07-24 15:27:41 +08:00
Switches from using VehicleControlMode to a specific setpoint type message with reply. Reasons: - in case a VehicleControlMode was dropped (e.g. when the mode switched setpoint type), no confirmation was returned, and resulting in wrong controller flags. - cleaner interface separation: external modes do not need to configure (or know) which controller to run for a certain setpoint - allows for external modes to check for compatibility: e.g. a mode using fixed-wing setpoint types can now be rejected on a multicopter. - allows for further extensions, like a setpoint timeout This makes it a bit more effort to add a new setpoint type. Specifically, setpoint_types.cpp needs to be extended when adding a new setpoint message. PX4 internal modes also make use of the setpoint types. The information flow is: nav_state -> setpoint type -> vehicle control mode flags It also adds a timeout to the setpoint config, but is not implemented yet. This changes the interface for external modes and thus the compatibility version is increased.
23 lines
935 B
Plaintext
23 lines
935 B
Plaintext
# Reply to SetpointConfig
|
|
|
|
uint32 MESSAGE_VERSION = 0
|
|
|
|
uint64 timestamp # [us] Time since system start
|
|
|
|
uint16 type # See SetpointConfig::TYPE_*
|
|
|
|
uint8 source_id # nav_state of the mode that sent the SetpointConfig
|
|
|
|
uint8 RESULT_SUCCESS = 0
|
|
uint8 RESULT_FAILURE_OTHER = 1
|
|
uint8 RESULT_UNSUPPORTED = 2 # Setpoint type is unsupported for the current vehicle
|
|
uint8 RESULT_UNKNOWN_SETPOINT_TYPE = 3 # The setpoint type is not known
|
|
uint8 result # [@enum RESULT]
|
|
|
|
# Mode requirements for using the given setpoint type. A mode will use these and apply them to the arming check reply (PX4 does not do that itself).
|
|
# Certain setpoint types can be used in a reduced way, for example a TrajectorySetpoint without position control. In that case PX4 still sets all requirement flags, and the mode will then ignore mode_req_local_position.
|
|
bool mode_req_angular_velocity
|
|
bool mode_req_attitude
|
|
bool mode_req_local_alt
|
|
bool mode_req_local_position
|