Roll and Washout
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:

30 CLOSE #1
40 OPEN "com1:9600,n,8" FOR RANDOM AS #1
50 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:

bulletThe change from end of bank change to start of washout is too sharp. It needs to be 'softened' somewhat.
bulletAs you can also see in the video, there is a slight delay from start of aircraft bank to start of platform. Probably due to the too large value for detecting start of bank.



Back Next