DIY Motion Simulator für Rennspiele – Baudoku

Nachdem im letzten Artikel meinen Umbau meines Renncockpits zu einem Cockpit mit Vibrationsfeedback vorgestellt habe, geht es in diesem Artikel um den nächsten Schritt: G-Kräfte durch Bewegung des Sitzes zu simulieren. Das Projekt sollte dabei in ein Hobby-Budget passen.

Das Cockpit mit dem Vibrationsfeedback war schon ein riesiger Schritt in die richtige Richtung für die Immersion. Doch schon nach wenigen Runden reichte es mir nicht mehr und ich brauchte mehr. Ich brauchte Bewegung!

Der Entschluss war gefasst und so baute ich mir einen eigenen Seat-Mover, den du in dem Video unten sehen kannst. Wie bei Virtual Reality häufig, kommt durch das Video jedoch leider nicht gut herüber, wie es sich für den Fahrer anfühlt. Obwohl die Bewegungen (bewusst) eher klein sind, ist die Immersion unfassbar hoch:

Bei meiner Umsetzung handelt es sich um einen sogenannten Seat-Mover, bei dem sich nur der Sitz und nicht das gesamte Cockpit bewegt. In der Sim-Racing Community, wird dies häufig als die natürlichere Variante bezeichnet und ein Full-Motion Rig eher als eine Kirmes-Attraktion. Bei beiden Varianten ist das Ziel aber nicht realistischen G-Kräfte zu simulieren, sondern lediglich ein immersives Fahrgefühl zu vermitteln. Grundsätzlich kann das von mir verwendete Konzept, mit etwas stärkeren Motoren auch für ein Full-Motion Rig verwendet werden

Aber beginnen wir am Anfang: Eigentlich wolle ich nämlich einfach eine fertige Plattform kaufen: Eine Recherche ergab, dass es verschiedene kommerzielle Produkte gibt, mit denen man sein Cockpit zu einem Seat-Mover umbauen kann.

Diese und weitere Alternativen waren mir jedoch zu teuer und teilweise auch mit Import und Zoll-Abhandlung verbunden. Auf meiner weiteren Recherche bin ich jedoch auf Sim-Racing „DIY“ Communitys gestoßen, die sich ihre Motion-Sims selber bauen, wie du im rechten Bild sehen kannst.

Eines von zahllosen selbstgebauten 2-DOF Seat-Mover Projekten von xsimulator.net (Quelle)

Mein Entschluss war dann schnell gefasst: Ich baue es selbst. Dies hatte auch den Vorteil, dass ich die Bewegungsplattform perfekt in mein bereits existierendes Cockpit einbauen kann – dies stellte mich jedoch noch vor einige Herausforderungen.

Ich lernte schnell, die Funktionsweise eines Seat-Movers mit zwei Freiheitsgraden relativ simpel ist: Der Sitz wird auf ein Kreuzgelenk platziert, dass sich (ähnlich wie ein Kugelgelenk beim Mensch) auf mehreren Achsen frei Bewegen kann. Daran befestigt werden zwei Motoren, die jeweils eine Kurbel Bewegen, welche mit einer Stange an dem Stuhl befestigt ist.

Nach einigem an Recherche bezüglich der richtigen Teile, Maßen und Position sowie einigem Trail-And-Error beim Zusammenbau hatte ich einen ersten Prototyp fertig, den du im Video unten sehen kannst.


Den weg dorthin habe ich in den folgenden beiden Galerien dokumentiert. Die erste zeigt wie die Motoren und ihre Ansteuerung umgesetzt wurde, die zweite zeigt den Zusammenbau der Unterkonstruktion.

Motorsteuerung

Die Motoren sollen über einen Arduino gesteuert werden. Dazu wird neben dem Motor, ein Motortreiber und ein passendes Netzteil benötigt. Als Motoren werden sogenannte „Wormdrives“ verwendet. Das sind Motoren mit einem Schneckengetriebe, welche die hohe Drehzahl der Motoren in eine deutlich langsame Bewegung mit viel Kraft (Drehmoment) übersetzen.

Um die aktuelle Drehung der Motoren (und so die aktuelle Position des Stuhls) zu ermitteln, wurde an die Motoren ein Potentiometer angeschlossen. Den Aufbau und die Modifikation der Motoren zum Auslesen der aktuellen Stellung, siehst du in der Galerie:

Hier noch ein Video der Motoren in Aktion hier ist auch die Funktion des Getriebes für das Potentiometer sichtbar:

Update: Ein paar Worte zur Arduino Software

Aufgrund von Nachfragen, hier noch ein paar Worte zur Arduino Software, zunächst aber ein obligatorischer Hinweis:

