Modular Controller Software for Simulation Rigs

U

User 26534

Hallo zusammen,

so kurz vor Weihnachten möchte ich ein kleines Projekt mit Euch teilen, an dem ich die letzten Monate gearbeitet habe. Ich habe ein Motion Rig (SFX-100) und zusätzlich 4 Bass Shaker und 2 Vibrationsmotoren an den Pedalen verbaut, die ich über SimHub ansteuere. Hier mal ein Foto von meinem Rig:

Rig.jpg

Aber darum soll es gar nicht gehen. Meine Herausforderung war, dass ich alle Funktionen des Rigs auch gerne während der Fahrt kontrollieren wollte und das möglichst haptisch korrekt über eine Button Box. Alles begann mit einer kleinen Sammlung von Macros. Wie so üblich würden die Dinge recht schnell kompliziert und der Code immer umfangreicher. Vor einigen Wochen habe ich dann beschlossen, alles komplett neu zu schreiben. Herausgekommen sind ca. 8000 Zeilen Code in einer relativ unbekannten, aber dennoch sehr leistungsfähigen, objekt orientierten Sprache.

Aber zurück zur Herausforderung: Eine Button Box hat viel zu wenig Knöpfe, etc. Ich habe also ein Konzept entwickelt, die Button Box zur Laufzeit mit beliebig vielen Belegungen zu konfigurieren, die mithilfe eines Schalters ausgewählt werden können. Jede Belegung wird durch ein eigenständiges Plugin gesteuert. Es gibt Plugins für Assetto Corsa Competizione, SimHub, SimFeedback, usw. Darüber hinaus können alle Anwendungen, die man sonst noch so braucht (Telemetrie, Teamchat, etc.) von der Button Box aus gestartet und gestoppt werden. Die Scriptsprache erlaubt die Automatisierung dieser Anwendungen. So kann man z.B. Teamchat starten und sofort und ohne weitere Mausklicks in den gewünschten Teamkanal springen.

Es gibt eine umfangreiche grafische Software, mit der alles auf das eigene Rig konfiguriert werden kann und über das Plugininterface können sogar eigene Funktionen hinzugefügt werden. Das braucht natürlich ein wenig Verständnis vom Programmieren, aber mit den vorhandenen Plugins als Vorlage geht das recht schnell.

Setup Tab 4.JPG

Last, but not least und ebenfalls konfigurierbar nach Wunsch, gibt es auch noch visuelles Feedback, damit man auch sieht, was gerade passiert.

Button Box 4.JPG

So, genug der Worte. Wer Interesse hat, kann sich das ganze auf GitHub anschauen und dort auch den aktuellen Build herunterladen. Dort liegt auch eine sehr ausführliche Dokumentation im Wiki.

Wir können hier gerne über Quirks and Features diskutieren, ich schaue ab und an mal vorbei.

Und nun, happy racing...

TheBigO
 

Anhänge

  • 20200915_184440.jpg
    20200915_184440.jpg
    209,5 KB · Aufrufe: 417
Zuletzt bearbeitet:
U

User 14740

Schönes Projekt, steckt sicher eine Menge Zeit und Arbeit drin. AHK kannte ich noch gar nicht. Wieder was gelernt ;)
 
U

User 18141

Super Sache! Mit AHK habe ich zB PAUSE auf einen Button gelegt, oder ein Script um HDR zu toggeln. Mit deinem Projekt wird jetzt vieles mehr möglich, ich freue mich darauf, es auszuprobieren.
 
U

User 14740

Achso als Tipp, schau mal ob du den window spy als binärdatei lizenztechnisch anbieten darfst. Nicht dass es wegen sowas mal Ärger gibt. Ist ja ein offenes repo.
 
U

User 26534

GNU GPL v2 - und ich weise in meiner License darauf hin, dass eben diese für die Teile von AHK gilt. Also alles gut, imho. Aber Danke fürs aufpassen.
 
U

User 19823

Tolles Projekt. Tolles Rig! Respekt!
Um so etwas umfangreiches mittels ahk umzusetzen braucht es nicht nur Können sondern vermutlich auch einen großen Teil Hartnäckigkeit.
Ich hätte vor allem nicht gedacht dass ahk's Scripting so mächtig ist.

