Perché un altro braccio robotico ?
Esistono molti bracci robotici in commercio: perché proporne un altro? Perché questo progetto mostra un approccio innovativo che riduce la meccanica quasi a zero e permette a chiunque di costruirsi un piccolo braccio robotico in casa spendendo pochissimo. Inoltre, e sembra incredibile, si ottiene una precisione maggiore di quella di prodotti commerciali da 200/500 Euro, abbastanza per scrivere, disegnare e fare piccole lavorazioni.
Vista di insieme
Una vista di insieme del RobotArm che ha appena eseguito un piccolo disegno.
Video del RobotArm in azione
I prossimi video mostrano la buona precisione nella esecuzione di un piccolo disegno e la eccezionale ripetibilità che viene dimostrata ripassando il disegno con errori intorno al decimo di millimetro, praticamente invisibili anche con un forte ingrandimento. In alcuni video la traccia audio è stata amplificata per evidenziare i rumori di ambiente e dimostrare che la velocità di spostamento è quella reale.
RobotArm_Precision_1.wmv - Un video che mostra la buona precisione nel disegno.
RobotArm_Precision_2.wmv - Un video, ingrandito, sulla precisione nel disegno.
RobotArm_RepeatabilityTest1.wmv - Un video sulla ripetibilità di posizionamento.
RobotArm_RepeatabilityTest2.wmv - Secondo video sulla ripetibilità di posizionamento.
RobotArmMilling.wmv - Un video del RobotArm che esegue una piccola lavorazione con la fresa.
Se i video non si aprono fate click sul quadratino con la croce in alto a destra, nella riga di "Seguici con Google Plus", vicino al "CLOSE" grigio poco visibile, oppure scaricate questo articolo in PDF che contiene link diretti ai video e immagini con risoluzione maggiore. Questo articolo in formato PDF: RobotArm.pdf
Caratteristiche del RobotArm versione LowCost - 9 euro
Questa versione è composta da quattro servocomandi HXT900, tre piccole piastrine di alluminio e una base in legno.
Costo della meccanica: 9 euro (1) Precisione: 1.5 mm (2) Ripetibilità: 0.8 mm (2) Velocità dei "rapidi" 500 mm/sec (1) 4 servo da 2 euro più un euro di alluminio e legno (2) Su un campo di azione di 100 mm x 50 mm x 40 mm
Caratteristiche del RobotArm versione DeLuxe - 33 euro
Questa versione è composta da tre servocomandi digitali TGY930, un servocomando HXT900, tre piccole piastrine di alluminio e una base in legno.
Costo della meccanica: 33 euro (1) Precisione: 0.4 mm (2) Ripetibilità: 0.1 mm (2) Velocità dei "rapidi" 900 mm/sec (1) 3 servo da 10 euro, uno da 2euro più un euro di alluminio e legno (2) Su un campo di azione di 160 mm x 80 mm x 50 mm
Confronto con i bracci robotici commerciali
Esistono molti bracci robotici in commercio, dai più semplici che si possono comprare o costruire, a partire da 200 Euro, fino ai robot industriali, che riescono a spostare centinaia di chili con velocità, precisione e prezzi impressionanti.
Qui di seguito un buon esempio di piccolo braccio robotico, ben studiato, che negli USA costa 199 Dollari ma che in Italia costa circa 280 Euro (solo meccanica e motori - in kit di montaggio), a cui occorre aggiungere l'elettronica (es. Arduino da 25 Euro): ArduinoGripper-6-dof-programmable-clamp-robot-arm
E qui si può vederlo al lavoro: Video_YouTube_9w6tKcZzhYo
Se i link non si aprono fate click sul quadratino con la croce in alto a destra, nella riga di "Seguici con Google Plus", vicino al "CLOSE" grigio poco visibile, oppure scaricate questo articolo in PDF che contiene link diretti e immagini con risoluzione maggiore. Questo articolo in formato PDF: RobotArm.pdf
Questo braccio robotico, costruito con molta cura per aumentare la stabilità meccanica, dispone anche di una base con cuscinetto reggispinta ed è un buon esempio di quello che si trova attualmente in commercio nella fascia dai 200 ai 500 Euro.
Il costruttore non dichiara le caratteristiche di precisione e ripetibilità, ma si può vedere dai filmati che questi valori sono intorno ai 5 mm, sufficienti per prendere e spostare piccoli oggetti, ma senz'altro troppi per scrivere o disegnare.
Particolare delle staffe, con il secondo perno di rotazione dal lato opposto rispetto all'asse del servocomando.
Particolare delle della base rotante dotata di cuscinetti reggispinta.
Qui iniziano le istruzioni
per la costruzione del RobotArm
I nomi usati nella robotica
Ecco lo schema di base di un braccio robotico "articolato" a 4 giunti, "Joint", "Link" e "Tip" sono i nomi comunemente usati nella robotica.
I "Joint" sono gli assi di rotazione che, nel nostro caso, coincidono con i perni dei servocomandi.
I "Link" sono i bracci rigidi che collegano i servo tra di loro.
Il "Tip" è la punta che, nel nostro caso, viene mantenuta sempre verticale dal Joint 3.
Il primo servocomando è avvitato nella base di legno, cercate di posizionarlo con l'asse ben verticale. Sulla destra si vede il suo cavetto che entra attraverso una fessura praticata nel coperchio.
La base è una scatola di legno riempita di sferette di acciaio e pesa abbastanza da tenere ben fermo il foglio (al posto delle sfere di acciaio si potrebbero usare piccole pietre, sabbia, ghiaia, pezzi di piombo, piastre di ferro, viti o dadi).
Sotto alla scatola, nei quattro angoli, si incollano dei gommini morbidi che danno maggiore stabilità alla base e aiutano a fare una buona presa sulla carta. I gommini devono essere sottili perché posizionando il servocomando di base più in basso possibile si ottiene una maggiore precisione.
Particolari meccanici - il "Link 0"
Il "Link 0" è costituito da una piccola "L" in alluminio. La base nera rotonda è una delle staffe sempre in dotazione con i servocomandi. Anche le quattro viti parker sono spesso nel sacchetto del servocomando. Consiglio però, quando si ordinano i servocomandi, di ordinare da HobbyKing anche qualche sacchetto da 100 viti parker nei formati più piccoli (1.5 e 2 mm) Sono viti difficili da trovare altrove, costano poco e saranno utili in molti casi.
Particolari meccanici - il "Link 1"
Il "Link 1" è il pezzo meccanico più 'complesso', si fa per dire, di tutto il RobotArm.
Il "Link 1" viene avvitato con quattro piccole viti parker alle crocette, che sono sempre fornite assieme ai servocomandi. Uno dei bracci lunghi della crocetta in nylon deve essere tagliato con le tronchesine per non farlo sporgere. La crocetta viene poi avvitata al servocomando attraverso il foro centrale.
Per forare con precisione potrebbe essere utile stampare una “dima” su carta, come la seguente, e poi sovrapporla al pezzo da forare attaccandola con scotch trasparente.
Questa è la versione per i servo HXT900. A seconda dei servo usati, i fori dovranno essere spostati leggermente, usate come riferimento le piastrine in plastica che sono sempre allegate ai servo.
Le mie prime piastrine erano in alluminio, poi ho scoperto che è ancora più facile farle con la vetronite ramata: ve la consiglio.
Come scegliere la lunghezza dei Link 1 e 2
La lunghezza del "Link 1" può essere aumentata per avere più raggio di azione (ma una precisione minore); oppure può essere ridotta per avere minor raggio di azione e precisione maggiore.
Quando si decide la lunghezza del "Link 1" è bene fare in modo che corrisponda a quella del "Link 2". In questo modo durante i "rapidi" (servo alla massima velocità) la punta non tende a salire o a scendere.
Dato che la lunghezza del "Link 2" non può diminuire sotto a un certo valore (devono starci i servo "2" e "3" uno dopo l'altro), sono consigliabili le misure seguenti: 60 mm per i servo TGY930 e 45 mm per i più piccoli HXT900. Queste sono le misure minime e consentono la massima precisione, se si accetta di perdere precisione si possono allungare i Link 1 e 2 a piacere e coprire un raggio di azione anche molto grande (ricordarsi di mantenere i due link sempre uguali tra di loro)
La lunghezza dei "Link" si misura sempre tra i centri dei perni di rotazione.
Particolari meccanici - il "Link 2"
Il "Link 2" è costituito da una piccola piastrina rettangolare di alluminio con tre fori e da tre viti da 2 mm con dado (se si usano i servo piccoli i fori e le viti sono solo due).
Nella parte destra si può notare un'asola, fatta con la lima, delle stesse dimensioni del servo HXT900 (azzurro nella foto), che serve per tenerlo ben fermo anche senza stringere molto la vite; ma è una finezza che si può anche evitare.
Particolari meccanici - il "Link 3"
Il "Link 3” è semplicemente il collegamento tra l'asse dell'ultimo servo e la penna.
Nel programma di controllo questo "Link" ha più parametri degli altri perché è necessario definire con precisione dove effettivamente si trova la punta, rispetto ai centri di rotazione, in tutte e tre le direzioni ortogonali X, Y e Z.
Il collegamento con la penna
Per realizzare il "pennino” si prende una biro molto morbida e la si attacca con due giri di nastro isolante alle normali crocette, che sono sempre in dotazione con i servo.
Se poi si alleggerisce la parte superiore e si aggiunge un elastico o una molla che spingono l'anima in basso si ottiene una scrittura molto migliore, meglio anche accorciare la penna per evitare che possa intralciare i movimenti.
I pennarelli sono poco funzionali, sono pesanti, non si possono alleggerire, e si seccano velocemente. Le penne a gel con tratto largo sono le migliori, ma sono difficili da alleggerire.
Possibili alternative alla penna
Scrivere con una penna è un compito abbastanza inutile, le stampanti sono più veloci e più precise. Ma un braccio robotico può fare anche molte altre cose, prendere piccoli oggetti per mezzo della depressione dell'aria, con un servocomando, una siringa e un lungo tubicino, o addirittura improvvisarsi MAKER ed effettuare piccole lavorazioni con un motore brushless e una fresa.
Guardate questo video! RobotArmMilling.wmv
Con i giunti in plastica e nylon attuali la rigidezza del RobotArm è scarsa per cui si possono lavorare solo materiali molto morbidi come la cera, il sapone e legni morbidi come la balsa. Inoltre si deve lavorare a bassa velocità e la precisione è scarsa. Però, dato che esistono servocomandi come il TGY930, con perni metallici dotati di due cuscinetti e rigidissimi, sostituendo i giunti con equivalenti in ottone si farebbe un salto di qualità. Per ottenere prestazioni ancora maggiori esistono servo ancora più potenti e robusti (attenzione che devono anche essere precisi e con una "dead-band" molto bassa).
Ecco un modo semplice per fissare un motore brushless. Il motore è un "Turnigy C1822-2100" (7 euro) e viene pilotato da un controller "Turnigy PLUSH-10A" (8 euro) che a sua volta viene regolato in velocità da 0 a 30000 giri da un segnale standard per servocomandi in arrivo da uno dei canali del modulo "Slave-Servo". La fresa è una "Proxxon 28 321" in carburo di tungsteno, da 0.8mm che costa circa 4 euro. Motore e controller sono reperibili presso www.hobbyking.com, la fresa presso qualunque buon ferramenta o "Brico". Per fissare la punta si prende un tondino in ferro o ottone e lo si fora da parte a parte con punta piccola, si allarga da un lato del diametro esatto della punta, e dall'altra del diametro del motore. Poi si controlla che i due perni entrino sforzando leggermente, si mettono due gocce di adesivo anaerobico (ad esempio Bostik anaerobico ferma-viti) e si piantano i due perni. La punta deve essere più corta possibile.
Elettronica di collegamento con il PC
Questa immagine mostra l'elettronica di controllo, che è molto semplice.
Il modulo a sinistra è il "Master" che interfaccia la porta USB del PC con la linea seriale che va al modulo "Slave" il quale, a sua volta, controlla i quattro servocomandi (potrebbe pilotarne fino a un massimo di 10).
In basso si vede la presa USB, quando si collega il cavo al PC il RobotArm viene immediatamente riconosciuto, senza fastidiose installazioni di driver con tutti i problemi collegati.
Sul sito www.theremino.com nella sezione "Technical" si possono trovare gli schemi elettrici, i piani di montaggio e molte altre informazioni utili (tutto in Open Source)
Condensatore aggiuntivo
La massima corrente prelevabile dalla porta USB è di 500 mA. Poiché i servocomandi, soprattutto quelli digitali, assorbono molta corrente durante lo spunto, potrebbe accadere di mandare in protezione la porta USB o di avere cali temporanei di tensione in grado di produrre errori di trasmissione.
Quindi, per poter di alimentare il RobotArm senza alimentatore esterno è bene aggiungere un condensatore elettrolitico da 2200 uF da almeno 6 Volt tra il +5V e GND.
In questa immagine si vede il condensatore collegato al modulo "Slave"
I servo da me adottati consumano poco, quasi tutti i servo digitali di classe superiore (più potenti, ma non necessariamente più precisi) consumano così tanto che anche il condensatore non è più sufficiente. Se si sperimentano frequenti errori di trasmissione o al limite completi blocchi della trasmissione quando si muovono i motori, questo è sicuramente dovuto al 5 Volt che cede e che, nei casi peggiori, porta addirittura al reset dei micro-controllori con conseguente perdita della comunicazione. In questi casi, per ripristinare la comunicazione, si deve scollegare l'USB, ricollegarla, e rifare il riconoscimento dei moduli. Se vi succede spesso c'è una sola cura, un alimentatore esterno da 5 Volt - 2 Ampere (oppure 5 Volt - 5 Ampere se state usando servo da 10 Kg/cm o più). Per collegare un alimentatore esterno si taglia il filo rosso della prolunga che collega il "Master" con lo "Slave" e si collega l'alimentatore al +5V e "GND" dello "Slave".
Nel mio caso, ho collegato il negativo ai due pin marcati GND e per il positivo ho fatto due fori e aggiunto due pin indicati dalla freccia verde in modo da permettere un collegamento più comodo, senza piegare troppo i fili.
Normalmente invece, il condensatore va inserito sui due pin "GND" e i due "V+" indicati dalle frecce di colore arancio e non è quindi necessario forare e saldare i due pin aggiuntivi.
Il software
L'applicazione "Theremino_Arm" (per Windows e Linux) è reperibile sul sito www.theremino.com nella pagina "Downloads/Uncategorized".
Questo software è Open Source con licenza “GNU General Public License Version 3", per cui, nella pagina di download è disponibile anche la versione completa di tutti i sorgenti. Un buon programmatore potrebbe aggiungere assi o cambiare il tipo di robot ad esempio in robot "scara" (ma dovrebbe modificare le formule di cinematica diretta e inversa che attualmente valgono solo per un "articolato" a 4 assi). Tenete conto anche che questa applicazione non pilota direttamente i moduli di InOut ma scrive solo negli "Slot" (Interprocess Communication) da li in poi ci vuole l'HAL (Hardware Abstraction Layer) che si occupa dell'hardware (anch'esso Open Source).
Nel riquadro "Arm properties" si devono impostare le lunghezze esatte LenX, LenY e LenZ dei quattro Links, misurandole con un calibro tra i centri dei perni di rotazione. Nelle quattro caselle "Delta" si deve impostare un angolo di taratura (in gradi) e qui ci vuole davvero molta esperienza.
Due brevi suggerimenti: fate in modo che il braccio reale abbia gli stessi angoli di quello del programma (che è rappresentato con linee grigie e pallini nero, blu, verde e rosso e visto lateralmente), ma nel contempo fate attenzione che i cursori non vadano a fondo scala in alto o in basso riducendo così l'area di lavoro. Per centrare i cursori si deve smontare il "Joint" dal servo, spostarlo di uno o più denti e poi ritarare il suo delta.
Io solitamente faccio la taratura un po' a caso, per approssimazioni successive, ma qualcuno potrebbe preferire la check-list della prossima pagina, precisa, ma difficile da seguire e anche molto noiosa.
Taratura delle lunghezze e degli angoli
E' bene fare le seguenti operazioni senza pennino. Con la rotella del mouse si alza e abbassa la punta (asse Z) e muovendo il mouse sull'area gialla, con il tasto sinistro premuto, si muove la punta in orizzontale (assi X e Y). Per muovere i servo uno per uno si possono anche usare i cursori in basso, con il mouse, o con le frecce SU e GIU che permettono spostamenti micrometrici (un microsecondo per volta), utili anche per provare i servo e valutare la loro Dead-Band.
Prima di tutto si inseriscono le lunghezze dei "Link" misurandole con il calibro da centro a centro degli assi di rotazione dei motori. (misure in millimetri)
Casella "Joint 0 - LenY" = distanza orizzontale tra gli assi del motore zero (nella base) e motore 1
Casella "Joint 0 - LenZ" = distanza in verticale tra la carta e l'asse del motore 1
Casella "Joint 1 - LenY" = lunghezza del "Joint 1" (tra gli assi del motore 1 e motore 2)
Casella "Joint 2 - LenY" = lunghezza del "Joint 2" (tra gli assi del motore 2 e del motore 3)
Caselle "Joint 3 - LenX, LenY e LenZ" = spiazzamenti della punta scrivente nelle tre direzioni.
(mormalmente, con punta centrata, "Joint 3 - LenX e LenY" si impostano a zero)
Poi si impostano "Delta" e "Inv" con i valori delle immagini seguenti.
Valori per servo HXT900 con links da 45mm Valori per servo TGY930 con links da 60mm
Con questi valori approssimativi si centrano i link sui perni dei motori (svitandoli e avvitandoli in posizione ruotata in modo che gli angoli fisici siano approssimativamente uguali a quelli mostrati sullo schermo dalle linee grigie). Poi si affinano i valori di "Joint 1 - Delta" e "Joint 2 - Delta" in modo che gli angoli fisici siano esattamente uguali a quelli mostrati su schermo. (questa operazione è più facile se si posiziona il punto rosso con il mouse in modo che il primo link sia verticale)
A questo punto muovendo il punto rosso con il mouse, la punta del braccio robotico dovrebbe muoversi in modo sensato. Se così non avviene vuol dire che alcuni assi ruotano al contrario (esistono modelli di servo che girano al contrario, oppure alcuni servo sono stati montati dal lato opposto rispetto al mio progetto). Lasciamo perdere le caselle "Inv.0" e "Inv.3" che, per ora, non provocano grossi danni anche se sono sbagliate e proviamo a invertire la "Inv.1" e la "Inv.2" fino a che si riesce ad ottenere il comportamento giusto.
Se la punta del braccio non si muove su piani ortogonali i rettangoli diventano dei trapezi e le linee rette diventano delle curve evidenti: allora è bene ricontrollare tutte le lunghezze dei "Link" perché una di esse è stata impostata con un errore grossolano.
Se la punta del braccio non si muove parallelamente al piano di base si deve regolare il valore del "Joint 1 - Delta" nel verso che alza la punta, se allontanando la punta dalla base questa si abbassa, e viceversa se si alza.
Se un servo tende ad arrivare a fondo corsa l'area di lavoro si riduce ed è bene svitarlo, avvitarlo in posizione ruotata e rifare la taratura del suo "Delta".
Infine si mette il pennino e si fa in modo che stia sempre verticale. Poi, con la rotella del mouse, si fa scendere la punta fino a che il valore "Tip Z" segni zero e si regola il valore della casella "Joint 3 - Len Z" in modo che sfiori la carta senza premere troppo.
Cinematica diretta e inversa
La cinematica diretta calcola dove si trova la punta a partire dagli angoli dei "Joint".
La cinematica inversa calcola gli angoli che si devono dare ai "Joint" per far andare la punta dove si vuole.
In tutti e due i casi i "Link" rappresentano un collegamento rigido e quindi sono delle costanti.
Trovare formule corrette in rete si è rivelato molto difficile tanto che alla fine ci siamo dovuti mettere in due, con carta penna e Derive6 (programma che aiuta i non-matematici a semplificare le formule), e abbiamo dovuto lavorare per molti giorni prima di riuscire a far quadrare il tutto in un algoritmo ben funzionante.
Ecco i riferimenti ad alcuni siti sulla cinematica, usateli solo per apprendere i principi in quanto, come spiegato sopra, tutte le formule copiate da internet sono risultate incomplete o contenenti errori.
www.learnaboutrobots.com/inverseKinematics.htm
freespace.virgin.net/hugo.elias/models/m_ik.htm
Avrei voluto scrivere qui le formule finali ricavandole dal software, ma mi sono accorto che tradurre le sei pagine di algoritmi in formule matematiche è praticamente impossibile. In un algoritmo si possono mettere limiti ai valori intermedi e imporre vincoli (ad esempio questo progetto impone che la penna sia sempre verticale) I vincoli riducono le possibili soluzioni da infinite a due sole, di cui una evidentemente sbagliata perché si trova sotto al tavolo.
Io non sono in grado di tradurre tutto questo in notazione matematica, teoricamente si potrebbe fare ma la formula risultante sarebbe mostruosa e incomprensibile.
Per cui chi è veramente interessato ai particolari della cinematica dovrà andare a cercarli nel codice sorgente della applicazione "RobotArm", modulo "RobotArm", funzioni "InverseKinematicCompute" e "DirectKinematicCompute"
Tenete conto che queste funzioni valgono solo per un robot "articolato" con quattro "Joint" e quattro "Links" e con la stessa geometria del RobotArm di questo progetto. Fortunatamente non vi è alcun motivo di aggiungere o togliere motori. Le aggiunte banali come una pinza per prendere oggetti non modificano la geometria di base, quindi gli algoritmi continueranno a funzionare. Però variazioni sostanziali di geometria, come ad esempio la struttura "scara", richiederebbero algoritmi completamente diversi.
Un'ultima avvertenza: la funzione "DirectKinematicCompute" non è completa per cui non ho potuto usarla per calcolare l'area utile (in giallo) ed ho dovuto usare al suo posto un sistema di approssimazioni successive che è scomodo e molto più lento. Se qualcuno riesce a finire questa funzione con successo mi scriva a "[email protected]", grazie.
Dove reperire i componenti hardware
I servocomandi HXT900 e i TGY930 sono reperibili presso www.hobbyking.com dove si possono trovare anche moltissimi altri modelli di servo. Chi volesse fare esperimenti può provare anche servocomandi diversi ma, difficilmente ne troverà di più adatti di questi, che sono stati selezionati acquistandone una quindicina di modelli, tra i più promettenti.
A mio avviso il modello HXT900 è imbattibile come rapporto qualità, prezzo, costa solo 1.9 Euro ed è abbastanza preciso. Invece il TGY930 è in assoluto il più preciso tra tutti quelli che ho provato, con una dead-band anche tre o quattro volte inferiore rispetto a tutti i modelli digitali provati, anche se assai più costosi.
Inoltre il modello TGY930 ha due cuscinetti sul perno principale, non ha gioco sul perno ed è molto potente (3.6 Kg/cm), pur consumando abbastanza poco da poter essere alimentato dall'USB. ATTENZIONE: se non trovate il TGY930 cercatelo con la sigla MG930 (è lo stesso servo).
Per la comunicazione con il PC via USB ho usato i moduli di InOut del sistema Theremino, un "Master" e uno "Slave Servo". Chi non volesse usare questi moduli potrebbe usare un hardware di InOut diverso, ad esempio un Arduino, avvantaggiandosi ugualmente del software Theremino_Arm.
In ogni caso l'applicazione Theremino_Arm non necessita di modifiche perché, essendo modulare, scrive negli "Slot", facilmente leggibili anche da uno sketch di Arduino. Informazioni su come usare gli slot sono reperibili sul sito www.theremino.com in: "Downloads/Foundations/Interprocess_Communications" e nella pagina "Technical/Communications" nel capitolo "Gli SLOT".
Note finali ed eventuali miglioramenti
La ripetibilità di posizionamento del RobotArm è eccezionale ma sarebbe desiderabile una maggiore precisione. L'imprecisione è dovuta per il 99% al riferimento interno dei servo che, purtroppo, è solo un potenziometro molto piccolo. La scarsa precisione genera linee non perfettamente dritte e un pò tremolanti. Per aumentare la precisione prima di tutto si scartino i servo HXT900 in favore dei TGY930 che sono molto migliori. Poi si potrebbero sperimentare altri modelli (ci vuole esperienza per valutare la loro precisione e la dead-band: usate un bastoncino da circa 25 centimetri, una riga millimetrata, e muovete il servo con i cursori e le frecce SU/GIU di 1 uS per volta). Probabilmente esistono servo più precisi dei TGY930, se qualcuno li trova lo comunichi, per piacere, a: "[email protected]".
L'applicazione RobotArm è sicuramente migliorabile, consideratela come un esempio e una collezione di funzioni utili. La lettura dei GCode e la traduzione in segmenti sono rudimentali e probabilmente manca il segmento di chiusura di ogni percorso (visibile nei test - i cerchi non si chiudono bene) Se fate miglioramenti inviatemeli. (è quasi pronta la versione 1.2 : scaricare_da_qui)
Ho scoperto con la pratica che i parametri del riquadro "Arm properties", dopo una buona taratura, non hanno più bisogno di correzioni, tranne i due seguenti:
"Joint 1 - Delta" = Correzione per la penna che si alza o abbassa allontanandola dalla base.
"Joint 3 - LenZ" = Correzione della altezza della penna, modificabile anche mentre scrive.
Fine
A questo punto la trattazione sarebbe finita, ma un vero MAKER deve farsi tutto da solo, anche le viti parker, e non accetterà mai di comprare i moduli Master e Slave di produzione industriale. Il MAKER preferisce spendere il doppio per i componenti e lavorare un mese di più, ma deve arrivare alla fine in modo completamente "DIY" e "Open". Non importa la spesa e il tempo, quello che il MAKER costruisce non è un robot, ma la propria conoscenza, che vale più di ogni altra cosa.
Quindi questa è la fine, ma non per tutti. I veri, impavidi, MAKERS possono continuare e farsi anche l'elettronica completamente "DIY" scaricando lo zip: MasterDIL_DIY.zip
Il file ZIP contiene i progetti completi del PCB (in formato Eagle) e del firmware (MpLab) con schemi e immagini in 3D. Se vi serve aiuto scrivetemi: [email protected]
Auguri a tutti i coraggiosi
Intraprendere la costruzione di questo braccio robotico è un progetto ambizioso, non tanto per la parte meccanica che si risolve con due squadrette e qualche vite, ma perché è necessaria una buona dose di abilità per riuscire a tararlo bene. Molti si perderanno per strada, altri ci riusciranno, ma tutti avranno imparato qualcosa sulla robotica.
Per farvi coraggio, o demoralizzarvi del tutto, guardate con attenzione l'immagine della pagina seguente, magari ingranditela. Per passare dalla qualità del provino "1" alla "6" ci sono voluti alcuni mesi!
Da "1" a "4" con pennarello e servo HXT900, la "5" e la "6" con i servo TGY930, la "5" con penna a sfera normale e la "6" con penna a gel e... mesi di esperienza.
Buon MAKE a tutti.
Livio Cicala & Roberto Cena
Questo articolo in formato PDF può essere scaricato da qui: RobotArm.pdf
Ciao Livio,
complimenti per il lavoro svolto. Relativamente agli algoritmi di inversione cinematica, ti consiglio di fare riferimento al libro “Robotica” di Bruno Siciliano ed altri autori.
In particolare è riportato un algoritmo di cinematica inversa a ciclo chiuso, chiamato CLIK Closed Loop Inverse Kinematics, sviluppato dagli autori del libro durante le loro ricerche presso la Federico II.
Con quell’algoritmo puoi calcolare la cinematica inversa per qualsiasi struttura.
Saluti,
Dario.
livio davvero complimenti!!!! la robotica mi ha sempre entusiasmato!!!!
questo è un bel progetto davvero, complimenti.
non vedo l’ora di provare a farne uno, poi ti chiederò sicuro dei consigli…
cordiali saluti e buona fortuna per il concorso.
manuel
Grazie del consiglio,
riguardo al CLICK ti riferisci a questo paper?
http://osu.academia.edu/BehzadDariush/Papers/494935/Constrained_closed_loop_inverse_kinematics
ciao
Livio
Quella ne e’ un applicazione, la trattazione originale e’ generale.
Dario.
ciao posso sapere con che software hai disegnato il circuito in 3D ? comunque ottimo articolo..
Libro di carta? Non Open? Ahi, ahi, ahi!
La conoscenza dovrebbe essere di tutti… o no?
Ottimo che il prof. ci guadagni ma non userò i suoi algoritmi, piuttosto patisco per giorni a me li faccio. (che poi, tra l’altro, sono anche convinto che una volta comprato il libro non mi servirebbe più di tanto perché non sarei in grado di tradurre le formule in algoritmi)
Comunque grazie ancora per l’interessamento e la segnalazione che terrò sicuramente da conto in caso di bisogno.
ciao
Livio
Non ho trovato la “trattazione originale”, potresti, per piacere, suggerire qualche link a qualcosa di algoritmico e non formul-matematico-incomprensibile? (purtroppo le mie capacità di tradurre formule in algoritmi sono un po’ scarse)
Se vuoi puoi provarci tu, come già scritto la funzione “DirectKinematic” avrebbe bisogno di molte cure…
ciao
Livio
Il progetto è fatto con Eagle (che per stampati piccoli è gratuito)
I prototipi dei PCB sono stati fatti con l’ULP FastGcode che ho pubblicato sul sito di Eaglecon e con una fresa ProxxonMF70 pilotata da un CNC611, come puoi leggere qui: http://www.theremino.com/contacts/references
Il rendering 3D e’ stato realizzato con Eagle3D e POV-Ray. (ho dovuto fare alcuni componenti mancanti sia su Eagle che su POV-Ray)
Se ti servono le mie librerie e gli ULP modificati scrivimi e te li manderò.
Ciao
Livio
E’ nel libro che ho citato, ne avevo un implementazione per uno SCARA.
Saluti,
Dario.
Prima di tutto mi scuso per questa risposta molto in ritardo, ho avuto da fare in questi giorni e mi sono dimenticato di risponderti. Grazie per i complimenti e ricambio gli auguri anche per il tuo progetto, ho guardato i tuoi punteggi e sono stratosferici, segno di grande interesse per l’argomento che hai trattato.
Riguardo alle tue intenzioni di sperimentare sui bracci robotici ti confermo che sono ben contento di darti tutto l’aiuto possibile. Prima di cominciare pero’ tieni presente che il RobotArm, per quanto superiore rispetto a tutti i prodotti commerciali nella sua categoria, è poco più di un giocattolo. La costruzione meccanica del RobotArm è valida e scalabile, ma i servo da me usati sono poco precisi. Per applicazioni serie si dovrebbero aumentare precisione, rigidità e raggio di azione, con un ulteriore lavoro di ricerca e spendendo sicuramente molto di più.
ciao
Livio
Se leggi con attenzione il progetto del RobotArm ci puoi trovare tutto quello che serve. La costruzione di questo giocattolo e’ facile e può insegnare le teorie di base meglio di qualunque libro. Non credo esista un modo più semplice di avvicinarsi alla robotica.
Se hai dubbi o domande chiedi e sarò felicissimo di risponderti.
ciao
Livio
L’algoritmo motori è più o meno simile a quello che hai immaginato.
I dati vengono inviati con ripetizione costante, con un timer che viaggia a 60 Hz.
Per non superare velocità e accelerazioni massime stabilite dal profilo di velocità impostato (da 1 a 7) eventuali movimenti troppo rapidi vengono spezzati in un numero adeguato di movimenti parziali.
I valori sono in unità arbitrarie (non in m/s, m/s/q etc..)
L’algoritmo è piuttosto rozzo e tutto il programma RobotArm potrebbe essere molto migliorato, speriamo proprio che qualcuno abbia il tempo di farlo.
Io tra poco farò un miglioramento che ritengo molto importante: visualizzare costantemente il percorso completo per capire immediatamente se esce dall’area utile di lavoro.
ciao
Livio
.
– Premessa –
Qui siamo sul sito del concorso make4cash e mi dispiacerebbe andare fuori tema. Per cui prego tutti di scrivere future comunicazioni di questo genere, direttamente sul blog del Sistema Theremino: http://www.theremino.com/blog
.
RIGUARDO AI MODULI PER IL ROBOT ARM
—————————————————————
E’ possibile costruire il modulo Master in versione semplificata, facile da assemblare, ma pienamente funzionante. Gli schemi, i piani di montaggio e anche il progetto completo del PCB in formato Eagle sono qui: http://www.theremino.com/technical/schematics (a fine pagina)
Però tutti gli aspiranti makers che ci hanno provato fino ad ora, hanno prontamente scritto che facevano fatica a reperire i componenti, per cui dopo svariate mails di spiegazioni, alla fine abbiamo dovuto spedirgli il quarzo, il regolatore MCP1700, il PIC 24FJ64GB002, il condensatore SMD da 10uF low ESR e la presa USB-B. Se avessimo conteggiato il tempo necessario a mettere insieme i componenti, il costo dei componenti singoli e i costi per la spedizione, questi makers avrebbero finito per spendere il triplo del prezzo dei moduli montati e collaudati. In questi pochi casi siamo stati buoni ma non potremo farlo per sempre perché altrimenti non avremmo più tempo per fare il nostro vero lavoro: migliorare Hardware e Software.
Quindi consiglierei questa strada solo a chi dispone di un laboratorio abbastanza attrezzato, un programmatore PicKit3, e che possa farsi spedire componenti da Farnell o da RS (necessaria partita IVA o avere nelle proprie vicinanze un negozio che lo faccia per noi come Pinto a Torino, ad esempio)
Per quanto riguarda il modulo Slave, che è completamente in SMD e molto compatto, sconsiglierei a tutti la via della auto-costruzione, sia per i molti componenti difficili da reperire, sia perché non tutti i programmatori possono programmare il suo PIC, ma anche perché si deve disporre di attrezzatura adatta a saldare gli SMD (stagno piccolo, saldatore a punta molto piccola e pinzette di precisione) E infine gli occhialoni di ingrandimento professionali, che non sono un optional, ma necessari anche per chi ci vede bene, per fare un buon lavoro.
Per ora i moduli sono prodotti solo in piccole serie, da studio, con i componenti montati a mano, per chi vuole sperimentare senza attendere l’inizio della produzione. Per cui, al momento, posso indicarle solo i seguenti prezzi, che probabilmente cambieranno in futuro.
Master 19,90 Euro
Slave Servo 14,90 Euro
Slave CapSensor 18,50 Euro
Geiger Adapter 24,90 Euro
Scrivere a Ennio http://www.theremino.com/contacts/about-us per accordarsi su tempi e spedizione.
Grazie a tutti per l’apprezzamento verso il Sistema Theremino
Livio
Mi era sfuggito questo tuo progetto livio e dato che ci sono ti faccio i complimenti per tutta l’iniziativa theremino.
Il progetto robot arm mi piace complimenti ,
mi piacerebbe realizzarlo e interfacciarlo con il sistema di sviluppo sotto linux RTARM che ho presentato in questo stesso blog.
Vorrei avere però per mancanza di tempo il sistema già pronto e montato e conoscerne se è possibile il costo.
Claudio
Mi dispiace ma si tratta solo di un progetto “fai da te”.
Solo con il sistema Theremino e’ possibile costruire un RobotArm in modo “abbastanza” semplice, in effetti questo abbastanza e’ eufemistico perche’ comunque si tratta di passare un gran tempo a fare prove e tarature. Non e’ nemmeno detto che poi il risultato ripaghi tutto questo tempo…
Per evitare delusioni consiglierei di intraprendere la costruzione del RobotArm solo se si ha MOLTO ben chiaro quello che si sta facendo perche’ e’ un progetto davvero difficile da realizzare.
Una realizzazione in Linux con un sistema RTARM non compatibile con Theremino comporterebbe grandi difficolta’. Tutta la modularita’ e le facilitazioni del sistema Theremino sarebbero perse o da riorganizzare partendo da zero…
Si la parte delicata a’ la coordinazione degli assi per mantenere la penna verticale ma anche nella posizione desiderata.
Un accelerometro (o giroscopio) non aiuterebbe molto, aiuterebbero servo migliori ma non esistono.
In questi giorni con Mario, lo sperimentatore piu’ attivo di RobotArm, stiamo provando la configurazione SCARA ( guarda in internet i suoi vantaggi )
ad esempio qui:
http://www.youtube.com/watch?v=0gKsEUkeBME&feature=related
Con la SCARA i motori che determinano la precisione si riducono da 4 a 2, inoltre il motore finale (quello blu che alza la penna) non influisce piu’ sulla posizione orizzontale.
Per cui con la configurazione SCARA si ottengono miglioramenti di precisione molto evidenti, le righe diventano perfettamente dritte e si semplifica ancora il numero di pezzi.
Sto modificando il software per permettere le configurazioni scara e delta, quendo sara’ pronto pubblichero’ un nuovo articolo con foto e video.
Ecco come e’ fatto un DELTA:
http://www.youtube.com/watch?feature=endscreen&v=0-Kpv-ZOcKY&NR=1
ciao
Livio
https://www.youtube.com/watch?v=sk5krCkzFoM
Mi scuso per il ritardo, per qualche strano motivo non ho ricevuto aggiornamenti da questa pagina nei precedenti mesi, avevo un errore in outlook-express e ho perduto molta posta.
La scheda che ti serve si chiama “Master” puoi trovare tutte le informazioni sui Master andando qui: http://www.theremino.com e scrivendo “Master” nel riquadro delle ricerche, in alto a sinistra in ogni pagina del sito.
Ho fatto io una ricerca per te ed ecco tutti i link che potrebbero servirti:
http://www.theremino.com/contacts/price-list
http://www.theremino.com/blog/robotics-and-cnc
http://www.theremino.com/hardware/outputs/motors
http://www.theremino.com/blog/master-and-slaves
http://www.theremino.com/wp-content/uploads/2012/02/MasterDIL-V3_Datasheet_ITA.pdf
http://www.theremino.com/technical/schematics
http://www.theremino.com/hardware/devices
http://www.theremino.com/downloads/documentation/questions-and-answers
http://www.theremino.com/technical/protocol
http://www.theremino.com/downloads/foundations
http://www.theremino.com/wp-content/uploads/2012/03/RobotArm.pdf
http://www.theremino.com/blog/standalone-applicatons
grazie per questo articolo,
davvero bellissimo complimenti!!
Ciao, mi scuso per il ritardo, per qualche strano motivo non ho ricevuto aggiornamenti da questa pagina nei precedenti mesi, avevo un errore in outlook-express e ho perduto molta posta.
Io consiglio sempre di NON usare alimentazione esterna perché mi preoccupa la possibilità che i loop di massa tra l’alimentatore aggiuntivo e l’alimentatore del PC possano fare danni. Solo un esperto può disporre le masse e i limitatori di extratensione necessari ad evitare problemi.
I problemi che si possono avere sono di due tipi:
1) Il PC e’ attaccato a una presa del 220 e l’alimentatore ad un’altra, le masse dei due sono collegate solo attraverso i moduli thereminici, arriva un fulmine e si frigge tutto.
2) Il PC e’ attaccato a una presa del 220 e l’alimentatore ad un’altra, le correnti impulsive che arrivano dall’impianto elettrico, anche se non in grado di “friggere” i moduli, provocano errori di trasmissione e blocchi del programma “HAL” recuperabili solo premendo il tasto “Recognize”
Pertanto ti consiglio di usare un grosso elettrolitico e vedrai che puoi collegare fino a 6 servo senza problemi.
Se non riesci segui le istruzioni di questi link:
http://www.theremino.com/blog/master-and-slaves
http://www.theremino.com/blog/robotics-and-cnc
Anche MOLTO interessante la soluzione proposta a pagina 13 del data-sheet del master:
http://www.theremino.com/wp-content/uploads/2012/02/MasterDIL-V3_Datasheet_ITA.pdf
Se hai altre domande sono a disposizione ma, per avere una risposta immediata, scrivile qui:
http://www.theremino.com/blog/robotics-and-cnc
ciao
Livio
i servo tgy930 non sono attualmente disponibili questi potrebbero andare bene? http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=13422
ho trovato anche questi http://www.hobbyqueenitalia.com/prodotto-145165/Turnigy-XGD-11HMB-Digital-Mini-Servo-30kg–11g–012.aspx ma ho paura che siano poco potenti
Il problema non e’ la potenza ma sempre la dead band (precisione)
Potresti provarli ma solitamente, per quanto i costruttori scrivano tante belle cose, i risultati sono deludenti.
Prima di trovare i TGY930 ho comprato di tutto, ho una scatola piena di “rumente” che i costruttori dicono molto precise…
Spero comunque che questi servo siano la sorpresa che tutti attendiamo… se li provi fammi sapere come vanno.
ciao
Livio
Ciao livio, volevo presentare questo braccio robotico per la maturità, purtroppo non saprei come reperire il sistema “master” e “servoslave” che hai usato te, cercando su theremino speravo di trovarne una versione commerciale dato che non ne sò moltissimo, sapresti dirmi se esistono? ed eventualmente dove procurarmele ?
Gli slave “Servo” non ti servono. 🙂
Non spendere anche per loro, con i soli 19 euro di un Master fai tutto.
Ti serve un Master, informazioni qui:
http://www.ideegeniali.it/shop/16-theremino
e i Servocomandi, informazioni qui:
http://www.theremino.com/hardware/outputs/motors
Altre informazioni, che ti serviranno dopo, le trovi qui:
http://www.theremino.com/downloads/automation
http://www.theremino.com/technical/schematics
http://www.theremino.com/technical/pin-types
http://www.theremino.com/technical/communications
http://www.theremino.com/technical/connection-cables
http://www.theremino.com/blog/robotics-and-cnc
http://www.theremino.com/video-and-images
E non dimenticare di scaricare la App ThereminoArm e di leggere tutti i suoi file di Help.
Ciao e auguroni!
Per consigli scrivi sul Blog: http://www.theremino.com/blog/robotics-and-cnc
oppure a me direttamente: [email protected]
Qualcuno ha provato alternative valide ai TGY930 a prezzi decenti? sembra siano impossibili da trovare…
E’ possibile che in questi anni siano saltati fuori molti servo migliori del TGY ma mi spiace, noi non abbiamo più fatto prove sui servo. Siamo stati molto impegnati con Theremino_CNC e altre applicazioni.
Riguardo agli acquisti tutto è cambiato da allora. Ideegeniali non c’è più ma in compenso ci sono due siti cinesi e eBay che vendono a ottimi prezzi (metà rispetto a Ideegeniali).
Ecco i link dei siti cinesi di eBay e l’indirizzo mail di Lello che si occupa delle spedizioni per l’italia:
Sito 1: http://www.thereminoshop.com
Sito 2: http://thereminostore.com
eBay: http://www.ebay.it/sch/maxtheremino
Lello: [email protected]
bravo
Grande articolo scritto bene.
Livio spero tu possa leggermi, ho un’idea importante da realizzare ed ho bisogno del tuo aiuto, come posso mettermi in contatto con te privatamente? grazie. Fabio da Pisa
Ciao,
questo articolo ha molti anni, ora usiamo tecniche assai migliori, ad esempio i segnali “Stepper” dei moduli IotModule (Esp32) e i segnali Pwm di tutti i moduli (anche Master e e le linee vengono più precise.
Per migliorare ancora la precisione usiamo i motori stepper o i ponti H con algoritmi PID.
Puoi trovare le informazioni più aggiornate sui motori qui:
https://www.theremino.com/hardware/outputs/motors
E in genere sul nostro sito partendo da questo link:
https://www.theremino.com/
Sul nostro sito ci sono anche i riferimenti per tutti i collaboratori.
Il mio è qui:
https://www.theremino.com/contacts/about-us#livio