mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 18:27:05 +08:00
ICE: allow throttle setpoint to be set to NAN to stop motor without disarming
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
uint64 timestamp # time since system start (microseconds)
|
uint64 timestamp # time since system start (microseconds)
|
||||||
|
|
||||||
bool ignition_on # activate/deactivate ignition (spark plug)
|
bool ignition_on # activate/deactivate ignition (spark plug)
|
||||||
float32 throttle_control # setpoint for throttle actuator, with slew rate if enabled, idles with 0 [norm] [@range 0,1]
|
float32 throttle_control # setpoint for throttle actuator, with slew rate if enabled, idles with 0 [norm] [@range 0,1] [@uncontrolled NAN to stop motor]
|
||||||
float32 choke_control # setpoint for choke actuator, 1: fully closed [norm] [@range 0,1]
|
float32 choke_control # setpoint for choke actuator, 1: fully closed [norm] [@range 0,1]
|
||||||
float32 starter_engine_control # setpoint for (electric) starter motor [norm] [@range 0,1]
|
float32 starter_engine_control # setpoint for (electric) starter motor [norm] [@range 0,1]
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public:
|
|||||||
internal_combustion_engine_control_s internal_combustion_engine_control;
|
internal_combustion_engine_control_s internal_combustion_engine_control;
|
||||||
|
|
||||||
// map [0, 1] to [-1, 1] which is the interface for non-motor PWM channels
|
// map [0, 1] to [-1, 1] which is the interface for non-motor PWM channels
|
||||||
|
// NAN is mapped to disarmed
|
||||||
if (_internal_combustion_engine_control_sub.update(&internal_combustion_engine_control)) {
|
if (_internal_combustion_engine_control_sub.update(&internal_combustion_engine_control)) {
|
||||||
_data[0] = internal_combustion_engine_control.ignition_on * 2.f - 1.f;
|
_data[0] = internal_combustion_engine_control.ignition_on * 2.f - 1.f;
|
||||||
_data[1] = internal_combustion_engine_control.throttle_control * 2.f - 1.f;
|
_data[1] = internal_combustion_engine_control.throttle_control * 2.f - 1.f;
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ void InternalCombustionEngineControl::controlEngineStop()
|
|||||||
_ignition_on = false;
|
_ignition_on = false;
|
||||||
_choke_control = _param_ice_stop_choke.get() ? 1.f : 0.f;
|
_choke_control = _param_ice_stop_choke.get() ? 1.f : 0.f;
|
||||||
_starter_engine_control = 0.f;
|
_starter_engine_control = 0.f;
|
||||||
_throttle_control = 0.f;
|
_throttle_control = NAN; // this will set it to the DISARMED value
|
||||||
}
|
}
|
||||||
|
|
||||||
void InternalCombustionEngineControl::controlEngineFault()
|
void InternalCombustionEngineControl::controlEngineFault()
|
||||||
@@ -393,6 +393,9 @@ The state machine:
|
|||||||
- Allows for user inputs from:
|
- Allows for user inputs from:
|
||||||
- Manual control AUX
|
- Manual control AUX
|
||||||
- Arming state in [VehicleStatus.msg](../msg_docs/VehicleStatus.md)
|
- Arming state in [VehicleStatus.msg](../msg_docs/VehicleStatus.md)
|
||||||
|
- In the state "Stopped" the throttle is set to NAN, which by definition will set the
|
||||||
|
throttle output to the disarmed value configured for the specific output.
|
||||||
|
|
||||||
|
|
||||||
The module publishes [InternalCombustionEngineControl.msg](../msg_docs/InternalCombustionEngineControl.md).
|
The module publishes [InternalCombustionEngineControl.msg](../msg_docs/InternalCombustionEngineControl.md).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user