Der Vollständigkeit halber: Zusätzlich zum von @Dsl71 genannten hat der Henk ja auch eine SimFeedback Extension für pysikalische Buttonboxes geschrieben,
welche auch gegen die SFX-100 Streamdeck API arbeitet. (https://gitlab.com/s4nderdevelopment/sfx-control-box-extension)

Ich würde gerne Details über die von Dir genannten Instabilitäten erfahren, auf welche in den known issues hingewiesen wird und dessen Ursache Deiner Meinung nach die SFX-100 Streamdeck API Extension ist. Vielleicht kann ich hier unterstützen.


Herzliche Grüße, Alex
 
U

User 26534

Danke Euch. Natürlich kenne ich Eure Arbeit und habe sie ja zum Teil auch mitgenutzt. So funktioniert die OpenSource, wir sitzen alle auf den Schultern von Riesen. Mein Ziel war und ist halt alles in einer Packung und hochgradig dynamisch und hochgradig konfigurierbar.

@daCuJo (Alex): Ich konnte es noch nicht eingrenzen. Wenn der Fehler auftritt liefert die Console App auf jeden Request eine hohe negative Zahl, möglicherweise ein #FFFF Phänomen. Beheben kann man es nur, indem man die Extension deaktiviert, SimFeedback neu startet und dann die Extension wieder aktiviert. Sobald ich es sicher reproduzieren kann, melde ich mich.
 
U

User 26534

Habe es vor Weihnachten noch geschafft, Version 1.2 fertigzustellen, Neben kleinen Verbesserungen gibt es einen Themes Editor, mit dem eine Reihe von Bilder, Animationen und Soundfiles zusammengestellt werden können, um der aktuell bevorzugten Simulation (Rallye, F1, Flight Sim 2020, etc.) die richtigen Emotionen zu geben, während alles auf den Start vorbereitet wird.

Themes Editor.JPG

Ich wünsche allen ruhige Tage und ein gesunden Sprung in das nächste Jahr...
 
U

User 26534

Version 1.3 ist online. Größte Neuerungen:

1. Photorealistische Darstellungen der Button Boxes und diese kann nun auf dem Bildschirm frei positioniert werden.
2. Die Controls im Button Box Fenster sind "klickbar". Damit ist die Software auch bedienbar, wenn man gar keine Button Box hat oder diese auf eBay verkaufen musste, weil die Haushaltskasse knapp wurde.

Button Box 5.JPG
 
U

User 26534

[FONT=&quot]Ein frohes neues Jahr Euch allen. Und da seit dem letzten Release bereits ein Jahr vergangen ist (Ok, der ist alt, ich weiß), habe ich gestern die nächste Version online gestellt. Größte Neuigkeiten:[/FONT]

  1. Noch bessere Unterstützung für SimFeedback - alle aktuellen Werte werden auf der Button Box dargestellt, während man Einstellungen verändert.
  2. Ein Multibyte Übersetzungssystem für alle Texte und UI Elemente. Wirklich jede Sprache wird unterstützt und über eine grafisches Übersetzungswerkzeug kann jeder seine eigene Sprache anlegen.
[FONT=&quot]Have fun...[/FONT]

[FONT=&quot]P.S. Das nächste große Feature: Sprachsteuerung für die Pit Stopp Einstellungen in Assetto Corsa Competizione...[/FONT]
 
U

User 26534

Gerade eben ist die nächste Version online gegangen. Diesmal ist es ein Major Release, denn wie im letzten Post angekündigt, gibt ein großes neues Feature für die Nutzer von Assetto Corsa Competizione. Ab sofort ist es möglich, das Pitstop MFD komplett über Spracheingabe zu steuern und damit die Konzentration auf die Strecke aufrecht zu halten.
 
U

User 26534

Neue Version 2.0.4 ist online. Einziges neues Feature ist "Select Driver" (f. Teamrennen) für die Sprachsteuerung, Ansonsten viele Veränderungen unter der Haube, u.a. die Hybrid Rule Engine, auf deren Basis dann im nächsten großen Release der KI-basierte Race Engineer kommen wird. Wer sich für Prädikatenlogik, Hybrid Reasoning und sonstige logische Spielereien interessiert, kann ja mal reinschauen
:-)
 
U

User 26534

Nächstes Update. Hier ist ein Transkript einer typischen Szene mit Jona (ja, so heißt das Ding jetzt), während eines Rennens. Sorry für Englisch, aber ich habe gerade keine Lust das zu übersetzen. Die Grammatikdateien für Spracheeingabe und -ausgabe gibt es aber auch in Deutsch.

-------------------------------------------------------------------------------------------------------------------------------------------------

Jona: "Hi, here is Jona, your race engineer today. You can call me anytime if you have questions. Good luck."

