Skip to main content

Combinazione di cinematica di posizione e orientamento

Con il configuratore di gruppi di assi è possibile combinare cinematica di posizione e cinematica di orientamento. In questo modo è possibile configurare un gran numero di robot con un numero limitato di cinematiche.

Esempi di cinematica di posizione includono i gantry (Kin_Gantry3) e treppiedi (Kin_Tripod_Lin, Kin_Tripod_Rotary). Queste cinematiche possono viaggiare in qualsiasi punto o posizione, ma non possono eseguire un numero qualsiasi di orientamenti. Il sistema di coordinate anteriore di un sistema cinematico di posizione viene chiamato sistema di coordinate della flangia. Definisce il luogo in cui vengono fissate le cinematiche di orientamento (figura a sinistra).

Esempi di cinematica di orientamento sono Kin_CAxis, Kin_Wrist2, e Kin_Wrist3. Queste cinematiche possono determinare un orientamento desiderato del TCP, ma non possono raggiungere alcuna posizione (vedi figura a destra).

Combinando sia la cinematica di posizione che la cinematica di orientamento, è possibile percorrere un numero qualsiasi di posizioni nell'orientamento desiderato o viceversa.

_sm_img_positioning_tool_kinamatics.png

Combinazioni non valide

Non tutte le combinazioni di cinematica di posizione e cinematica di orientamento sono possibili perché a volte non è possibile determinare un'unica trasformazione inversa. Un esempio è uno SCARA con due giunti articolati come cinematica di posizione e Kin_CAxis_Tool come cinematica di orientamento con una correzione utensile diversa da 0 nella coordinata X o Y. L'orientamento del sistema di coordinate della flangia dello SCARA non è costante. Viene ruotato attorno all'asse Z rispetto alla posizione 0. Per il calcolo della trasformazione inversa, questa rotazione non è ancora nota, il che rende impossibile determinare chiaramente gli angoli dell'asse in questo caso.

In runtime è possibile verificare se una combinazione è possibile, poiché dipende dalla parametrizzazione della cinematica. In questo caso, l'errore SMC_TRAFO_INVALID_COUPLING viene emesso.

Comportamento durante la programmazione di orientamenti "impossibili".

In pratica è spesso utile poter programmare orientamenti che non sono disponibili per la cinematica. Come semplice esempio, si consideri un robot SCARA con un utensile avente un grado di libertà (rotazione attorno all'asse Z). In linea di principio, questo robot può accettare solo orientamenti in cui l'utensile punta verticalmente verso il basso.

Quando le posizioni devono essere percorse su un pezzo, sarà facilmente inclinato dal piano X/Y. L'utente insegna il pezzo e quindi programma le posizioni e gli orientamenti relativi al pezzo. L'inclinazione del pezzo determina orientamenti in cui la direzione dell'utensile è leggermente inclinata rispetto alla verticale.

_sm_img_impossible_orientation.png

Come affrontare un orientamento così impossibile e irraggiungibile? Una misura drastica sarebbe segnalare una violazione dello spazio di lavoro. Tuttavia, come mostra l'esempio, ciò renderebbe noiosa la programmazione. Pertanto, la cinematica di orientamento (Kin_CAxis_Tool in questo esempio) sono implementati in modo tale da assumere l'orientamento più vicino ottenibile. In questo esempio ciò significa che l'orientamento comandato viene inclinato in modo tale che l'utensile sia in posizione verticale e questo orientamento venga accettato.

Il comportamento può essere ridotto alle seguenti regole (ammesso che la cinematica di posizione possa posizionarsi in tutte e tre le direzioni spaziali):

  • La posizione viene sempre avvicinata esattamente (altrimenti viene segnalato un errore).

  • L'orientamento viene "proiettato" a quello accessibile più vicino se non è raggiungibile.

  • Quando si proietta l'orientamento, la direzione dell'utensile ha la priorità.

Le difficoltà qui descritte sorgono perché la cinematica di orientamento non ha i tre gradi di libertà per ottenere tutti gli orientamenti desiderati. Questo è il caso di Kin_Wrist2 e Kin_CAxis, ma non con Kin_Wrist3.

Ulteriori difficoltà sorgono quando anche la cinematica di posizione non ha tutti i gradi di libertà spaziali. (Questo non si verifica spesso nella pratica.) Un esempio è la combinazione di Kin_Gantry2, un gantry posizionabile solo in X/Y, e con Kin_Wrist2, uno strumento con solo due gradi di libertà. In questo caso, ci sono sia orientamenti impossibili che posizioni impossibili, perché la coordinata Z è già definita dalla lunghezza dell'utensile e dalla posizione dell'asse di orientamento. Consigliamo quindi di non utilizzare questo tipo di combinazioni, ma di programmare solo posizioni raggiungibili.

Osservazioni sulla cinematica personalizzata

Gli utenti che desiderano creare una propria cinematica di posizione o orientamento devono implementare le seguenti interfacce aggiuntive nei propri blocchi funzionali cinematica:

  • Per la cinematica di posizione: L'interfaccia ISMPositionKinematics2 con i metodi AxesToOrientation e GetOrientationImage. AxesToOrientation è una trasformazione in avanti "abbreviata" che calcola l'orientamento del sistema di coordinate della flangia dai valori dell'asse. È necessario solo per ragioni di efficienza. Ad esempio, non è necessario calcolare nulla con un gantry, ma è possibile restituire un orientamento costante. GetOrientationImage restituisce come può cambiare l'orientamento del sistema di coordinate della flangia. Questo metodo è necessario solo per verificare se la cinematica di orientamento è compatibile con la cinematica di posizione.

  • Per la cinematica di orientamento: L'interfaccia ISMToolKinematics2 con i metodi GetPositionFromOrientation2 e IsCompatibleWithPosKin. GetPositionFromOrientation2 calcola il vettore tra il sistema di coordinate della flangia e TCP dall'orientamento desiderato (in MCS). Questo calcolo è necessario per la trasformazione inversa della cinematica combinata. Il metodo IsCompatibleWithPosKin verifica se la cinematica di orientamento è compatibile con la cinematica di posizione.