mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-20 11:06:26 +08:00
improved constants for better response
This commit is contained in:
@@ -122,7 +122,7 @@ static void main_periodic(int my_sig_num) {
|
||||
estimator_run(msg_in.bench_sensor.z,msg_in.bench_sensor.y,msg_in.bench_sensor.x);
|
||||
|
||||
|
||||
controller.elevation_sp = ((int32_t)(foo/512.)%2) ? RadOfDeg(-15) : RadOfDeg(0);
|
||||
controller.elevation_sp = ((int32_t)(foo/2048.)%2) ? RadOfDeg(-20) : RadOfDeg(10);
|
||||
|
||||
control_run();
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ void control_init(void) {
|
||||
controller.elevation_sp = 0.;
|
||||
|
||||
controller.omega_tilt_ref = RadOfDeg(200);
|
||||
controller.omega_elevation_ref = RadOfDeg(50);
|
||||
controller.omega_elevation_ref = RadOfDeg(120);
|
||||
controller.xi_ref = 1.;
|
||||
|
||||
controller.tilt_ref = estimator.tilt;
|
||||
@@ -25,9 +25,10 @@ void control_init(void) {
|
||||
controller.elevation_dot_ref = estimator.elevation_dot;
|
||||
controller.elevation_ddot_ref = 0.;
|
||||
|
||||
controller.one_over_J = 1.;
|
||||
controller.one_over_J = 2.;
|
||||
controller.mass = 5.;
|
||||
|
||||
controller.omega_cl = RadOfDeg(500);
|
||||
controller.omega_cl = RadOfDeg(600);
|
||||
controller.xi_cl = 1.;
|
||||
|
||||
controller.cmd_pitch_ff = 0.;
|
||||
@@ -47,7 +48,7 @@ void control_run(void) {
|
||||
/*
|
||||
* propagate reference
|
||||
*/
|
||||
const float dt_ctl = 1./500.;
|
||||
const float dt_ctl = 1./512.;
|
||||
const float thrust_constant = 40.;
|
||||
|
||||
controller.tilt_ref = controller.tilt_ref + controller.tilt_dot_ref * dt_ctl;
|
||||
@@ -72,17 +73,18 @@ void control_run(void) {
|
||||
controller.cmd_pitch_fb = controller.one_over_J*(2*controller.xi_cl*controller.omega_cl*err_tilt_dot) +
|
||||
controller.one_over_J*(controller.omega_cl*controller.omega_cl*err_tilt);
|
||||
|
||||
controller.cmd_thrust_ff = controller.one_over_J*controller.elevation_ddot_ref;
|
||||
controller.cmd_thrust_fb = -controller.one_over_J*(2*controller.xi_cl*controller.omega_cl*err_elevation_dot) -
|
||||
controller.one_over_J*(controller.omega_cl*controller.omega_cl*err_elevation);
|
||||
controller.cmd_thrust_ff = controller.mass*controller.elevation_ddot_ref;
|
||||
controller.cmd_thrust_fb = -controller.mass*(2*controller.xi_cl*controller.omega_cl*err_elevation_dot) -
|
||||
controller.mass*(controller.omega_cl*controller.omega_cl*err_elevation);
|
||||
|
||||
controller.cmd_pitch = controller.cmd_pitch_ff + controller.cmd_pitch_fb;
|
||||
controller.cmd_thrust = controller.cmd_thrust_ff + controller.cmd_thrust_fb + thrust_constant;
|
||||
|
||||
if (controller.cmd_thrust<0.) controller.cmd_thrust = 0;
|
||||
|
||||
if (!(foo%100)) {
|
||||
//printf("pitch : ff:%f fb:%f (%f)\n",controller.cmd_pitch_ff, controller.cmd_pitch_fb,estimator.tilt_dot);
|
||||
printf("thrust: ff:%f fb:%f (%f %f)\n",controller.cmd_thrust_ff, controller.cmd_thrust_fb,estimator.elevation,estimator.elevation_dot);
|
||||
//printf("thrust: ff:%f fb:%f (%f %f)\n",controller.cmd_thrust_ff, controller.cmd_thrust_fb,estimator.elevation,estimator.elevation_dot);
|
||||
//printf("%f %f %f\n",controller.tilt_ref,controller.tilt_dot_ref,controller.tilt_ddot_ref);
|
||||
}
|
||||
foo++;
|
||||
|
||||
@@ -23,6 +23,7 @@ struct OveroController {
|
||||
|
||||
/* invert control law parameter */
|
||||
float one_over_J;
|
||||
float mass;
|
||||
|
||||
/* closed loop parameters */
|
||||
float omega_cl;
|
||||
|
||||
Reference in New Issue
Block a user