diff --git a/conf/airframes/Poine/beth.xml b/conf/airframes/Poine/beth.xml index 847168a6e2..994eea0faf 100644 --- a/conf/airframes/Poine/beth.xml +++ b/conf/airframes/Poine/beth.xml @@ -148,7 +148,7 @@ main_stm32.srcs += $(SRC_BOOZ)/booz2_commands.c main_stm32.srcs += $(SRC_BOOZ)/actuators/booz_actuators_asctec.c #\ # $(SRC_BOOZ_ARCH)/actuators/booz_actuators_asctec_arch.c -main_stm32.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c1 +main_stm32.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c1 # -DBOOZ_START_DELAY=3 -DUSE_TIM2_IRQ main_stm32.CFLAGS += -DUSE_I2C1 main_stm32.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c @@ -208,7 +208,8 @@ USER = #HOST = beth #HOST = overo #HOST = auto7 -HOST= regis +#HOST= regis +HOST = auto3 TARGET_DIR = ~ SRC_FMS=fms diff --git a/conf/settings/settings_beth.xml b/conf/settings/settings_beth.xml index 31bda17594..5cae3407f3 100644 --- a/conf/settings/settings_beth.xml +++ b/conf/settings/settings_beth.xml @@ -6,10 +6,10 @@ - + - + diff --git a/sw/airborne/beth/overo_controller.c b/sw/airborne/beth/overo_controller.c index fda95175f2..1a09881fe1 100644 --- a/sw/airborne/beth/overo_controller.c +++ b/sw/airborne/beth/overo_controller.c @@ -12,9 +12,11 @@ void control_init(void) { controller.tilt_sp = 0.; controller.elevation_sp = RadOfDeg(10); + controller.azimuth_sp = 0.; controller.omega_tilt_ref = RadOfDeg(200); controller.omega_elevation_ref = RadOfDeg(120); + controller.omega_azimuth_ref = RadOfDeg(60); controller.xi_ref = 1.; controller.tilt_ref = estimator.tilt; @@ -69,6 +71,11 @@ void control_run(void) { controller.elevation_ddot_ref = -2*controller.omega_elevation_ref*controller.xi_ref*controller.elevation_dot_ref - controller.omega_elevation_ref*controller.omega_elevation_ref*(controller.elevation_ref - controller.elevation_sp); + controller.azimuth_ref = controller.azimuth_ref + controller.azimuth_dot_ref * dt_ctl; + controller.azimuth_dot_ref = controller.azimuth_dot_ref + controller.azimuth_ddot_ref * dt_ctl; + controller.azimuth_ddot_ref = -2*controller.omega_azimuth_ref*controller.xi_ref*controller.azimuth_dot_ref + - controller.omega_azimuth_ref*controller.omega_azimuth_ref*(controller.azimuth_ref - controller.azimuth_sp); + static int foo=0; /* @@ -96,10 +103,12 @@ void control_run(void) { 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_azimuth_ff = controller.one_over_J * controller.azimuth_ddot_ref; controller.cmd_azimuth_fb = controller.one_over_J * (2 * controller.xi_cl * controller.omega_cl * err_azimuth_dot) + controller.one_over_J * (controller.omega_cl * controller.omega_cl * err_azimuth); - controller.cmd_pitch = controller.cmd_pitch_ff + controller.cmd_pitch_fb + controller.azim_gain * controller.cmd_azimuth_fb; + controller.cmd_pitch = controller.cmd_pitch_ff + controller.cmd_pitch_fb + + controller.azim_gain * (controller.cmd_azimuth_fb + controller.cmd_azimuth_ff); controller.cmd_thrust = controller.cmd_thrust_ff + controller.cmd_thrust_fb + thrust_constant; controller.cmd_thrust = controller.cmd_thrust*(1/cos(estimator.elevation)); diff --git a/sw/airborne/beth/overo_controller.h b/sw/airborne/beth/overo_controller.h index d1e72307d2..e16ad37eac 100644 --- a/sw/airborne/beth/overo_controller.h +++ b/sw/airborne/beth/overo_controller.h @@ -7,6 +7,7 @@ struct OveroController { float tilt_sp; float elevation_sp; + float azimuth_sp; /* modele de reference */ float tilt_ref; @@ -23,6 +24,7 @@ struct OveroController { float omega_tilt_ref; float omega_elevation_ref; + float omega_azimuth_ref; float xi_ref; /* invert control law parameter */ @@ -40,6 +42,7 @@ struct OveroController { float cmd_thrust_ff; float cmd_thrust_fb; + float cmd_azimuth_ff; float cmd_azimuth_fb; float cmd_pitch;