Programma Braccio Robotico

Braccio Robotico.

Ricordo di aver visto di recente un filmato in Youtube dove si vedevano due bracci robotici.

Uno, il vero braccio robotico, l’altro costruito più spartano, serviva per memorizzare i movimenti del
primo.

Purtroppo, ora che mi serve nonostante la ricerca non lo trovo più.

Praticamente a mano muoveva il braccio del secondo nella posizione voluta, dopo di ché con un pulsante memorizzava la posizione in un programma provvisorio apposito e di nuovo per una seconda, terza, quarta. ecc… posizione.

Ho fatto una accurata ricerca in Internet ma non ho trovato nulla se non programmi che “dovrebbero”
sostituire questo sistema, ma preferirei saperne di più sul primo.

Mi serve per capire se si deve usare come sensore di posizione un encoder, un comune potenziometro o altro.

Link o indicazioni sono gradite.

Ringrazio per la risposta

Erosb

Ciao, sicuramente stiamo parlando di robot giocattolo, spesso questi "robot" sono realizzati con servomotori e non possono sollevare grossi pesi.

Se sei interessato a realizzarlo, puoi pensare a un tuo progetto. Non ho mai usato gli encoder, quindi mi viene in mente un progetto che usa potenziometri per ricavare la posizione.

Muovi il braccio di comando e salvi il valore dei potenziometri per ogni giunto del robot.
Potresti salvare il valore dei potenziometri ad ogni pressione di un pulsante, all'interno di un array di struct.

ESEMPIO:

struct  robot{
  
    int giunto1;
    int giunto2;
    int giunto3;
    int giunto4;

}

/**********************/

struct robot Giunti[20]; // un array che può contenere 20 posizioni del braccio



/*********************************/
// Come usarlo

Giunti[0].giunto1=analogRead(pin);

Poi quando vuoi muovere il braccio robotico con dei servo, scorri l'array di struct con un ciclo for, e per ogni giunto che
ha valore analogico da 0 a 1023, tramite funzione map() ricavi un valore da 0 a 180 per azionare il rispettivo servo.

Sicuramente la realizzazione non sarà proprio semplice come ho descritto io, ma penso di averti dato un idea di partenza e qualche spunto.

Questo?

Per Torn24.

Si , sinceramente non voglio costruire cose esagerate. Basta un decente funzionamento per soddisfare l'hobby costruttivo.
Che più mi interessava è il sistema che registra le posizioni dei vari spostamenti.
Imparato questo poi ti puoi divertire nel progettare funzioni strane.

E' impensabile scrivere un codice di movimento così a memoria. Non sarà mai preciso, per non dire del tempo impiegato. Certo, la precisione spinta dipende dal codice ma anche dai vari comoponenti usati.

Chi si accontenta.....

Prenderò sicuramente spunto anche del tuo listato, magari con aggiunte e modifiche per raggiungere lo scopo.

Oggi ho disegnato il braccio del robot, domani ci studio sopra per la pinza.

Lo ripeto è un passatempo.

Per ora ti ringrazio, ci sentiamo.

erosb.

Per Doppiozero

Caspita che colpo grosso. Pensa che è il filmato che ho cercato per tutto il giorno.

Anche se non dice nulla però si vede chiaramente come rileva i punti e li memorizza tramite pressione di un pulsante.

Ho in mente come fare il programma e la sola cosa che non sono sicuro è se usa potenziometri o

encoder per rilevare il valore. Devo vedere bene il filmato, lo visto velocemente .

Però stranamente in Internet non ho trovato nulla di simile, scrivendo i titoli di ricerca in diversi modi.

Ho trovato dei programmi che aiutano ma avendo in mente questo sistema non mi hanno attirarto.

Il programma che usa il tizio è ottimo, chissa se lo si può scaricare free.

Ora vado a rivederlo con calma.

Che dire, grazie e a buon rendere Doppiozero

saluti
erosb

Nella descrizione del video ci sono vari link, dovresti trovare programma e componentistica :slight_smile:

Molto bello, si può tra re delle belle ispirazioni
Comunque io ho visto e alle volte usato, Asea (adesso ABB), Kuka, IGM, OTC e Mitsubishi.
Tutti hanno una tastiera, con o senza joystick proporzionale
La ragione è la difficoltà di "scalare" due differenti geometrie e due differenti sistemi di misura de la posizione
Io comincerei con una tastiera, due comandi (+ e -) per ogni giunto
Fatto muovere e memorizzare così, passerei a sostituire la tastiera con il secondo braccio

Doppiozero, si sto cercando nel filmato di carpire i vari trucchetti, ma alcune volte basta la spinta e poi

usare la tua ispirazione che in alcuni casi migliora il sistema.

Copiare e migliorare, tecnica usata anni fa dai Giapponesi.

Poi come dice Standardoil, si può studiare anche le varie soluzioni per memorizzare il codice percorso.

Credo che anche qui ci si puo sbizzarrire fra i vari componenti a disposizione, senza andare nelle cose

futuristiche tipo comunicare i passi a voce.

Nella macchina di lavoro CNC che uso per costruire i miei lavoretti, il tutto si risolve nel fare il disegno

del percorso che la macchina poi seguirà per la fresatura, e un programma che converte il disegno in

codice che comanda i vari assi dei motori.

Anche questo programma non è difficile da capire, anzi direi semplice, ma decisamente lungo e noioso da

digitare.

Questa macchina CNC mi servirà per costruire i bracci e i vari ingranaggi del robot.

Credo che il sistema usato nel filmato di doppiozzero dove è riprodotto in modo simile il braccio ma con

sensori a potenziometro per rilevare istantaneamente il cambio di valore dei sensori, è uno dei più veloci.

Ho detto veloce, non so se è preciso. Però a quanto vedo nel filmato è abbastanza preciso e ripetitivo.

In attesa di qualche altra idea,

Ringrazio
saluti
erosb

Be', la cosa piu "precisa" (escludendo un programma CAM, credo), sarebbe fare la cinematica inversa proprio con il braccio che poi userai ... voglio dire, monti tutto, lasciando scollegati i motori in modo che non facciano troppa resistenza meccanica, poi muovi il "vero" braccio nelle varie posizioni e registri i valori dei potenziometri (o encoder) che ci sono montati sopra come feedback ... in quel modo sarai certo che la posizione registrata sara' esattamente quella voluta, perche' rilevata proprio con la meccanica che poi sara' utilizzata in pratica ... :wink:

(EDIT: per non parlare del fatto che ti fara' costruire solo un braccio, non due, dei quali uno "inutile" in pratica :wink: )

Così si programmavano i robot di verniciatura di BBC, (ora ABB, ma usano gli eredi degli ASEA)
una cosa "svizzera" da programmare.... Un incubo
Comunque il secondo braccio lo ritiro io...

Etemenanki, bella idea complimenti.

Oltre che costruire un solo braccio, è più preciso, visto che il funzionante è costruito meglio.

Bhè si c'è da studiarci sopra come inserire i motori quando è memorizzato il codice, ma non è un

problema.

I potenziometri li posso anche lasciare inseriti, non è un braccio di lavoro industruiale.

Siamo nell'hobbistica.

Oppure come diceva uno di voi, (tutto da vedere se possibile) una schedina con quattro potenziometri

multigiro, quattro servomotori, quattro pulsanti e Arduino.

Sposti il braccio tramite i servomotori uno alla volta sino al completamento del ciclo, usando il

potenziometro personale per i vari passi e memorizzi le posizioni con il suo pulsante.

E' da vedre quale è il migliore sistema con i suoi pro e contro.

In attesa di nuove idee,

saluti
erosb

Secondo me realizzare un solo braccio che abbia sia i servo per il movimento e sia i potenziometri per potere registrare le posizioni, non semplifica le cose.
La realizzazione del braccio sarebbe più complessa, per cui ne realizzi uno ma con più difficoltà. Poi come da video il braccio con solo i potenziometri potrebbe essere realizzato in modo spartano, ha solo il compito di muovere i potenziometri e si toglierebbe dai servo il compito di superare l'attrito generato dai potenziometri.

Sì, in effetti il problema del braccio singolo è di dover usare motori che fiano retroazione, non servo, in alternativa motore e retroazione separati

Ma se vuoi poter "vedere" (tramite il programma) in che punto i servomotori (o motoriduttori) sono, per poter fermare il braccio nelle varie posizioni e fargli fare i corretti movimenti, i feedback sono obbligatori, non optional ... anche se usassi degli stepper, potrebbero perdere passi, e le posizioni non sarebbero piu quelle inserite nel programma ... gli encoder, a meno che non siano "assoluti", hanno bisogno di azzeramento ad ogni partenza, come anche gli stepper ... per cui l'alternativa piu economica rimangono i potenziometri ...

Comunque usare dei potenziometri insieme ai riduttori non e' certo un grosso problema, si possono inserire nella struttura, o collegare con ingranaggi, o addirittura con flessibili, o si possono usare lineari (anche se questo causa nonlinearita' fra movimento e posizione, da tenerne conto nel programma) ... ci sono molti modi per aggiungere potenziometri ad un braccio, volendo ... :wink:

Retroazione direi necessaria, concordo
ASEA usava resolver, OTC encoder incrementali con impulso di inizio giro, perennemente accesi
Queste soluzioni non sono pratiche va livello amatoriale
Voto potenziometro coassiale con l’albero di uscita del riduttore
Domanda: smontando un servo, il potenziometro è accessibile, e se sì, si può usare come retroazione?

Dire quale sistema sia il migliore è difficile se non si testano.

Il secondo braccio deve essere preciso come il primo, causa poi la mancanza di precisione.

il potenziometro sempre inserito, e sì un pò di atrito c'è.

Non ho fatto una ricerca ma sicuramente servomotori più evoluti con encoder che semplificano la stesura

del Codice ci saranno in commercio.

Mentre per il codice non credo che lo modificheremo tante volte, ma se è semplice da generare, è più

appetibile.

Non ho sentito pareri sull'ultima mia idea da fare una scheda di comando dei vari servocomandi tramite i

vari potenziometri che spostano il braccio.

Semplificando: un commutatore a 5 vie, una per ogni servo, basta un solo potenziometro e un pulsante.

Ci sono dei problemi che ora mi sfuggono con questa soluzione, non è intuitiva, diventa una manovra

complessa?.

erosb

Standardoil: il potenziometro dei servo e’ accessibile, ma bisogna vedere come e’ costruito il servo … in quelli professionali in genere usano trimmer “hollow-shaft” con l’alberino del servo passante attraverso il trimmer, in quelli economici potrebbero addirittura usare un trimmer “aperto”, con la traccia stampata alla buona sullo stampato del circuito ed il cursore attaccato in fondo all’alberino con una boccola di plastica …

Comunque trimmer e potenziometri “hollow-shaft” (cioe’ con il buco al posto dell’albero) ne vendono di diversi modelli, su mouser ed rs ci sono anche abbastanza robusti, ALPS li vende per le autoradio, poi se si va sul professionale e troppo costoso, ci sono anche “blindati” tutti in metallo … comunque anche roba di questo tipo (che non e’ esattamente economica, ma almeno non costa 120 Euro come quelli blindati in metallo) potrebbe venire buona … si puo addirittura montarla direttamente sull’albero del gruppo riduttore che muove il braccio, se il diametro lo consente, senza usare ingranaggi e roba simile … l’importante nel cercarli e’ scartare tutto quello che riporta “encoder” nella descrizione, perche’ google, da perfetto motore di ricerca imbecille, presenta anche tutti gli encoder simili come se fossero potenziometri, se li usano per regolare il volume (forse in google qualcuno dovrebbe tornare a scuola di programmazione :stuck_out_tongue: :D)

erosb:
...Non ho sentito pareri sull'ultima mia idea da fare una scheda di comando dei vari servocomandi tramite i vari potenziometri che spostano il braccio ...

se vuoi usarla come console di comando per muovere i servo a mano, non c'e' problema , ma i servo, per poter "dire" al programma di arduino in che punt sono, hanno per forza bisogno di feedback ... encoder, resolver, potenziometri, wobulatore elettroforetico a rifasamento quantistico (:stuck_out_tongue: :D), usa quello che vuoi, ma un feedback serve per forza ... ed i potenziometri sono la soluzione piu economica ed allo stesso tempo piu semplice, a livello amatoriale (ed in alcuni casi vengono usati anche a livello professionale, anche se piu costosi)

Per la precisione del secondo braccio "quello con i potenziometri", come si può vedere da video, è solo fissare bene il potenziometro da una parte e fissare bene il braccio all'albero del potenziometro.
In pratica è lo stesso potenziometro che fa da giunto. Per cui il problema è solo fissarli bene e non c'è da realizzare parti meccaniche che abbiano precisione.

Occorre poi una fasatura tra braccio con potenziometro e braccio con servo, si montano i potenziometri a valore zero e si montano i servo in posizione zero. Quando si realizzano i due bracci "con potenziometri e con servi a zero" DEVONO avere la stessa posizione iniziale.

Tutti i discorsi fatti sono nati prendendo spunto dal robot del video o considerando la meccanica di robot industriali.

Io credo che ci sia un altro possibile approccio che non prevede ne potenziometri ne encoder

Si potrebbero creare nel programma delle variabili da incrementare, una per ogni giunto.
La variabili conterrebbero la posizione dei vari servo dei giunti del robot , che al momento della programmazione verrebbe eseguita, ossia attraverso un joystick e o pulsati si incrementano le varie variabili-giunto e i servo si posizionano "in tal modo è possibile vedere i movimenti".

Poi attraverso la pressione di un pulsante, si memorizzano le varie posizioni in un array di struct, per poi farle eseguire in successione quando si vuole muovere automaticamente il robot.

In pratica con un sistema a potenziometro abbiamo la posizione, con un sistema software salviamo quella posizione in una variabile, quindi un po forzatamente "la variabile sostituisce il potenziometro"

Si, se usi dei normali servo standard ... ma dato che i servo hanno forza piuttosto limitata (a parte modelli professionali e molto costosi), per realizzare un braccio sarebbe meglio usare dei motori con ingranaggi riduttori, al posto dei servo, ed usare il programma per gestire le posizioni ...

Oppure, se si vuole comunque usare il pilotaggio dei servo (che pero' non avra' feedback, salvo con l'uso di servo digitali professionali e costosi), e serve anche una certa forza, si possono usare i circuiti dei servo facendogli pilotare dei motoriduttori (in questo caso, o si costruiscono i circuiti da zero, o si cannibalizzano dei servo, si usano i circuiti attraverso finali di potenza per pilotare i motoriduttori, e si monta l'originale potenziometro del servo (o uno simile) sull'asse del motoriduttore :wink:

torn24:
Io credo che ci sia un altro possibile approccio che non prevede ne potenziometri ne encoder

Si potrebbero creare nel programma delle variabili da incrementare, una per ogni giunto.
La variabili conterrebbero la posizione dei vari servo dei giunti del robot , che al momento della programmazione verrebbe eseguita, ossia attraverso un joystick e o pulsati si incrementano le varie variabili-giunto e i servo si posizionano "in tal modo è possibile vedere i movimenti".

Buona, complimenti