Skip to content

Commit e9b0a3e

Browse files
Thomas StastnyJaeyoung-Lim
authored andcommitted
npfg: create const adaptPeriod method and update control params outside
1 parent 0b705c6 commit e9b0a3e

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

src/lib/npfg/npfg.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ void NPFG::evaluate(const Vector2f &ground_vel, const Vector2f &wind_vel,
7878

7979
// update control parameters considering upper and lower stability bounds (if enabled)
8080
// must be called before trackErrorBound() as it updates time_const_
81-
updateControlParams(ground_speed, airspeed, wind_ratio, track_error, path_curvature,
82-
wind_vel, unit_path_tangent, feas_on_track_);
81+
adapted_period_ = adaptPeriod(ground_speed, airspeed, wind_ratio, track_error,
82+
path_curvature, wind_vel, unit_path_tangent, feas_on_track_);
83+
p_gain_ = pGain(adapted_period_, damping_);
84+
time_const_ = timeConst(adapted_period_, damping_);
8385

8486
// track error bound is dynamic depending on ground speed
8587
track_error_bound_ = trackErrorBound(ground_speed, time_const_);
@@ -120,9 +122,9 @@ void NPFG::evaluate(const Vector2f &ground_vel, const Vector2f &wind_vel,
120122
lateral_accel_ = lateralAccel(air_vel, air_vel_ref_, airspeed) + lateral_accel_ff_;
121123
} // evaluate
122124

123-
void NPFG::updateControlParams(const float ground_speed, const float airspeed, const float wind_ratio,
124-
const float track_error, const float path_curvature, const Vector2f &wind_vel,
125-
const Vector2f &unit_path_tangent, const float feas_on_track)
125+
float NPFG::adaptPeriod(const float ground_speed, const float airspeed, const float wind_ratio,
126+
const float track_error, const float path_curvature, const Vector2f &wind_vel,
127+
const Vector2f &unit_path_tangent, const float feas_on_track) const
126128
{
127129
float period = period_;
128130
const float air_turn_rate = fabsf(path_curvature * airspeed);
@@ -164,11 +166,8 @@ void NPFG::updateControlParams(const float ground_speed, const float airspeed, c
164166
}
165167
}
166168

167-
// update the control parameters / output the adapted period
168-
adapted_period_ = period;
169-
p_gain_ = pGain(period, damping_);
170-
time_const_ = timeConst(period, damping_);
171-
} // updateControlParams
169+
return period;
170+
} // adaptPeriod
172171

173172
float NPFG::normalizedTrackError(const float track_error, const float track_error_bound) const
174173
{

src/lib/npfg/npfg.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,8 @@ class NPFG
409409
const matrix::Vector2f &unit_path_tangent, const float signed_track_error, const float path_curvature);
410410

411411
/*
412-
* Updates the proportional gain and time constant of the controller considering
413-
* user defined inputs, current flight condition, path properties, and stability
414-
* bounds.
412+
* Adapts the controller period considering user defined inputs, current flight
413+
* condition, path properties, and stability bounds.
415414
*
416415
* @param[in] ground_speed Vehicle ground speed [m/s]
417416
* @param[in] airspeed Vehicle airspeed [m/s]
@@ -421,11 +420,12 @@ class NPFG
421420
* @param[in] wind_vel Wind velocity vector in inertial frame [m/s]
422421
* @param[in] unit_path_tangent Unit vector tangent to path at closest point
423422
* in direction of path
423+
* @param[in] feas_on_track Bearing feasibility on track at the closest point
424+
* @return Adapted period [s]
424425
*/
425-
void updateControlParams(const float ground_speed, const float airspeed,
426-
const float wind_ratio, const float track_error, const float path_curvature,
427-
const matrix::Vector2f &wind_vel, const matrix::Vector2f &unit_path_tangent,
428-
const float feas_on_track);
426+
float adaptPeriod(const float ground_speed, const float airspeed, const float wind_ratio,
427+
const float track_error, const float path_curvature, const matrix::Vector2f &wind_vel,
428+
const matrix::Vector2f &unit_path_tangent, const float feas_on_track) const;
429429

430430
/*
431431
* Returns normalized (unitless) and constrained track error [0,1].

0 commit comments

Comments
 (0)