Jump to content

Richiesta - Controllore di velocità orizzontale


tea_bag97

Recommended Posts

Salve a tutti. :)

Ultimamente, rigiocando a Mass Effect, mi sono messo in testa di costruire un lander simile al Kodiak, lo shuttle della Normandy. Per chi non avesse mai avuto il piacere di provare Mass Effect, il lander consiste in un abitacolo con quattro propulsori, due sul fronte e due sul retro, in grado di ruotare su due assi. Il vantaggio sta nel fatto che ogni propulsore, potendo ruotare indipendentemente, oltre conferire capacità analoghe a quelle di un VTOL, può anche eliminare la velocità orizzontale senza dover ruotare tutto il dispositivo, così da poter essere molto precisi nell'atterraggio. Sono riuscito ad abbozzare un prototipo grazie a Infernal Robotics, ma pilotarlo è quasi impossibile, anche utilizzando gli action groups. Un po' di tempo fa avevo notato sui forum un add-on che permetteva di controllare la velocità verticale, non sono sicuro in che modo perché non riesco più a ritrovarlo. :(

Immagino controllasse la potenza dei propulsori di modo tale che la velocità verticale fosse zero. Mi chiedevo se esistesse un analogo per la velocità orizzontale, che però fosse in grado di controllare e ruotare anche le parti di Infernal Robotics per orientare i motori in maniera corretta. Avete idee a riguardo?

Link to comment
Share on other sites

Uh, non credo esista un singolo add-on in grado di controllare la velocità orizzontale orientando i propulsori. Ce ne sono diversi che svolgono singole attività attinenti il problema, tipo i seguenti:

1) Gimbal Auto Trim : orienta i propulsori (tramite il gimbal), modo tenere la spinta centrata rispetto al CoM

2) Throttle Controlled Avionics : bilancia la spinta di diversi propulsori per rendere stabile il veicolo

3) Davon Throttle Control Mod : definisce comandi separati per diversi propulsori azionabili contemporaneamente

4) Horizontal Landing Aid : permette di azzerare la velocità orizzontale sopra un punto specifico

5) Vertical Velocity Control : controlla con precisione la velocità di discesa (probabile sia quello che non trovavi?)

Non ho però idea se un mix dei predetti possa funzionare, o se andranno in conflitto. Tra l'altro, non conosco add-ons in grado di comandare le parti di Infernal Robotics per ottenere automaticamente un risultato specifico (come nel caso in questione, azzerare la velocità orizzontale).

L'uso manuale delle rotazioni con Infernal Robotics penso sia estremamente arduo. Presumo sia particolarmente difficile mantenere bilanciato un mezzo mentre si comandano le rotazioni, a meno di potersi affidare agli add-on citati sopra almeno per questo.

