====== Racing Simulator ====== ===== About ===== This was my senior design project in college. I worked with a team with two other engineering students. We designed the platform together and then one wrote the reports, one did the fabrication, and I did the electronics. This is an ongoing project that we have continued to work on after college for fun. The V1 platform was completed for senior design. We helped a second group work on the V2 platform for their senior design. The V3 platform is currently under development. ===== People ===== * Garon Knudson * Heather Nelson * [[people:robert_kuyper|Robert Kuyper]] ===== Design History ===== ==== Rev 0 ==== This was a simple 3D printed proof of concept developed during the first couple months of Senior Design. ==== Rev 1 ==== We did this project over two semesters. The first semester we designed the Stewart platform. The second semester was a mad dash to fabricate and integrate the electronics into the platform. We finished with just enough time left over to powder coat the machine and give it a professional finish. We used a Oculus VR headset in this version. To control the platform we used SimTools 2 and a controller based on Arduino with a custom board that I designed. I also wrote all of the code that interfaced with SimTools and controlled the motor drivers. Before we built the full scale platform we 3D printed a scale model which was our REV 0. This allowed us to validate some of our design decisions. It also gave me a testing platform to program the communication protocol between SimTools and the Arduino controller. This protocol was fairly simple serial protocol that streamed motor positions to the control board. The Arduino then verified that it had received a legitimate movement for all six motors before sending positioning pulses to the motor drivers. The motor drivers use a simple step and direction signal. On startup the platform finds its start position by first lifting the platform until all of the limit switches are off. It then lowers and raises the platform to find the upper and lower limits. The number of input pulses required for each motor to travel from the minimum position to the maximum position is calculated and then the platform is lowered half that number of pulses. The maximum range of all of the motors is then set to the narrowest step range. From here the 8 bit output of SimTools is scaled across that motor range. === Gallery === {{gallery>:projects:in_house:racing_simulator:gallery:rev1:}} === Links === * [[https://www.youtube.com/watch?v=HhAt1cEkVHE|Youtube: Build Video]] * [[https://www.youtube.com/watch?v=5zi7YIf9CU8|Youtube: Human Trial 2]] ==== Rev 2 ==== This revision of the platform increased the diameter of the cockpit to allow for more range of motion. A second team of seniors at Montana Tech made this revision for their design project. After senior design was over, we continued making changes. We changed the control system to a Thanos AMC controller and built an electronics cabinet. We also upgraded to a HTC Vive Pro for our VR headset and added movement compensation by adding a reference frame to the platform itself. This subtracts the motion of the platform from the motion of the VR headset so that the motions of the platform do not interfere with the view in the cockpit. ==== Rev 3 ==== This is a complete redesign of the platform. We are changing the geometry completely to allow for more optimal range of motion. We are redesigning the cockpit so that it can be detached and used off of the simulator without having to dismount all of the control hardware. I am redoing all of the electronics to be more up to industry standards for safety. Due to our time crunch on the first design, we spent most of our time just learning how the mechanics of a Stewart platform worked and did not have much time for optimization. This caused some sub-optimal design decisions that limited the platform's mobility. It is still exciting to drive, terrifying even, but we wanted to build something that came closer to the maximum ability of the motors and gearboxes. We also wanted to make several quality of life improvements. Previously we have been switching between two cockpits, one mounted on the floor and one on the platform. This allows testing the platform without having to withstand being shaken by poorly tuned profiles. This is a tedious process of moving hardware between the two platforms. The new version will have a cockpit that can be easily removed while keeping the platform it running condition. The final change we wanted to make was increasing the size of the electronics enclosure to allow for better ventilation and room to add components in the future. The current enclosure is very tight and has poor ventilation. While making all of these changes, we are trying to reuse as many of the old components as possible. The old frames will be cut apart to scavenge the machined components so that we do not have to do any more machining. All of the old electronics are being used. This will save a lot of time and money. This version is being upgraded to use SimTools 3 and we will be taking more advantage of the abilities of the Thanos AMC. The most important goal of this upgrade is to improve usability so that it can be safely run by a single operator. Up until this point, running the simulator has required one person in the cockpit and one person on the ground starting things and making sure the platform remains safe. We are achieving this by adding more comprehensive controls to the cockpit, customizing the axis limits to eliminate binding, and simplifying the startup procedure. === Status === The 3rd revision is currently under development. We met and made a few design decisions. I will complete the dimensional drawings by 10/20/2024 so that we can begin welding up the new frames. ===== Hardware ===== ^ Component ^ Part # ^ Count ^ | Motors | 80ST-M03520 | 6 | | Gearbox | LRF90-L2-40-S2-P2 | 6 | | Heim Joints | 60645K181/60645K182 | 6 each | | Misalignment Spacers | FTG 3/4 to 3/8 - 42 degree Misalignment Spacer | 24 | | 3/4 Thread Tube End Weld Bung | 94640A680/94640A409 | 6 each | | 3/8 Grade 8 Bolts | 91257A642 | 12 | | 3/8 Grade 8 Nuts | 97135A230 | 12 | The frame is welded steel tubing made up of mostly 1.5" tube and 0.25" plate. The crank arms were custom bored and broached to provide a key-way for our gearboxes. The push rods are 1.375" steel tube with weld bungs to receive the heim joints. The misalignment spacers were developed in house to provide more range of motion to the heim joints than any spacers currently available on the market. Where local fasteners were sourced, McMaster Carr equivalents were listed. ===== Electronics ===== ^ Component ^ Part # ^ Count ^ | Motor Drivers | 80ST-M03520 Drivers | 6 | | Motion Controller | Thanos AMC-AASD15A V1.4e | 1 | | 25A Supplementary Protector | FAZ-B25-2 | 1 | | Distribution Block | HPB106-3 | 1 | | Disconnect Switch | ML2-063-E-H04R | 1 | | E-Stop Button | AR16V0R-11R | 1 | | Green Indicator | AR16F0N-C2E3G | 1 | | Amber Latching Illuminated Button | AR16F5N-C2E3Y | 1 | | Red Momentary Illuminated Button | AR16F0N-C2E3R | 1 | | mosfet module | xy-mos | 3 | | 24v 210CFM Fan | QFR1224GHE-TYMT | 2 | | Dual H Bridge | L298N | 1 | | 24v 6.5A Power Supply | B0CP3JWKQC | 1 | | Arduino Nano | A000005 | 1 | | Fanatec Wheel Base | DD1 | 1 | | Fanatec Weel | | | All wire connections are terminated with appropriate crimp on connectors, either ring/spade terminals for screw connections or ferrules for compression connections. The nominal current of our drives is 3 amps with a peak current draw of 9 amps. The 25amp breaker provides the 125% nominal current and the B rating allows for surges to 63 amps for up to 60 seconds. Our extension wire gauge is sufficient for this and the supply breaker is a 50 amp so the branch wiring is more than sufficient. The motor drivers themselves have over current protection. I upgraded the wires for the motors to shielded cable because they came un-shielded. This also allowed me to shorten the cables to the actual necessary length. For now I have opted out of adding EMI filters to the input of the drives, but I have left sufficient space in the enclosure to add them later and route wires if necessary. In the past we have not had issues with this and so I am not going to address it before something breaks. The Thanos AMC allows for an external control board that has an E-stop and indicators/buttons for various states. The buttons I chose use 24V not 3V for lighting so I am using mosfet modules to control the driving voltage. This requires a 24V power supply to be added which will also power the wind simulator mounted to the cockpit. The fans will be controlled using an Arduino Nano with an h-bridge. ===== Software ===== ==== SimTools ==== The interface between the games and the platform is [[kb:software:simtools|SimTools 3]]. This is vastly upgraded from SimTools 2 with a cleaner interface and a more streamlined plugin system. It comes bundled with a plugin for controlling rotary Stewart platforms that will save us from having to use a software shim between SimTools and the platform. Before the release of SimTools 3, I had been working on this shim, but now it is not required. Instead I will be using the bundled plugin with tuned settings to more accurately simulate our platform. ==== OpenVR Motion Compensation ==== We are using [[kb:software:openvr_mc|OpenVR Motion Compensation]] which allows for our VR headset to compensate for the motion of the Platform. Without this, the motion of the platform would cause the view to move. Because our platform is capable of at least 18 inches of motion in any direction and around 45 degrees of rotation in every direction, when this motion is translated into the virtual world it becomes very nauseating. At full tilt, this can cause you to be looking at the floorboard or up into the sky and for you head to pop out the top of the car. Motion compensation keeps you locked into your seat and allows you too look around the virtual world naturally. A controller is mounted to the moving platform to act as a frame of reference for the cockpit. The motion of this controller is subtracted from the motion of the VR headset to provide the actual head position. To ensure consistent sensing. The controller is mounted above the head of the driver to provide a clear view to the base stations. A custom 3D printed mount with vibration damping material helps insure that the compensation is not too jittery. ===== Manuals ===== * [[kb:library:manuals:simtools|Simtools 3 Manuals]] * [[kb:library:manuals:thanos_amc_aasd15a|Thanos AMC-AASD15A Manuals]] ===== Theory ===== * [[kb:physics:kinematics:stewart_platform|Stewart Platforms]]