FlightTasks: refactor NAN initializations, spacing

This commit is contained in:
Matthias Grob
2019-12-18 15:57:48 +01:00
parent ab4473319a
commit 1a5b06d0cf
7 changed files with 32 additions and 39 deletions
@@ -65,7 +65,7 @@ bool FlightTaskAutoMapper::update()
// vehicle exits idle. // vehicle exits idle.
if (_type_previous == WaypointType::idle) { if (_type_previous == WaypointType::idle) {
_thrust_setpoint = Vector3f(NAN, NAN, NAN); _thrust_setpoint.setNaN();
} }
// during mission and reposition, raise the landing gears but only // during mission and reposition, raise the landing gears but only
@@ -112,8 +112,8 @@ void FlightTaskAutoMapper::_reset()
void FlightTaskAutoMapper::_generateIdleSetpoints() void FlightTaskAutoMapper::_generateIdleSetpoints()
{ {
// Send zero thrust setpoint // Send zero thrust setpoint
_position_setpoint = Vector3f(NAN, NAN, NAN); // Don't require any position/velocity setpoints _position_setpoint.setNaN(); // Don't require any position/velocity setpoints
_velocity_setpoint = Vector3f(NAN, NAN, NAN); _velocity_setpoint.setNaN();
_thrust_setpoint.zero(); _thrust_setpoint.zero();
} }
@@ -57,7 +57,7 @@ bool FlightTaskAutoMapper2::update()
// vehicle exits idle. // vehicle exits idle.
if (_type_previous == WaypointType::idle) { if (_type_previous == WaypointType::idle) {
_thrust_setpoint = Vector3f(NAN, NAN, NAN); _thrust_setpoint.setNaN();
} }
// during mission and reposition, raise the landing gears but only // during mission and reposition, raise the landing gears but only
@@ -120,8 +120,8 @@ void FlightTaskAutoMapper2::_reset()
void FlightTaskAutoMapper2::_prepareIdleSetpoints() void FlightTaskAutoMapper2::_prepareIdleSetpoints()
{ {
// Send zero thrust setpoint // Send zero thrust setpoint
_position_setpoint = Vector3f(NAN, NAN, NAN); // Don't require any position/velocity setpoints _position_setpoint.setNaN(); // Don't require any position/velocity setpoints
_velocity_setpoint = Vector3f(NAN, NAN, NAN); _velocity_setpoint.setNaN();
_thrust_setpoint.zero(); _thrust_setpoint.zero();
} }
@@ -105,11 +105,11 @@ const vehicle_local_position_setpoint_s FlightTask::getPositionSetpoint()
void FlightTask::_resetSetpoints() void FlightTask::_resetSetpoints()
{ {
_position_setpoint.setAll(NAN); _position_setpoint.setNaN();
_velocity_setpoint.setAll(NAN); _velocity_setpoint.setNaN();
_acceleration_setpoint.setAll(NAN); _acceleration_setpoint.setNaN();
_jerk_setpoint.setAll(NAN); _jerk_setpoint.setNaN();
_thrust_setpoint.setAll(NAN); _thrust_setpoint.setNaN();
_yaw_setpoint = _yawspeed_setpoint = NAN; _yaw_setpoint = _yawspeed_setpoint = NAN;
} }
@@ -168,10 +168,9 @@ public:
const matrix::Vector3f &thrust_sp) {_velocity_setpoint_feedback = vel_sp; _thrust_setpoint_feedback = thrust_sp; } const matrix::Vector3f &thrust_sp) {_velocity_setpoint_feedback = vel_sp; _thrust_setpoint_feedback = thrust_sp; }
protected: protected:
uORB::SubscriptionData<vehicle_local_position_s> _sub_vehicle_local_position{ORB_ID(vehicle_local_position)};
uORB::SubscriptionData<vehicle_local_position_s> _sub_vehicle_local_position{ORB_ID(vehicle_local_position)}; uORB::SubscriptionData<vehicle_attitude_s> _sub_attitude{ORB_ID(vehicle_attitude)};
uORB::SubscriptionData<vehicle_attitude_s> _sub_attitude{ORB_ID(vehicle_attitude)}; uORB::SubscriptionData<home_position_s> _sub_home_position{ORB_ID(home_position)};
uORB::SubscriptionData<home_position_s> _sub_home_position{ORB_ID(home_position)};
/** Reset all setpoints to NAN */ /** Reset all setpoints to NAN */
void _resetSetpoints(); void _resetSetpoints();
@@ -201,18 +200,18 @@ protected:
/* Time abstraction */ /* Time abstraction */
static constexpr uint64_t _timeout = 500000; /**< maximal time in us before a loop or data times out */ static constexpr uint64_t _timeout = 500000; /**< maximal time in us before a loop or data times out */
float _time = 0; /**< passed time in seconds since the task was activated */ float _time{}; /**< passed time in seconds since the task was activated */
float _deltatime = 0; /**< passed time in seconds since the task was last updated */ float _deltatime{}; /**< passed time in seconds since the task was last updated */
hrt_abstime _time_stamp_activate = 0; /**< time stamp when task was activated */ hrt_abstime _time_stamp_activate{}; /**< time stamp when task was activated */
hrt_abstime _time_stamp_current = 0; /**< time stamp at the beginning of the current task update */ hrt_abstime _time_stamp_current{}; /**< time stamp at the beginning of the current task update */
hrt_abstime _time_stamp_last = 0; /**< time stamp when task was last updated */ hrt_abstime _time_stamp_last{}; /**< time stamp when task was last updated */
/* Current vehicle state */ /* Current vehicle state */
matrix::Vector3f _position; /**< current vehicle position */ matrix::Vector3f _position; /**< current vehicle position */
matrix::Vector3f _velocity; /**< current vehicle velocity */ matrix::Vector3f _velocity; /**< current vehicle velocity */
float _yaw = 0.f; /**< current vehicle yaw heading */ float _yaw{}; /**< current vehicle yaw heading */
float _dist_to_bottom = 0.f; /**< current height above ground level */ float _dist_to_bottom{}; /**< current height above ground level */
float _dist_to_ground = 0.f; /**< equals _dist_to_bottom if valid, height above home otherwise */ float _dist_to_ground{}; /**< equals _dist_to_bottom if valid, height above home otherwise */
/** /**
* Setpoints which the position controller has to execute. * Setpoints which the position controller has to execute.
@@ -227,20 +226,20 @@ protected:
matrix::Vector3f _acceleration_setpoint; matrix::Vector3f _acceleration_setpoint;
matrix::Vector3f _jerk_setpoint; matrix::Vector3f _jerk_setpoint;
matrix::Vector3f _thrust_setpoint; matrix::Vector3f _thrust_setpoint;
float _yaw_setpoint; float _yaw_setpoint{};
float _yawspeed_setpoint; float _yawspeed_setpoint{};
matrix::Vector3f _velocity_setpoint_feedback; matrix::Vector3f _velocity_setpoint_feedback;
matrix::Vector3f _thrust_setpoint_feedback; matrix::Vector3f _thrust_setpoint_feedback;
/* Counters for estimator local position resets */ /* Counters for estimator local position resets */
struct { struct {
uint8_t xy = 0; uint8_t xy;
uint8_t vxy = 0; uint8_t vxy;
uint8_t z = 0; uint8_t z;
uint8_t vz = 0; uint8_t vz;
uint8_t quat = 0; uint8_t quat;
} _reset_counters; } _reset_counters{};
/** /**
* Vehicle constraints. * Vehicle constraints.
@@ -52,7 +52,6 @@ public:
void reActivate() override; void reActivate() override;
protected: protected:
virtual void _updateSetpoints() override; virtual void _updateSetpoints() override;
/** Reset position or velocity setpoints in case of EKF reset event */ /** Reset position or velocity setpoints in case of EKF reset event */
@@ -66,7 +65,6 @@ protected:
) )
private: private:
void checkSetpoints(vehicle_local_position_setpoint_s &setpoints); void checkSetpoints(vehicle_local_position_setpoint_s &setpoints);
void _updateTrajConstraints(); void _updateTrajConstraints();
@@ -65,5 +65,4 @@ void FlightTaskManualPositionSmooth::_updateSetpoints()
/* Check for altitude lock*/ /* Check for altitude lock*/
_updateAltitudeLock(); _updateAltitudeLock();
} }
@@ -69,7 +69,7 @@ void FlightTaskTransition::updateAccelerationEstimate()
if (!PX4_ISFINITE(_acceleration_setpoint(0)) || if (!PX4_ISFINITE(_acceleration_setpoint(0)) ||
!PX4_ISFINITE(_acceleration_setpoint(1)) || !PX4_ISFINITE(_acceleration_setpoint(1)) ||
!PX4_ISFINITE(_acceleration_setpoint(2))) { !PX4_ISFINITE(_acceleration_setpoint(2))) {
_acceleration_setpoint.setAll(0.f); _acceleration_setpoint.setZero();
} }
_velocity_prev = _velocity; _velocity_prev = _velocity;
@@ -78,11 +78,8 @@ void FlightTaskTransition::updateAccelerationEstimate()
bool FlightTaskTransition::update() bool FlightTaskTransition::update()
{ {
// level wings during the transition, altitude should be controlled // level wings during the transition, altitude should be controlled
_thrust_setpoint(0) = _thrust_setpoint(1) = 0.0f;
_thrust_setpoint(2) = NAN;
_position_setpoint *= NAN;
_velocity_setpoint *= NAN;
_position_setpoint(2) = _transition_altitude; _position_setpoint(2) = _transition_altitude;
_thrust_setpoint.xy() = matrix::Vector2f(0.f, 0.f);
updateAccelerationEstimate(); updateAccelerationEstimate();