This project start at early 2017 and finally I got the result I want recently (early 2019). It took me nearly 2 years for this project and there are still plenty to improve in my opinion. I am a race car engineer, I design and built off road rally vehicle (like these on Dakar BAJA racing) and race in China. Therefore, from the very beginning, I was looking to build a simulation platform that can closely simulate the real race vehicle. I was looking for a functional built instead of a fancy one.
The original idea was really simple, I was plan to purchase a 6DOF platform and put a commercial available racing seat on top of it. I contact a local Chinese company who specialize in making industry motion platform. They have this small foot print size platform that available for me. I personal found this platform looks too ugly and decide to design my own platform and just use their linear servo hardware.
The original platform is ugly.....
The design process was pretty straight forward, I design a tube chassis with 1.25” seamless tube. It is very strong but also very light weight design. The design was done on Solidworks and it only take few days of drawing and I also run few pass of motion simulation to see if there any interference between components. I intentional design the platform with lower center of gravity, so it will be easier to climb in and out.
My first design was pretty simple..
The final design
The tubes were then CNC notched and bend along with some laser cut and bend sheet metal. These pre-notched tubes are then place on our jig table and we welded them up. The actual built process only take 2~3 days, it was relatively easy job for my shop.
The chassis was sent to powder coat first and then been sent to motion platform company for the final installation. Over there, they put their linear servo and controller and power source on and did some firmware adjustment based on the platform dimension. The final installation process was pretty fast since they have all the linear servo ready stock, so basically really just putting thing up and fasten the bolt and nuts. The only glitch is that they found at certain maximum angle, the rear vertical tube will interfere with linear servo. For that, they solved the problem with hardware limiter. They told me the maximum linear speed is 333 mm/s, but I felt it is faster when I look at the video. After installation, the whole thing is then shipped to my home and ready for me to work on.
Youtube video: checking performance #1
Youtube video: checking performance #2
Youtube video: checking performance #3
Arrival my place and waiting to install the racing gear up.
The platform was original designed to run with VR headset only, that’s why there is no monitor rack on it at beginning. Unfortunately, I had terrible motion sickness with VR racing…..try both Oculus rift and HTC vive, but nothing work. On the other hand, my 7 year old son did not experience any uncomfortable with VR racing….I think my body is getting use to have environmental feedback and when I see in the VR does not match with actual body feeling, it made me motion sickness. It also very inconvenient to use VR headset since all setting has be done on the monitor before actual racing.
Logitec racing gear with VR headset
As you can see, I later designed a monitor rack on front top of chassis. The rack was designed to run a single or two LG curve monitor. I use Logitec racing wheel and pedal at beginning but later change all to Fanatec wheel, shifter and inverted pedal.
3D Printed seat belt tube holder....
The hardware part was relatively easy and straightforward for me, but the software part was a whole different story…basically a nightmare…. The manufacturer of linear servo use their own controller board for 6 DOF motion control. They sent me game interface file to run with Dirt Rally (which is also the only game I run on my machine). I test it out immediately with Dirt Rally, but the result was really horrible. The motion of platform can’t match up with the game simulation. For some reason, the motion is random without making any sense. After nearly two weeks of trying and their engineer sent me dozen of different version of their interface program for Dirt Rally. I finally realize they can’t get this work out the way I want.
The motion controller board use standard serial port for communication…therefore I download the x-sim software and try to use it but then I can’t solve the issue that their controller board need an error correction byte at end of serial data packet….The error correction byte need to be generated dynamically from the data packet, and I can’t get this work out with x-sim software either. At this point, I was super frustrated…I spend a big money on motion platform and everything seem gone very wrong on all direction.
Finally, I ask manufacturer if they can give me the source code of interface program to review and change it. They refused but did provide me a complete data structure protocol of their controller board. And I also found a really detail UDP telemetry data guide for Dirt Rally on the Internet…Therefore, I decide to write my own motion interface program for Dirt Rally to work with my motion platform. It was a really difficult task for me actually, I didn’t do any programming for more than 10 years. Fortunately, the modern programming tool is earlier to learn, I use Microsoft C#, not only it is free but also there are plenty of tutorial online….After two weeks battle of programming, I finally come out something that is more or less usable.
Wrote my own motion interface software...
Youtube Video: 6DOF with DR1 #1
Youtube Video: 6DOF with DR1 #2
The controller board has built in math to interpret all six axis (yaw, roll, pitch, heave, surge, sway) range value into each linear motion of servo. This save me some time in term of programming since I don’t have to work on that complex geometric math. I can also input value speed and brake to control the platform speed and amount of smooth and end of motion…this is a good feature because I can then program the platform to speed up or down base on the amount in game g-force value or speed of yaw.
For unknown reason, the telemetry data from Dirt Rally has a lot of data spike. It happen almost every few second and randomly……I knew I could log their data and filter out their spike, but I was later on too busy with actual racing and other work…There was about a year time I run the program as it is or just run the game without using motion platform.
After Dirt Rally 2.0 come out, I bought the game and decided to give it another try. First I found out that although both DR1 and DR2 share the same telemetry data structure, but the reading value and some axis polar is reverse. The telemetry data output from DR2 also much smoother and without data spike. After few program adjustment and coding, I finally got a motion interface program that run well and feel more or less like real race car on DR2. My 6DOF platform now can roll and pitch according to the terrain. The yaw will change according the amount turning and the pitch and surge will change according to the acceleration and brake. In the stage of USA in DR2, there are many up and down terrain and fly over with heavy landing, this motion platform can truly translate that into the heave up and down motion. In some corner if the vehicle’s rear tire slip and cause uncontrolled drift, the yaw will change and gave me motion feedback to correct it. Overall, with DR2 and update interface software, I am now very happy and satisfy the performance of my 6DOF platform.
Youtube Video: 6DOF with DR2