Controller design - waar begin ik?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ikt
  • Registratie: Juli 2008
  • Nu online
Voor mijn mod voor stuur-ondersteuning in GTA V heb ik al enkele dagen hoofdpijn - mijn huidige implementatie laat het ding zwabberen als een gek, en ik kan geen oplossing bedenken. Een frisse blik zou erg welkom zijn :)

De opstelling is als volgt:

* Een USB stuur met force feedback
* Een GTA V met mijn script erop draaiend

Mijn script pakt de stand van het stuur en gebruikt deze als input voor de ingame-auto. Max lock IRL = max lock ingame, de compensatie voor keyboards/controller is eruit gesloopt, dus tussen het fysieke stuur en de in-game autowielen is een 1:1 mapping.

Als parameters voor de output kracht worden gebruikt:
* De rotatiesnelheid van de auto
* De snelheid van de auto
(Irrelevant, voor een ander effect: De stuursnelheid voor dempen).

Met die eerste twee parameters bereken ik de G-kracht door het model in-game voor te stellen als een constante rotatie - gforce = (draaisnelheid.z-as * snelheid) / 9.81. Dit resultaat (keer -1) vermenigvuldig ik met enkele instelbare constanten om de outputkracht te zetten.

Dit alles geeft een redelijk goed effect - totdat de auto zodanig snel gaat dat de G-krachten snel oplopen. Doordat de output ook input is, gaat de auto snel zwabberen als er geen input is. Dit is ook afhankelijk van hoe de grip van de auto in-game is. Als deze hoog is, begint de auto bij een lagere snelheid te zwabberen.

De reden dat hier de G-kracht wordt gebruikt in plaats van een fysiek model met askanteling is doordat GTA V dit concept niet kent/lijkt te kennen.

Nu wil ik dit wat slimmer aanpakken, maar ik heb geen idee hoe. Géén kracht zetten als er geen input is, kan niet, omdat het stuur moet draaien als de auto een tik krijgt, begint over te sturen of dat de auto het stuur recht trekt door het rijden zelf. Iemand stelde voor een PD-controller te maken, maar ik heb geen idee wat het setpoint moet zijn, hoe/wat het proces precies is en de terugkoppeling.

Mijn vermoeden:
Setpoint - stuur positie
Proces - GTA-wereld -> force feedback
Terugkoppeling - Stuur encoder

Probleem - verschil met setpoint en resultaat stuur encoder is 0, de controller moet ergens voor ffb komen maar na de GTA-wereld, maar waar is mijn correctie dan op?

Dingen die ik van het spel op kan vragen (voertuig):
Absolute positie
Absolute draaiing (om x,y,z assen)
Snelheid
Draaisnelheid
Stuurstand t.o.v. voertuig

Dingen die ik van het stuur op kan vragen:
Encoder positie
Stuurkracht (wat ik stuur naar het apparaat)

Iemand die hier ziet wat anders kan?

De broncode is vrij beschikbaar.

[ Voor 4% gewijzigd door ikt op 28-11-2016 02:12 ]