ready for MAV06

This commit is contained in:
Pascal Brisset
2006-10-28 02:06:15 +00:00
parent c4a6727e8f
commit a22168ad09
10 changed files with 63 additions and 21 deletions
+4 -1
View File
@@ -110,6 +110,8 @@
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.03"/>
<!-- outer loop saturation -->
@@ -153,7 +155,8 @@
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-5." unit="rad/s/rad"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="ROLL_RATE_PGAIN" value="1000."/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="1000."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="1000."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
+3 -1
View File
@@ -104,6 +104,7 @@
<define name="DEFAULT_CIRCLE_RADIUS" value="100."/>
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
<define name="RC_LOST_MODE" value="PPRZ_MODE_AUTO2"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
@@ -150,7 +151,8 @@
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-5.5"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="ROLL_RATE_PGAIN" value="1200."/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="1500."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="900."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
+10 -7
View File
@@ -69,6 +69,7 @@
<define name="CORRECTION_RIGHT" value="1."/>
<define name="ESTIMATED_PHI_PI_4" value="0.7"/>
<define name="ESTIMATED_PHI_MINUS_PI_4" value="0.76"/>
<define name="360_LATERAL_CORRECTION" value="1."/>
<define name="360_LONGITUDINAL_CORRECTION" value="1."/>
@@ -99,6 +100,7 @@
<define name="DEFAULT_CIRCLE_RADIUS" value="100"/>
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
<define name="RC_LOST_MODE" value="PPRZ_MODE_AUTO2"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
@@ -109,12 +111,12 @@
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value=".4"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value=".47"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="1"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1250"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-2500"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.008"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.25"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.1"/>
@@ -129,7 +131,7 @@
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-0.85"/>
<define name="COURSE_PGAIN" value="-1."/>
<define name="COURSE_PRE_BANK_CORRECTION" value="1."/>
<define name="ROLL_MAX_SETPOINT" value="0.73" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
@@ -139,13 +141,14 @@
<define name="AILERON_OF_THROTTLE" value="0.0"/>
<define name="PITCH_PGAIN" value="-9000."/>
<define name="PITCH_DGAIN" value="0."/>
<define name="ELEVATOR_OF_ROLL" value="0"/>
<define name="ELEVATOR_OF_ROLL" value="1000"/>
<!-- roll rate loop -->
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-5.5"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="ROLL_RATE_PGAIN" value="1000."/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="1500."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="900."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
@@ -165,7 +168,7 @@
<define name="CLIMB_PITCH" value="0.42"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.5"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.5"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="CLIMB_NAV_RATIO" value="0.4"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
+2 -1
View File
@@ -149,7 +149,8 @@
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-5.5"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="ROLL_RATE_PGAIN" value="1000."/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="1500."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="900."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!DOCTYPE radio SYSTEM "radio.dtd">
<radio name="flash5" data_min="900" data_max="2100" sync_min ="5000" sync_max ="15000">
<channel ctl="RH" function="ROLL" min="1845" neutral="1486" max="1124" average="0"/>
<channel ctl="B" function="PITCH" max="1128" neutral="1482" min="1851" average="0"/>
<channel ctl="RV" function="THROTTLE" min="1120" neutral="1120" max="1845" average="0"/>
<channel ctl="A" function="GAIN1" min="1115" neutral="1478" max="1826" average="0"/>
<channel ctl="G" function="MODE" max="1878" neutral="1498" min="1116" average="1"/>
</radio>
+4 -3
View File
@@ -49,7 +49,8 @@
<dl_settings name="rate">
<dl_setting MAX="1" MIN="0" STEP="0.1" VAR="h_ctl_roll_rate_mode" shortname="mode"/>
<dl_setting MAX="5000" MIN="0" STEP="100" VAR="h_ctl_roll_rate_pgain" shortname="pgain"/>
<dl_setting MAX="5000" MIN="0" STEP="100" VAR="h_ctl_hi_throttle_roll_rate_pgain" shortname="hi th pgain"/>
<dl_setting MAX="5000" MIN="0" STEP="100" VAR="h_ctl_lo_throttle_roll_rate_pgain" shortname="lo th pgain"/>
<dl_setting MAX="2" MIN="-2" STEP="0.1" VAR="h_ctl_roll_rate_dgain" shortname="dgain"/>
<dl_setting MAX="0" MIN="-20" STEP="1" VAR="h_ctl_roll_rate_setpoint_pgain" shortname="roll_pgain"/>
<dl_setting MAX="1" MIN="0" STEP="1" VAR="h_ctl_auto1_rate" shortname="AUTO1 rate"/>
@@ -62,12 +63,12 @@
<dl_settings name="auto_throttle">
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle">
<strip_button name="Dash" value="1"/>
<strip_button name="Loiter" value="0.45"/>
<strip_button name="Loiter" value="0.47"/>
<strip_button name="Cruise" value="0.65"/>
</dl_setting>
<dl_setting MAX="-0.01" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain"/>
<dl_setting MAX="-0.005" MIN="-0.1" STEP="0.005" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain"/>
<dl_setting MAX="1" MIN="0.05" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain"/>
<dl_setting MAX="0" MIN="-4000" STEP="100" VAR="v_ctl_auto_throttle_dash_trim" shortname="dash trim"/>
<dl_setting MIN="0" MAX="3000" STEP="100" VAR="v_ctl_auto_throttle_loiter_trim" shortname="loiter trim"/>
+8 -3
View File
@@ -28,6 +28,7 @@
*
*/
#include "std.h"
#include "led.h"
#include "fw_h_ctl.h"
#include "estimator.h"
@@ -70,7 +71,8 @@ float h_ctl_elevator_of_roll;
float h_ctl_roll_rate_setpoint;
float h_ctl_roll_rate_mode;
float h_ctl_roll_rate_setpoint_pgain;
float h_ctl_roll_rate_pgain;
float h_ctl_hi_throttle_roll_rate_pgain;
float h_ctl_lo_throttle_roll_rate_pgain;
float h_ctl_roll_rate_igain;
float h_ctl_roll_rate_dgain;
#endif
@@ -109,7 +111,8 @@ void h_ctl_init( void ) {
#ifdef H_CTL_RATE_LOOP
h_ctl_roll_rate_mode = H_CTL_ROLL_RATE_MODE_DEFAULT;
h_ctl_roll_rate_setpoint_pgain = H_CTL_ROLL_RATE_SETPOINT_PGAIN;
h_ctl_roll_rate_pgain = H_CTL_ROLL_RATE_PGAIN;
h_ctl_hi_throttle_roll_rate_pgain = H_CTL_HI_THROTTLE_ROLL_RATE_PGAIN;
h_ctl_lo_throttle_roll_rate_pgain = H_CTL_LO_THROTTLE_ROLL_RATE_PGAIN;
h_ctl_roll_rate_igain = H_CTL_ROLL_RATE_IGAIN;
h_ctl_roll_rate_dgain = H_CTL_ROLL_RATE_DGAIN;
#endif
@@ -185,7 +188,9 @@ static inline void h_ctl_roll_rate_loop() {
float d_err = err - last_err;
last_err = err;
float cmd = h_ctl_roll_rate_pgain * ( err + h_ctl_roll_rate_igain * roll_rate_sum_err / H_CTL_ROLL_RATE_SUM_NB_SAMPLES + h_ctl_roll_rate_dgain * d_err);
float throttle_dep_pgain =
Blend(h_ctl_hi_throttle_roll_rate_pgain, h_ctl_lo_throttle_roll_rate_pgain, v_ctl_throttle_setpoint/((float)MAX_PPRZ));
float cmd = throttle_dep_pgain * ( err + h_ctl_roll_rate_igain * roll_rate_sum_err / H_CTL_ROLL_RATE_SUM_NB_SAMPLES + h_ctl_roll_rate_dgain * d_err);
h_ctl_aileron_setpoint = TRIM_PPRZ(cmd);
}
+2
View File
@@ -68,6 +68,8 @@ extern float h_ctl_elevator_of_roll;
extern float h_ctl_roll_rate_mode;
extern float h_ctl_roll_rate_setpoint_pgain;
extern float h_ctl_roll_rate_pgain;
extern float h_ctl_hi_throttle_roll_rate_pgain;
extern float h_ctl_lo_throttle_roll_rate_pgain;
extern float h_ctl_roll_rate_igain;
extern float h_ctl_roll_rate_dgain;
#endif
+16 -1
View File
@@ -223,6 +223,10 @@ static inline void reporting_task( void ) {
}
}
#ifndef RC_LOST_MODE
#define RC_LOST_MODE PPRZ_MODE_HOME
#endif
/** \brief Function to be called when a command is available (usually comming from the radio command)
*/
inline void telecommand_task( void ) {
@@ -230,10 +234,16 @@ inline void telecommand_task( void ) {
copy_from_to_fbw();
uint8_t really_lost = bit_is_set(fbw_state->status, RADIO_REALLY_LOST) && (pprz_mode == PPRZ_MODE_AUTO1 || pprz_mode == PPRZ_MODE_MANUAL);
if (pprz_mode != PPRZ_MODE_HOME && pprz_mode != PPRZ_MODE_GPS_OUT_OF_ORDER && launch && (really_lost || too_far_from_home)) {
if (pprz_mode != PPRZ_MODE_HOME && pprz_mode != PPRZ_MODE_GPS_OUT_OF_ORDER && launch) {
if (too_far_from_home) {
pprz_mode = PPRZ_MODE_HOME;
mode_changed = TRUE;
}
if (really_lost) {
pprz_mode = RC_LOST_MODE;
mode_changed = TRUE;
}
}
if (bit_is_set(fbw_state->status, AVERAGED_CHANNELS_SENT)) {
bool_t pprz_mode_changed = pprz_mode_update();
mode_changed |= pprz_mode_changed;
@@ -341,6 +351,11 @@ static void navigation_task( void ) {
if (vertical_mode == VERTICAL_MODE_AUTO_GAZ)
v_ctl_throttle_setpoint = nav_desired_gaz;
#ifdef V_CTL_POWER_CTL_BAT_NOMINAL
v_ctl_throttle_setpoint *= 10. * V_CTL_POWER_CTL_BAT_NOMINAL / (float)vsupply;
v_ctl_throttle_setpoint = TRIM_UPPRZ(v_ctl_throttle_setpoint);
#endif
h_ctl_pitch_setpoint = nav_pitch;
Bound(h_ctl_pitch_setpoint, H_CTL_PITCH_MIN_SETPOINT, H_CTL_PITCH_MAX_SETPOINT);
if (kill_throttle || (!estimator_flight_time && !launch))
+1 -1
View File
@@ -235,7 +235,7 @@ let one_setting = fun i do_change packing s (tooltips:GData.tooltips) (strip:Str
else (* slider *)
let value = (lower +. upper) /. 2. in
let adj = GData.adjustment ~value ~lower ~upper:(upper+.10.) ~step_incr () in
let _scale = GRange.scale `HORIZONTAL ~digits:2 ~adjustment:adj ~packing:hbox#add () in
let _scale = GRange.scale `HORIZONTAL ~digits:3 ~adjustment:adj ~packing:hbox#add () in
(fun _ -> do_change i adj#value)
in