1. Hundreds of coffees, endless nights of debugging and coding, and countless feedback by our beta testers led to this new major release. SimTools 2.4 is probably the version with the most upgrades and improvements in a single release ever. Look at everything Dustin has included:
    SimTools 2.4 all features.
    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 Download Package Now!
  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 here. Do not following these rules will lead to permanent exclusion from this website: Read the forum rules.

Showroom Grigory's 6DOF #2 -- compact and no linear actuators, 220V servos

Discussion in 'DIY Motion Simulator Projects' started by Grigory, Mar 29, 2018.

  1. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Base is complete, motors installed.

    7BB9A4C9-673B-46DA-BB1F-D259193A83B3.jpeg 92854982-2753-4AC0-AF12-89F91A1485CD.jpeg 1262002A-BC85-4572-8A5A-BB669ED22F14.jpeg


    I have also connected the servo drivers and did some initial tests yesterday.

    The servo drivers are controlled by step/dir signals and I plan to use Arduino Mega to generate such signals based on the target position values sent from PC through serial. Yesterday I verified that a single Mega is capable of simultaneously generating steps for all six drivers with frequency sufficient to reach the motors’ maximum speed, but that was without processing any serial communication or keeping track of individual servo positions. I should be able to update the software and add this part today. Hopefully, Arduino will still manage it.
    • Like Like x 5
  2. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    I made a small mistake when ordering a box for the servo drivers and had quite a surprise when this monster was delivered:

    663E5488-0DA1-4B11-BBBE-FED9A6BC5F99.jpeg

    Anyway, now I have plenty of space to store the electrics. Probably, this can also accommodate all the 24V stuff, including the two batteries.

    A458AE33-98D1-4BB0-9261-93D32A267BA8.jpeg
    Last edited: Sep 4, 2018
  3. AussieSim

    AussieSim Member

    Joined:
    May 3, 2017
    Messages:
    74
    Location:
    Australia
    Balance:
    1,209Coins
    Ratings:
    +31 / 0 / -0
    I'd love to hear more about how you use the Arduino / Mega to control the servo drivers.
  4. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Well, its quite simple.

    The driver is controlled by dir and step signals. Rotation direction is determined by whether dir is HIGH or LOW. Amount of rotation is determined by a number of step pulses.

    The driver has a setting for the "electronic gear ratio". This defines how much the servo should rotate on a single step pulse. This is important since my motors have 10,000 encoder pulses per revolution and can rotate at 2.500 rpm. Without electronic "gears", reaching maximum speed would require issuing pulses at over 400kHz for just a single motor. I used 1:20 setting in my tests yesterday, so the servos move 20 encoder pulses per each step received.

    The arduino sketch for the test was very basic. Each loop did this:

    1) reverse the level of all six DIR pins
    2) repeat 5000 times:
    a) set all six STEP pins to HIGH
    b) wait for 4 microseconds
    c) set all six STEP pins to LOW
    d) wait for 4 microseconds​

    All changes to pin levels were done by port manipulation, not by digitalWrites, which proved to be too slow and did not allow reaching max rpm.

    With my 20:1 planetary gearboxes this made all six output shafts oscillate by 180° with really high speed. I tried decreasing the wait times to 2-3 microseconds, but that caused servo driver errors, as the servos were not able to keep up. I believe that proves that the step pulse frequency is sufficient and I even have some margin to increase it.


    My actual setup to control 6DOF is planned to be like this:

    [simtools] >network> [my VB.Net application to calculate correct 6dof lever positions, adjust rotation axes, etc.] >serial> [arduino] > [drivers]

    Upon receiving data from SimTools, my VB.Net application will calculate the six lever positions and send six integers to Arduino. Arduino will get these target positions, compare them with the current stored positions for each motor, issue a corresponding number of dir/step signals to each driver and store the updated positions based on the number of issued pulses.
    • Like Like x 1
    • Informative Informative x 1
  5. Thanos

    Thanos Building the Future one AC Servo at a time... or 6

    Joined:
    Jul 6, 2017
    Messages:
    494
    Occupation:
    Electronics Engineer
    Location:
    United States
    Balance:
    3,435Coins
    Ratings:
    +433 / 4 / -0
    My Motion Simulator:
    AC motor, Joyrider, Motion platform, 4DOF, 6DOF
    I think you need to make provisions to allow canceling of current pulse stream command if new position demand arrives, as the motor will try to perform all pulses received. This means the motion will not be real time.

    Just saying as I had same issue with pulse/ burst mode when trying to do same thing with clearpath servo motors. It worked marvelous, but it was not real time...
    • Informative Informative x 1
  6. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF

    Thanks. I will keep that in mind.
  7. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    I updated both the Arduino sketch and the Vb.net app and connected everything to Simtools. It seems to work well, at least at this stage.

    This is one of the motors reacting to my random inputs in the Simtools output tester:



    I am really impressed with the speed of this thing!
    • Like Like x 6
  8. early_m

    early_m Active Member

    Joined:
    Jul 28, 2016
    Messages:
    121
    Location:
    Chelmsford
    Balance:
    105Coins
    Ratings:
    +134 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, Arduino, Motion platform
    Where are the motors from? Price?
  9. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    I bought both the motors and the planetary gearboxes from the local Russian reseller, but originally they are from China.

    The motor model is 90ST-M04025, geaxbox -- PLF90 1:20 ratio. I do not know how much these cost in China and I understand that I hugely overpaid for getting them locally without hassle with delivery and customs.
    • Like Like x 1
  10. lromaniuk

    lromaniuk bny

    Joined:
    Mar 23, 2018
    Messages:
    18
    Occupation:
    Software Programmer
    Location:
    Poland
    Balance:
    219Coins
    Ratings:
    +9 / 0 / -0
    Motor like this can be bought around 250$ as a kit (motor + servo amplifier) on aliexpress + shipping + taxes.

    Nice monsters by the way.
  11. BlazinH

    BlazinH Well-Known Member

    Joined:
    Oct 19, 2013
    Messages:
    2,013
    Location:
    Oklahoma City, USA
    Balance:
    14,766Coins
    Ratings:
    +1,691 / 30 / -1
    Glad to see you got them moving. Looking forward to seeing them loaded though since unloaded doesn't really show much. With all the power you say they have I wouldn't trust those clamp on levers holding good however. But maybe they will be okay with the load spread over 6 of them. On my 3dof they wouldn't last long though.
  12. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF

    Here it is:

    I initially tried to use Simtools output tester while sitting in the cockpit and moving the slider with the mouse. Not the best idea :)



    The second attempt after adding a shaking test routine to my interface app:

    • Like Like x 9
    • Winner Winner x 2
  13. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    I hope the levers will be fine. They have slots for the shaft keys, so I do not think they will slip.
    • Like Like x 1
  14. RiftFlyer

    RiftFlyer Active Member Gold Contributor

    Joined:
    Apr 15, 2014
    Messages:
    194
    Balance:
    1,565Coins
    Ratings:
    +116 / 0 / -0
    My Motion Simulator:
    DC motor
    @Grigory im really intrigued by the geometry of your platform. Are the front two servo arms reversed? How did you calculate the offset in your design? It seems to have allowed you to have a wider opening at the front with greater clearance for your legs.
  15. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF

    Yep, the front two levers are indeed reversed. I was trying to make the rig as compact as possible and that helped to have wider movement range without having to increase the footprint.

    I did not actually need any offset. All motors are evenly placed around a circle, facing outwards. All levers and rods have the same length. As the cockpit pose is determined by the distance between motor shaft and the points where the rods are attached to the moving platform, it does not really matter which way the lever is facing. If that distance is eventually correct, I mean. It’s like I have invisible linear actuators :)

    I have a vb.net app sitting between Simtools and the servos. That app knows the limits of movement for each DOF, gets 12 bit values for each DOF from Simtools and can convert that to offsets in mm for sway, surge and heave and degrees for roll, pitch and traction loss. Then I apply 3D transforms to the coordinates of rod attachment points to understand where these points should be in the target cockpit position/orientation. Finally, I apply the method that I explained in the post for my first 6dof to get the required lever angles.

    With such approach, I can really have all my lever and rod lengths different, motors placed not in a perfectly symmetrical manner — and still have correct cockpit movements.

    In addition, I can place the rotation axes anywhere I want. This is, for example, the traction loss test. You can see that the rotation axis is at the pedals, not in the center of the rig:

    • Like Like x 6
    • Informative Informative x 3
  16. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Having resolved the RF interference problem, I finally had some time to properly test the rig.

    I have not yet connected the G-seat and shakers, but pure 6DOF seems to be working quite well in Assetto Corsa and Prepar3D.

    Previously, when I tried using VR on my first 6DOF rig or on the seat mover/traction loss setup, I got motion sick almost immediately. This time – not even a smallest sign of that! I’m not sure if that is because of precision and speed of movement or just because of the practice that I had playing VR on the stationary rig while waiting for the parts to arrive. In either case, I really like how it feels, especially with motion cancellation.

    The motors are handling the loads just great and without any major speed loss. I am actually not sure if connecting the shakers to the seat will add anything to the feel of road texture.

    Temperature also does not seem to be an issue. With my compact design, the front two motors are more loaded than the other four. The weight of the pedals, Accuforce wheel and my legs is shifted forward and its projection is always outside of the motors hexagon. But even with that after three hours of play I could easily hold my hand on these front motors. I believe this means they were not hotter than about 45°C. The motors have Class B insulation, so they can handle internal 130°C working at 40°C environment. I think I now have some margin.

    I modified the software that I use to convert 6DOF values from Simtools to the cockpit pose, so that to be able to adjust the ranges of movement for each DOF. Now the software also allows to adjust the balance between linear movement and tilting in surge and sway. Combination of the settings available in Simtools and the ones that I now have in my software provide quite a lot of flexibility.

    SimInterface.png


    I have not yet spent much time refining the settings, but I already see that only very limited movement ranges are needed when using VR. This would be even more so when g-seat is re-connected and takes care of longer-lasting sway and surge forces. As can be seen, I limited the heave range to less than 100mm or just about 50 mm each way from neutral. Even with that, I truly regretted having a bit excessive vertical speed when touching down a Cessna.

    Generally, I like how everything works now. No serious design flaws have come up and it should be possible to make things even better after more tuning.
    • Like Like x 2
  17. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    I am wondering what the simplest solution is to show both the game and video from the webcam showing the rig in action. Geforce experience can do that, but the webcam window is way too small and I could not figure out how to make it bigger.

    @SilentChill, what software are you using for your videos?
  18. noorbeast

    noorbeast VR - The Next Generation Staff Member Moderator

    Joined:
    Jul 13, 2014
    Messages:
    13,341
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    100,875Coins
    Ratings:
    +8,421 / 41 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    • Like Like x 1
    • Informative Informative x 1
  19. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
  20. Grigory

    Grigory Active Member Gold Contributor

    Joined:
    Jul 6, 2016
    Messages:
    206
    Location:
    Moscow
    Balance:
    67Coins
    Ratings:
    +299 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Here's how the rig looks in action. I certainly need to improve my driving and to replace that crappy webcam :)

    Anyway, I just love how this 6DOF feels now with the wind and working Gseat.

    • Like Like x 9