34 #ifndef COMMANDER_HPP_ 35 #define COMMANDER_HPP_ 40 #include <lib/controllib/blocks.hpp> 48 #include <uORB/topics/actuator_armed.h> 49 #include <uORB/topics/home_position.h> 50 #include <uORB/topics/vehicle_status.h> 54 #include <uORB/topics/airspeed.h> 55 #include <uORB/topics/estimator_status.h> 56 #include <uORB/topics/iridiumsbd_status.h> 57 #include <uORB/topics/mission_result.h> 58 #include <uORB/topics/sensor_bias.h> 59 #include <uORB/topics/telemetry_status.h> 60 #include <uORB/topics/vehicle_command.h> 61 #include <uORB/topics/vehicle_global_position.h> 62 #include <uORB/topics/vehicle_local_position.h> 64 using math::constrain;
77 static int task_spawn(
int argc,
char *argv[]);
80 static Commander *instantiate(
int argc,
char *argv[]);
83 static int custom_command(
int argc,
char *argv[]);
86 static int print_usage(
const char *reason =
nullptr);
94 static bool preflight_check(
bool report);
136 const int64_t POSVEL_PROBATION_MIN = 1_s;
137 const int64_t POSVEL_PROBATION_MAX = 100_s;
144 hrt_abstime _gpos_probation_time_us = POSVEL_PROBATION_MIN;
145 hrt_abstime _lpos_probation_time_us = POSVEL_PROBATION_MIN;
146 hrt_abstime _lvel_probation_time_us = POSVEL_PROBATION_MIN;
151 bool _nav_test_passed{
false};
152 bool _nav_test_failed{
false};
155 bool _tas_check_fail{
false};
158 static constexpr
hrt_abstime TAS_INNOV_FAIL_DELAY{1_s};
159 bool _tas_use_inhibit{
false};
164 char *_airspeed_fault_type =
new char[7];
165 float _load_factor_ratio{0.5f};
166 float _apsd_innov_integ_state{0.0f};
169 bool _failure_detector_termination_printed{
false};
171 bool handle_command(vehicle_status_s *status,
const vehicle_command_s &cmd, actuator_armed_s *armed,
174 bool set_home_position();
175 bool set_home_position_alt_only();
178 transition_result_t set_main_state(
const vehicle_status_s &status,
bool *changed);
181 transition_result_t set_main_state_override_on(
const vehicle_status_s &status,
bool *changed);
184 transition_result_t set_main_state_rc(
const vehicle_status_s &status,
bool *changed);
186 void check_valid(
const hrt_abstime ×tamp,
const hrt_abstime &timeout,
const bool valid_in,
bool *valid_out,
189 bool check_posvel_validity(
const bool data_valid,
const float data_accuracy,
const float required_accuracy,
191 bool *validity_changed);
193 void reset_posvel_validity(
bool *changed);
197 void estimator_check(
bool *status_changed);
199 void airspeed_use_check();
201 void battery_status_check();
206 void data_link_check(
bool &status_changed);
208 int _telemetry_status_sub{-1};
212 hrt_abstime _datalink_last_heartbeat_onboard_controller{0};
213 bool _onboard_controller_lost{
false};
215 hrt_abstime _datalink_last_heartbeat_avoidance_system{0};
216 bool _avoidance_system_lost{
false};
218 bool _avoidance_system_status_change{
false};
219 uint8_t _datalink_last_status_avoidance_system{telemetry_status_s::MAV_STATE_UNINIT};
221 int _iridiumsbd_status_sub{-1};
226 int _battery_sub{-1};
227 uint8_t _battery_warning{battery_status_s::BATTERY_WARNING_NONE};
228 float _battery_current{0.0f};
233 bool _print_avoidance_msg_once{
false};
Definition: px4_param.h:313
State machine helper functions definitions.
#define ORB_ID(_name)
Generates a pointer to the uORB metadata structure for a given topic.
Definition: uORB.h:87
Base class for failure detection logic based on vehicle states for failsafe triggering.
__BEGIN_DECLS typedef void * orb_advert_t
ORB topic advertiser handle.
Definition: uORB.h:134
Definition: px4_param.h:318
C++ base class for modules/classes using configuration parameters.
Definition: px4_module_params.h:46
Definition: Commander.hpp:70
__BEGIN_DECLS typedef uint64_t hrt_abstime
Absolute time, in microsecond units.
Definition: drv_hrt.h:58
Hysteresis of a boolean value.
Common header for mathlib exports.
Definition: FailureDetector.hpp:65
Subscription wrapper class.
Definition: Subscription.hpp:143
Publication wrapper class.
Definition: Publication.hpp:122
Definition: hysteresis.h:49