Sim: Sync with autopush 'lite' bugfixes, experimental coeffs for smoother performance
This commit is contained in:
parent
2b5174faa7
commit
758f74d5bc
3 changed files with 12 additions and 12 deletions
|
@ -32,10 +32,10 @@
|
||||||
<yaw alias="/gear/gear[0]/steering-norm"/>
|
<yaw alias="/gear/gear[0]/steering-norm"/>
|
||||||
<yaw-mult type="float">1.0</yaw-mult>
|
<yaw-mult type="float">1.0</yaw-mult>
|
||||||
<target-speed-km_h type="float">0.0</target-speed-km_h>
|
<target-speed-km_h type="float">0.0</target-speed-km_h>
|
||||||
<K_p type="float">1.0</K_p>
|
<K_p type="float">0.5</K_p>
|
||||||
<F_p type="float">0.1</F_p>
|
<F_p type="float">0.15</F_p>
|
||||||
<K_i type="float">0.01</K_i>
|
<K_i type="float">0.25</K_i>
|
||||||
<F_i type="float">2.0</F_i>
|
<F_i type="float">0.1</F_i>
|
||||||
<K_d type="float">0.0</K_d>
|
<K_d type="float">0.0</K_d>
|
||||||
<F_d type="float">0.0</F_d>
|
<F_d type="float">0.0</F_d>
|
||||||
<driver>
|
<driver>
|
||||||
|
|
|
@ -17,7 +17,7 @@ var _K_d = nil;
|
||||||
var _F_d = nil;
|
var _F_d = nil;
|
||||||
var _F = nil;
|
var _F = nil;
|
||||||
var _int = nil;
|
var _int = nil;
|
||||||
var _deltaV = nil;
|
var _V = nil;
|
||||||
var _T_f = nil;
|
var _T_f = nil;
|
||||||
var _K_yaw = nil;
|
var _K_yaw = nil;
|
||||||
var _yasim = 0;
|
var _yasim = 0;
|
||||||
|
@ -36,9 +36,9 @@ var _loop = func() {
|
||||||
var y = 0.0;
|
var y = 0.0;
|
||||||
# Rollspeed is only adequate if the wheel is touching the ground.
|
# Rollspeed is only adequate if the wheel is touching the ground.
|
||||||
if (getprop("/gear/gear[0]/wow")) {
|
if (getprop("/gear/gear[0]/wow")) {
|
||||||
var deltaV = getprop("/sim/model/pushback/target-speed-km_h");
|
var V = getprop("/gear/gear[0]/rollspeed-ms") * 3.6;
|
||||||
deltaV -= getprop("/gear/gear[0]/rollspeed-ms") * 3.6;
|
var deltaV = getprop("/sim/model/pushback/target-speed-km_h") - V;
|
||||||
var dV = deltaV - _deltaV;
|
var dV = V - _V;
|
||||||
var time = getprop("/sim/time/elapsed-sec");
|
var time = getprop("/sim/time/elapsed-sec");
|
||||||
var prop = math.min(math.max(_K_p * deltaV, -_F_p), _F_p);
|
var prop = math.min(math.max(_K_p * deltaV, -_F_p), _F_p);
|
||||||
var speedup = getprop("/sim/speed-up");
|
var speedup = getprop("/sim/speed-up");
|
||||||
|
@ -47,7 +47,7 @@ var _loop = func() {
|
||||||
# XXX Sanitising dt. Smaller chance of freakout on lag spike.
|
# XXX Sanitising dt. Smaller chance of freakout on lag spike.
|
||||||
if(dt > 0.0) {
|
if(dt > 0.0) {
|
||||||
if(dt < 0.05) {
|
if(dt < 0.05) {
|
||||||
_int = math.min(math.max(_int + _K_i * dV * dt, -_F_i), _F_i);
|
_int = math.min(math.max(_int + _K_i * deltaV * dt, -_F_i), _F_i);
|
||||||
}
|
}
|
||||||
if(dt > 0.002) {
|
if(dt > 0.002) {
|
||||||
deriv = math.min(math.max(_K_d * dV / dt, -_F_d), _F_d);
|
deriv = math.min(math.max(_K_d * dV / dt, -_F_d), _F_d);
|
||||||
|
@ -57,7 +57,7 @@ var _loop = func() {
|
||||||
if (_debug > 2) {
|
if (_debug > 2) {
|
||||||
print("pushback prop " ~ prop ~ ", _int " ~ _int ~ ", deriv " ~ deriv);
|
print("pushback prop " ~ prop ~ ", _int " ~ _int ~ ", deriv " ~ deriv);
|
||||||
}
|
}
|
||||||
_deltaV = deltaV;
|
_V = V;
|
||||||
_time = time;
|
_time = time;
|
||||||
if (!_yasim) {
|
if (!_yasim) {
|
||||||
force = accel * getprop("/fdm/jsbsim/inertia/weight-lbs") * _unitconv;
|
force = accel * getprop("/fdm/jsbsim/inertia/weight-lbs") * _unitconv;
|
||||||
|
@ -98,7 +98,7 @@ var _start = func() {
|
||||||
_yasim = (getprop("/sim/flight-model") == "yasim");
|
_yasim = (getprop("/sim/flight-model") == "yasim");
|
||||||
_debug = getprop("/sim/model/pushback/debug") or 0;
|
_debug = getprop("/sim/model/pushback/debug") or 0;
|
||||||
_int = 0.0;
|
_int = 0.0;
|
||||||
_deltaV = 0.0;
|
_V = 0.0;
|
||||||
_time = getprop("/sim/time/elapsed-sec");
|
_time = getprop("/sim/time/elapsed-sec");
|
||||||
setprop("/sim/model/pushback/connected", 1);
|
setprop("/sim/model/pushback/connected", 1);
|
||||||
if (!_timer.isRunning) {
|
if (!_timer.isRunning) {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
4722
|
4723
|
Reference in a new issue