Se io dovessi realizzare un mezzo tipo il Kodiak, penserei ad un nuovo add-on che incorpori le funzionalità necessarie da quelli sopra citati, oltre a modificare (o modellare ex-novo) un propulsore in modo che abbia il gimbal necessario (a tutti gli effetti, il gimbal è una rotazione - su due assi - del propulsore, già gestita nel codice di KSP: permette quindi di comandare direttamente l'orientamento per ottenere una spinta vettoriale, senza dover ricorrere alle complicazioni di IR).

Link to comment
Share on other sites

Hai ragione, anche se ho provato bene o male tutti gli add-on da te suggeriti (devo dire che sono veramente interessanti, soprattutto Throttle Controlled Avionics), nessuno di questi riesce a controllare IR.

La tua idea dello sfruttare il codice già esistente per magari creare una parte in grado avere un vectoring range significativamente maggiore, magari di 45° anziché 1°, è interessante, però dal poco che capisco di scripting dovrei modificare il codice in modo tale che l'orientamento del propulsore possa a seconda della situazione o rimanere fisso o essere alterato dal computer di bordo che fa le correzioni necessarie per azzerare la velocità orizzontale. Cerco di spiegarmi meglio: ci dovrebbe essere a mio avviso la possibilità di impostare posizioni predefinite fisse, come 0°, 90° e 180°, che corrisponderebbero in teoria a accelerazione, decollo e decelerazione, possibilmente attivabili con action groups, e poi la modalità atterraggio in cui la rotazione viene affidata al computer per azzerare la velocità orizzontale. Tutto questo mantenendo un'attitudine che eviti di schiantarsi al suolo distruggendo qualsiasi cosa, quindi facendo qualcosa di simile a porre un limite all'angolo d'attacco.

Quindi per quello che ho capito io qui si tratterebbe proprio di creare una mod da zero, e temo di non esserne proprio capace... Comunque, con MJ e Throttle Controlled Avionics sono riuscito a far "volare" per quanto mi ha consentito Ferram il Kodiak, ma il problema più pressante che ho avuto è stato controllare l'orientamento dei Rotatron di IR. Per caso conosci un modo per creare delle angolazioni predefinite come ho scritto prima, quindi 0, 90 e 180?

Link to comment
Share on other sites

Per quanto riguarda il gimbal è facilmente modificabile: è definito semplicemente da un valore nel file .cfg dei motori che lo hanno. Quindi basta (credo, non ho mai provato ad editare il gimbal!) aprire questo file col blocco note (Si trova in GameData/Squad/Part/Engines/(motore che ti interessa) ) e modificare questo valore.

//----------------------------------------------

MODULE //parte del file originale dell' LV-45

{

name = ModuleGimbal

gimbalTransformName = thrustTransform

gimbalRange = 1 //Rotazione massima

}

//---------------------------------------------

MODULE //Stessa parte modificata

{

name = ModuleGimbal

gimbalTransformName = thrustTransform

gimbalRange = 45 //adesso ruota di 45° !

}

//-----------------------------------------------

EDIT: Appena ho un po' più di tempo faccio un paio di prove, se mi viene qualcosa di buono magari lo metto su Dropbox!

Edited by PlonioFludrasco
Link to comment
Share on other sites

Bel problema, quello di avere angolazioni fisse oltre che quelle variabili! Sicuramente interessante come idea, ma non saprei proprio come possa essere fatto. Bloccando il gimbal, posso avere solo una posizione (quella con gimbal a 0°), di angolazioni diverse predefinite non ne esistono altre.

Certo, nelle mie precedenti considerazioni stavo cercando una possibile soluzione per la sola modalità atterraggio.

Angolazioni predefinite in realtà mi fa pensare al RCS block. Tuttavia, non conosco come viene gestito (da parte del modulo "ModuleRCS") per fare l'emissione alle angolazioni stabilite. I motori usano invece di norma il modulo "ModuleEngines" (oltre al "ModuleGimbal" se orientabili), sarebbe necessario fare qualche esperimento con la configurazione delle parti per verificare se sia possibile mescolarli.

In caso negativo (o se il risultato non sia adeguato graficamente, perchè il motore non verrrebbe ruotato ma solo il getto che ne esce) sarebbe proprio necessario ricorrere ad un add-on specifico. Sono convinto che tra i tanti modders nella comunità, qualcuno saprebbe realizzarlo, ma è da vedere se l'idea sia di loro interesse.

Link to comment
Share on other sites

@PlonioFludrasco Il problema però in questo caso sarebbe che i due assi di rotazione sarebbero l'asse del pitch e l'asse dello yaw (passatemi questi termini, non conosco il linguaggio tecnico), mentre effettivamente a me servirebbero quello del roll e dello yaw. Avrei usato IR perché mi avrebbe permesso di ruotare con un hinge i propulsori e quindi formare una specie di X, per avere un maggior controllo, ma pare che IR sia un mondo a sé stante per quanto riguarda l'interazione con le altre mod, quindi credo che lascerò perdere per un po', soprattutto dopo aver visto che fine fa il mio caro Kodiak quando arriva a 280 m/s... Large scale stall :confused:

@diomedea Credo che smanettando tra i moduli potrei fare più danni che altro... Magari IR non potrà interagire direttamente con le mod per il controllo di volo, ma che dici di KOS? Non l'ho mai usato, ma ho visto che BevoLJ nella sua serie su RO/RSS l'ha pesantemente utilizzato per i lanci. Magari ad un tasto si può associare la rotazione ad un angolo predefinito e insieme il thrust limiter...? Dico così solo perché non ho idea delle potenzialità che potrebbe offrire, e questa è l'unica cosa che mi viene in mente. E poi rimane il fatto che ha la aerodinamicità di un mattone...

Link to comment
Share on other sites

Teoricamente KOS potrebbe consentire il controllo automatico, l'ho usato per la realizzazione di autopiloti. Ma per il tuo scopo, occorre che KOS possa azionare gli attuatori (di IR, se continui ad usare quella mod per ruotare i propulsori), e devi scrivere un programma in KOS che ne regoli il movimento in base alla grandezza che vuoi controllare (tipo la variazione di velocità sui due assi orizzontali). Non è assolutamente banale, concettualmente scrivere un add-on che faccia lo stesso è appena un poco più complesso.

In realtà, se vuoi provare la strada di KOS, potrebbe essere interessante vedere se KSP Flight Computer sia un'alternativa valida. Non ho ancora avuto occasione di usarlo, ma alcune prerogative sono piuttosto interessanti, e potrebbe risultare una soluzione migliore per il tuo caso specifico.

Quanto al problema dello stall... mi sembra di capire che usi FAR, quindi occorre costruire il Kodiak in modo che risulti naturalmente stabile e bilanciato nel volo traslato (un bel problema, dato che non sembra che il Kodiak sia particolarmente aerodinamico). Se un veicolo si comporta da mattone, FAR lo farà finire come un mattone...non c'è scampo una volta che il drag prende il sopravvento sulle capacità di controllo esercitata dagli organi di governo (control surfaces, gimbal, reaction wheels o RCS).

Link to comment
Share on other sites

@TeaBag Se non sbaglio, se metti due motori simmetrici e non allineati al CoM (per esempio usando il bi coupler mk2) questi possono venire ruotati in modo da avere un momento anche attorno all'asse di roll.

Comunque, per quanto ne so, la rotazione delle parti tipo motori o superfici di controllo non viene fatta passando direttamente da comando x a rotazione attorno all' asse x di quella parte, ma viene anche considerata la posizione di quella parte prima di calcolare la rotazione.

Altrimenti non si spiega come, ad esempio, spostando con offset un alettone che si trovi dietro il COM fino a farlo trovare davanti ad esso, questo ruota in verso opposto rispetto a prima se invio lo stesso comando di pitch.

Se così fosse, avresti la rotazione proprio sui due assi che ti servono.

Un' altra cosa: se fosse possibile editare un cfg in modo da avere una parte che ruota come una superficie di controllo ma ha il "surface attachment" abilitato in modo da potervi connettere altre parti, si avrebbe una parte mobile come quelle di IR ma che è controllata dai comandi di volo.

Secondo voi è veramente possibile?

Link to comment
Share on other sites

Un' altra cosa: se fosse possibile editare un cfg in modo da avere una parte che ruota come una superficie di controllo ma ha il "surface attachment" abilitato in modo da potervi connettere altre parti, si avrebbe una parte mobile come quelle di IR ma che è controllata dai comandi di volo.

Secondo voi è veramente possibile?

Premetto che non ho (ancora) una conoscenza completa riguardo come le superfici di controllo vengono gestite in KSP (sebbene stia cooperando con alcuni modders che sviluppano codice per estenderne le capacità), ma almeno ho qualche conoscenza circa l'autopilota (sia il SAS che il RSAS).

In KSP (almeno fino alla 0.90, con la nuova aerodinamica della 1.0 qualcosa potrebbe cambiare) l'uso delle superfici di controllo serve solo al controllo d'assetto del veicolo (ovvero, a farlo ruotare in pitch, roll e yaw). L'autopilota nel codice di KSP è in grado solo di usare l'errore angolare su questi assi, per stabilire come debbano essere azionati i dispositivi di controllo (quindi, anche le deflessioni delle superfici). Infatti hai perfettamente ragione circa il posizionamento avanti o dietro il CoM, perchè l'autopilota inverte l'azione delle superfici in relazione alla loro posizione rispetto al CoM (e talvolta sbaglia ad azionare quelle davanti al CoM).

Nel codice di KSP non esiste un controllo circa gli spostamenti lineari (velocità o accelerazioni lungo i tre assi, come potrebbe essere nel sistema di riferimento locale di un pianeta, per Nord, per Est e verticale), quindi nessuna azione può essere ordinata ad alcun dispositivo (inclusi motori e RCS) perchè forniscano una spinta (opportunamente angolata) che "azzeri" l'errore di posizionamento lineare rispetto ad un valore desiderato.

Quanto precede, per indicare che le deflessioni delle superfici di controllo sarebbero comunque comandate per ottenere un assetto desiderato (angoli nei tre assi), e questo può essere totalmente slegato rispetto alle posizioni lineari: pertanto ottenere una spinta vettoriale nella direzione voluta non sarebbe possibile anche se i propulsori fossero montati sopra le superfici di controllo.

Operando manualmente con molta abilità, invece che usando l'autopilota, potrebbe tuttavia essere possibile impartire la deflessione voluta e quindi usare la spinta dei propulsori in modo vettoriale, ma occorre essere molto veloci per annullare ogni rotazione del veicolo (che verrebbe impartita in conseguenza del comando che origina la deflessione delle superfici). Tra le difficoltà, il fatto che il veicolo sarebbe intrinsecamente instabile, e solo l'azione di dispositivi di controllo lo potrebbe tenere nell'assetto voluto - mentre purtroppo le stesse azioni sarebbero usate per la traslazione vettoriale, quindi occorre molto rapidi ad annullare la spinta e ripristinare l'assetto ogni volta il veicolo inizi a ruotare. Altra notevole difficoltà, il fatto che se si usano superfici di controllo sotto al CoM, la deflessione è comandata in senso opposto alla rotazione comandata, e di conseguenza la spinta di propulsori montati sopra ad esse (ovvero, occorre comandare una rotazione in direzione opposta rispetto alla direzione della spinta vettoriale che si desidera ottenere: se voglio ottenere una spinta verso destra, il propulsore deve orientarsi a destra (senso orario), ma questo si ottiene con una deflessione della superficie di controllo sotto il CoM conseguente un comando di rotazione verso sinistra (senso antiorario)).

Link to comment
Share on other sites

Scusate se rispondo solo ora, ma in questi giorni non ho potuto giocare a KSP e ho avuto problemi di internet. Vi ringrazio molto per i suggerimenti, siete stati davvero competenti e d'aiuto, offrendo spunti a cui non avrei mai pensato... Comunque penso che per ora lascerò perdere questo progetto. Mi sembra un'impresa già solo andare a capire qualcosa da tutti i moduli, per non parlare di editare qualcosa... Anche se, leggendo principalmente (ma non sperimentando) mi sono documentato su kOS e ad una prima occhiata penso che si possa fare qualcosa per la stabilizzazione orizzontale, magari considerando il vettore spostamento e facendo in modo che i motori si orientino in maniera opposta. Ma come ha detto diomedea, il problema rimane l'integrazione automatica nell'SAS.

Appena possibile farò esperimenti e vedrò se sarà fattibile una cosa simile con kOS. Intanto ho scritto un paio di programmi per l'automazione del lancio e circolarizzazione e devo dire che mi sembra qualcosa che va a semplificare molto il gioco, anche se mi è stato detto più volte che anche le agenzie spaziali del mondo reale utilizzano autopiloti programmati, almeno per l'ascesa. Secondo voi usare kOS per i lanci di routine è cheating, o in qualche modo snatura KSP dell'aspetto del pilotare, oltre che costruire? Mi sento quasi in colpa :(

Link to comment
Share on other sites

...

Secondo voi usare kOS per i lanci di routine è cheating, o in qualche modo snatura KSP dell'aspetto del pilotare, oltre che costruire? Mi sento quasi in colpa :(

Guarda, hai messo il dito su uno degli argomenti che spesso ricorrono sul forum (in senso negativo). Ovvero, diversi forumisti pensano che KSP vada giocato senza "aiuti", più o meno come Squad l'ha realizzato, e criticano aspramente chi la pensa diversamente. E' una delle questioni che spesso impone ai moderatori di intervenire per consentire a chiunque di esprimere liberamente le proprie opinioni ma senza mai offendere altri.

Ti posso dire la mia opninione in proposito, che è praticamente simile a quanto pratica l'intero team di moderatori: chiunque giochi a KSP ha il diritto di farlo come meglio crede: può costruire i veicoli come crede, pilotarli come vuole, ed usare gli add-on che desidera. Tra l'altro, l'uso di un autopilota richiede comunque una certa abilità, e molto di più se l'autopilota è stato programmato proprio dal giocatore (che sia in KOS, o in qualsiasi degli altri add-on che lo consentono).

In quanto alla considerazione che in realtà tutti i mezzi spaziali fanno uso di autopiloti, è perfettamente vero. La possibilità di controllare manualmente un veicolo è limitata solo a casi di emergenze quasi inconcepibili (devono essersi guastati tutti i sistemi di guida primari e alternativi). Perlomeno per quanto riguarda il programma spaziale americano, la capacità di controllo da parte dell'equipaggio si deve solo all'impulso dato dai primi astronauti (in particolare, Schirra e Grissom) che non potevano accettare, da piloti collaudatori come erano, di essere "declassificati" a puri passeggeri (in particolare, mentre il programma degli aerei razzo, tipo X-2 e X-15, vedeva i relativi piloti effettivamente controllare il loro veicolo, e questi piloti facevano spesso notare la differenza tra loro ed i primi astronauti). Ed in realtà, l'azione di questi "astronauti piloti" è spesso stata negativa quando hanno potuto esercitare il pilotaggio autonomamente (es. volo Mercury di Carpenter).

Link to comment
Share on other sites

Già, in effetti anche solo il fatto che sono io a programmare l'autopilota ne giustifica l'utilizzo... mentre sinceramente non ho mai provato soddisfazione nell'utilizzare MechJeb. Grazie per la chiarificazione! :D

P.S.: Comunque dove hai imparato tutte queste cose? Sei un ingegnere o qualcosa del genere??

Link to comment
Share on other sites

...

P.S.: Comunque dove hai imparato tutte queste cose? Sei un ingegnere o qualcosa del genere??

Ti rispondo in PM, non vorrei che il thread venga dirottato se iniziamo a parlare di noi stessi (forse, argomento per un thread differente...)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...