[[guide:junction_speed:junction_deviation]]

Questa è una vecchia versione del documento!


Autore: Simone Persiani

Strategia

L'algoritmo Jerk Limiting opera su ciascun asse separatamente, senza cioè tener in considerazione l'effettiva traiettoria seguita dagli spostamenti che si succedono nel corso di una stampa. La Junction Speed in questo modo non viene influenzata da un fattore fondamentale: l'angolo \Theta tra uno spostamento ed il successivo, ovvero la "curvatura" della traiettoria. Si può facilmente intuire l'importanza di tale angolo: più l'angolo è grande meno sarà necessario rallentare, e viceversa. Il modello fisico implementato dal Jerk Limiting è quindi inaccurato e porta, generalmente, ad eccessivi rallentamenti (che aumentano inutilmente i tempi di stampa).

L'algoritmo Junction Deviation si propone invece di scegliere \vec{v}_{junction} tenendo conto anche dell'angolo \Theta. Il risultato è un algoritmo più semplice ed efficace, in grado di velocizzare la percorrenza di tratti curvilinei. Questo nuovo modello fisico permette di ottenere le \vec{v}_{junction} corrette in ogni occasione, adattandosi alle più diverse situazioni.

L'algoritmo

NOTA DELL'AUTORE: Attualmente la migliore spiegazione dell'algoritmo si trova qui: Improving Grbl cornering algorithm. È disponibile solo in lingua inglese. Per questo motivo, se dovesse servire, potrei dedicarmi alla sua riscrittura in lingua italiana.

Configurazione dei parametri

Per attivare questa funzionalità è necessario assicurarsi di aver abilitato l'opzione JUNCTION_DEVIATION. I parametri attualmente disponibili sono i seguenti:

#define JUNCTION_DEVIATION
#define JUNCTION_DEVIATION_MM 0.05 // valore decimale maggiore o uguale a 0
//#define JUNCTION_DEVIATION_INCLUDE_E
  • Per comprendere l'opzione JUNCTION_DEVIATION_MM è strettamente necessario aver capito a fondo il funzionamento dell'algoritmo. Si faccia riferimento alla guida di cui sopra è stato fornito il link. Si sappia che è un valore espresso in mm e che un range sicuro di possibili valori va da 0mm a 0,5mm. Ovviamente questi valori vanno testati sulla propria macchina procedendo per tentativi;
  • Per fare in modo che per la valutazione dell'angolo di curvatura venga tenuto in conto anche l'avanzamento/ritrazione del filamento, è necessario abilitare l'opzione JUNCTION_DEVIATION_INCLUDE_E. Questa opzione è assolutamente sperimentale! Siccome abilitando tale opzione l'angolo verrebbe calcolato in uno spazio quadridimensionale XYZE, nemmeno gli sviluppatori del Junction Deviation sono in grado di predirne con sicurezza gli effetti! L'opzione è presente perché il planner ha a disposizione anche i dati relativi all'estrusore: siccome lo sforzo che sarebbe servito per aggiungere tale possibilità era davvero minimo, pur non riuscendo ad immaginarne gli effetti o l'utilità, gli sviluppatori hanno pensato di lasciare tale funzione e di permettere agli utenti di sperimentarla sulle loro macchine per verificare se ciò possa produrre miglioramenti apprezzabili o meno.

L'analogia dell'automobile

Se volessimo utilizzare un'analogia per far comprendere meglio il significato dei primi due parametri, faremmo sicuramente riferimento ad un'automobile che si appresta ad affrontare una curva stretta.

In questa analogia, tratta dalla guida sopra citata, JUNCTION_DEVIATION_MM rappresenta la larghezza della strada rispetto a quella dell'automobile: impostarlo a zero significa che la strada sarà della stessa larghezza della vettura, la quale sarà costretta (come se fosse su di un binario) a rallentare molto per affrontare la curva senza uscire dalla carreggiata. Viceversa, aumentare tale valore renderà la strada più larga e permetterà all'automobile di scegliere una traiettoria più veloce (con la differenza che nel caso della stampante la traiettoria rimarrà ovviamente la stessa ma sarà percorsa a velocità maggiore).

I due parametri vanno quindi impostati tenendo conto del loro significato fisico/geometrico. L'utente è libero di sperimentare per trovare i valori limite della propria stampante ma il consiglio è quello di non allontanarsi troppo dai valori di default, a meno che non si sappia esattamente cosa si stia facendo.

Autore: Simone Persiani