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

Tutorial How to write an Axis Assignments (Math) Plugin for SimTools 2.0 - API documentation

Discussion in 'Tutorials and Tips by the Developer' started by yobuddy, Mar 9, 2016.

  1. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    20,557
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    145,160Coins
    Ratings:
    +10,780 / 52 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    This is off topic for this thread, please post on your existing build thread and post pictures of all of your settings: https://www.xsimulator.net/community/threads/need-help-for-building-2-dof-sim.17133/

    In addition to the SimTools manual please do read the FAQ motion profile tips and tricks about creating and refining motion profiles: https://www.xsimulator.net/community/faq/steps-to-create-a-motion-profile.228/
  2. Avee

    Avee Virtual Pilot

    Joined:
    Jul 5, 2020
    Messages:
    126
    Location:
    Germany
    Balance:
    1,026Coins
    Ratings:
    +27 / 0 / -0
    My Motion Simulator:
    2DOF
    I don't know if this is the right place...
    What I would like to do is the following:
    1. compare surge and sway to the current axis pitch and roll positions (so the combined output to the platform axis)
    2. Depending on the difference, calculate a movement acceleration which is under the discernable threshold
    3. output this as motion to pitch and roll.

    So I need an interface where the user tells me what axis are pitch and roll, and then I deliver an input to these axis.

    It will function like a washout input that always keeps moving to the tilt position that is dictated by current surge and sway. It limits the speed so the user doesn't feel the platform accelerations caused by this movement.

    What I don't find in the example is where to get the current output of Simtools.
  3. yobuddy

    yobuddy Well-Known Member Staff Member Moderator SimAxe Beta Tester SimTools Developer Gold Contributor

    Joined:
    Feb 9, 2007
    Messages:
    5,166
    Occupation:
    Computer Technician
    Location:
    Portland, Oregon - USA
    Balance:
    48,215Coins
    Ratings:
    +5,038 / 16 / -0
    Here are all of your input DOF variables:
    _Roll_Input
    _Pitch_Input
    _Heave_Input
    _Yaw_Input
    _Sway_Input
    _Surge_Input
    _Extra1_Input
    _Extra2_Input
    _Extra3_Input
  4. Avee

    Avee Virtual Pilot

    Joined:
    Jul 5, 2020
    Messages:
    126
    Location:
    Germany
    Balance:
    1,026Coins
    Ratings:
    +27 / 0 / -0
    My Motion Simulator:
    2DOF
    What I would need to code my feature is the current position, since I want to move the platform to a defined absolute position, not just a relative position.

    What I am trying to implement is an addition to motion cueing. Motion cueing by itself is fine, that's all relative. But you get to absolute positions when you want to simulate long constant accelerations in surge and sway by tilting the platform.

    The platform needs to move slowly but as swift as possible below the discernable threshold towards the position that corresponds with current surge and sway. If the user feels this movement, it becomes a false roll cue and we don't want that.

    This also acts as a very controlled washout that keeps bringing the platform to neutral (acceleration corrected) so the motion cues themselves don't need another washout effect. The result will be additive to the cues, but by basing these on the distance from the desired neutral position, so it will keep trying to reach the neutral postion.
  5. yobuddy

    yobuddy Well-Known Member Staff Member Moderator SimAxe Beta Tester SimTools Developer Gold Contributor

    Joined:
    Feb 9, 2007
    Messages:
    5,166
    Occupation:
    Computer Technician
    Location:
    Portland, Oregon - USA
    Balance:
    48,215Coins
    Ratings:
    +5,038 / 16 / -0
    I don't really understand buddy.

    Washout?
    Washout in v3 works nicely, so I'm not sure there is anything to add here?
    I will put out the sources for the v3 axis plugins when they are done.
    Take care,
    yobuddy
  6. Avee

    Avee Virtual Pilot

    Joined:
    Jul 5, 2020
    Messages:
    126
    Location:
    Germany
    Balance:
    1,026Coins
    Ratings:
    +27 / 0 / -0
    My Motion Simulator:
    2DOF
    Right now, washout is connected to motion cues. That is not really correct. If a motion cue by coincidence moves the platform back to neutral, we don't actually need washout. So the logic cue-washout, cue-washout is fundamentally flawed because it doesn't take the absolute position into account.

    Washout should be based on the need to keep away from the physical limits of the platform to always keep room in all directions for cues. i.e. staying away from the limits means centering. And center is an absolute position.

    Then, there is motion that does not need a washout, constant acceleration. Even with a 6DOF, you can't really do constant acceleration because you can only move a second or two in any direction. The only constant accelerations you can simulate is surge and sway by tilting the platform, making gravity feel like surge or sway. This is also a movement to an absolute position. You want to be a certain distance and a certain direction away from neutral so gravity is felt in certain direction.

    Then there is the point that washout movement and gravity shifting shouldn't be felt as a cue. If they are faster then the rotational threshold our vestibular system can sense, it will be a false motion cue. A high pass filter doesn't cut it, especially on reversions where the high pass will also reverse very quickly. If you don't base the washout on the cue, but make it an independent motion, it can be better controlled to stay below the threshold.

    Cueing is exploiting the insensitivity of our vestibular system in the sense that it will give it a nudge and then our brain assumes an ongoing motion that has just fallen below the threshold. If we then give it a cue that doesn't fit, the cue we wanted to give is basically cancelled prematurely.

    So what I wanted to do (myself, this is neither criticism of your software nor feature creep), is to create a constant, ever present slow "magnetic" pull of the platform towards center. Or if surge or sway are present, to a corresponding offset center. With its own maximum acceleration, so that it moves the platform without the user feeling it. No longer would a fixed washout be tied to every cue, because centering is already being taken care of.
  7. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    20,557
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    145,160Coins
    Ratings:
    +10,780 / 52 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    If you want to do configurable pose based motion then check out Flypt: https://www.xsimulator.net/community/faq/flypt-mover.29/category

    Keep in mind the vestibular system has its own threshold limitations, beyond which it can't register a cue, something motion simulation seeks to exploit.
  8. yobuddy

    yobuddy Well-Known Member Staff Member Moderator SimAxe Beta Tester SimTools Developer Gold Contributor

    Joined:
    Feb 9, 2007
    Messages:
    5,166
    Occupation:
    Computer Technician
    Location:
    Portland, Oregon - USA
    Balance:
    48,215Coins
    Ratings:
    +5,038 / 16 / -0
    The washout in v3 just makes a small jump toward center when needed.

    Yes, agree!

    In v3 we can configure washout per dof, so we only use it on the needed dof's.

    I agree, the jumps need to be big enough to move the sim, but small enough to not feel it.

    So a washout on the axis output itself, and not the dof's that make it up?
    If we did this all dof's tied to the axis will washout, maybe this is ok thou?

    And no worries, you wont offend me or anything, just trying to understand what your thinking.
    This is what axis assignment plugins were for anyway, to try out new things.
    In the end, we both just want the best math plugins we can have.
    Chat soon!
    yobuddy