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 Mover

Discussion in 'FlyPt Mover' started by pmvcda, May 30, 2019.

  1. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    for comparison here 3 classes in c++ of ema, dema, and second order ema:


    // Low pass filter using an exponential moving average approach.
    Specify a weighting factor, then get filtered values calling filter().
    The weighting factor determines how strongly the last input value affects the output. 1 = no filtering. Decreasing below 1 increases the filter amount.


    ema.JPG

    //Low pass filter using a double exponential moving average approach:
    DEMA = 2 * EMA - EMA(EMA)
    Specify a weighting factor used by the two EMA functions, then get filtered values calling filter().


    double ema.JPG


    // Low pass filter using a "second order" exponential moving average approach (EMA of EMA).
    Specify weighting factors used by the two EMA functions, then get filtered values calling filter().
    The weighting factors are applied in order, so the first weighting factor is used by the EMA filter that is applied to the input first.


    second order.JPG
    • Like Like x 1
    Last edited: Sep 28, 2019
  2. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Re EDITED:

    This IS the correct way to construct the third order in Mover !

    F0B9DD96-9DBA-4C88-872B-D910E4EF1D86.jpeg
    • Agree Agree x 1
    Last edited: Sep 28, 2019
  3. benmax

    benmax Active Member Gold Contributor

    Joined:
    Oct 15, 2013
    Messages:
    188
    Balance:
    1,550Coins
    Ratings:
    +59 / 0 / -0
    My Motion Simulator:
    2DOF
    Hi ,
    Tested with :
    - assetto corsa + assetto competizione : works very well without any filters . I just have to twick something for yaw axis because no traction loss in telemetry or speed/acceleration in yaw axis .And yaw angular position (world coordinate ) is unuseable .
    - Pcars 2 : works great also without any filters
    - Pcars 1 : no data send ? Could you check the plugin please ? no telemetry available.

    Thx
  4. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    One thought.... do we need several different weighting selectors in case we superpose the filters of the same type ? I don’t think so.

    You could maybe skip the creation of new value entry in such cases.

    If you think it doesn’t close the possibilities, you could maybe go for it.

    Best
  5. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @hexpod, @benmax,
    Sorry, been all day out without phone.
    I will try to answer later, but not sure if I can today, might be late...
  6. benmax

    benmax Active Member Gold Contributor

    Joined:
    Oct 15, 2013
    Messages:
    188
    Balance:
    1,550Coins
    Ratings:
    +59 / 0 / -0
    My Motion Simulator:
    2DOF
    No problem !
  7. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Well, I definietly have to slow down my fingers and speed up my brain.

    I increased the graph horizontal scaling to 20 and reduced the weighting factor to 3x500 in Mover.
    Your solution seems to work perfectly.

    One has keep in mind that the weighting factor in mover have a values ten times bigger for similar behaviour in comparison to hexapod.

    ffd.JPG

    Sorry for quiet embarrassing spamming.
  8. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    Are you sure that you enabled shared memory in pcars and are using the MMF source

    I will test later
  9. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    No problem,

    In mover loops run at 2ms, soe each sample for the filter is taken at that speed.
    The parameter you insert in the filter is the number of samples

    In the old program, loops where at least 16ms, usually more.
    So the effect of the filter is not the same
    Try to put 16ms in the Mover calculation loop to compare
    • Informative Informative x 1
  10. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @hexpod,

    Because of the above, I added decimal places to the number of samples

    2ms in Mover is1000 samples in 2 seconds

    In old program @16ms you get 125 samples
  11. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Excellent !

    Btw. The following screenshot is a very plausible scenario. I am a bit blind which value correspond to which filter. Maybe slightly longer window and eventually tags : it could be numbers right next or inside select boxes. Whatever.. Just something more readable to know which is which

    69AD248C-D895-4D13-9174-EB717FE0DBA7.jpeg

    Btw. Loop feature is very cool.
    Last edited: Sep 29, 2019
  12. benmax

    benmax Active Member Gold Contributor

    Joined:
    Oct 15, 2013
    Messages:
    188
    Balance:
    1,550Coins
    Ratings:
    +59 / 0 / -0
    My Motion Simulator:
    2DOF
    No problem !
    yes i checked and it’s ok , MMF is enabled in pcars 1
    Last edited: Sep 29, 2019
  13. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    I already tested. Need to see, there's something wrong.
    • Like Like x 1
  14. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @hexpod,

    I got filter transition working.

    Each time we change the filter, the defined transition time is used to change from the old filter to the new one:

    Graphic of a low pass
    lp.jpg


    Now changing to high pass
    hp.jpg

    Transition in 2 seconds, we can see the progression, it's not a vertical line.

    But needs some more work, I don't want the filter to make transitions when we change the number of samples, only when we change the type.

    Also solved some other small bugs.
    • Like Like x 3
  15. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Excellent!
    May I put my hands on it ?

    Btw. Did you thought already about a hot key we could map on joystick or keyboard acting as a toggle button for the interface connect / disconnect?

    Best
  16. gianlu320

    gianlu320 Member

    Joined:
    Feb 9, 2018
    Messages:
    76
    Location:
    Crawley
    Balance:
    542Coins
    Ratings:
    +17 / 0 / -0
    @pmvcda

    Thanks for the answer you gave me about Mover in the DCS experimental plugin thread.
    I will copy paste your answer here and so we can continue the topic on this thread as you asked..

    You are mixing everything... :)

    The idea of connecting Mover to SimTools, is now, just a way of getting compatibility with more games.
    If you have a direct connection in Mover, it's faster, and there's no need for tuning center.
    To use Mover, it's better to use it's sources, unless you are using other SimTools features.

    SimTools get's data from a game and then you mix/filter that data in each axis to accomplish a move in your axis (axis is the actuator).
    Now if you want to use SimTools data in Mover, we don't want any mixing or filtering made in SimTools (you can, but it's better/simpler to avoid it).
    You will always have the tuning center changing that data, but you can't avoid it.
    To get the data in Mover, we send it through each axis, like you said above.
    But the idea is to uses for example, just roll in axis5a. There in the mixing you put just 100% roll on the axis5a
    Then the Mover plugin inside Simtools, sends the axis values to a shared memory file that is read by Mover.
    Mover picks that data and knows that for axis5a it's roll, and uses it as roll. If you mixed anything in Simtools, Mover still think's it's just roll.

    From there, you use mover the same for any rig.
    In Mover what you do is get all the data and filter it to generate movement in your rig. If your rig has no Yaw, then data generated for yaw is not used.
    Same for roll.

    What kind of rig do you have? 3DOF with 4 linear actuators?

    EDIT:
    Sorry, I have been busy this last days, so I'm not giving the attention I should.
    For Mover problems, I would prefer you to post in that topic, or pu my name as @pmvcda,
    so I get a notification.
    I will try to explain all this better in the manual I'm making.

    Like I said, you don't need SimTools to use DCS in Mover, use the direct connection.
    ---------------------------------------------------------------------------------------------------------------------------------

    I'm really sorry for mixing everything
    So first of all my motion platform is a racing cube so it has 4DOF ,they are all rotational actuators and the 4th Dof allows me to have yaw rotating the entire base of the platform.

    I initially wanted to continue using simtools because using Mover alone via UDP or serial I was not getting any motion from the platform and no connection in the outputs.
    With simtools the rig works but I can't understand how to properly configure the axis to make Mover work properly.
    I'm really sorry for bothering but I can't understand for the life of me how to do that.
    I will probably wait for you to release the manual
  17. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    1,093
    Location:
    berlin
    Balance:
    7,091Coins
    Ratings:
    +336 / 5 / -0
    My Motion Simulator:
    DC motor, 6DOF
    In simtools, mixing separate actuators is something different than sending the entire dofs for 6-dof kinematic plug-ins like “HeXpod” ”flypt Hexapod” or internal “simtools’ 3D axis” made by flypt.

    Those allow only to drive octahedral hexapods and require a special axis assignments configuration.

    From what I understood, Mover offers not only 6dof geometry but also a kinematic math solution for 3dofs (3 actuators) and four actuators square geometry.

    What was your way to drive your rig until now ?
    Was it simtools 2d axis assignments mix ?

    Is this your rig ? :

    In mover you might need a proper string to put in the interface settings in order to properly talk to your four axis.

    • Like Like x 1
    Last edited: Oct 2, 2019
  18. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @gianlu320, Don't be sorry,

    I have to explain it better.
    Since English is not my main language, I have some problems passing the info.

    You are the first with this kind of rig in Mover.
    So you are now an official tester! :p

    So first let's setup your rig.
    Open the menu and delete all modules, the add the rig:
    Sem nome.jpg

    Now open the rig and in your case, I think you have two actuators at the front (one at the back), so select 60º in the position of the first actuator:
    Sem nome2.jpg

    The green represents the front of the rig.
    There's no yaw for this rig, but we can use it also.
    But for now, let's start with this...
  19. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @hexpod ,

    I added this type of rig also.
    • Like Like x 1
  20. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    1,846
    Location:
    Portugal
    Balance:
    14,096Coins
    Ratings:
    +2,169 / 16 / -0
    My Motion Simulator:
    6DOF
    @gianlu320 ,

    Now we need some measures:
    Sem nome.jpg
    Use the marked arrows to see the images that show what measures you need on the rig.
    Try to be precise, 1 or 2mm difference is no problem, but ideally use exact dimensions.

    I also need the config you use in simtools to connect with the rig.
    Can you get a screenshot? Would be great to share with others.


    You can also add a 3D viewer to see the rig.
    Add also a pose from motion.
    This is the filtering system that converts the pose received from the games to the pose we have in the rig:
    Sem nome.jpg

    See the arrow?
    To use that pose in the rig, you have to check it in the rig. You are saying to apply that pose to the rig.
    You can also have other poses. They can be generated from suspension of cars, engine vibration and others...
    They all appear in the rig list, but the rig uses only the checked ones. Their effect is added.
    So if you have pose from motion + pose from engine rpm, both are added and the rig motion is the result of the two.
    Last edited: Oct 2, 2019