Progetto robot Master and Slave

Salve a tutti,
per un progetto universitario devo realizzare un robot "braccio Master"da comandare a mano che possa far muovere un altro "robot slave" che inizialmente simulerò al pc.
Allora, il mio problema è che al momento devo acquistare tutta la componentistica e non so quali motori acquistare per il robot Master. Questo problema sorge perché il robot Master(robot che muoverò a mano per far muovere il secondo robot) non deve possedere solo degli encoder o potenziometri dove sono posizionati i giunti, bensì dovrà possedere dei motori che permettano una sorta di "rotazione assistita" (stile servosterzo elettrico).
é possibile trovare motori con encoder/potenziometri integrati tali da leggere il movimento del robot e aiutarmi nel movimento azionando i motori?
Vi chiedo aiuto, sperando di esser stato abbastanza chiaro nello spiegare il problema.

Ci sono dei servo digitali della DYNAMIXEL che sono fatti apposta per questo tipo di applicazioni.

Purtroppo sono costosi.

Ci sono altre possibili soluzioni? Usando ad esempio servo ed encoder separatamente?

Mi sembra di capire che il servo master dovrebbe avere una sorta di feedback per sentire lo sforzo che fanno i servo slave.

Se tu dessi maggiori informazioni sul progetto sarebbe meglio.

Si esattamente! Lo scopo finale del progetto è proprio questo. Ci dovrà essere un controllo in retroazione che controllerà la resistenza del servo e regolerà il master.

Inizialmente,però, ciò che devo fare è controllare, tramite il braccio master fisico, un braccio virtuale( su Unity3d), successivamente se questo non occupa molto tempo potrò passare al passo successivo cioè il controllo su un vero robot slave.

Ogni giunto del master dovrebbe possedere un potenziometro solidale ad un piccolo motore.

Il potenziometro serve a ottenere la posizione angolare, mentre il motore serve a restituire lo sforzo del corrispondente giunto dello slave.

Sullo slave, invece, ogni giunto corrisponde ad un servo solidale con un sensore di forza.

Il servo ruoterà in funzione del potenziometro del master, mentre il sensore di forza fornirà un segnale analogico proporzionale che dovrà comandare il motore del master controllato in PWM ed anche in direzione (forza positiva o negativa).

Avrei delle domande:

1)Per quanto riguarda i piccoli servo del master che tipo di servo è possibile acquistare per il mio scopo?

2)Quello che non mi è chiaro, inoltre, è nella prima fase del mio progetto, cioè devo costruire questo robot master tale da gestire un robot virtuale su Unity(successivamente dovrò comandare lo slave). Mi chiedo se è possibile muovere a mano il robot master considerando comunque che è presente un piccolo motore nei giunti oltre al potenziometro. L'effetto dovrebbe essere inizialmente quello di una sorta di servosterzo quindi il motore nei giunti dovrebbe accompagnare il mio movimento. Ma questo com'è possibile farlo se muovo io a mano il mio robot? Il tempo che intercorre da quando il potenziometro legge che c'è stato un movimento a quando azionerà il motore sarà comunque non trascurabile e potrei aver già iniziato un altro movimento.

Chiedo scusa per le domande se possono sembrare banali, ma non ho ancora molta esperienza in questo campo.

hapticAle:
... una sorta di servosterzo quindi il motore nei giunti dovrebbe accompagnare il mio movimento. ...

Il contrario ... il motore nel master ti restituirebbe il feedback dello slave, rilevato tramite opportuni sensori di peso (esempio, se lo slave sta alzando un chilo, il motore nel master fa un chilo di resistenza al tuo movimento, facendoti "sentire" come se il chilo lo stessi sollevando tu con la mano) ... se questa funzione non e' necessaria, magari perche' lo slave e' in piena vista e non serve feedback tattile, allora di motori nel master non ne servono (supponendo ovviamente che il master sia solo un manipolatore con cui controlli lo slave e non un braccio robotizzato indipendente, che si muove in modo autonomo), e quindi si risparmia anche parecchio materiale e programma ...

Perfetto, fin qui ci sono!

Il problema è che nella prima parte di progetto, non avendo a disposizione lo slave, devo realizzare un robot master che muovo comunque a mano e i motori devono aiutare il mio movimento! È proprio qui il problema..

