Vai al contenuto
PLC Forum


Risolutori free cinematica inversa


Eleonora Fontana

Messaggi consigliati

Eleonora Fontana

Ciao a tutti!

Spero di aver azzeccato la sezione in cui porre la domanda.

Ad ogni modo, ho un problema: esistono dei software possibilmente free che risolvano problemi di cinematica inversa?

In pratica, ho dei motori comandati da PLC e mi farebbe comodo avere un software che, date le coordinate x y e z restituisca al PLC di quanti gradi e come far muovere i miei motori.

Ringrazio già chiunque mi risponda!

Link al commento
Condividi su altri siti


emanuele.croci

Ciao,

Personalmente non conosco software di questo tipo.

Ma quando mi è capitato in passato ... ho risolto con un po' di trigonometria (se non serve una interpolazione precisa degli assi durante il percorso).

Chiaramente dipende anche dal tipo di cinematismo , da quanto è complesso.

Saluti Emanuele

Link al commento
Condividi su altri siti

Eleonora Fontana

Ciao, grazie per avermi risposto! 

Con i motori che ho a disposizione devo poter comandare un puntatore a LED che in un certo istante di tempo sia in grado di trovarsi in una posizione specifica. Speravo di riuscire ad alleggerire il lavoro perchè dovrei avere tre gradi di libertà..

Link al commento
Condividi su altri siti

emanuele.croci

Ma per curiosità il cinematismo come è fatto?

A intuito, sembrerebbe che tu abbia 2 motori per ruotare un puntatore LED in una certa direzione ? dico bene?

Link al commento
Condividi su altri siti

emanuele.croci

Facciamo un esempio in 2D, per semplicità.

Devo "sparare" un LED alla posizione (x;y) e per farlo posso ruotare un raggio sul piano cartesiano , di un angolo alfa.

Quindi alfa = arctg( y / x)

A questo punto metto come Setpoint del mio anello di posizione il valore alfa.

Il motore cercherà di raggiungere questa posizione.

Se voglio un funzionamento più "morbido" (esempio , arrivarci in un tempo T) : metto come setpoint del mio anello di posizione 

(alfa - alfaini) * (t / T) + alfaini

 

In modo simile, posso aggiungere una 3° dimensione Z con un 2° motore (angolo beta).

 

Dico bene?

In bocca al lupo , ciao!

 

 

Modificato: da emanuele.croci
Link al commento
Condividi su altri siti

Eleonora Fontana

Per il momento dispongo di tre motori per ruotare il puntatore in qualsiasi direzione, quindi appunto date le coordinate finali x,y,z vorrei capire se c'è un metodo per dire al PLC di quanto far muovere ciascuno dei motori: in questo modo, sull'ambiente di sviluppo (Control FPWin Pro 7) posso usare uno dei FB qualsiasi della libreria del Motion per comandarli.

Questo metodo posso anche implementarlo io sotto forma di algoritmo, ma purtroppo non ho molte nozioni di base di meccanica, quindi capire bene ciò che hai detto e poi scrivere il codice mi risulta un po' difficile, scusami...

Riusciresti a spiegarlo in un altro modo?

Ti ringrazio in anticipo!

Modificato: da Eleonora Fontana
Link al commento
Condividi su altri siti

emanuele.croci

Ma io non capisco come mai ci siano 3 motori. Mi sembra che uno sia di troppo.

Con 1 motore fai ruotare il raggio sul piano orizzontale (immaginiamo "un cannone" che può essere puntato a Nord , a Est, a X gradi rispetto al nord ecc)

Con il 2° determini quanto il raggio si deve alzare dal piano orizzontale , verso il cielo.

Ma se ci sono 3 motori ... sarà fatto in altro modo?

Senza conoscere il meccanismo , è impossibile determinare sia le formule dirette che quelle inverse.

 

In ogni caso , bisogna appurare se in quel PLC sono disponibili le funzioni trigonometriche (onestamente non lo so). In particolare, arcotangente.

Ciao Emanuele

Link al commento
Condividi su altri siti

20 ore fa, Eleonora Fontana ha scritto:

vorrei capire se c'è un metodo per dire al PLC di quanto far muovere ciascuno dei motori: in questo modo,

 

A parte le perplessità relative al 3° asse già espresse da emanuele.croci, bisogna capire se necessiti di un movimento in terpolato o meno.

Sempre per semplificare ipotizziamo solo 2 assi.

Se devo muovere un dispositivo con interpolazione per disegnare una curva o una retta, allora devo controllare la posizziuone dei 2 assi ad ogni dx e dy, in modo che il dispositivo controllato segua una traiettoria ben precisa, ovvero risolvo l'equazione della curva o della retta che approssima la taiettoria desiderata. Questo è un movimento tipico, ad esempio, di un utensile di una macchina utensile come un pantografo.

 

Se invece devo copiere un lavoro tipo "pik and place", dove ci sono appunto 3 assi ed in cui l'asse z rappresente il movimento verticale dell'attrezzo, la seqeunza delle operazioni è (può essere) differente. Se non ho vincoli sui movimenti, porto l'asse z tutto alto, mimuovo alla quota stabilita per l'asse x (o y), poi raggiungo la quota dell'asse y (o x), porto l'asse z con l'attrezzo alla quota in cui si aggancia il pezzo da prendere e spostare, ripeto la seqeunza con le quote x,y relative al punto in cui devo posare l'oggetto prelevato.

Come vedi in questo caso si tratta di effettuare 3 movimenti indipendenti e non coordinati.

Per aumentare la velocità di lavore, se non ci sono vincoli, si possono muovere contemporaneamente tutti e 3 gli assi.

 

In genere per effettuare movimenti di questo tipo quasi tutti i PLC dispongono di funzioni di libreria per il posizionamento, dove è sufficiente passare posizuione, velocità e accelerazione.

Link al commento
Condividi su altri siti

Eleonora Fontana

Scusate il ritardo nella risposta, purtroppo il progetto sta ancora prendendo forma quindi ci sono tantissimi dettagli che mutano e si perfezionano via via.

Ad ogni modo, avendo tre motori l'obiettivo è implementare un controllo di cinematica per il manipolatore parallelo sferico a tre gradi di libertà Agile Eye.

Sto creando un'interfaccia basic con C# e sto cercando di capire come effettuare tramite implementazione, ma, avendo poche basi di meccanica, il tutto si sta rivelando più impegnativo del previsto.

A tal proposito, avete magari dei testi da consigliarmi per riuscire ad impostare il problema?

Grazie ancora.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...