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.
34 lines
1.9 KiB
Plaintext
34 lines
1.9 KiB
Plaintext
# Setpoint configuration message
|
|
#
|
|
# Published by external modes and PX4 will respond with SetpointConfigReply.
|
|
|
|
uint32 MESSAGE_VERSION = 0
|
|
|
|
uint64 timestamp # [us] Time since system start
|
|
|
|
uint16 TYPE_INVALID = 0
|
|
uint16 TYPE_DIRECT_ACTUATORS = 1 # ActuatorMotors and ActuatorServos
|
|
uint16 TYPE_MULTICOPTER_GOTO = 2 # GotoSetpoint
|
|
uint16 TYPE_FIXEDWING_LATERAL_LONGITUDINAL = 3 # FixedWingLateralSetpoint and FixedWingLongitudinalSetpoint
|
|
uint16 TYPE_TRAJECTORY = 4 # TrajectorySetpoint
|
|
uint16 TYPE_RATES = 5 # VehicleRatesSetpoint
|
|
uint16 TYPE_ATTITUDE = 6 # VehicleAttitudeSetpoint
|
|
uint16 TYPE_ROVER_POSITION = 7 # RoverPositionSetpoint
|
|
uint16 TYPE_ROVER_SPEED_ATTITUDE = 8 # RoverSpeedSetpoint and RoverAttitudeSetpoint
|
|
uint16 TYPE_ROVER_SPEED_RATE = 9 # RoverSpeedSetpoint and RoverRateSetpoint
|
|
uint16 TYPE_ROVER_SPEED_STEERING = 10 # RoverSpeedSetpoint and RoverSteeringSetpoint
|
|
uint16 TYPE_ROVER_THROTTLE_ATTITUDE = 11 # RoverThrottleSetpoint and RoverAttitudeSetpoint
|
|
uint16 TYPE_ROVER_THROTTLE_RATE = 12 # RoverThrottleSetpoint and RoverRateSetpoint
|
|
uint16 TYPE_ROVER_THROTTLE_STEERING = 13 # RoverThrottleSetpoint and RoverSteeringSetpoint
|
|
uint16 TYPE_TRAJECTORY_6DOF = 14 # TrajectorySetpoint6dof
|
|
uint16 TYPE_THRUST_AND_TORQUE = 15 # VehicleThrustSetpoint and VehicleTorqueSetpoint
|
|
uint16 TYPE_POSITION_TRIPLET = 16 # PositionSetpointTriplet
|
|
|
|
uint16 type # [@enum TYPE] setpoint type (corresponding to one or more setpoint messages)
|
|
|
|
uint8 source_id # nav_state of the mode
|
|
|
|
bool should_apply # if true: apply as current setpoint configuration (mode should be active). If false: setpoint configuration is not changed (can be used to check if a setpoint can be used with the current vehicle configuration).
|
|
|
|
uint16 timeout_ms # Configure setpoint timeout. If no setpoint received for this time, PX4 triggers a failsafe. 0 disables the timeout (unresponsive modes still trigger a timeout through arming checks).
|