Der Sabertooth benötigt ein 230V Netzteil. Netzspannung ist kein Spielzeug. Wenn ihr Interesse an so einem Projekt, aber keine Ahnung von Strom habt, fragt einen Elektriker oder geht in ein offenes Labor. Neben Verletzungen, kann ein falsches Vorgehen auch zu Bränden und Beschädigung anderer elektrischer Geräten führen. Das hier ist keine Anleitung, sondern eine Projekt-Dokumentation. Ich übernehme keine Haftung.

Man benötigt für den Sabertooth die Arduino Library vom Hersteller.
Außerdem muss der Sabertooth selbst zunächst via USB am PC angeschlossen und konfiguriert werden (Französisch, ggf. Translator nutzen).

Ich habe dann erstmal den Sabertooth, die Potis der Motoren und einen kleinen Joystick mit dem Arduino verbunden und mir ein paar Test-Skripte geschrieben welche mich die Motoren mit dem Joystick steuern lassen. Diese sieht man auch auf den Videos. Dies war zum einen um die Hardware zu testen und zum anderen um zu verstehen, wie alles genau Funktioniert.

In der Praxis verwende ich dann das Arduino Sketch von Wanegain aus dem PCSHM Forum, welches alles beinhaltet, damit SimTools den Arduino steuern kann. Ich verwende die Variante für 4-6 Motoren, welche auch mit 2en funktioniert („XPID 1.80 6 motors Micro Sabertooth 2×32“).

Hinweis: Man muss im Forum einen Account anlegen und einmal in dem Thread posten (Danke sagen) damit die Links im ersten Post sichtbar werden.

Unterkonstruktion

Mein Seat-Mover sollte platzsparend werden, deswegen kommen bei mir die Motoren, ähnlich wie bei der DOF-Reality-Lösung unter den Sitz. Deshalb musste das so hoch angebracht werden, dass selbst bei vollem Einschlag darunter noch ausreichend Platz für die Motoren ist. Außerdem sollte das Kreuzgelenk nicht mittig auf die Platte, sondern möglichst dort hin wo der Schwerpunkt des Sitzes (mit Fahrer) ist, damit das Gewicht möglichst gleichmäßig verteilt ist.

Zusammenbau

Nachdem der Prototyp funktioniert, musste nun alles in das finale Gehäuse eingebaut werden, der plan war es alles auf der Bodenplatte unter der Sitzfläche zu positionieren:

  • 2x Motoren mit Halterung
  • Kreuzgelenk und Unterbau
  • Sabertooth 32a (Motortreiber)
  • Arduino
  • Steuerschaltkreis
  • 2x Netzteile (500W / 360W)
  • 2x Audio Verstärker (Für Vibrationen)
  • Lüfter
  • Außerdem muss beim Aufbau der Luftfluss beachtet werden

Die nachfolgenden Bilder zeigen wie ich es gelöst habe:

Nachdem das Kreuzgelenk, der neue Sitz, die Gurte und die neue Bass-Shaker-Halterungen installiert wurden, ging es an einen ersten Bewegungstest:

G27 Lenkrad Modding

Nachdem der das Cockpit und der Sitz nun Funktionsbereit war, habe ich noch ein kleines Nebenprojekt begonnen, da das original G27 zu sehr wie ein Spielzeug wirkte, neben der ganzen anderen Hardware.

Die Pedale hatte ich ja schon im letzten Post gegen welche von Fanatec getauscht. Den H-Ganghebel habe ich kurz darauf mit einem einfachem Mod zu einem Sequentiellen-Ganghebel umgebaut, wie er in Rally-Fahrzeugen in der Regel zu finden ist.

Die größte Änderung bekam jedoch das Lenkrad selbst: Das im Durchmesser 28 cm kleine Lenkrad habe ich durch ein echtes 32 cm großes Sportlenkrad der Marke raid ersetzt. Dafür musste ich jedoch zunächst einen Adapter-Designen, um das Lenkrad an die Wheelbase anbringen zu können. In diesem Zuge, hab ich zu dem Adapter auch eine Buttonbox entworfen, da ich sonst auf Lenkradtasten hätte verzichten müssen.

Das Ergebnis

Nachdem nun wieder alles Zusammengebaut wurde, war das Projekt endlich fertig:

Im Video sieht man Dirt Rally mit der Oculus Rift (mittlerweile nutze ich natürlich die Valve Index!). Um den Stuhl anzusteuern, verwende ich die Software „SimTools“ die extra für solche selbst gebauten Motion-Platformen entwickelt wurde und für (fast) jedes Spiel, ein i.d.R. von der Community geschriebenes Plugin hat.

