DIY Motion Simulator VR Cockpit project + universal modular controls: 737-inspired pendular Yoke + Throttles / GA Props / Joystick+HOTAS / Heli Collective + Cyclic / Gear + Switchboxes + Dual Encoders

Here’s a video with a brief introduction to my DIY Motion Simulator Cockpit with custom-built controls, followed by a detailed walkaround and a few demo flights in different control configurations. It’s a 2DOF motion rig, but considering the ultra-low build cost (under $500, including all controls) it’s incredibly immersive. A whole new level of VR immersion, in fact. I designed it as a universal VR cockpit that can work with any plane or helicopter and allows for intuitive and realistic operation. Everything that’s needed for the most intense phases of the flight is right under my fingertips at all times, there’s no need for a VR controller or a mouse during actual piloting anymore. DIY vibration transducers (butt-kickers) complete the immersion. It feels so real that I scrapped my plans of adding another motor to make it a 3DOF. I feel it’s not worth the effort and additional cost. Combined with how VR tricks our brains, the illusion is perfect.

The build includes the following fully custom-built systems and controls:

  • 2DOF Motion platform with seat, driven by FlyPT Mover software (motion cues based on plane orientation and acceleration data)
  • 2 Vibration Transducers (butt-kickers) driven by SimShaker software
  • Pendular Yoke with extended travel (frictionless hall sensors), convertible to Joystick / Cyclic configuration with extended throw and precision, designed and built with frictionless hall sensors. A 3-axis system with smooth bungee resistance, soft return and no central detent.
  • Encoder box with 6 3D-printed dual encoders (using cheap single encoders), 8 buttons and 3-pos switch, driven by custom MobiFlight profile
  • Switch Box with lockable spring-loaded Gear Lever, 11 switches and 2 analog pots (MobiFlight)
  • Boeing 737-style Throttle Quadrant, 8-axis (2 Throttles, 2 analog thrust reversers, Speedbrake, Flaps, Prop, Mixture), TO/GA and T/A disconnect buttons, Trim Wheel, Aileron/Rudder trim knob, magneto rotating 5-pos knob, fuel cut-off switches, starter and APU start buttons.
  • HOTAS Throttle with analog Thumbstick, convertible to heli Collective control with RPM axis.
  • Left-side Switch Box with 9 switches and 3 analog pots.
  • Extra 2-axis analog thumbstick for space simulators or extra functionality
  • Off-the-shelf Saitek rudder pedals (the only non-DIY control)

A comparable off-the-shelf setup would cost me ~$4500 and would not be as universal and intuitive as mine. I hope this project inspires others to build their motion VR rig versions. Believe me, it’s worth the effort!

Here’s a video of the full flight:

Feel free to refer to my previous topic and my first topic (now locked for replies) for build photos and progress. I’m creating this topic to continue the discussion…

All 3D design, sample configuration and 3D-printer files are available for a FREE DOWNLOAD (optional donation) at flightsimulation.romandesign.ca

Check out My MSFS Airports, along with free scenery packs: Ottawa CYOW, Toronto Buttonville CYKZ, Oshawa CYOO, Brampton CNC3 Available at flightsimulation.romandesign.ca or at Microsoft Flight Simulator Marketplace, ORBX Direct, and simMarket.

Some photos of the project:


Motion Simulator

Side View

Pendular Yoke, Throttle Quadrant with trim wheel and reversers, Dual Encoder box, Switchbox with Gear lever

Cockpit in action

Throttle Quadrant - Boeing 737 inspired + Prop controls

HOTAS convertible to heli Collective + Switchbox + Thumbstick

6 Dual Encoder box + Switchbox with Gear lever

Joystick + HOTAS configuration

Heli Cyclic + Collective configuration

Edit: I just realized there is a “Home Cockpit Builders” category, so I’m moving the post here and editing it for a better summary of the project.

December 2024 update: I have started a new topic for my 6DOF Motion Simulator project.

22 Likes

That’s brilliant Roman! Very impressive! I’ve built 5 static simulators over the years. This would be wonderful as my final build, but I ordered the Yaw2 a year and a half ago. Still waiting. Perhaps I should have just built my own and asked you lol!
PS…have you seen the new SamScene Toronto City?

1 Like

It was a fun project and it works much better than I imagined. I planned to maybe add one more motor if it works well, but it’s already so immersive that I scrapped that plan. I’m happy with it as it is.

Not yet, but I will check it out…

2 Likes

Hello

I have built a 2DOF motion Sim chair.
I use “Simtools” Softare with the FS2020 plugin.

Is there a way to add “Ground roll” effects? And a bit of shaking/vibration during flight…
Or can I only do it with Body shakers?

