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 Now a Download Plan!
  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. 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

Dirtys 6DOF, AASD Servos

Discussion in 'DIY Motion Simulator Projects' started by Dirty, Apr 28, 2020.

  1. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    hmmm,.... I'd love to! But here's what kept me from it so far:

    First, I really don't like my face anywhere on the internet. Maybe with HMD on, but still...

    Second, and more importantly, my frames drop significantly when I use OBS to capture video :-/ Even though I have an RTX 2080Ti and an i9-9900K it eventually becomes a stuttering mess. To be able to get any useful information out of a video, it would have to show the in-sim view, the rig and the software all sync'ed. Maybe I can capture it all in one static shot.... without my shy little self :)

    Let me see what I can do :)
  2. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    Thank you! Yeah, I saw that. :thumbs

    Funny thing is, it took me quite a while before I even realized, that the problems I had were caused by EMI. I was wondering about lost USB connections, gray-outs, stuttering etc... then finally someone pointed me to EMI (Thanks, Colin!). The aluminum foil and the ferrite cores were just a quick 'n dirty fix to see if that improved it. Luckily it did!

    So, now that I am even aware of the problem, I will replace those cables, for sure. I am a bit curious to find out if properly shielded cables are better than my makeshift shielding,... :)
    • Like Like x 1
  3. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    16,077
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    117,287Coins
    Ratings:
    +9,376 / 46 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    I am not suggesting you consider it, but rather for the benefit of others, OBS recording would likely take a 2nd PC and capture card for full res capture of resource intensive games, or alternatively significantly lower the game settings: https://obsproject.com/forum/resources/seamless-way-to-setup-a-second-streaming-pc.670/
    • Useful Useful x 1
    • Creative Creative x 1
  4. cfischer

    cfischer Active Member Gold Contributor

    Joined:
    Sep 7, 2015
    Messages:
    203
    Location:
    Colorado
    Balance:
    1,425Coins
    Ratings:
    +119 / 0 / -0
    What durometer of sorbothane did you use? I think there are 3 hardnesses.

    Rig looks great. Don't worry about boring us with details of filters and such, people can just skip the read. I find it interesting if you don't mind typing it out.
  5. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    I didn't know there were different levels of firmness. I ordered this. It is good, it absorbs quite a bit of the vibrations, especially the "chrrrr" from the ballscrews. The "Brrr" from the belt drive not so much, unfortunately.


    Oh, I don't mind. Over the past few weeks - and especially since I have a rig to test - I have modeled the filters I use in every possible way in the time domain.

    There are a total of 8 channels driving the rig.
    Two of them are the tilt-coordination channels, let's ignore them for a moment.
    The three angular rates use a HP followed by a 1st order LP.
    The three accelerations use a HP followed by a 2nd order LP.
    ...and then each channel has a gain (multiplier).

    First, to get a starting point, you set the gain to 1 and the filter variables of the HP/LP filter system to the same value:

    Filter_variable = Processing_framerate / LP_filter_order.

    So, for example if your software processes the motion data 500 times a second, and your LP filter is of 2nd order, set the filter variables to 500/2=250. Both equally!

    You will now have a system with a step response of the red curve:
    Bildschirmfoto 2020-06-19 um 23.07.13.png

    The output signal will reach its maximum value after exactly 1s.
    The output signal will reach a maximum value of 0.26 times the input. (0.35 for a first order)

    You can now...
    • ...stretch the output signal in time (horizontally) by increasing/decreasing the filter variable.
    • ...stretch the output signal in amplitude (vertically) by multiplying with a gain value.
    • ...shape the signal by changing the HP/LP filter ratio.
    Technically speaking: I represent the filter system with its threes components (HP,LP,Gain) in a 3D state-space.

    The "shaping" part is where it gets interesting! The different "regions" in that state-space are more or less suitable for use in different kinds of vehicles. Through that state-space run certain "surfaces" that represent fixed values for I_want_a_defined_displacement, or I_want_a_reaction_within_this_time.

    Once you know those surfaces, setting the filters is no longer a matter of trial and error, but can be calculated precisely. Figuratively speaking, your set-point walks along those surfaces to the intersection of these three surfaces:
    Surface 1: I_want_THIS_displacement
    Surface 2: I_want_it_THIS_fast
    Surface 3: I_want_a_shape_like_THIS

    I know,... nothing you would bring up on a first date,.... but this is the kind of s#!+ that keeps me up at night.

    Cheers,... Dirty :)
    • Useful Useful x 2
    • Like Like x 1
    • Informative Informative x 1
  6. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    oh,.... and see how the orange curve (LP1) has its peak exactly where it intersects the dotted line (HP)? And see how the red curve (LP2) has its peak exactly where it intersects the orange line (LP1)?

    Bildschirmfoto 2020-06-19 um 23.07.13.png

    At each point in time, each curve "aims" at a point where its input signal would be Filter_variable amount of frames off into the future (if that input didn't change).

    Wrap your heads around that! Just for the sake of mental gymnastics :-D
    Last edited: Jun 20, 2020
  7. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    885
    Location:
    berlin
    Balance:
    5,640Coins
    Ratings:
    +273 / 3 / -0
    My Motion Simulator:
    DC motor, 6DOF
    Shaping ... I like the terminology

    It’s clear that with „ema->ema->1-ema“ (smoothing1 -> smoothing2 -> washout) you can achieve almost 95% of all post treatment.

    The weighting factor (variable amount) relationship between smoothing and washout can really shape the response quiet close to reality.

    Now I didn’t find other solution than direct comparison with phyphox real life experience and try error play to match both as close as it is possible.
  8. Gadget999

    Gadget999 Well-Known Member

    Joined:
    Dec 27, 2015
    Messages:
    1,152
    Location:
    London
    Balance:
    8,077Coins
    Ratings:
    +259 / 8 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, 6DOF
    Some good info there obs looks good.

    How would it read the output of 3 different screens can it be sent over the network or do you need another set of graphics cards ?
  9. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    16,077
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    117,287Coins
    Ratings:
    +9,376 / 46 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    GPU on the game machine and capture card on the encoding machine.
    • Like Like x 1
  10. Gadget999

    Gadget999 Well-Known Member

    Joined:
    Dec 27, 2015
    Messages:
    1,152
    Location:
    London
    Balance:
    8,077Coins
    Ratings:
    +259 / 8 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, 6DOF
    Ok time to find a capture card :)
  11. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    Yeah,... one possible use case for this could be to give the user an interface where he no longer inputs the values for the filters, but rather values that represent "time", "shape" and "amplitude" of the rigs reaction. So far I have been doing that math on my own to calculate the filter values, but it might be possible to change the interface.
  12. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    I have just received the most expensive lubricant I have ever seen! :)

    KlüberSynth RA 44-702
    IMG_1468.jpeg IMG_1469.jpeg IMG_1470.jpeg

    The 1Kg can sells for the ridiculous amount of 327,82€ (~350$US). It was made specifically to enhance the "haptic qualities" of mechanical constructions :). You can get it even cheaper for 264,70€ (~300$US) per Kilo if you are willing to buy the 170Kg barrel for 45.000€ (plus shipping, handling and tax!). Crazy!

    Here's the story behind:
    With the AASD Servos, I have noticed that they are suuuuper smooth over MOST of their operating envelope! Generally speaking, I can certainly recommend them for use in motion sims. They move the rig (30Kg) up and down and all around easily, but with my 95Kg of an adonis-like body in it, I noticed some strange "artifact". When the motors retract very slowly with a lot of weight on the rig, the servo control loop creates an oscillation of ~10-20Hz.

    I assume it comes from a combination of factors like...
    • the resonance frequency of the rig
    • the blocking and unblocking of the ball nut under load
    • the friction (static vs dynamic) in the Igus bearings
    • elasticity in the belt drive
    • elasticity (torsion) in the ball screw
    • the servo control loops (torque/speed/position)
    I have looked at and read about every one of the 250+ parameters in the servo drives and played around with ~20 of them over days to no avail. "S-shaped smoothing" on the position loop did give a tiny little bit of an improvement, but at the expense of finer detail in the motion getting lost.

    To be clear: Under forward motion it's all fine. Under faster moves it's all fine. These servos are insanely strong! It's just those very slow retract moves that cause the stuttering.

    Here's what did the trick:
    I put 5mm rubber pads between the frame and the actuators.
    61590841823__DD1B5B60-455D-4E11-A479-F7A924036A67.jpeg
    Actual hard Rubber (SBR), not the Sorbothane I used earlier. I put it on both sides, outside and inside to avoid ANY metal to metal contact. That alone reduced the slow-retract-stutter by about ~70%.

    Additionally I applied S100 (high quality, low viscosity motorcycle chain lube) to the ball screw to actively generate dampening inside the ball nut. That removed another 10% of the stutter I'd say.

    Encouraged by the promising results with high viscosity lubricant I started looking for even higher viscosity products and found a German company named Klüber with their KlüberSynth RA 44-702. It was made specifically for applications that require dampening. It reduces static friction like any cheap lubricant does, but intentionally increases dynamic friction! Now the motors have to actually work to crank down the rig. Even with a heavy person in it! That eliminated the load changes in the motors and the 10-20Hz stuttering is almost completely gone. Probably just 5% of what it used to be. If you didn't know it was ever there, you wouldn't notice it.:thumbs


    Cheers, Dirty:)
    • Informative Informative x 4
    • Funny Funny x 2
    • Like Like x 1
  13. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    I have finally replaced the unshielded servo cables with proper shielded cables of good quality.
    IMG_1407.jpeg IMG_1408.jpeg

    What used to look like this...
    IMG_1409.jpeg

    ...now looks like this:
    IMG_1462.jpeg IMG_1463.jpeg

    The EMI is not gone completely, but greatly reduced. Now I can (gently) touch my Inxed HMD without getting immediate greyouts and other periphery devices work flawless again. At 2€/meter not cheap, but worth it!

    Cheers,.. Dirty :)
    • Like Like x 3
    • Winner Winner x 2
    Last edited: Jul 11, 2020
  14. OZHEAT

    OZHEAT Active Member

    Joined:
    Oct 26, 2015
    Messages:
    212
    Location:
    Australia
    Balance:
    2,391Coins
    Ratings:
    +102 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor
    hey @Dirty
    have a look at what we call waffle pads, I use 2sq inches under big package units and heaters.
    It is made of NBR and has a pattern like waffles on it.
    It makes a big difference from solid rubber like rain and thunder.
  15. Dschadu

    Dschadu Member

    Joined:
    Jan 2, 2017
    Messages:
    83
    Location:
    Germany
    Balance:
    1,751Coins
    Ratings:
    +105 / 1 / -0
    I love that cable porn :)
    Just some tips and thoughts on EMI:
    Next thing you could do is to put the cables into a metal cable duct (and connect it to ground) for another shielding layer.
    Did you ground your rig after you put the rubber in between?
    Your cabinet has a glass front - replace it with metal. Is it all connected to earth?
    Use the proper cable glands to connect the cable shield as good as possible.
    If you earth something - use thick wire like 6mm².
    Run power and data cables apart from each other. More distance is better.
    • Informative Informative x 2
  16. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    I did take a look at it before. I am not sure if there are different levels of firmness, but the product I had in my hands was very soft. Softer even then Sorbothane. If there are different firmnesses available, I will try to find some harder variant of it. In general, I think you're right: NBR is a material with many of the right properties!

    For example, it absorbs energy and converts much of it into heat rather than bounce it back into kinetic energy. SBR instead bounces back much of it. I will keep looking... :)

    All in all, I can say that 50ct worth of rubber have made a difference in the smoothness of the motion that otherwise probably only a 300€ ball screw would've been able to make.

    Definitely something I'd recommend everyone!

    Cheers,.. Dirty
  17. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    Thanks for the advice. Interesting thoughts there!

    Over the weeks I learned that the fight against EMI is not something that you win with a single panacea-measure. EMI comes from different sources, takes different pathways, and shows up in different spots with different symptoms.

    For example, when I used the Thanos board to drive the servo for the first time, I noticed that my joystick kept losing the connection to the PC. I suspected the AMC AASD board (changed firmware), I rewrote the serial com code in my software (and actually found a few bugs on the way), I tried another joystick (which apparently had better shielding, so it worked).
    I later noticed that the HMD grey'ed out regularly, that the lighthouse stations lost tracking, that the keyboard started missing keystrokes, etc....

    All kinds of problems that had no apparent connection between them. No single part of hardware that could've been the cause.

    Luckily @cbailey pointed me to EMI, otherwise I would've looked everywhere but seen nothing.

    As diverse as the symptoms of the problem were the solution(s): Shielded cables, Ferrite cores, proper grounding, understanding that a SINGLE point of grounding is better then multiple, grounding the rig itself....

    EMI is still present to a certain degree, but with a few measures it is now manageable and normal operation is possible.

    I still have to ground the metal cabinet (thank you @Dschadu!) and maybe even pack the motors in foil.

    Dirty :)
  18. hexpod

    hexpod http://heXpod.xyz

    Joined:
    Apr 18, 2016
    Messages:
    885
    Location:
    berlin
    Balance:
    5,640Coins
    Ratings:
    +273 / 3 / -0
    My Motion Simulator:
    DC motor, 6DOF
    I just wonder why you guys don’t step into two component polyurethane or silicone kitchen in order to choose the elasticity which fits your needs. You can nowadays easily mold pieces with a various range of parameters.
  19. prodigy

    prodigy Burning revs

    Joined:
    Oct 27, 2013
    Messages:
    457
    Location:
    Croatia
    Balance:
    6,641Coins
    Ratings:
    +398 / 4 / -0
    My Motion Simulator:
    2DOF, 3DOF, AC motor, SCN5, JRK
    Link?
    Thanks!
  20. Dirty

    Dirty Well-Known Member Gold Contributor

    Joined:
    Oct 15, 2017
    Messages:
    532
    Occupation:
    All the way up front.
    Location:
    Germany
    Balance:
    5,790Coins
    Ratings:
    +622 / 1 / -0
    :):):) Full-on sentences with subject, predicate and object?

    I really do like brevity! My motto for every briefing in my job is "Let's be brief". But, sorry, I couldn't help myself but point this out :):) I hope you can see the humor in this :)

    The cables I used are these:
    https://www.automation24.de/artikel/7780

    ...and I have soldered the grounding/earthing wire to the shielding braid to get a reliable connection. I am sure that a professional could substantially improve the shielding capacity but it is OK for my use case as it is right now.

    Cheers,.. Dirty :)
    • Like Like x 1