Der Stuhl hat pro Seite ca. 12 cm Hub, davon verwende ich in der Regel jedoch höchstens 6 cm, um eine schnelle Reaktionszeit des Stuhls zu erreichen. Außerdem werden die Bewegungen sonst auch schnell sehr zu extrem – Ziel war es ja ein Immersives Fahrgefühl zu erleben und kein Kirmes-Fahrgschäfft.

Die Gesamtkosten aller in diesem Artikel beschriebenen Maßnahmen, belaufen sich, inklusive dem neuen Sitz, Gurten etc. auf ca. 900 Euro. Wobei die Motoren und der Motortreiber den größten Teil davon ausmachen.

Falls du Fragen hast, kann du sie gerne im Kommentar Bereich unten stellen.

Linksammlung

Falls dich das Thema noch weiter interessiert habe ich hier einige Quellen für gesammelt, die ich für meinen Bau verwendet habe:

  • XSimulator.net – Online Community für DIY Motion Sims
  • Simukit.com – Belgischer Online Shop, der verschiedene Kits verkauft, sodass man sich Motoren, Kurbel und Motortreiber nicht gesondert zusammensuchen muss
  • Russian4x4.de – Meine Quelle für das Kreuzgelenk mit zwei Flansch-Seiten. Kardangelenke bei aktuellen Autos, haben häufig eine Flansch-Seite und eine Stange auf der anderen Seite
  • Kreuzgelenke tauschen (Defender) – Von mir verwendete Anleitung zum Zusammenbau des Kreuzgelenks
  • pcshm-simulateurs-homemade.clicforum.com – Ähnlich wie XSimulator.net, aber kleiner (viel) kleiner und auf Französisch. Hier werden jedoch gute Arduino Codes für DIY-Projekte Motion Sims geteilt
  • Simtools.us – Die, meiner Recherche nach, derzeit beste und einfachste Software um eine Motion-Platform mit einer Vielzahl von Spielen zu betreiben. Mit der Lizenz erhält man allerdings nur Zugriff zur Software, die zahlreichen Spiele Plugins werden von der Community erstellt und müssen mit einem Premium Foren Account nochmal bezahlt werden (Es ist jedoch möglich sich Foren-Punkte durch Aktivität zu im Forum zu verdienen, sodass der Premium Account optional sein kann).
  • SimRacingStudio.com – Für die Bass-Shaker benutze ich immer noch SimRacingStudio, da es besser und leichter ist als das „SimVibe“-Addon für SimTools.


