Browse Source

en-/disable mc position controller using explicit control mode flag

release/1.12
bresch 4 years ago committed by Mathieu Bresciani
parent
commit
514845592b
  1. 1
      msg/vehicle_control_mode.msg
  2. 8
      src/modules/commander/Commander.cpp
  3. 2
      src/modules/mc_pos_control/MulticopterPositionControl.cpp

1
msg/vehicle_control_mode.msg

@ -2,6 +2,7 @@ uint64 timestamp # time since system start (microseconds) @@ -2,6 +2,7 @@ uint64 timestamp # time since system start (microseconds)
bool flag_armed # synonym for actuator_armed.armed
bool flag_external_manual_override_ok # external override non-fatal for system. Only true for fixed wing
bool flag_multicopter_position_control_enabled
bool flag_control_manual_enabled # true if manual input is mixed in
bool flag_control_auto_enabled # true if onboard autopilot should act

8
src/modules/commander/Commander.cpp

@ -3328,6 +3328,14 @@ Commander::update_control_mode() @@ -3328,6 +3328,14 @@ Commander::update_control_mode()
break;
}
_vehicle_control_mode.flag_multicopter_position_control_enabled =
(_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING)
&& (_vehicle_control_mode.flag_control_altitude_enabled
|| _vehicle_control_mode.flag_control_climb_rate_enabled
|| _vehicle_control_mode.flag_control_position_enabled
|| _vehicle_control_mode.flag_control_velocity_enabled
|| _vehicle_control_mode.flag_control_acceleration_enabled);
_vehicle_control_mode.timestamp = hrt_absolute_time();
_control_mode_pub.publish(_vehicle_control_mode);
}

2
src/modules/mc_pos_control/MulticopterPositionControl.cpp

@ -289,7 +289,7 @@ void MulticopterPositionControl::Run() @@ -289,7 +289,7 @@ void MulticopterPositionControl::Run()
PositionControlStates states{set_vehicle_states(local_pos)};
if (_control_mode.flag_control_acceleration_enabled || _control_mode.flag_control_climb_rate_enabled) {
if (_control_mode.flag_multicopter_position_control_enabled) {
_trajectory_setpoint_sub.update(&_setpoint);

Loading…
Cancel
Save