When I take off the chair stays smooth until Liftoff.

Also Motion Compensation I would like to have. Is the only way to use with “FlyPT Mover” and SteamVR software?

I don`t want to deal with SteamVR because I have a HP Reverb G2 Windows Mixed Reality.
And it works very well.

Thank you

Nils

1 Like

Nice rig! It’s a shame more people don’t DIY motion rigs. There’s a ton of info out there on how to do it, and it’s not terribly expensive. It’s great for VR flight.

Just a suggestion: Try using roll rate rather than actual position for roll, and flip it 180 degrees. So if you roll quickly left, the chair actually leans right. Once your roll stops and you stabilize in the turn, the chair returns to center. This feels more natural, and is closer to how a real aircraft responds.

Here’s my DIY SFX-100 based rig: Showroom - My 5 dof + G Seat/Belt Tensioner cockpit build

3 Likes

I’m not sure about SimTools, but with FlyPT I’ve done just that, for the same reasons - it was too smooth on the take-off roll. What I’ve done is added a “random noise” function to the roll axis, limited to a small range to simulate the bumps and uneven surface, modulated it by ground speed (to gets larger as the speed grows and is zero when stationary) and then connected it to the “ground” source only. FlyPT has 2 sources for MSFS - ground and air and the actions can be based on both or either one of them. So there is a definite rollout experience now with the seat shaking just until the liftoff and then it smooth. Really nice.

My FlyPT profile is in the package on my website, if you want to look at that.

It’s possible, at least with FlyPT Mover. Look up “OpenXR Motion Compensation” - it has a Discord server. After installing it, you just create a “OpenVR virtual tracker” in FlyPT, which can also be tuned by any functions. Then the OXRMC can read it and compensate. Setup is tricky and involved measuring and some trial and error, but it works beautifully. While not strictly necessary in VR, it adds a lot. Now those acceleration cues are felt much stronger, as your head doesn’t move in the cockpit with them, so you feel them more like outside forces than just movement.

4 Likes

Really? Interesting. I am using “roll acceleration + gravity” (if I recall the name correctly) and mixing in some actual position too. But I haven’t reversed the roll acceleration, so the chair is leaning left, more aggressively while there is a roll acceleration, but then it returns to a smaller lean when the roll stops. I could try reversing it I guess and see what it feels like. Very counter-intuitive though, but that doesn’t mean anything - all we need is to trick the brain.

1 Like

So in helicopters I use roll position, but in planes I use roll rate. Think about what happens when you roll quickly. Your body lags behind the acceleration, so you are actually pushed opposite the roll, that’s what you feel. Once the roll stops, generally you’ll enter a coordinated 1G turn, so no matter the bank angle, your body feels a return to level 1G.

Try it out

1 Like

Hello

Thank you for your reply.
I downloaded your FlyPT Confic file and adjusted some parameters. Now it works quite well, just i have to finetune more.

I will donate you on your website soon.

Thanks for your help. Without this config file I would have struggled a lot.

Later on I will try if I can get the motion compensation working with Reverb G2 and WMR…

Greetings Nils

1 Like

Depending on the bank angle, in the coordinated turn, the centrifugal force and gravity adds, so it is always more than 1G, but indeed you can’t simulate this in the moving chair (you can’t have more then 1G in the chair).

30 years ago, as my masters thesis I developed 6DOF platform control system which also involved modeling vestibular system. The key findings:

  • the vestibular system can’t sense motions below someangular speed threshold - this allows simulating linear acceleration - you change the pitch of you seat with angular rate below the threshold, in the result you don’t register the angular movement, but you can feel the total force direction (resulting from gravity in your sim chair) as during the acceleration - no longer perpendicular to your horizontal plane (“floor”),
  • regarding roll and turn sequence (left turn): initially you roll the platform to the left with angular speed above the sensory threshold, once you stabilize in the coordinated turn you start rolling the platform to the right with slow speed, below the sensory threshold and you end in neutral (vertical) position with the gravity simulating the forces in the turn (perpendicular to the “floor”), when you start rolling out from the turn you roll the seat to the right (fast enough to be sensed) and once you are straight and level you seat should roll to the left with small angular rate below the sensory threshold.

It’s amazing that you were able to build such a thing at home, 30 years ago we required a set of 4 synchronized computers and a lot of hydraulics and machinery to drive the platform.

Most human balance cues are coming from visual system. So if you implement the control approach described above in VR, motion compensation seems critical, as the seat position no longer corresponds to the airplane seat angular position - the sim seat movements are based on angular acceleration rather than position. From my times with simulators 30 years ago, even without VR, we managed to induce a lot of vomiting, when we were playing with control parameters and equations.

4 Likes

you should check out xsimulator.net where we build these things :slightly_smiling_face:

2 Likes

Will do! Sounds interesting… I can’t picture it though: the first moments of the roll are not different in the motion rig from a real plane, your body is pushed the same way, it’s only later when the rig can’t move too much, and can’t simulate the centrifugal force when the trickery is needed. I don’t see when the noticeable opposing roll fits in…

Much appreciated!

Glad to help!

Works great for me, just needed some tweaking from the measured distances. I modified the values in FlyPT as there are functions you can slap on the data. GAIN mostly, because default values weren’t strong enough. Also some low pass filter, just to filter out very small movements.

I thinks that’s what I use when mixing acceleration (surge) to pitch - when I break the chair pitches forward (to a limit) and it feels very natural. On acceleration it pitches back. That’s a mix-in, so it adds/substracts to/from whatever it’s doing otherwise.

That’s exactly what “roll speed” is doing in my rig, with some low-pass and high-pass filtering to remove very small movements and make sure it returns back very slowly (below the threshold as you say).

I also mix in some sway in roll (for rudder), because the head moves left and right a bit with the roll, as the center of rotation is under the seat. So same way with acceleration-to-pitch, limited to a small range, this helps with the realism.

But I found that just using roll speed feels too bland. Somehow when turning it didn’t feel real in the center vertical position. It also makes sense - when turning you have a centrifugal force vectored down from the seat, but there is always gravity present, so it must angle the vector a bit to the turning side. So I mixed in some position too, so there is a slight lean on the seat in turns, i.e. it doesn’t return to neutral, but to the slightly leaning position (related to the bank angle). But I did it using “Lateral gravity” data, not the actual position data. This makes sure that the seat doesn’t jump abruptly on rollover (barrel roll) - the angle based on gravity increases when rolling up to 90 degrees, but then decreases again after that and smoothly gets back to zero. So fully inverted is the same as upright (neutral). Not that I’m into aerobatics, but the abrupt jump from full left to full-right could brake the rig (or me) and wouldn’t feel realistic at all.

Sure, I have a thread there. People are building crazy stuff, 6DOF rigs etc. I learned a lot from the nice and knowledgeable people there. But my project is a bit different than most in that it is very budget-oriented (under $500) and has a great universal control suite designed into it.

2 Likes

sorry that was supposed to be directed to @stekusteku

1 Like

I initially setup my rig for fighters in DCS, so for sure the opposite roll cues work better for faster roll rates and rapid maneuvering.

IRL, just flying around, you feel very little to nothing in rolling motion. A standard rate turn is slightly above 1G, but if you closed your eyes you wouldn’t even realize you’re turning or banked at all. You never feel “leaned over” unless it’s very uncoordinated. What the rig does simulate very well is turbulence through heave and sway, especially if you have a yaw axis.

I guess it comes down to how you want it to feel. I have a G seat with belts that pushes on your body and tightens belts to simulate G’s but I hardly use it, and never in MSFS or Xplane.

1 Like

Exactly. The greatest thing is this can be tune any way you like…

1 Like

If I make a left turn then the chair should move to the right?

1 Like

Apparently there are two schools of thought. What I currently have, is in the left turn there there is a sharper chair roll to the left (to convey acceleration), then a slow rollback to neutral + a reduced position mix-in, which by itself would make the chair roll to the left more slowly (together with the fuselage) and stay there. So what happens as a result is a sharper left roll on the start of the roll, then a slower left roll while the roll continues, then a slow smooth return but not all the way back to natural, but to the small lean into the turn direction, proportional to the fuselage position in the turn, but much smaller.

I will try the opposite feedback too, as some people think it’s more realistic. But what I have now also feels great. I don’t fly in real GA planes often, so it’s difficult to compare, but last time I flew in Cessna 152 it felt not far from what I have, only more vertical load (heave) would be nice - but only a super-expensive 6DOF system would do it well.

1 Like

For those interested, here’s my thread on XSimulator: Showroom - Budget 2DOF VR Flight Simulator rig - MSFS, SMC3, FlyPT Mover, Transducers

2 Likes

Roman, are you running Mover on your flightsim PC or a second computer? I ask because I’ve got it running on a second computer to try to keep the CPU load off the main one. It works fine with DCS via UDP but I get an error when trying to open the Simconnect MSFS source. I suspect it is looking for files that are on the main computer.

1 Like

I have a DOF Reality 6DOF Platform, and I really wish it did this, especially when taxiing. :confused:

1 Like