(You hear this or a similar phrase, whenever Jona is ready to interact with you. Typically this is at the beginning of the second lap in a race. From now on Jona might call you, when important information are available, or you can call her/him anytime using one of the key phrases - see the section about [phrase grammars](https://github.com/SeriousOldM…-Engineer#phrase-grammars) on that.)

Driver: "Tell me the tyre temperatures."

Jona: "We have a blue screen here. Windows XP is crap. Give me a minute."

(This answer, or a similar one, means, that Jona does not have enough data at the moment to answer your question. Typically, Jona needs to laps at the beginning of the race or after a pitstop, to be completely up and running)

(A lap later...)

Driver: "Tell me the tyre temperatures."

Jona: "We have the following temperatures: Front left 87. 85 Degrees in the front right tyre. Rear left 93. 91 rear right."

(You can ask for other information as well. See the section about [phrase grammars](https://github.com/SeriousOldM…-Engineer#phrase-grammars) for more information.)

(A few laps later...)

Jona: "Warning. Only 3 laps before you will run out of fuel. Should I update the pitstop strategy now?"

(With this question, Jona asks, if you want to start the preparation process for the upcoming pitstop.)

Driver: "No thank you."

(We are brave and will take another lap.)

Jona: "Okay. Call me when you are ready."

(As you can see, Jona always acjknowledges what you said. This helps you to check, whether Jona did understood you correctly.)

(A lap later...)

Jona: "What are you doing? You are running out of fuel. We should prepare for a pitstop, Okay?"

Driver: "Yes go on."

Jona: "Okay, give me a second."

(A few moments later...)

Jona: "Jona here. I recommend this for pitstop number one: ..."

(Jona gives you a complete overview over all the settings, that were derived for the upcoming pitstop, refueling, tyre compound, pressures, repairs, and so on.)

(Maybe you have some corrections...)

Driver: "Can we decrease front right by zero point two?"

Jona: "The pressure of the front right tyre shall be decreased by 0.2 PSI, is that correct?"

Driver: "Yes please"

(A moment later...)

Jona: "I updated the pitstop plan like you said. Anything else?"

Driver: "No thank you"

Jona: "Understood. I am here."

(The pitstop is now planned, but still not locked in. We are brave and stay out for the last lap...)

Jona: "Warning. You will run out of fuel in one lap. You should come in immediately. Shall I instruct the pit crew?"

(With the last question, Jona asks, whether the pitstop plan shall be locked in.)

Driver: "Ok, let's go on."

Jona: "Okay, I will let the crew prepare everything immediately."

(A few moments later...)

Jona: "We are ready for the pitstop. You can come in."

(The Pitstop MFD window of *Assetto Corsa Competizione* comes to life and all the data is input automatically. See the section about the [pitstop handling](https://github.com/SeriousOldM…Race-Engineer#the-pitstop) for more information.)

(You enter the pit and bring the car to a stop.)

Jona: "Okay, let the crew do their job. Check ignition, relax and prepare for engine restart."

(And now you are ready for your next stint...)

---------------------------------------------------------------------------------------------------------------------------------


Der Immersionsfaktor ist 10 hoch 10, wenn man über Headset mit dem Bot redet. Ein, zwei Wochen noch, dann ist die finale Version da. Betatester sind natürlich willkommen.


TheBigO
 
U

User 26534

So, die Release Version ist online, wie immer auf GitHub. Jona ist noch Alpha, daher bitte vorsichtig, wenn Ihr das junge Ding in einem wichtigen Rennen einsetzt. Es könnten Gremlins da draussen lauern...

Wenn Ihr Fragen, Bugs oder Verbesserungsvorschläge habt, immer her damit. Wenn die Community größer wird, mache ich einen Discord Server auf, im Moment gerne per PM.
 
U

User 26534

Release 2.2 ist online. Wichtigste Neuerungen:

  1. Eine grafische Benutzeroberfläche für die Konfiguration von Jona
  2. Direkte Unterstützung für Sprachbefehle in der Hardware Controller Konfiguration; Beispiel: Sage "Nächste Seite" und die Button Box aktiviert den nächsten Satz an Funktionen
Release 2.3 wird umfangreiche Neuerungen im KI Kernel von Jona bringen (evtl. sogar eine erste Version der Wettertrend Analyse). Daneben gibt es ersten Support für mehrere Hardware Controller.


Race Engineer Settings 1.JPG
 
U

User 26534

Release 2.3 ist gerade Online gegangen. Größte Neuerung: Jona überwacht die Rundenzeiten nach einer Kollision, übernimmt eine Schadensanalyse und errechnet, ob sich ein früherer Boxenstopp im laufenden Sting lohnen würde. Für die weiteren Analysen (Wettertrend, Reifentemperaturtrend, etc.) sind die statistischen Modelle auch bereits implementiert, aber noch nicht aktiviert.

Darüber hinaus gibt es ersten Support für rFactor 2. In den nächsten Releases kommt da noch mehr, inkl. Integration mit dem virtuellen Renningenieur.
 
U

User 26534

Es ist Freitag und damit Release-Day. Version 2.4 bringt die folgenden Neuerungen:
  1. Unterstützung für mehrere Button Boxes mit unterschiedlichen Belegungen
  2. Die Kalibrierungen der Pedale (Heusinkveld) können nun auch während eines laufenden Rennens verändert werden. Sehr praktisch bei einsetzendem Regen, um Bremse und Gas sensibler zu machen
  3. Initiale Unterstützung für RaceRoom Racing Experience
  4. Jona hat wieder was neues gelernt:

    Jona says: "Da die Temperaturen fallen, werden wir die Reifendrücke für den nächsten Stint um 0.2 PSI erhöhen"

    Dahinter steckt eine statistische Trendanalyse der Track, Air und Reifentemperaturen...
 
Oben