Browse Source

fw_att_control initialize all fields in header

sbg
Daniel Agar 7 years ago
parent
commit
063714c42c
  1. 43
      src/modules/fw_att_control/FixedwingAttitudeControl.cpp
  2. 70
      src/modules/fw_att_control/FixedwingAttitudeControl.hpp

43
src/modules/fw_att_control/FixedwingAttitudeControl.cpp

@ -42,54 +42,13 @@ extern "C" __EXPORT int fw_att_control_main(int argc, char *argv[]); @@ -42,54 +42,13 @@ extern "C" __EXPORT int fw_att_control_main(int argc, char *argv[]);
FixedwingAttitudeControl::FixedwingAttitudeControl() :
SuperBlock(nullptr, "FW_ATT"),
/* subscriptions */
_att_sub(-1),
_att_sp_sub(-1),
_battery_status_sub(-1),
_global_pos_sub(-1),
_manual_sub(-1),
_params_sub(-1),
_vcontrol_mode_sub(-1),
_vehicle_land_detected_sub(-1),
_vehicle_status_sub(-1),
/* publications */
_rate_sp_pub(nullptr),
_attitude_sp_pub(nullptr),
_actuators_0_pub(nullptr),
_actuators_2_pub(nullptr),
_rate_ctrl_status_pub(nullptr),
_rates_sp_id(nullptr),
_actuators_id(nullptr),
_attitude_setpoint_id(nullptr),
_sub_airspeed(ORB_ID(airspeed), 0, 0, &getSubscriptions()),
/* performance counters */
_loop_perf(perf_alloc(PC_ELAPSED, "fwa_dt")),
_nonfinite_input_perf(perf_alloc(PC_COUNT, "fwa_nani")),
_nonfinite_output_perf(perf_alloc(PC_COUNT, "fwa_nano")),
/* states */
_flaps_applied(0),
_flaperons_applied(0),
_roll(0.0f),
_pitch(0.0f),
_yaw(0.0f)
_nonfinite_output_perf(perf_alloc(PC_COUNT, "fwa_nano"))
{
/* safely initialize structs */
_actuators = {};
_actuators_airframe = {};
_att = {};
_att_sp = {};
_battery_status = {};
_global_pos = {};
_manual = {};
_rates_sp = {};
_vcontrol_mode = {};
_vehicle_land_detected = {};
_vehicle_status = {};
_parameter_handles.p_tc = param_find("FW_P_TC");
_parameter_handles.p_p = param_find("FW_PR_P");
_parameter_handles.p_i = param_find("FW_PR_I");

70
src/modules/fw_att_control/FixedwingAttitudeControl.hpp

@ -94,37 +94,37 @@ public: @@ -94,37 +94,37 @@ public:
private:
int _att_sub; /**< vehicle attitude */
int _att_sp_sub; /**< vehicle attitude setpoint */
int _battery_status_sub; /**< battery status subscription */
int _global_pos_sub; /**< global position subscription */
int _manual_sub; /**< notification of manual control updates */
int _params_sub; /**< notification of parameter updates */
int _vcontrol_mode_sub; /**< vehicle status subscription */
int _vehicle_land_detected_sub; /**< vehicle land detected subscription */
int _vehicle_status_sub; /**< vehicle status subscription */
orb_advert_t _rate_sp_pub; /**< rate setpoint publication */
orb_advert_t _attitude_sp_pub; /**< attitude setpoint point */
orb_advert_t _actuators_0_pub; /**< actuator control group 0 setpoint */
orb_advert_t _actuators_2_pub; /**< actuator control group 1 setpoint (Airframe) */
orb_advert_t _rate_ctrl_status_pub; /**< rate controller status publication */
orb_id_t _rates_sp_id; // pointer to correct rates setpoint uORB metadata structure
orb_id_t _actuators_id; // pointer to correct actuator controls0 uORB metadata structure
orb_id_t _attitude_setpoint_id;
struct actuator_controls_s _actuators; /**< actuator control inputs */
struct actuator_controls_s _actuators_airframe; /**< actuator control inputs */
struct battery_status_s _battery_status; /**< battery status */
struct manual_control_setpoint_s _manual; /**< r/c channel data */
struct vehicle_attitude_s _att; /**< vehicle attitude setpoint */
struct vehicle_attitude_setpoint_s _att_sp; /**< vehicle attitude setpoint */
struct vehicle_control_mode_s _vcontrol_mode; /**< vehicle control mode */
struct vehicle_global_position_s _global_pos; /**< global position */
struct vehicle_land_detected_s _vehicle_land_detected; /**< vehicle land detected */
struct vehicle_rates_setpoint_s _rates_sp; /* attitude rates setpoint */
struct vehicle_status_s _vehicle_status; /**< vehicle status */
int _att_sub{-1}; /**< vehicle attitude */
int _att_sp_sub{-1}; /**< vehicle attitude setpoint */
int _battery_status_sub{-1}; /**< battery status subscription */
int _global_pos_sub{-1}; /**< global position subscription */
int _manual_sub{-1}; /**< notification of manual control updates */
int _params_sub{-1}; /**< notification of parameter updates */
int _vcontrol_mode_sub{-1}; /**< vehicle status subscription */
int _vehicle_land_detected_sub{-1}; /**< vehicle land detected subscription */
int _vehicle_status_sub{-1}; /**< vehicle status subscription */
orb_advert_t _rate_sp_pub{nullptr}; /**< rate setpoint publication */
orb_advert_t _attitude_sp_pub{nullptr}; /**< attitude setpoint point */
orb_advert_t _actuators_0_pub{nullptr}; /**< actuator control group 0 setpoint */
orb_advert_t _actuators_2_pub{nullptr}; /**< actuator control group 1 setpoint (Airframe) */
orb_advert_t _rate_ctrl_status_pub{nullptr}; /**< rate controller status publication */
orb_id_t _rates_sp_id{nullptr}; // pointer to correct rates setpoint uORB metadata structure
orb_id_t _actuators_id{nullptr}; // pointer to correct actuator controls0 uORB metadata structure
orb_id_t _attitude_setpoint_id{nullptr};
actuator_controls_s _actuators {}; /**< actuator control inputs */
actuator_controls_s _actuators_airframe {}; /**< actuator control inputs */
battery_status_s _battery_status {}; /**< battery status */
manual_control_setpoint_s _manual {}; /**< r/c channel data */
vehicle_attitude_s _att {}; /**< vehicle attitude setpoint */
vehicle_attitude_setpoint_s _att_sp {}; /**< vehicle attitude setpoint */
vehicle_control_mode_s _vcontrol_mode {}; /**< vehicle control mode */
vehicle_global_position_s _global_pos {}; /**< global position */
vehicle_land_detected_s _vehicle_land_detected {}; /**< vehicle land detected */
vehicle_rates_setpoint_s _rates_sp {}; /* attitude rates setpoint */
vehicle_status_s _vehicle_status {}; /**< vehicle status */
Subscription<airspeed_s> _sub_airspeed;
@ -132,8 +132,8 @@ private: @@ -132,8 +132,8 @@ private:
perf_counter_t _nonfinite_input_perf; /**< performance counter for non finite input */
perf_counter_t _nonfinite_output_perf; /**< performance counter for non finite output */
float _flaps_applied;
float _flaperons_applied;
float _flaps_applied{0.0f};
float _flaperons_applied{0.0f};
struct {
float p_tc;
@ -193,7 +193,7 @@ private: @@ -193,7 +193,7 @@ private:
int32_t bat_scale_en; /**< Battery scaling enabled */
} _parameters{}; /**< local copies of interesting parameters */
} _parameters{}; /**< local copies of interesting parameters */
struct {
@ -255,7 +255,7 @@ private: @@ -255,7 +255,7 @@ private:
} _parameter_handles{}; /**< handles for interesting parameters */
// Rotation matrix and euler angles to extract from control state
math::Matrix<3, 3> _R;
math::Matrix<3, 3> _R{};
float _roll{0.0f};
float _pitch{0.0f};
float _yaw{0.0f};

Loading…
Cancel
Save