Make lead aircraft behavior more uniform/predictable/repeatable.
This commit is contained in:
parent
07f5dd24f3
commit
a6ebef1d0a
2 changed files with 75 additions and 8 deletions
|
@ -148,7 +148,24 @@ do_target_task = func {
|
||||||
tgt_roll = 0;
|
tgt_roll = 0;
|
||||||
tgt_alt = base_alt;
|
tgt_alt = base_alt;
|
||||||
} else {
|
} else {
|
||||||
if ( target_task == "turns" or target_task == "both" ) {
|
if ( target_task == "turns" ) {
|
||||||
|
next_turn -= dt;
|
||||||
|
if ( next_turn < 0 ) {
|
||||||
|
if ( tgt_roll > 0 ) {
|
||||||
|
# new roll
|
||||||
|
tgt_roll = -30.0;
|
||||||
|
} else {
|
||||||
|
# new roll
|
||||||
|
tgt_roll = 30.0;
|
||||||
|
}
|
||||||
|
# next turn in 15 seconds
|
||||||
|
next_turn = 15.0;
|
||||||
|
|
||||||
|
# roll to zero if tgt_speed < 50 so we don't spin in mid air
|
||||||
|
if ( tgt_speed < 50 ) { tgt_roll = 0; }
|
||||||
|
}
|
||||||
|
tgt_lat_mode = "roll";
|
||||||
|
} elsif ( target_task == "turns-rand" or target_task == "both-rand" ) {
|
||||||
next_turn -= dt;
|
next_turn -= dt;
|
||||||
if ( next_turn < 0 ) {
|
if ( next_turn < 0 ) {
|
||||||
if ( tgt_roll > 0 ) {
|
if ( tgt_roll > 0 ) {
|
||||||
|
@ -167,6 +184,25 @@ do_target_task = func {
|
||||||
tgt_lat_mode = "roll";
|
tgt_lat_mode = "roll";
|
||||||
}
|
}
|
||||||
if ( target_task == "pitch" or target_task == "both" ) {
|
if ( target_task == "pitch" or target_task == "both" ) {
|
||||||
|
next_pitch -= dt;
|
||||||
|
if ( next_pitch < 0 ) {
|
||||||
|
if ( tgt_alt > base_alt ) {
|
||||||
|
# new alt base - 1000
|
||||||
|
tgt_alt = base_alt - 1000.0;
|
||||||
|
} else {
|
||||||
|
# new alt base + 1000
|
||||||
|
tgt_alt = base_alt + 1000.0;
|
||||||
|
}
|
||||||
|
# next pitch in 15 seconds
|
||||||
|
next_pitch = 15.0;
|
||||||
|
|
||||||
|
# ??? (fixme?)
|
||||||
|
# pitch to zero if tgt_speed < 50 so we don't porpoise in
|
||||||
|
# mid air
|
||||||
|
# if ( tgt_speed < 50 ) { tgt_pitch = 0; }
|
||||||
|
}
|
||||||
|
tgt_lon_mode = "alt";
|
||||||
|
} elsif ( target_task == "pitch-rand" or target_task == "both-rand" ) {
|
||||||
next_pitch -= dt;
|
next_pitch -= dt;
|
||||||
if ( next_pitch < 0 ) {
|
if ( next_pitch < 0 ) {
|
||||||
if ( tgt_alt > base_alt ) {
|
if ( tgt_alt > base_alt ) {
|
||||||
|
@ -186,14 +222,45 @@ do_target_task = func {
|
||||||
# if ( tgt_speed < 50 ) { tgt_pitch = 0; }
|
# if ( tgt_speed < 50 ) { tgt_pitch = 0; }
|
||||||
}
|
}
|
||||||
tgt_lon_mode = "alt";
|
tgt_lon_mode = "alt";
|
||||||
}
|
} elsif ( target_task == "lazy-eights" ) {
|
||||||
|
tgt_lat_mode = "roll";
|
||||||
|
tgt_lon_mode = "alt";
|
||||||
|
next_turn -= dt;
|
||||||
|
|
||||||
|
if ( next_turn < 0 ) {
|
||||||
|
next_turn = 32.0;
|
||||||
|
}
|
||||||
|
if ( next_turn > 16.0 ) {
|
||||||
|
# rolling right
|
||||||
|
tgt_roll = 30.0;
|
||||||
|
} else {
|
||||||
|
# rolling left
|
||||||
|
tgt_roll = -30.0;
|
||||||
|
}
|
||||||
|
# roll to zero if tgt_speed < 50 so we don't spin in mid air
|
||||||
|
if ( tgt_speed < 50 ) { tgt_roll = 0; }
|
||||||
|
|
||||||
|
if ( next_turn > 24.0 ) {
|
||||||
|
# climbing
|
||||||
|
tgt_alt = base_alt + 1000.0;
|
||||||
|
} elsif ( next_turn > 16.0 ) {
|
||||||
|
# decending to original altitude
|
||||||
|
tgt_alt = base_alt;
|
||||||
|
} elsif ( next_turn > 8.0 ) {
|
||||||
|
# climbing
|
||||||
|
tgt_alt = base_alt + 1000.0;
|
||||||
|
} else {
|
||||||
|
# decending to original altitude
|
||||||
|
tgt_alt = base_alt;
|
||||||
|
}
|
||||||
|
}
|
||||||
# fixed altitude if in turns mode
|
# fixed altitude if in turns mode
|
||||||
if ( target_task == "turns" ) {
|
if ( target_task == "turns" or target_task == "turns-rand" ) {
|
||||||
tgt_lon_mode = "alt";
|
tgt_lon_mode = "alt";
|
||||||
tgt_alt = base_alt;
|
tgt_alt = base_alt;
|
||||||
}
|
}
|
||||||
# zero roll if in pitch mode
|
# zero roll if in pitch mode
|
||||||
if ( target_task == "pitch" ) {
|
if ( target_task == "pitch" or target_task == "pitch-rand" ) {
|
||||||
tgt_lat_mode = "roll";
|
tgt_lat_mode = "roll";
|
||||||
tgt_roll = 0;
|
tgt_roll = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
</binding>
|
</binding>
|
||||||
</radio>
|
</radio>
|
||||||
<text>
|
<text>
|
||||||
<label>Randomized Heading Changes</label>
|
<label>Level Turns</label>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
<row>1</row><col>1</col>
|
<row>1</row><col>1</col>
|
||||||
</text>
|
</text>
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
</binding>
|
</binding>
|
||||||
</radio>
|
</radio>
|
||||||
<text>
|
<text>
|
||||||
<label>Randomized Pitch Changes</label>
|
<label>Straight Pitch Changes</label>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
<row>2</row><col>1</col>
|
<row>2</row><col>1</col>
|
||||||
</text>
|
</text>
|
||||||
|
@ -97,11 +97,11 @@
|
||||||
<live>true</live>
|
<live>true</live>
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>set_radio("both"); setprop("/autopilot/lead-target/task", "both");</script>
|
<script>set_radio("both"); setprop("/autopilot/lead-target/task", "lazy-eights");</script>
|
||||||
</binding>
|
</binding>
|
||||||
</radio>
|
</radio>
|
||||||
<text>
|
<text>
|
||||||
<label>Both Heading and Pitch Changes</label>
|
<label>Lazy Eights</label>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
<row>3</row><col>1</col>
|
<row>3</row><col>1</col>
|
||||||
</text>
|
</text>
|
||||||
|
|
Loading…
Add table
Reference in a new issue