Control: Fix many FlyByWire bugs, including jerk after liftoff (fixes #81)

This commit is contained in:
Joshua Davidson 2019-03-07 22:56:34 -05:00
parent 3448e17cc7
commit 83e512f471
2 changed files with 76 additions and 5 deletions

View file

@ -9,6 +9,7 @@
<property value="0">fbw/pitch/pid</property> <property value="0">fbw/pitch/pid</property>
<property value="0">fbw/yaw/tc-pd</property> <property value="0">fbw/yaw/tc-pd</property>
<property value="0">fbw/spoiler-output</property> <property value="0">fbw/spoiler-output</property>
<property value="1">fbw/mixer/sidestick-gain-feedback</property>
<!-- Default gains for tuning --> <!-- Default gains for tuning -->
<property value="0">fbw/roll/p-gain</property> <property value="0">fbw/roll/p-gain</property>
@ -210,6 +211,40 @@
<c1>1.0</c1> <c1>1.0</c1>
</lag_filter> </lag_filter>
<switch name="fbw/mixer/rate-limit">
<default value="fbw/mixer/rate-limit"/>
<test logic="AND" value="0.5"> <!-- 2 seconds -->
position/wow eq 1
fbw/mixer/sidestick-gain-feedback eq 1
</test>
<test logic="AND" value="100"> <!-- Unlimited -->
position/wow eq 1
fbw/mixer/sidestick-gain-feedback ne 1
</test>
<test logic="AND" value="100"> <!-- Unlimited -->
position/wow eq 0
fbw/mixer/sidestick-gain-feedback eq 0
</test>
</switch>
<actuator name="fbw/mixer/sidestick-gain">
<input>position/wow</input>
<rate_limit>fbw/mixer/rate-limit</rate_limit>
<output>fbw/mixer/sidestick-gain-feedback</output>
</actuator>
<fcs_function name="fbw/mixer/computer-gain">
<function>
<table>
<independentVar lookup="row">fbw/mixer/sidestick-gain</independentVar>
<tableData>
0 1
1 0
</tableData>
</table>
</function>
</fcs_function>
</channel> </channel>
<channel name="FBW: Roll"> <channel name="FBW: Roll">
@ -504,9 +539,28 @@
</function> </function>
</fcs_function> </fcs_function>
<pure_gain name="fbw/mixer/roll/computer-demand">
<input>fbw/roll/pid</input>
<gain>fbw/mixer/computer-gain</gain>
</pure_gain>
<pure_gain name="fbw/mixer/roll/sidestick-demand">
<input>fbw/roll/a-i-f</input>
<gain>fbw/mixer/sidestick-gain</gain>
</pure_gain>
<summer name="fbw/mixer/roll/output">
<input>fbw/mixer/roll/computer-demand</input>
<input>fbw/mixer/roll/sidestick-demand</input>
<clipto>
<min>-1.0</min>
<max>1.0</max>
</clipto>
</summer>
<switch name="fbw/aileron-output"> <switch name="fbw/aileron-output">
<default value="0"/> <default value="0"/>
<test logic="AND" value="fbw/roll/pid"> <test logic="AND" value="fbw/mixer/roll/output">
position/wow eq 0 position/wow eq 0
/it-fbw/law eq 0 /it-fbw/law eq 0
</test> </test>
@ -993,9 +1047,28 @@
</test> </test>
</switch> </switch>
<pure_gain name="fbw/mixer/pitch/computer-demand">
<input>fbw/pitch/pid-switched</input>
<gain>fbw/mixer/computer-gain</gain>
</pure_gain>
<pure_gain name="fbw/mixer/pitch/sidestick-demand">
<input>fbw/pitch/e-i-f</input>
<gain>fbw/mixer/sidestick-gain</gain>
</pure_gain>
<summer name="fbw/mixer/pitch/output">
<input>fbw/mixer/pitch/computer-demand</input>
<input>fbw/mixer/pitch/sidestick-demand</input>
<clipto>
<min>-1.0</min>
<max>1.0</max>
</clipto>
</summer>
<switch name="fbw/elevator-output"> <switch name="fbw/elevator-output">
<default value="0"/> <default value="0"/>
<test logic="AND" value="fbw/pitch/pid-switched"> <test logic="AND" value="fbw/mixer/pitch/output"> <!-- Mix stick and control law for transition from ground law -->
position/wow eq 0 position/wow eq 0
fbw/pitch/law-switch eq 1 fbw/pitch/law-switch eq 1
</test> </test>
@ -1223,8 +1296,6 @@
<default value="fbw/yaw/r-washout"/> <default value="fbw/yaw/r-washout"/>
<test logic="OR" value="0"> <test logic="OR" value="0">
position/wow eq 1 position/wow eq 1
fbw/yaw/rudder-nul gt 0
fbw/yaw/rudder-nul lt 0
/position/gear-agl-ft lt 50 /position/gear-agl-ft lt 50
fbw/yaw/autoland-switch eq 1 fbw/yaw/autoland-switch eq 1
</test> </test>

View file

@ -1 +1 @@
4778 4779