Skip to content

Commit 7ee49bf

Browse files
committed
AC_WPNav: Loiter: Real time S-Curve Command Model
1 parent 62beedd commit 7ee49bf

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

libraries/AC_WPNav/AC_Loiter.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ void AC_Loiter::init_target()
135135
_predicted_accel_ne_mss = _pos_control.get_accel_target_NED_mss().xy();
136136
_predicted_euler_angle_rad.x = _pos_control.get_roll_rad();
137137
_predicted_euler_angle_rad.y = _pos_control.get_pitch_rad();
138+
_predicted_euler_rate.zero();
139+
_predicted_euler_accel.zero();
138140
_brake_accel_mss = 0.0f;
139141
}
140142

@@ -171,7 +173,7 @@ void AC_Loiter::set_pilot_desired_acceleration_rad(float euler_roll_angle_rad, f
171173
Vector2f angle_error_euler_rad(wrap_PI(euler_roll_angle_rad - _predicted_euler_angle_rad.x), wrap_PI(euler_pitch_angle_rad - _predicted_euler_angle_rad.y));
172174

173175
// Predict roll/pitch rate required to achieve target attitude
174-
_attitude_control.input_shaping_rate_predictor(angle_error_euler_rad, _predicted_euler_rate, dt_s);
176+
_attitude_control.input_shaping_rate_predictor(angle_error_euler_rad, _predicted_euler_rate, _predicted_euler_accel, dt_s);
175177

176178
// Update internal attitude estimate for next iteration
177179
_predicted_euler_angle_rad += _predicted_euler_rate * dt_s;

libraries/AC_WPNav/AC_Loiter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class AC_Loiter
130130
Vector2f _predicted_accel_ne_mss; // Predicted acceleration in m/s² based on internal rate shaping of pilot input.
131131
Vector2f _predicted_euler_angle_rad; // Predicted roll/pitch angles (in radians) used for rate shaping of pilot input.
132132
Vector2f _predicted_euler_rate; // Predicted roll/pitch angular rates (in rad/s) for pilot acceleration shaping.
133+
Vector2f _predicted_euler_accel; // Predicted roll/pitch angular rates (in rad/s) for pilot acceleration shaping.
133134
uint32_t _brake_timer_ms; // Timestamp (in ms) when braking logic was last triggered (sticks released).
134135
float _brake_accel_mss; // Current braking acceleration in m/s², updated using jerk limits over time.
135136
};

0 commit comments

Comments
 (0)