This article has 21 comments

  1. Hendrik Antworten

    Hallo Daniel…

    und Hut ab (oder lieber das Kapperl ziehen?) vor deinem DIY Motion SimRig ! ! !
    Ich plane selber so etwas, benötige allerdings etwas Hilfe, da die meisten Foren und Anleitungen in Englisch sind und ich mit meinem eingestaubten 30 jährigem Schulenglisch an meine Grenzen gerate.
    Vielleicht kann man ja auf dem elektronischen Postweg ein wenig ins Gespräch kommen?
    Über eine Antwort würde ich mich sehr freuen…

    best regards & good race

    Hendrik

  2. JensG Antworten

    Hallo Daniel, tolle Baudoku für den Seatmover. Ich stehe vor der gleichen Aufgabe, den Seatmover an ein schmales Rig anzupassen. Welche Abstände von Drehpunkt Sitz zu Befestigungspunkt der Anlenkung hast du denn verwendet. Bzw hast du einen Bauplan als Basis für diese Variante gehabt ?

    Jens

    • Daniel Korgel Antworten

      Moin,
      besser spät als nie:
      Drehpunkt: Ich habe das Brett, auf dem der Sitz befestigt ist auf den Boden gestellt und eine Stange darunter gelegt. Dann habe ich mich darauf gesetzt, als würde ich Fahren und so den ungefähren Schwerpunkt herausgefunden. Den habe ich dann als Ansatzpunkt für meine Berechnungen verwendet.
      Die Befestigungen für die Motoren habe ich einfach soweit nach vorne und soweit nach außen gemacht, wie es mir erlaubt war, weil ich vom längeren Hebel profitieren wollte.

    • Daniel Korgel Antworten

      Moin,
      der SeatMover muss immer an den PC, du kannst bei bestimmten Spielen (Project Cars z.B.) jedoch die Fahrzeug Telemtrie über dein loakles Netzwerk auslesen und so den SeatMover ansteuern.

  3. Mirko Antworten

    Hey, tolles Projekt! :)
    Hast du eventuell ein Wiring diagram oder ähnliches wie du was im Schaltkasten verbunden hast?

  4. Josef Antworten

    Danke für den ausführlichen Bericht. Das Endergebnis sieht echt toll aus. Denkst du, man käme auch mit einem Motor aus, oder sollten es unbedingt 2 sein?

    • Daniel Korgel Antworten

      Moin! Wenn du nur in eine Richtung kippen willst (Vor/Zurück oder seitlich), geht auch nur 1 Motor. Jedoch müsstest du dir da selber erarbeiteten, weil dass bisher viel weniger Leute gemacht haben. Eigentlich „jeder“ baut mindestens 2 Motoren ein :)

  5. Ponizy Achim Antworten

    Frage da ich eine PS4 und eine Vr Brille habe möchte ich auch gerne so ein ähnlichen Motion Simulator selber Bauen,so zu Frage könnte ich die Motore auch Manuel über USB Kontroller also Joypad Steuern,also wenn ich mit den steuer knüppel der sich auf den Joypad befindet nach links drücke das dann auch mein Sitz auch dann nach Links geht und das alles auch wenn ich nach Rechts oder nach vorn so wie nach hinten drucke das sich der Sitz immer mit der Bewegung immer mit geht.Ist das also mach bar ?,also wie gesagt ich möchte es ohne es am Computer an zu schließen nur mit den Joypad Manuel Steuern und was für geräte brauche ich da für um das allen Manuel zu Betreiben.Warte auf Rückantwort.Danke

    • Daniel Korgel Antworten

      Moin! Grundsätzlich geht das sicher. Du müsstest dir das aber komplett selber erarbeiten und könntest für die Umsetzung der Ansteuerung nicht auf bestehende Projekte aufsetzen (die mir bekannt sind).

      Wenn du bspw. Project Cars auf der PS4 spielst, hättest du jedoch die Möglichkeit, den MotionSim an einem PC anzuschließen und die Fahrzeug Telemetrie über dein Lokales Netzwerk aus dem PS4 Spiel auszulesen.
      Ich habe das bisher nicht probiert, aber auch die Konsolen Varianten scheinen die Schnittstelle zu haben, die man über das Netzwerk auslesen kann, da ich diesen Aritkel gefunden habe: https://www.stryder-it.de/simdashboard/help/en/For_PS4_and_XBox_One_Gamers/Game_Configuration/Project_Cars?lang=de_DE

      Gruß

  6. Sci666 Antworten

    Cool. Aber… Nur meine Meinung, seatmover sind doch eher unrealistisch. In einem echten Auto bewegt sich auch alles zusammen und nicht nur der Sitz der da in kurven loose daher bambelt…. Kirmes ist nen full move Ding daher ganz und gar nicht

    • Daniel Korgel Antworten

      Moin,
      die Kirmes-Aussage, die ich im X-Simulator Forum gelesen habe, ist wirklich etwas provokativ. Jedoch sind (insb. selbstgebaute) Full-Mover tatsächlich nicht per se besser.
      Ein Full-Mover kann die G-Kräfte eines echten Autos ebenfalls nicht realistisch simulieren und ist aufgrund der Masse in der Regel träger als ein Seat-Mover.
      Die Krimes-Aussage bezieht sich darauf, dass Full-Mover häufig mit einem großen Rotationsbereich versuchen zu beeindrucken und Kräfte zu simulieren, jedoch kann dies dazu führen, dass die Bewegung eher vom Racing ablenkt, als dass es perfekt passt.
      Bei meinem Seat-Mover nutze ich ja bspw. i.d.R. nur knapp 50% des möglichen Bewegungsradius, weil diese kleinen, schnellen Bewegungen sich besser in das Erlebnis eingliedern = mehr Immersion.

      Im Endeffekt ist es aber eine Geschmacksfrage und hängt natürlich auch von der Art des Movers und der Konfiguration ab – man muss es ausprobiert haben, um die individuellen Vorzüge zu kennen.

      Von außen betrachtet ist ein Full-Mover natürlich das offensichtlich bessere, das liegt aber auch daran, dass man sich das Gefühl in einem Seat-Mover schlecht Vorstellen kann, ohne es probiert zu haben. Man stellt sich instinktiv unplausible vor.
      Ähnlich ist es ja mir VR: Man muss es probieren, um zu verstehen, wie es wirklich ist :)

  7. Sebastian Kohl Antworten

    Hallo Daniel,

    Cooles Projekt.
    Eine Frage hätte ich. Welche Elektronikteile hast du verwendet.
    Arduino ist klar. Was ist da aber noch aufgebaut? Ich kanns im Foto nicht erkennen.
    Für was sind auch die Audioverstärker?

    • Daniel Korgel Antworten

      Moin Sebastian,
      auf dem Arduino habe ich lediglich ein kleines selbst gebasteltes Board mit Schraubklemmen gesteckt, die mir Zugang zu den Pins des Arduinos geben, die ich brauche.
      Das macht das An- und Abschließen etwas leichter, als immer an den Pins des Arduinos zählen zu müssen.
      Ansonsten sieht man auf den Bildern noch ein kleines Board mit zwei (langen weißen) 1 Ohm Widerständen, welche der Sabertooth benötigt. In der Regel liegen die aber bei.

      Die Verstärker sind zwei diese hier: https://amzn.to/2XPR4lp
      Als Shaker habe ich drei von diesen verwendet: https://amzn.to/2XU42if
      (Einen jeweils links und rechts am Sitz und einen unter den Pedalen. Mehr Details dazu gibt’s in diesem älteren Artikel: https://www.bloculus.de/diy-vr-racing-cockpit-mit-haptischem-feedback/ )

      Gruß

  8. Michael Antworten

    Hallo,
    ich habe eine Frage zum Kreuzgelenk – wie hast du die Flanschteile auf das eigentliche Kreuzgelenk gebracht – braucht man dazu nicht Profiwerkzeug?

    • Daniel Korgel Antworten

      Moin,
      mit Schraubstock (ggf. optional), Hammer, ein Stück Metal oder Holz, dass durch die Löcher vom Gelenk passt und einer kleinen sowie einer großen Spitzzange war das ganze zwar fummelig, aber gut machbar.
      Ich habe mir dafür diese Anleitung angeschaut: https://www.landypedia.de/index.php/Kreuzgelenke_tauschen_(Defender)

      Kurz gesagt: Kreuz in Gelenk einlegen. Von beiden Seiten dann die „Deckel“ (Kreuzgelenklagerschale) rein Hämmern (Vorsichtig, aber trotzdem mit Kraft). Hier kommt das Stück Holz/Metal ins Spiel, da sie so weit hinein müssen, dass die Nut für den Sperrring frei liegt. Dabei evtl. Schmiernippel leicht öffnen, damit der Druck entweichen kann. Dann Sperrring in Nut einsetzen (evtl. der größte Kampf) und für die andere Seite das gleiche :)

      Gruß
      Daniel

  9. Sebastian Kohl Antworten

    Hallo Fernando,
    hast du es schon geschafft?
    Ich scheitere mit meinem Arduino schon Tage lang.

    • Daniel Korgel Antworten

      Moin,
      ich hab mir zunächst mit den Beispielen aus der Sabertooth Library ein paar Test Skripte gebaut, welche mich die Motoren via Buttons (bzw. einem Joystick) Ansteuern lassen, wie man im Video sieht.
      Danach habe ich ein Script aus dem PCSHM Forum verwendet.

      Ich habe im Artikel einen neuen Absatz „Update: Ein paar Worte zur Arduino Software“ eingefügt, der sich ein wenig mit der Arduino und Sabertooth Software beschäftigt. Vielleicht hilft dir das ja schon weiter.

      Gruß

      • Sebastian Antworten

        Hallo Daniel,

        war etwas unverständlich von mir formuliert.
        Mir geht es um die Daten von der Playstation.
        Ich habe herausgefunden, dass die API von der projectcars Seite nicht für einen Arduino 1:1 verwendbar sind. Lt pc2 ist ein unsigned int = 4bytes. Im Arduino aber nur 2bytes.
        Deswegen musste ich unsigned long int verwenden.

        Das funktioniert bis zur Variable sJoyPad0. Hier bekomme ich statt den Wert 1 (kommt von einer anderen Steuerung, nicht Playstation) 16777216, also 2^24. Ich versteh es nicht woher der wert kommt.

        • Daniel Korgel Antworten

          Hi,
          alles klar!

          16777216 ist der maximale (positive) Wert den ein float (32 bit bzw. 4 byte Gleitkommazahl) annehmen kann.
          Ist deine Zahl vielleicht ein float statt eines ‚unsigned long int‘ (bzw. uint32_t) ?

          Oder verwendest du irgendwo floats um die Zahl zwischenzuspeichern oder ähnliches? :)

          Gruß

          • Sebastian

            Hallo Daniel,

            Nein, es ist kein float. Ich speichere mir die ganzen Daten in einen char Buffer und kopiere es dann in den richtigen Datentyp mit memcpy.

            Ich schätze hier wird das Problem mit dem alignment im Speicher verursacht. Die Daten liegen auf Pos 373. Bei ARM Targets muss aber für long integers die Pos durch 4 teilbar sein.

            LG

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.