Acknowledgement: The experiments that were
the base of this chapter have been done together with Keith Daniel and
Thanos Kod. Keith has written several versions of Portdrvr utility that
include bank and washout, that have gone through various testing cycles.
From the experiment results and discussions, we have gotten a better
understanding of the implementation. The below info gives an overview of our
findings and my own GWbasic trial at getting this motion cue
working.
The platform should start moving in the direction of the
change in aircraft bank. The faster the change of bank, the faster the
platform should move. The relation between platform tilt speed and change of
bank can be linear, but an amplification factor may have to be included to
make it suitable for different type of aircraft.
When there is no more change in aircraft bank, the platform should slowly
start to move in the neutral direction. This action is called the "washout".
Preferably is should be an exponential waveform, as the washout should end
smoothly. The speed of washout should be such that it is hardly detectable
by the occupant.
Several trials were done with software based on the above description.
The aircraft bank angle and platform drive were recorded simultaneously:
Starting from straight flight, make a left bank, keep the same bank angle
for several seconds, and return to level flight again.
Above graph shows aircraft bank and the lower waveform shows the platform
drive.
As can be seen, during the change in bank angle, the platform will follow in
linear fashion.
As soon as the aircraft bank angle becomes fixed, the washout kicks in and
will return the platform with exponential curve back to neutral position.
Then when returning the aircraft to level flight, the platform will first
follow the change in angle to the other direction, and again when stable
level flight is reached, the washout will bring the platform back to center
with exponential curve.
The above platform movement has a side effect: When returning from a left
bank to level flight, the platform will actually tilt to the right side quite a lot.
With aircraft still in left bank, a right platform tilt
feels quite unnatural.
Although this problem cannot be 100% corrected, it can be reduced by letting
the platform washout to an offset neutral point, which is a percentage
of the actual bank angle. In this way the returning from left bank to level
flight will start from a slight platform left tilt angle, and will reach
only a
limited right tilt when aircraft bank reaches level flight. The offset
should be set at around 20 - 30% of actual bank, and during a steep turn
this also enhances the feeling of 'being in the turn' without having the
feeling of 'sliding sideways out of your chair'.
The below plot shows the same maneuver, but now with added bank offset.
The 30% offset can clearly be seen, and return spike will not go positive as
much as the previous graph.
For detecting change of bank angle, the software looks at the difference
between current angle and the angle value of 4 samples earlier. If the
difference is 3 or more, it will assume a firm turn has started.
89 R1=R2:R2=R3:R3=R4:R4=R5:R5=R
' record bank angle data of 5 cycles
98 IF ABS(R5-R1)<3 THEN RD=0 ELSE RD=(R5-R1)*0.3
'ignore small angle changes, RD is the difference data
99 ROFFSET=0.3:REX=1.02 ' ROFFSET is
percentage that sets washout final value, REX sets the washout exponential
100 Rout=Rout+RD ' Rout is platform drive value
101 RNEUT=(R-127)*ROFFSET+127 'calculate
the actual washout final value
102 IF RD=0 then Rout=RNEUT+(Rout-RNEUT)/REX 'washout
will be activated if there is zero bank change
The complete trial program is shown below:
20 ON ERROR GOTO 140
30 CLOSE #1
40 OPEN "com1:9600,n,8" FOR RANDOM AS #1
50 A$=""
55 ON ERROR GOTO 50
60 LINE INPUT#1, A$
70 P$=mid$(A$,3,2)
80 R$=mid$(A$,5,2)
85 P=INSTR("123456789ABCDEF",right$(P$,1))+16*INSTR("123456789ABCDEF",left$(P$,1))
86 R=INSTR("123456789ABCDEF",right$(R$,1))+16*INSTR("123456789ABCDEF",left$(R$,1))
89 R1=R2:R2=R3:R3=R4:R4=R5:R5=R
98 IF ABS(R5-R1)<3 THEN RD=0 ELSE RD=(R5-R1)*0.3
99 ROFFSET=0.3:REX=1.02
100 Rout=Rout+RD
101 RNEUT=(R-127)*ROFFSET+127
102 IF RD=0 then Rout=RNEUT+(Rout-RNEUT)/REX
106 DAC1=R
107 DAC2=CINT(Rout)
108 PRINT R;" "DAC2;" "CINT(RD)
109 IF DAC1>255 or DAC1<0 then goto 115
110 OUT 888,DAC1
111 OUT 890,3
112 OUT 890,11
115 IF DAC2>255 or DAC2<0 then goto 130
117 OUT 888,DAC2
118 OUT 890,9
119 OUT 890,11
130 GOTO 50
140 RESUME 20
The software still needs some tweaking, but I don't get nauseous anymore,
which means it is getting close.
(In this motion cue, if the platform is not following the screen correctly,
you quickly get sick)
>>> A flight video of the above motion cue can be
seen
here.
Some items to be improved: