1. Do not share user accounts! Any account that is shared by another person will be blocked and closed. This means: we will close not only the account that is shared, but also the main account of the user who uses another person's account. We have the ability to detect account sharing, so please do not try to cheat the system. This action will take place on 04/18/2023. Read all forum rules.
    Dismiss Notice
  2. For downloading SimTools plugins you need a Download Package. Get it with virtual coins that you receive for forum activity or Buy Download Package - We have a zero Spam tolerance so read our forum rules first.

    Buy Now a Download Plan!
  3. Do not try to cheat our system and do not post an unnecessary amount of useless posts only to earn credits here. We have a zero spam tolerance policy and this will cause a ban of your user account. Otherwise we wish you a pleasant stay here! Read the forum rules
  4. We have a few rules which you need to read and accept before posting anything here! Following these rules will keep the forum clean and your stay pleasant. Do not follow these rules can lead to permanent exclusion from this website: Read the forum rules.
    Are you a company? Read our company rules

Flypt Filter Research (or why doesnt my rig move right?)

Discussion in 'FlyPt Mover' started by Historiker, Feb 13, 2020.

  1. Historiker

    Historiker Dramamine Adict Gold Contributor

    Joined:
    Dec 16, 2010
    Messages:
    2,158
    Occupation:
    Retired
    Location:
    Michigan USA
    Balance:
    9,176Coins
    Ratings:
    +2,158 / 19 / -1
    My Motion Simulator:
    3DOF, DC motor, Arduino, Motion platform, 6DOF
    This thread is to, hopefully, help those of us that do not have a firm grasp on filters and how to use them. Too often filters are discussed in terms of audio wave forms and although I understand that this is the correct terminology (ok, I don't really but I am told it is) it would be very very helpful to have filters explained in a (setting) = (effect) manner.

    I will start off with an example of Washout:

    These are some posts from the XSimulator Discord server that may help to better understand washout.

    HANNIBAL02/04/2020
    yea, i been hearing more about this wash out filter... someone give us the math!!

    Insecta Tech - The Roach02/04/2020
    What do you want to do?

    Insecta Tech - The Roach02/04/2020
    lower EMALP to make it more responsive and increase EMAHP to slow the return(edited)

    HANNIBAL02/04/2020

    can u post a 3d graphic and the pose formula? @Insecta Tech - The Roach

    as an example?
    im very nooby mover user

    February 5, 2020
    Insecta Tech - The Roach02/05/2020
    First create a EMALP filter and change it to 50, then add a second filter on top of this for EMAHP and range that one to 500 and you'll see what I mean.HANNIBAL02/05/2020
    thanks.. ill try it out!!!! nice!

    Historiker02/05/2020
    I had not thought of upping the high pass filter to 500. For some reason I thought of it as a percentage with 100 being the highest possible. Thanks @Insecta Tech - The Roach for the tip.

    Insecta Tech - The Roach02/05/2020
    You're welcome

    Here is what I have learned (which is not much): I set the low pass filter higher to get the return to slow down. Higher LP = Slower movement. (I will freely admit that I do not understand what the HP filter does). My final filter settings for DCS is LP=200 HP=500 (EM)

    EDIT: Here is a screenshot showing how I set it up.

    Washout filter example.png
    • Like Like x 2
    • Useful Useful x 1
    Last edited: Feb 13, 2020
  2. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    20,539
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    145,052Coins
    Ratings:
    +10,776 / 52 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    To avoid confusion it would help to be clear about what filters are being discussed, so as to not have SimTools newbies scratching their heads and asking questions about missing SimTools filter fields ;)

    Edited the title as likely to turn up in a search on 'filters', where newbies could easily miss the thread section.
    • Like Like x 1
    Last edited: Feb 14, 2020
  3. Historiker

    Historiker Dramamine Adict Gold Contributor

    Joined:
    Dec 16, 2010
    Messages:
    2,158
    Occupation:
    Retired
    Location:
    Michigan USA
    Balance:
    9,176Coins
    Ratings:
    +2,158 / 19 / -1
    My Motion Simulator:
    3DOF, DC motor, Arduino, Motion platform, 6DOF
    Good point, thanks!
    • Like Like x 1
  4. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Oh,... I just now saw this thread :)

    Indeed, I think that the vast majority of users are NOT limited by what Mover is capable of, but by their ability to understand what it even is they're trying to do and recognizing the means available in Mover to do it.

    I have invested some time in filters to understand them reasonably well in the time and frequency domain and I came out of it with two deep convictions:
    1. It is possible to get a basic understanding of the behavior of filters with little to no background knowledge.
    2. It is super important to acquire that basic understanding of filters to be able get your rig to do what you want it to do.


    Your first step on the "journey to filters" is building your own EMALP filter, just like FlyPT did in his software. You won't have to scratch your heads anymore asking yourself "What is it for","How does it work?", "How does it behave?", "What does it do to the signal?".

    NO!!!

    YOU
    will build it yourself!!! YOU will understand it! Because YOU will have created it!

    Open up excel, right now! Then create a table like this one:
    Bildschirmfoto 2020-08-30 um 21.55.20.png

    Initially the signal is zero, but at a certain point the signal makes a step. This is the step input to our filter:
    Zero --> One
    Then you plot those points out in an X-Y chart (Not a line chart! Not a bar chart!) and what comes out are the blue dots in this picture:
    Bildschirmfoto 2020-08-30 um 21.48.47.png

    For every moment in time the input signal is represented by one of those blue dots.

    Now once you have that, we will create the output signal and we will do that for every point in time.

    For the first moment (Time = 0) there is nothing we can do. The output is always exactly the input. Sorry.

    But for all following points in time we will let the output signal drift slowly towards the value of the input signal as if it was magically attracted by it through a rubber band.

    And we do this by allowing the output signal to make a step towards the value of the input signal. But this step only bridges, say, 5% of the distance.

    These 5% are our adoption rate! The amount by which the new output will close-in on its "target". Remember, we want to "dampen" the output, so we are not letting it jump all the way. It may only approach the value of the input whatever that is by 5% of the distance at a time.

    The adoption rate is called Alpha. It is a measure for how "agile" we want our filter to be. It must be between 0 and 1.

    In our Excel sheet, for every point in time, we can calculate the Output signal with the formula:

    NewOutput = Input * alpha + PreviousOutput * (1-alpha)

    What we are doing is composing the new output out of the previous output and the input. But every component gets "weighted". The input gets 5% weight (alpha) - The current output gets 95% weight (1-alpha)

    Just do this in excel, it will make you understand!

    Dirty :)
    • Like Like x 3
    • Winner Winner x 1
  5. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    I have put all of my last post into a little video. I will make a few more :)
    • Like Like x 3
    • Winner Winner x 1
    • Informative Informative x 1
    Last edited: Jun 21, 2022
  6. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    And here the next step. Changing the Excel sheet to be able to play around with the parameters:


    Notice that there are two ways to make the filter react quicker:
    1. Increase the adoption rate
    2. Increase the frames per second (decreasing the time interval)
    Follow along the exercise and play around with those parameters, see how the output curve changes. Get an intuitive understanding.

    Ignore all the bulls#!+ about frequency domain, Fourier transforms, LaPlace transforms, time invariance, homogeneity, causality, stability,... blah blah blah...

    And most of all: ENJOY IT!!! This is fun! :thumbs You are exploring! Like "Indiana Jones and the Temple of the LowPass filter" :) There are a ton of discoveries to be made.

    Cheers,... Dirty :)
    • Like Like x 3
    • Winner Winner x 1
    • Informative Informative x 1
    Last edited: Jun 21, 2022
  7. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Made another one.


    Take a look at how that EMALP smoothens out a pseudo noise signal.
    • Like Like x 2
    • Winner Winner x 1
    Last edited: Jun 21, 2022
  8. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Aaaaand another one :)
    • Like Like x 3
    • Winner Winner x 1
    Last edited: Jun 21, 2022
  9. Historiker

    Historiker Dramamine Adict Gold Contributor

    Joined:
    Dec 16, 2010
    Messages:
    2,158
    Occupation:
    Retired
    Location:
    Michigan USA
    Balance:
    9,176Coins
    Ratings:
    +2,158 / 19 / -1
    My Motion Simulator:
    3DOF, DC motor, Arduino, Motion platform, 6DOF
    These are excellent Dirty, thanks for creating them. I look forward to more in the series.
    • Agree Agree x 1
  10. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    I made another one where I try to explain the concept of the "receding horizon" (for lack of a better name). I hope it sheds some light on this magical "filter constant" that lowpass, and other filters use in Mover.
    • Winner Winner x 1
    Last edited: Jun 21, 2022
  11. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    And now finally here we create those same curves directly in Mover :)

    I think it should give you a great sense of satisfaction if you see exactly those same curves created by the Mover software :)

    There are still a few concepts I'd like to illustrate in further videos:
    - Creating a highpass filter from a lowpass filter.
    - Higher order LP filters
    - Combined HP/LP systems
    - Why does a LP behave like an integrator and a HP like a differentiator?

    And once you gained a basic understanding of the matter up to there, you should be able to tackle the most important question:
    - When and why to use which filter(-system) in the context of motion cueing?

    I know this is a lot to digest. Take your time. I spent almost two years digging into this subject and have had countless occasions where I was dumbfounded for a week or a month or six. I read papers that I didn't understand, three or four times. Until I STILL didn't understand them :) I asked people for help, and got answers that I just couldn't digest.

    But after building these filters myself and then seeing them in action in my own software, it all "clicked" and only now IN HINDSIGHT (!!!) do these papers and answers make perfect sense.

    Play with those filters in Excel!
    • Winner Winner x 4
    • Like Like x 3
    Last edited: Jun 21, 2022
  12. EricSteijlen

    EricSteijlen New Member

    Joined:
    Jan 1, 2017
    Messages:
    26
    Location:
    Lembras, France
    Balance:
    974Coins
    Ratings:
    +22 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, 6DOF
    Hi Dirty,
    In preparation of building my own 6dof sim, I am already studying the accompanying software. I know that (I think) I am far from ready for the explanation shown in this thread but I want to let you know that it really helps me to understand some things. Your text and videos are very informative and easy to follow. Thank you very much for teaching term logic that is (still) new to me. I can't wait to delve further into 'the world of sim'. Building and acquiring new knowledge continues to inspire.
    Thank you.
    • Like Like x 1
  13. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Thank you. Glad you liked it.
    I will make a few more as soon as I find the time.
  14. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Wow,.. it's almost been a year :)

    I made another video. Finally with a proper microphone for clear audio.

    • Like Like x 2
    • Winner Winner x 2
    Last edited: Jun 21, 2022
  15. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,094
    Location:
    berlin
    Balance:
    7,098Coins
    Ratings:
    +337 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Fantastic pedagogical approach but this (1-alpha) is kind of mysterious to me.
    @Dirty , to represent EMA, why not just use the logic : filtered output = previous output + filter amount * (input signal - previous output)
    ?
    47EB18A1-5BBF-4A6D-A2B8-60AA02AE0328.jpeg
  16. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Hey :)

    These formulae are both correct. In fact, both are equivalent! :) Isn't that cool!!!

    I was almost about to ask you to just "take it on good faith", but knowing you like I do.... I knew you were never going be satisfied with it and that you were going to come up with a proof of your own sooner or later :-D So I figured I might as well do it myself:

    One formula is....
    The other formula is...
    ...and we want to show that they are equivalent, so we write down...
    On the right side we multiply out the bracket and we get...
    We can rearrange that to...
    Now we subtract "NewInput*alpha" on both sides:
    Next we multiply out the bracket on the left side:
    And if it is not obvious already, we subtract "PreviousOutput -alpha*PreviousOutput" from both sides:
    q.e.d

    HA HA!!! I just love math!
    And btw, thanks for asking. I think I never would have taken the time to do this proof if you hadn't :thumbs

    It's probably easier like this:
    Screenshot 2022-02-03 at 23.01.05.png
    • Funny Funny x 1
    • Informative Informative x 1
    • Friendly Friendly x 1
  17. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,094
    Location:
    berlin
    Balance:
    7,098Coins
    Ratings:
    +337 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Excellent demonstration - Bravo
  18. R-power

    R-power New Member

    Joined:
    Jan 7, 2016
    Messages:
    9
    Balance:
    29Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF
    dear @Dirty
    your topic is wonderful,but i am an "old 55yo" that is not able to understood all things
    i have an exapod with thanos moved by flypt mover
    i mainly use iracing or assettocorsa competizione

    i feel "vibrations" of my body when braking (with the standard profile "black box" in ptmover
    do you know in which way i can remove this virations without loosing the "real-feeling" in the movement of the rig ?
    thx so much for support
  19. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    736
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    7,835Coins
    Ratings:
    +864 / 2 / -0
    Let me PM you :)
    • Friendly Friendly x 1
  20. zhai1987

    zhai1987 Member

    Joined:
    Sep 7, 2021
    Messages:
    96
    Balance:
    320Coins
    Ratings:
    +11 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, AC motor
    Flypt Filter Research
    upload_2022-5-10_11-58-40.png

    Attached Files: