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.

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.

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 metodiAxesToOrientation
eGetOrientationImage
.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 metodiGetPositionFromOrientation2
eIsCompatibleWithPosKin
.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 metodoIsCompatibleWithPosKin
verifica se la cinematica di orientamento è compatibile con la cinematica di posizione.