Come faccio a sfruttare motori e potenziometri per facilitare il movimento della mia mano?

Io mi concentrerei più sulla struttura del sistema che sul tipo di motori da utilizzare.

Comunque, i motori del master non possono essere dei comuni servo RC, ma motori con asse di rotazione solidale al giunto, proprio per ridurre la resistenza allo spostamento manuale, teoricamente nulla se i motore non è alimentato.

Ogni giunto, ovviamente, avrà un motore con coppia massima diversa a secondo della sua funzione (es. la "spalla" avrà il motore più potente, mentre il "polso" avrà quello meno potente).

Il calcolo della coppia richiesta per giunto dipende dal rapporto di forza richiesta: se il rapporto è 1:1 ed un giunto dello slave deve sollevare 10kg, il corrispondente motore del master deve applicare una forza contraria di 10kg, se il rapporto è 1:10 la forza sarà di solo 100g.

Altro non posso dire, perché non conosco il tuo progetto.

Provo a spiegare meglio la prima parte del mio progetto.
Allora:
Devo realizzare un robot a 5 gradi di libertà, ho la possibilità di stampare con la stampante 3D tutti i vari pezzi che mi servono e devo acquistare eventuali motori, sensori ecc..
Con il movimento della mia mano muoverò il robot e questo andrà a muovere un modello cad che ho sul pc.

Ho allegato un immagine dove si vede un robot simile a quello che devo costruire io.

La differenza sta nel fatto che il mio robot dovrà possedere dei motori nei giunti, questi servono a facilitare il mio movimento. Cioè tramite dei potenziometri devo rilevare il movimento della mia mano e azionare i motori in modo che guidino il mio movimento. Ad esempio nella pedalata assistita o come dicevo sopra lo stesso funzionamento del servosterzo della macchina.

77.png

io userei un accelerometro piu giroscopio montato sul palmo per rilevare il movimento e darei il feedback ai motori.

hapticAle:
... tramite dei potenziometri devo rilevare il movimento della mia mano e azionare i motori in modo che guidino il mio movimento. ...

Eh, no, niente da fare ... quello che tu descrivi non e' un robot master ma un waldo, il che significa che ti servono celle di carico dappertutto per rilevare la spinta della tua mano ed azionare i servomotori di conseguenza (con i potenziometri non risolveresti nulla, perche' sarebbero calettati in asse con i motori, quindi quando rilevi il loro movimento, ad esempio di un grado, e' perche' il braccio si e' gia spostato di un grado, e di conseguenza anche il motore si e' gia portato nella posizione in cui dovrebbe andare per "aiutare" il tuo movimento, per cui diventerebbe inutile azionarlo)

EDIT: a meno che, ovviamente (ma questo tu non lo dici), il movimento della tua mano lo rilevi con un pantografo indipendente dal braccio master :wink:

Etemenanky hai perfettamente capito il mio problema!

Come dovrei posizionare queste celle di carico? Conosci qualche progetto già svolto da cui posso prendere ispirazione o documentarmi?

Il mio è un robot "braccio" a 5 gradi di libertà

Ci sono due possibili soluzioni, dipende dalla geometria del master ...

se il master e' "indossato" dalla persona (se cioe' e' tipo un'esoscheletro che ricalca il braccio reale), e' possibile limitare il numero delle celle di carico e dei cicli di elaborazione, perche' e' "vincolato" alla geometria del braccio ed alla sua estensione, quindi bracciale con celle sui 3 assi per il movimento del braccio vero e proprio e celle sul "manipolatore" per la "mano" ...

Se invece il braccio non ha nulla a che vedere con un'esoscheletro, diventa piu complesso dal punto di vista dei calcoli e delle routines di gestione, perche' interviene una cinematica inversa molto piu complessa, non essendo "legata" dalla geometria fissa di un'esoscheletro, quindi le celle di carico devono leggere l'impugnatura che usi per muoverlo, ma poi i dati vanno elaborati in base agli sforzi letti ma anche alle varie posizioni di leve ed assi ... non la vedo molto semplice, anzi, per un non-programmatore come me, la vedo parecchio incasinata ...

Grazie mille a tutti per l'aiuto :slight_smile: