braccio robotico

ciao, questo è il mio primo post, quindi per prima cosa mando a tutti un saluto.

In secondo luogo: non so nulla di robotica, né di elettronica, ma abbastanza di informatica (conosco abbastanza bene alcuni linguaggi: Java, Scala, PHP, Perl, tra gli altri; non ho mai programmato davvero in C, ma conosco il linguaggio).

Vorrei provare a realizzare qualcosa con Arduino. Stavo pensando di provare a muovere un braccio robotico da una postazione desktop via usb (e poi wireless, ma cominciamo con il desktop usb).

Come braccio robotico pensavo a qualcosa del genere: http://www.robot-italy.com/index.php?cPath=11_20

Dovrei poi procurarmi Arduino Uno.

Ed ecco le domande: è molto difficile collegare Arduino al braccio meccanico? Ho qualche speranza di riuscire nel progetto?

ciao a tutti e grazie in anticipo per le risposte!

Un manipolatore (quello che tu chiami braccio robotico) e’ costituito da un insieme di corpi rigidi (link o bracci) connessi in cascata tramite coppie cinematiche o giunti (elementi cinematici che consentono il moto relativo tra 2 link contigui).
Link e giunti formano una catena cinematica . Una catena cinematica puo’ essere aperta o chiusa :

  • aperta, quando vi e’ una sola sequenza di bracci a connettere i due estremi della catena
  • chiusa, quando una sequenza di bracci forma un anello

Fatto questo brevissimo preambolo, La prima cosa da sapere per potere rispondere e’ quanti bracci vuoi che il tuo braccio abbia. Supponiamo che vuoi avere 2 bracci, stai andando quindi a realizzare un cosiddetto MANIPOLATORE A DUE BRACCI.
La cosa che voglio dirti subito e’ che non sono sicuro che Arduino riesca a gestire i calcoli necessari per poter effettuare quella cosa che si chiama ‘Cinematica Inversa’ che in parole povere consiste nella “Traduzione di una traiettoria definita in uno spazio cartesiano , in una traiettoria definita nello spazio dei giunti” . Cioe’ quando tu chiedi a un braccio robotico di andare in un punto del piano (x,y) lui non puo’ interpretare quel punto come (x,y) , ma deve per forza di cose interpretarlo come (q1,q2) , dove q1 e q2 sono le cosiddette variabili di giunto, ovvero i movimenti (gli angoli) che devi far fare ai tue 2 motori.

Con questo intervento ti ho voluto far capire in poche parole quello che dovresti fare, ora aspettiamo un po’ qualcuno che ci da info sulla potenza di calcolo di Arduino e se riesce a gestire questi calcoli. ( Si tratta di Inversioni di matrici, cosa che a parola e’ facile, ma in realta’ fa impallare anche un computer come il mio che e’ a 64 bit e con 6GB di RAM) :slight_smile:

A presto,
Fabrizio.

ciao, grazie per la risposta, utile perché mi aiuta a inquadrare il problema: prima di imbarcarmi nell'avventura, vorrei infatti capire se si tratta di un progetto troppo ambizioso per me, oppure se mettendoci molta buona volontà sarei in grado di riuscirci.

Qui: http://www.robot-italy.com/product_info.php?cPath=11_20&products_id=1622 Leggo questo: "In alternativa i servi possono essere controllati direttamente da un microcontrollore, come ad esempio un PIC, Arduino, BX24, etc" Quindi qualcosa si potrà fare (come non so...)

:)

Ti ho detto, dipende da quello che devi fare . Se vuoi un braccio robotico che funziona per bene, nello spazio (x,y,z) , la cosa non e’ affatto banale ma ti posso consigliare qualche buonissimo libro dal quale in un mesetto, massimo 2 di studio , puoi capire un po’ di cose sulla robotica.

Comunque aspettiamo conferma da qualche “sapientone” sulle capacita’ di Arduino in quanto su questo non posso aiutarti.

Ciao,

Fabrizio.

beh dai se vuole fare un manipolatore a due gradi di libertà magari con due giunti rotoidali non si tratta di calcoli troppo difficili :slight_smile: dipende tutto da quanti gradi di libertà vuole avere nel suo braccio. :slight_smile:

inoltre bisognerebbe chiarire se vuole controllare il braccio in cinematica diretta (dai i valori direttamente alle variabili di giunto) oppure come ha spiegato f.schiano vuole controllare tramite cinematica inversa.

grazie, libri introduttivi sono sempre i benvenuti!

Cerca un po' su internet :

Robotica di Bruno Siciliano Lorenzo Sciavicco Luigi Villani Giuseppe Oriolo

Edito da McGraw-Hill

Oppure prova a scaricare le slides del corso di Controllo dei Robot da qui: http://www.prisma.unina.it/courses/Cinematica.pdf Se vuoi proprio la Bibbia della robotica, cerca in rete questo: http://www.springer.com/engineering/robotics/book/978-3-540-30301-5 E' in Inglese, ma e' uno dei libri di Robotica piu' usati al mondo !!! (Il libro Italiano citato in precedenza e' dello stesso autore, ma naturalmente ci sono meno argomenti)

Ma non so se capisci in quanto non ci sono tutti i passaggi e non le considero slides INTRODUTTIVE, anzi.

Ciao,

fabrizio

smasho: beh dai se vuole fare un manipolatore a due gradi di libertà magari con due giunti rotoidali non si tratta di calcoli troppo difficili :) dipende tutto da quanti gradi di libertà vuole avere nel suo braccio. :)

inoltre bisognerebbe chiarire se vuole controllare il braccio in cinematica diretta (dai i valori direttamente alle variabili di giunto) oppure come ha spiegato f.schiano vuole controllare tramite cinematica inversa.

Cosa intendi, per controllare direttamente nello spazio dei giunti? Come fai ad immaginare un compito del robot nello spazio dei giunti? Forse ci riesci ancora in termini di posizione, ma in termini di orientamento e' da folli !!!

Fammi sapere,

Fabrizio.

Visto che il braccio é costruito con 5 servo da modelismo non c'é problema pilotarli con arduino tramite la libreria SERVO.

Un alto paio di maniche é come giá dicono gli altri é calcolare il movimento in funzione della posizione desiderata o del tipo di movimento fluido ecc pilotare i servo di consequenza.

Ciao Uwe

Uwe ma non capisco a cosa potrebbe servire un braccio robotico comandato direttamente con il movimento dei servo. Come faccio a fargli descrivere una traiettoria nello spazio operativo. Forse l'unica cosa che mi viene in mente sarebbe quella di riuscire a muovere il braccio con un joystick, istante per istante, se è questo che vuoi fare, penso non sia complicato.

Ciao , Fabrizio .

sisi io intendevo muovere il braccio tramite ad esempio un joystick, questo può avere moltissime applicazioni (ad esempio in campo biomedico)

Con calma... In campo biomedico non si usano i :). Al massimo potresti realizzare un qualcosa simile a quello che trovi nelle sale giochi. Anche se quello é più simile a un robot cartesiano. Ma Cmq se è questo che ti interessa , si può fare tranquillamente ... Si tratta solo di prendere un Po di dimestichezza con i servo e la libreria Servo.h .

Ciao ,

Fabrizio.

f.schiano: Con calma... In campo biomedico non si usano i :). Al massimo potresti realizzare un qualcosa simile a quello che trovi nelle sale giochi. Anche se quello é più simile a un robot cartesiano. Ma Cmq se è questo che ti interessa , si può fare tranquillamente ... Si tratta solo di prendere un Po di dimestichezza con i servo e la libreria Servo.h .

Ciao ,

Fabrizio.

in che senso non si usano? si realizzano manipolatori per sale operatorie con interfacce atipiche che sono in grado di restituire un feed back della forza applicata al manipolatore, secondo me anche con un'atmega si potrebbe realizzare una cosa del genere (ovviamente solo in fase preliminare di prototipazione). avevo una mezza idea di fare la tesi su questo argomento :)

f.schiano:
Uwe ma non capisco a cosa potrebbe servire un braccio robotico comandato direttamente con il movimento dei servo. Come faccio a fargli descrivere una traiettoria nello spazio operativo. Forse l’unica cosa che mi viene in mente sarebbe quella di riuscire a muovere il braccio con un joystick, istante per istante, se è questo che vuoi fare, penso non sia complicato.

Ciao ,
Fabrizio .

Non ho detto che devi pilotare ogni servo a mano. intendevo dire che come pilotaggio é utilizzabile Arduino. l’ alogritmo di come muovere ogni singolo Servo o in dipendenza da altri é un altra cosa.
Ciao Uwe

f.schiano: Cosa intendi, per controllare direttamente nello spazio dei giunti? Come fai ad immaginare un compito del robot nello spazio dei giunti? Forse ci riesci ancora in termini di posizione, ma in termini di orientamento e' da folli !!!

Guardati questo video, il micro usato è un pic molto simile all'ATmega328, il braccio è un vecchio modello della Lynxmotion azionato tramite servo

http://www.youtube.com/watch?v=D2X46zBND6g

Mah.. io ci proverei, in fondo un paio di giunti ce la dovrebbe fare a calcolarli...

cmq, se vuoi imparare puoi considerare anche uno step più economico, ossia ti compri 3/4 servi economici da 7/8€, e intanto li fai funzionare con la libreria servo e li piloti con un joystick. poi costruisci un braccio meccanico rudimentale coi lego o con la balsa o con pezzi di plastica e colla, insomma giusto per vedere se riesci a tirar fuori due calcoli di cinematica non-triviale (cioè non-cartesiana, in inglese la chiamano non-trivial-kinematics). i calcoli di cinematica diretta, sarebbero i calcoli che deve fare arduino per tradurre gli angoli dei vari giunti del braccio in un punto x,y,z (la punta del braccio, per esempio), mentre quelli di cinematica inversa l'opposto, cioè tu gli dai x,y,e z dove vuoi che vada a finire il tuo braccio, e arduino calcola gli angoli a cui deve impostare i vari servi.

c'è un fantastico software open source che fa proprio questo, si chiama EMC2, ma prevede anche un kernel real-time, blocco della macchina in caso di errori, lettura dei feedback dai motori e tante altre belle cose professionali per le macchine a controllo numerico. per questo ovviamente serve un pc, ma anche un PII va già alla grande.

Secondo me però i calcoli da effettuare, se non t'importa di un pò d'errore, non sono poi così pesanti per 2 o tre giunti, per cui ci proverei.

Se leggi un pò d'inglese qui c'è una spiegazione dei calcoli di cinematica diretta e inversa di un bipode : http://www.linuxcnc.org/docs/2.1/html/motion/kinematics/index.html l'unica differenza col braccio meccanico è che il bipode ha bisogno di calcoli pitagorici, mentre per il braccio sono calcoli angolari,ma il concetto è lo stesso.

se trovo le formule per il genserkin (generic serial kinematics) te le posto..

cmq, come minimo ti devi studiare questo: http://en.wikipedia.org/wiki/Denavit-Hartenberg_Parameters

qui si capisce bene.. http://www.youtube.com/watch?v=VjsuBT4Npvk&feature=related

in italiano non ho trovato niente.

ciao! buono studio..

EDIT: scusa, questo mi pare facile ed esplicativo in italiano. è un ppt:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCMQFjAB&url=http%3A%2F%2Fwww.dis.uniroma1.it%2F~deluca%2Frob1%2F09_CinematicaDiretta.pdf&ei=7fm8TvmLLMegOsft4MIB&usg=AFQjCNGedbP-_FOUUwT6236qwDmyNYgmWw&sig2=33N1o9HpaqAzMlHYq2WU_g

grazie a tutti per le risposte!

Guarderò tutta la documentazione e poi vedrò il da farsi!

ciao!