1. 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 Download Package Now!
  2. 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
  3. 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 here. Do not following these rules will lead to permanent exclusion from this website: Read the forum rules.

FlyPT Mover Interface

Discussion in 'SimTools compatible interfaces' started by pmvcda, May 30, 2019.

  1. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    ABOUT
    This can be considered version 2.0 of the FlyPT Hexapod Interface.
    But due to limitations on how the code was developed, new ideas forced to a profound change.
    So picked what I could from the old program to build this one.

    THIS IS FOR WHAT?
    It's a solution to get info from the games or SimTools and generate outputs to the hardware.
    In between, you can play with the values and generate motion using motion cueing algorithms or pass values directly to the hardware.
    Hopefully, I managed to make it simple and understandable. Might have an hard initial learning curve, but after understanding the basics, it's fairly easy to test infinite solutions and search for your rig ideal and personal preference.


    More to come...


    DOWNLOADS
    Soon, the first version. Just polishing some bugs.
    • Like Like x 5
    Last edited: Jun 4, 2019
  2. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    MAIN WINDOW

    So the logic here is completely different.
    You start the program with a basic window. There's nothing.

    Right click in the window and a list shows up with what you can add.
    An example while adding a new source:

    Sem nome.jpg

    So each time you add a component, a new window shows, where you can setup that component.
    Each component receives and outputs data.

    The main components are:

    Sources
    That receive data from games or generate data to be sent to poses or directs

    Poses
    That receive data from sources or generate data to be sent to rigs

    Rigs
    That receive data from poses and send data to outputs

    Directs
    That receive data from sources and generate data to send to outputs

    Outputs
    That receive data from rigs and/or directs and send data by serial or UDP (future version).

    Viewers
    For 3D views of rigs or graphics from selected values.​

    From the above, I want to say that:

    - We can have whatever components we want in the amount we want. But don't forget speed!
    - We can have more than one source of data in each component. So you can for example mix two sources to generate one pose. Or mix two poses to generate one rig.​
    • Like Like x 2
    Last edited: May 30, 2019
  3. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    SOURCES

    We have multiple types of sources.
    They can be info from games/applications or info generated by internal code.
    Current sources are:

    Noise (generated noise for one or more values)
    Loop (generated loops for one or more values)
    Record player (soon in a future update)

    Sem nome.jpg


    SimTools (MMF)
    Project CARS 2 (MMF)
    Project CARS 2 (UDP)
    Assetto Corsa (MMF) --> Should be compatible with Assetto Corsa Competizioni
    RFactor2 (MMF + DLL) --> Requires specific DLL!
    Live For Speed (UDP)
    RaceRoom (MMF) (soon in a future update)
    iRacing (MMF)
    No Limits 2 (TCP)
    DCS (UDP) --> Requires Lua script!

    Sem nome.jpg

    Where:

    MMF is data received from a memory mapped file (shared memory)
    UDP is data received by UDP protocol
    TCP is data received by TCP protocol​

    All sources generate a list of 33 values with the following info:

    Lateral acceleration (m/ss)
    Longitudinal acceleration (m/ss)
    Vertical acceleration(m/ss)
    Yaw acceleration(º/ss)
    Roll acceleration(º/ss)
    Pitch acceleration(º/ss)
    Lateral speed (m/s)
    Longitudinal speed (m/s)
    Vertical speed (m/s)
    Yaw speed (º/s)
    Roll speed (º/s)
    Pitch speed (º/s)
    Lateral position (world coordinates) (m)
    Longitudinal position (world coordinates) (m)
    Vertical position (world coordinates) (m)
    Yaw position (º)
    Roll position (º)
    Pitch position (º)
    Front left suspension acceleration (m/ss)
    Front right suspension acceleration (m/ss)
    Rear left suspension acceleration (m/ss)
    Rear right suspension acceleration (m/ss)
    Front left suspension speed (m/s)
    Front right suspension speed (m/s)
    Rear left suspension speed (m/s)
    Rear right suspension speed (m/s)
    Front left suspension position (m)
    Front right suspension position (m)
    Rear left suspension position (m)
    Rear right suspension position (m)
    Rotations per minute of the motor (rpm)
    Gear
    Speed (m/s)​

    Not all sources generate all values.
    Most fill only some of them. It depends on the source.
    You can see the values received in the list (that can be hidden for better performance).

    There's a big difference compared to SimTools here.
    There's no tuning center, all values are received as they are. Just converted to the same units.
    And that affects how we receive data from SimTools.

    So if you are using SimTools as a source, I recommend to setup the tuning center with the following values:

    Sem nome.jpg

    This way we receive the values without cropping or scale.
    Rotations from -180 to 180 and accelerations up to around 10g's.
    Those are not mandatory values. But a guide of what I think is best.

    Another important fact here, is the possibility to use more than one source at the same time.
    So you can join LFS source with a noise source and mix them later on the pose generation.
    Only problem here is if sources use the same ports, only one will work.

    Besides the sources from applications, you can generate internal sources:

    Noise - Random noise
    Loops - Based on Sin, square, triangle or saw curves
    Those effects can be generated just for one or more of the 33 values presented above. Just check them in the list shown at the right.
    Don't forget you can have multiple sources of those types.
    Also important is that in loops, all sources use the same timing, so you can adjust phase shifting to generate some interesting effects.
    • Like Like x 2
    Last edited: May 30, 2019
  4. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    POSES

    So we have our sources.
    We are receiving information about positions/accelerations and we want to generate a pose.
    A pose is the orientation/position that the rig will make to represent that info.
    So here is where we have the motion cueing alghorithm.

    Right now we have the following poses:

    Pose from motion
    The motion cueing alghorithm, that for now, uses linear accelerations and rotational positions to calculate the pose with a classical motion cueing alghorithm.
    Here's an example of a generated pose where we mix data from the game with some vibration:

    Sem nome.jpg

    Pose from RPM
    Generates a pose from the received RPM of the motor to simulate vibration due to RPM.
    That's an arcade one... (Note: Some changes to be done, not final version)
    Sem nome.jpg

    Pose from suspension
    Generates a pose from the suspension info of a car game.
    Sem nome.jpg

    So we can play with this!
    Let's add motor vibration and suspension travel to the motion cueing.
    If your actuators can work at high frequencies, you can even replace tactile transducers... Well, maybe in my imagination.
    • Like Like x 1
    Last edited: May 30, 2019
  5. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    RIGS

    For now we have:

    Classic Stewart platform with linear actuators
    Like the one in version 1 of the FlyPT Interface.
    But with a difference.
    Here we specify witch names we want to give to each axis and the bit range we want for them:
    Look a rig defined to receive a mix of poses from motion, rpm and suspension, outputing info with the usual <Axis1a> to <Axis6a> (we can change the names):
    Sem nome.jpg

    Classic Stewart platform with rotating actuators
    Like above, but with rotating actuators... I have a bug, can't post image for now.

    I'm also thinking of developing for:

    3DOF with 4 actuators (4 vertical actuators in each corner)
    A kind of rig that's turning the new standard (my opinion).
    Certainly limited in action compared to a Stewart platform, so some of the pose components are ignored here.

    3DOF with 3 rotational actuators
    Same like above. Fairly easy to add.

    Custom
    Where we specify how many and where are the actuators.
    That's a complicated one, but I made the code to be ready for that.
    So inverted, wall mounted Stewart platforms or other kinds of platforms can be generated.
    • Winner Winner x 3
    • Like Like x 1
    Last edited: May 31, 2019
  6. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    DIRECTS

    Pick speed on the source and generate an Axis with the bitrange you want and send it to the outputs to control a fan...
    Or pick any other value from the source and make something with it... control an RC servo for RPM or Speed dial. Show gear number on a display...

    More soon
    Last edited: May 30, 2019
  7. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    OUTPUTS

    Soon!
    Last edited: May 30, 2019
  8. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    VIEWERS

    3D Viewer

    Add one or more 3D viewers to visualize your rig behaviour.
    Don't forget, that the shown position is before applying any gain or filter to the actuators.
    You can add how many viewers you want to see the rig in different perspectives.
    In case you have more than one rig setup, you can choose witch one to view on the pull down menu.

    Sem nome.jpg

    Use the mouse to rotate the rig, and the wheel mouse to zoom.
    Those are "heavy" tasks, so close the windows if you don't need them for better performance.



    Graphic viewer

    Soon...
    Last edited: Jun 4, 2019
  9. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    SPEED

    One of the features of this interface is the possibility to add many items to the data processing.
    There's many things happening visually, to help on the setup of the rig.
    When you achieve satisfying results, you should hide all windows and remove the ones you don't need to avoid updates on the interface.
    Any extra info update increases lag. So, use only what you need.
    Run the program in "minimal" mode for better performance.
    Also hide panels that show resulting values to avoid those updates.


    SLIDERS
    (general explanation)

    All sliders used in the interface follow a specific logic.
    There's a button you can use to change the value when the control is active (blue).
    When we are receiving a value, the button becomes grey, and you can't change it's value.
    so if we are receiving data, the button position reflects the received value.
    If the value received is beyond the range of the slider, the button shows red.

    Sem nome.jpg

    You will also notice, there's a bar behind the button.
    That bar represents the output value.
    If there's no filtering happening, the bar matches the button, but with filtering or gain, the bar shows a position that might not match the button position.
    If the bar is red, it's because the output value is beyond the range of the slider.

    Sliders are just a tool to allow the user to manually input values or to get a visual representation of what's happening.


    WINDOWS NAMES

    Why those names?
    The name is the same for windows of the same type, but they are always appended with an ID to make easier it's identification on the input lists of each window.
    As an example, two sources and one pose.
    You can select witch sources to use on the pose. Even using two loop sources, the names would be different with the appending ID:

    Sem nome.jpg
    • Like Like x 1
    Last edited: Jun 6, 2019
  10. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    OTHERS

    Nothing for now.
    Reserved.
  11. SilentChill

    SilentChill Problem Maker

    Joined:
    Jul 19, 2014
    Messages:
    2,420
    Occupation:
    Railway Maintenance
    Location:
    Morecambe, Lancashire, England
    Balance:
    18,405Coins
    Ratings:
    +3,108 / 30 / -0
    My Motion Simulator:
    DC motor, Arduino, Motion platform, 6DOF
    Looking good dude :D
    • Agree Agree x 2
    • Like Like x 1
    • Friendly Friendly x 1
  12. Tuyisenge

    Tuyisenge New Member

    Joined:
    Feb 5, 2019
    Messages:
    3
    Location:
    France
    Balance:
    - 22Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    6DOF
    I confess that looks awesome!!!
    • Like Like x 1
  13. Flymen

    Flymen Flymen Gold Contributor

    Joined:
    May 19, 2018
    Messages:
    142
    Location:
    Montreal, Canada
    Balance:
    1,076Coins
    Ratings:
    +90 / 1 / -0
    My Motion Simulator:
    DC motor, Arduino, 6DOF
    Flypt 1.8.7.png

    Hi ,
    Manuel test ..
    The mix surge and pitch work but the other one no ( mix sway and roll ) .
    oupsss ok finaly after more experience to learn this new program .. mix sway /roll work but the Range of the Roll must go down like 25 to 3 !
    Wow , it will be fun to put brake or gas and pitch will move depend this situation !! awesome !!:thumbs
    Last edited: Jun 1, 2019
  14. Gabor Pittner

    Gabor Pittner Member Gold Contributor

    Joined:
    Oct 25, 2018
    Messages:
    120
    Location:
    Szekesfehervar Hungary
    Balance:
    703Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    6DOF
    It looks fantastic :thumbs
    • Like Like x 1
  15. Dirty

    Dirty Active Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    198
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    2,225Coins
    Ratings:
    +185 / 1 / -0
    Impressive! Especially the modular design is smart!

    That will allow users to adapt the software to their projects and you to add features anyway you like. :thumbs Great!

    Also great! Rad or degrees, Km/h or m/s, ...doesn't really make a difference. From a developers perspective I'd prefer Rad and m/s (because they are easier to process in the context of SI unit systems), but agreeing on ONE standard for all games would be a plus. Most people will want to see degrees and Km/h or Mph, I guess.
    I'd also advocate finding a quasi-standard for data extraction would be a good Idea. Like your concept of: All slots are there, just not every Sim fills every slot.


    Great to see you thinking outside the box! I thought about ceiling mounted and wall mounted as well. Probably not going to be "main stream" but allowing for custom kinematics will make users get creative :)

    Like! I mean... L-I-K-E-!-!-!

    One point I stumbled across:
    Do you really want to create random (white) noise? Have you looked into Perlin noise? It's more coherent and great to generate turbulence, ground roll, etc.

    THUMBS UP!!!

    Dirty :)
    • Like Like x 1
  16. Gabor Pittner

    Gabor Pittner Member Gold Contributor

    Joined:
    Oct 25, 2018
    Messages:
    120
    Location:
    Szekesfehervar Hungary
    Balance:
    703Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    6DOF
    Are you planning to make it as dual PC mode? Like simtools works separatable game engine and game manager applications using ethernet... DCS will work using IP address in lua script, but what about the others? :roll
    I use a laptop to controll the rig but the game runs on my desktop pc...
  17. SeatTime

    SeatTime Well-Known Member

    Joined:
    Dec 27, 2013
    Messages:
    2,148
    Location:
    Newcastle Australia
    Balance:
    26,248Coins
    Ratings:
    +2,440 / 23 / -0
    My Motion Simulator:
    DC motor, Motion platform, 6DOF
    Looks great :thumbs. Just not enough spare hrs in the day to try all this out :(.
    • Like Like x 1
  18. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    This is the current state:

    YES PC with game and interface ---Serial---> Boards (the standard solution)

    NO PC with game and interface
    ---UDP---> Boards with network (almost done, in a future version - I want this one for my ESP32 Wifi boards)

    NO PC with game and interface ---UDP---> PC with UDP to Serial application ---Serial---> Boards (too work, needs the UDP to Serial application, not even started)

    YES PC with game ---TCP or UDP---> PC with interface ---Serial---> Boards (Works for games that output in TCP or UDP, others need application to convert shared memory to UDP)

    NO PC with game ---TCP or UDP---> PC with interface ---UDP---> PC with UDP to Serial application ---Serial---> Boards (see above)

    NO PC with game ---TCP or UDP---> PC with interface ---UDP---> Boards with network (almost done, in a future version - I want this one for my ESP32 Wifi boards)

    Since everything is modular, I can add those features.
    For now, only the green ones will be available.
    The yellow one is almost done.
    • Like Like x 1
    • Informative Informative x 1
  19. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    Yes, Perlin noise. Didn't thought of that one.

    That Rad vs Degree, is something I have to change. I'm converting to degrees, because I wanted it more visual for the interface. But that brings so many multiplications ahead, that I have to change it all.
    Not for now. I'm making a general cleanup and solving some stupid bugs to post the first version.

    When I thought of making user defined rigs, I thought in different Stewart configs, but now I want it to be used with any kind of rig. Even 2DOF.
    But it will take more time than I tough. It's not so easy. Actuators dependent on other actuators and rotating actuators not only vertical... o_O But it will work!

    I was so stuck with the old interface. This one had to be completely modular. Might be more confusing at start, but gives so many possible configs. Whatever we want.
    • Like Like x 1
  20. pmvcda

    pmvcda aka FlyPT

    Joined:
    Nov 3, 2010
    Messages:
    476
    Location:
    Portugal
    Balance:
    3,254Coins
    Ratings:
    +524 / 3 / -0
    My Motion Simulator:
    6DOF
    Sorry.
    Was going to release it in the end of last week, but I couldn't get time to make it.
    Unfortunately, there's some problems still to solve before releasing it.

    Here's a video with a new preview.
    Some of the windows, might change until release. Specially that blue one, the main one. What you see is just for debug.



    On this video, I show Outputs. Those are the outputs to serial. You should use one output for each board.
    You can also see Directs. That's a direct conversion of a game value to an output value.
    In the video,, you can see it capturing speed and generating a bit output to control a fan to simulate wind.

    Also, I show keys. Keys are the names used by each actuator/output on the output string.
    You can name it the way you want and use drag and drop to put them on the output string.
    The bit range used is specified on the rig definition or the direct output definition.

    More explanations soon.
    Stay tuned.
    • Like Like x 3