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

007 G-Seat: Ultra Compact/Servo Based

Discussion in 'DIY Motion Simulator Projects' started by Spit40, Jun 25, 2017.

  1. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Update: Title changed again. It's no longer "part 1" as Surge is now well underway in addition to the original heave.

    Edit: For those reading this for the first time, here are a few points about this project that might help in terms of relevance to any project you are considering.

    1. I'm building on an existing seat and ideally I want the g-seat functionality to be very compact, ideally almost invisible/hidden - something Q might build for Bond! Just a design aspiration I have.
    2. The seat frame I'm using constrains some options for flap positioning, which will make it less useful for a sense of roll, but should be fine for heave, which is OK for me as I'm putting this on a 3DOF
    3. It's mainly for flying. I'm not sure my servos would be up to driving.
    Its time for me to move to the next level. I've been using a commercial DOF Reality V3 for the last few months and I'm after more immersion for my VR flying. My seat is a Cobra Clubman Classic bucket and I want to convert it to a G-Seat. I'd like to do it without adding lots of extra structure to support motors, which means I need a very compact solution. So its going to have to be servo powered rather than wiper motors and probably just one servo per flap given the space available. I also want to maintain the comfort and appearance of the seat. I think this can be done building off the crossbars of the seat base, but I have quite a few questions. I've put all my ideas and questions in this short slideshow. Any suggestions welcome.

    Oh, and I've decided to take this a step at a time. I can access the seat base most easily without ripping off all the upholstery, so I'm starting with heave which should give me a nice sense of g-force on a tight turn. Surge can come later.

    base.jpg seat.jpg

    Attached Files:

    • Like Like x 7
    Last edited: Dec 5, 2017
  2. MarkusB

    MarkusB Well-Known Member Gold Contributor

    Joined:
    Jun 30, 2015
    Messages:
    552
    Location:
    Germany
    Balance:
    4,213Coins
    Ratings:
    +596 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino, Motion platform
    Hi @Spit40, nice to see another g-seat project. Seems you have already put quite some thoughts into it.
    I am also going to replace my current g-seat with a servo-based solution and was already looking for suitable hardware.
    For now I have only one comment about your chosen servo: Regarding the torque it may be sufficient, but I could imagine that the rod that goes from the servo horn to the paddle may become the week point, or maybe the involved joints. How thick/strong will they be so that you can still mount it onto the horn?
    From this perspective it could be better to use at least 2 servos in order to distribute the weight onto 2 rods and joints.
    This is just what came to my mind when thinking about my own build.
    • Informative Informative x 1
    Last edited: Aug 4, 2017
  3. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Thanks Markus. Good point. I was going to use some M5 rod/bearing ends and try to get a very strong aluminium servo arm that could take it. I've emailed the servo supplier to see what they can suggest.

    Phil
  4. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    @MarkusB - I've decided not to use a horn but a servo disc which I'll bolt to a larger 6mm thick steel disc. That should remove the servo arm as a weakness. I also then also have lots of flexibility as to placement of the connecting rod. With regards to con rod weakness my issue is the upper bearing which won't easily allow the seat plate to drop to level. I think I may have to cut through the plate and place the bearing above the seat plate and cut some foam out of the seat base to make space for it. If I do that I have the later option to upgrade the M5 to something stronger if needed.
    conrod.jpg
    • Like Like x 1
  5. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Next bit is how to drive the servo. From what I've read I don't think I need my Monster Moto shield, but can drive it straight from Arduino. I've downloaded the RC_Sim_Model_v2_ino.zip code from @eaorobbie which I hope will work with this servo. I'm guessing it's 12bit. Is that the norm anyone?

    Also I'm still looking for a wiring diagram for my Uno.
  6. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,141
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,541Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    • Informative Informative x 2
  7. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    @noorbeast - looks like just what I need. Thanks.
    • Funny Funny x 1
  8. MarkusB

    MarkusB Well-Known Member Gold Contributor

    Joined:
    Jun 30, 2015
    Messages:
    552
    Location:
    Germany
    Balance:
    4,213Coins
    Ratings:
    +596 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino, Motion platform
    About the wiring: In the connection diagram provided in this post, the servos get their power directly from the Arduino board.
    In case of your high-torque 7.4V servos, you will probably need a separate power supply. But this is also possible, as shown here:
    http://communityofrobots.com/tutorial/kawal/how-connect-servo-arduino
    • Informative Informative x 2
  9. MarkusB

    MarkusB Well-Known Member Gold Contributor

    Joined:
    Jun 30, 2015
    Messages:
    552
    Location:
    Germany
    Balance:
    4,213Coins
    Ratings:
    +596 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino, Motion platform
    Looks interesting. I don't know if this would provide any advantage compared to your approach, but I am thinking of mounting the servo motors turned by 90 degrees, similar to the GS4 g-seat. By doing this, the rod only moves in a single plane, while being connected to the servo as well as to the paddle.
    GS4_Servos.jpg
    • Like Like x 2
  10. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Actually that was my first idea, but I don't have that option given the placement of the seat cross-bars. The other idea I'm thinking of is this. The tyre would roll along the underside of the paddle. I may need to angle the tyre/wheel a bit as otherwise it would skid/pull on the paddle.

    lifting-the-paddle.JPG
  11. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    I've started testing my KingMax 65kg.cm servos. They run on 6.0 - 7.4v and speed is 0.13s/60

    I'm testing for:
    1. Can they really handle 65kg.cm?
    2. Do they really move that quick?

    Torque Testing
    The first problem I'm hitting with (1) is what current draw do I need? I created a 7cm lever and managed to lift a 2kg weight pretty comfortably with it, but it stalled on 4kg. I was only using a 2amp PSU though. Any advice please on what kind of current I'm going to need and how to source it cheapest. Ideally it would be variable voltage as there's some confusion over maximum operating voltage - the side of the servo actually says it will handle 8.4v

    UPDATE: This should do it. 20A should be plenty (hopefully for both servos) and 7.5V with +10% adj. so 8.25v available.

    http://www.ebay.co.uk/itm/7-5-volt-...877685?hash=item3393da1f35:g:OtsAAOSwMmBVgzQw



    Speed Testing
    I'm finding it harder to do this. I can hardly use a stopwatch. One thing I tried is some test arduino code like this.

    * Centre the lever
    * Move it 60 degrees
    * Wait 130ms
    * Move it back to centre
    * Wait a bit and repeat

    I actually tested it first with a 200ms delay and had some unreliable behaviour. It seemed to perform the full movement most of the time, but sometimes it would only move a short distance and return. I guess this is an arduino servo pulse timing issue, but is there anything I can do about it?
    Last edited: Aug 22, 2017
  12. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    20amps sorted it. The inconsistent responsiveness and degree of movement is resolved. I've also increased the test weight significantly and the servo copes with it, but what I've learned (being new to all this) is that a servo rated at 65kgcm with 130ms/60 degrees doesn't mean it can move at that speed with a 65kgcm burden. Now the penny has dropped that 65kgcm is the stall limit at the extreme, I've realised that the actual movement/pressure I'm going to experience with this servo powering a g-seat won't be known until I build and test it.
    • Informative Informative x 2
    • Like Like x 1
  13. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
  14. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Good progress this weekend. I have one seat base plate working. I'll post my modified arduino sketch later as others may find it useful. Because I can't do -ve heave/surge, it clips all -ve values (output <128) and then maps the 128-255 range to the desired servo max/min positions.

    It's rough and ready with ply for now while I tweak things. I'm not quite sure whether I have enough power at the moment, but that seems strange as my 65kgcm KingMax is quite a bit bigger than the dual Turnigy's others have used. When I first tried it with the dense foam seat cushion over the plate I got very little movement, and the servo certainly couldn't go full distance. I later tried with a thin foam cushion though and the results were much better. I plan to cut the foam seat base into sections to allow hinging without resistance.

    I'm currently searching the forums for previous g-seat builds as I'm unsure about 2 things:
    1. How much lift at the outside of the plate is desirable for a good feeling? Less lift means less resistance, more force and faster response. I'm currently lifting about 70mm
    2. How deep should the plate be (i.e. front to back of seat)? At present I think I've made it too small. Less than 1/2 the seat depth and the pressure on my leg is a bit too subtle.
    Any links that can be shared to pictures of previous builds would be appreciated.
  15. MarkusB

    MarkusB Well-Known Member Gold Contributor

    Joined:
    Jun 30, 2015
    Messages:
    552
    Location:
    Germany
    Balance:
    4,213Coins
    Ratings:
    +596 / 2 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, Arduino, Motion platform
    Hi @Spit40, did you check the G-Seat FAQ?
    https://www.xsimulator.net/community/faq/diy-g-seats.172/
    • Informative Informative x 1
  16. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Thanks Marcus. I found a page with some of these on, but not this one... especially with that great question of yours about flap positioning. If anyone has any new experience/learnings on flap positioning I'd be pleased to know.

    Currently this is what I have with my first test. Hinging from the edge of the flap.
    File 29-08-2017, 13 09 49.jpeg
  17. early_m

    early_m Active Member

    Joined:
    Jul 28, 2016
    Messages:
    320
    Location:
    Chelmsford
    Balance:
    826Coins
    Ratings:
    +345 / 4 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform
    hi @Spit40 , enjoying your thread

    here's the link to my g-seat https://www.xsimulator.net/community/threads/diy-g-seat.9848/ still a work in progress but a new baby forces end of play for the time being

    I struggled with coding for the +/- values. just couldn't get it to work. so I implemented a design using slotted angles to cancel it out instead. I'd be interested to see your code
  18. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Thanks @MarkusB. I've been reading your post about flap positioning, which attracted some great input from others, so I'll repeat it here.

    https://www.xsimulator.net/communit...pivot-location-for-seat-flaps-of-g-seat.8471/

    I think I'm constrained by the seat I'm using, so I'm going to have to hinge from the inner edge and I won't be able to lower the opposite flap, to give the sense of pressure easing, when one side increases. I guess that isn't needed so much anyway for me as I'm adding this to a 3DOF so I have roll covered already. I want this primarily for heave, though it should aid the sense of roll.

    The next question is flap size, and I think I'll go for about 1/2 seat depth next.
    Last edited: Aug 30, 2017
  19. Spit40

    Spit40 VR Flyer

    Joined:
    Nov 3, 2016
    Messages:
    341
    Location:
    United Kingdom
    Balance:
    2,883Coins
    Ratings:
    +198 / 3 / -0
    My Motion Simulator:
    3DOF
    Thanks for sharing your g-seat project @early_m - here's my Arduino sketch

    The main differences are these lines starting line 98
    //No -ve on G-seat : 128 = middle
    if (actuatorPosition[currentActuator]<128) actuatorPosition[currentActuator]=128;

    // scale the new position
    // Range is now 128 - 255
    // Maps between min and max
    actuatorPosition[currentActuator] = map(actuatorPosition[currentActuator], 128, 255, kActuatorScale[currentActuator][0], kActuatorScale[currentActuator][1]);

    This bit was something I thought I'd add to protect the servo from accidentally going beyond the seat limits, but didn't bother with in the end (starting line 120)

    int safePos;
    safePos=actuatorPosition[thisActuator];
    // safePos=100;
    actuatorSet[thisActuator].write(safePos);

    Attached Files:

    • Useful Useful x 2
    • Like Like x 1
  20. early_m

    early_m Active Member

    Joined:
    Jul 28, 2016
    Messages:
    320
    Location:
    Chelmsford
    Balance:
    826Coins
    Ratings:
    +345 / 4 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform
    Awesome, thanks for sharing I would never have worked that out, coding is not my thing at all