Sommario:
- Passaggio 1: costruire la struttura
- Passaggio 2: conoscere i valori dell'hardware
- Passaggio 3: cinematica in avanti
- Passaggio 4: cinematica inversa
Video: Robot da disegno aptico: 5 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Nell'ambito della mia laurea magistrale presso il dep. Industrial Design all'Università di Eindhoven, ho creato un dispositivo di disegno tattile che può essere utilizzato per guidare un'auto semi-autonoma nel traffico. L'interfaccia si chiama scribble e consente all'utente di sperimentare dispositivi tattili in uno spazio 2D attraverso una forza e una posizione variabili. Sebbene il concetto non sia ciò di cui tratta questo istruibile, puoi leggere di più su Scribble qui:
Scribble utilizza una configurazione di collegamento a 5 barre che gli consente di spostare due gradi di libertà laterali (DoF). Questa configurazione è abbastanza popolare tra i prototipi per creare robot di disegno, ecco alcuni esempi:
www.projehocam.com/arduino-saati-yazan-kol-…
blogs.sap.com/2015/09/17/plot-clock-weathe…
www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html
Meccanicamente questi robot sono facili da realizzare. Hanno solo bisogno di giunti di base e hanno due attuatori che possono creare alcuni movimenti fluidi. Questa struttura è ideale per i progettisti interessati a realizzare strutture mobili. Tuttavia, non essendo un ingegnere meccanico, ho trovato la cinematica piuttosto difficile da tradurre in codice. Quindi fornirò il codice Arduino di base che calcola la cinematica diretta e inversa in modo da poterlo utilizzare facilmente nei tuoi progetti futuri!;-)
Si prega di scaricare il codice qui sotto!
* EDIT: per un progetto simile, dai un'occhiata a https://haply.co *
Passaggio 1: costruire la struttura
A seconda dello scopo che hai in mente, dovresti prima progettare una struttura a 5 collegamenti. Pensa alle misurazioni, agli attuatori che desideri utilizzare e a come collegare i giunti per movimenti fluidi.
Per il mio prototipo, eseguo il mio codice su un Arduino DUE controllato via seriale da un programma sul mio Mac realizzato in Open Frameworks. Il programma utilizza una connessione UDP per comunicare con un simulatore di guida basato su Unity 3D.
Il prototipo Scribble utilizza cuscinetti da 5 mm ed è realizzato in acrilico tagliato al laser da 5 mm. Gli attuatori sono i motori aptici di Frank van Valeknhoef che consentono l'attuazione, la lettura della posizione e l'emissione di una forza variabile. Questo li ha resi ideali per le proprietà tattili desiderate da Scribble. Maggiori informazioni sui suoi attuatori possono essere trovate qui:
Passaggio 2: conoscere i valori dell'hardware
La cinematica in avanti si basa sulla stazione meteo Plot clock di SAP:
Come mostrato nella loro configurazione è esteso per il braccio per tenere un pennarello da disegnare. Questo è stato rimosso poiché non serviva a nulla per il prototipo dello scarabocchio. Controlla il loro codice se desideri aggiungere di nuovo questo componente. I nomi nella foto sono mantenuti gli stessi nella mia configurazione.
A seconda dell'hardware, l'algoritmo deve conoscere le proprietà dell'hardware:
int attuatore sinistro, attuatore destro; //angolo per scrivere sull'attuatore in gradi, cambia in float se desideri maggiore precisione
int posX, posY; //le coordinate della posizione del puntatore
Imposta la risoluzione dei tuoi valori di input
int postStepsX = 2000;
int postStepsY = 1000;
Le dimensioni del tuo setup, i valori sono in mm (vedi immagine SAP)
#define L1 73 // lunghezza braccio motore, vedere immagine SAP (sinistra e destra sono uguali)
#define L2 95 // braccio di estensione della lunghezza, vedere l'immagine SAP (sinistra e destra sono uguali)
#define rangeX 250 // intervallo massimo in direzione X per il punto da spostare (da sinistra a destra, 0 - maxVal)
#define rangeY 165 // range massimo in direzione Y per il punto da spostare (da 0 alla portata massima rimanendo centrato)
#define originL 90 //distanza di offset dal valore X più minimo alla posizione centrale dell'attuatore
#define originR 145 //distanza di offset dal valore X più minimo alla posizione centrale dell'attuatore, la distanza tra i due motori è in questo caso
Passaggio 3: cinematica in avanti
Come accennato nel passaggio precedente, la cinematica diretta si basa sull'algoritmo SAP.
Il vuoto aggiorna i valori dell'angolo desiderati dell'attuatore sinistro e destro definiti in precedenza. Sulla base dei valori X e Y che sono collegati, calcolerà gli angoli retti per portare il puntatore in questa posizione.
void set_XY(double Tx, double Ty) //inserisci il tuo valore X e Y{ // alcuni valori di cui abbiamo bisogno ma non vogliamo salvare per lunghi double dx, dy, c, a1, a2, Hx, Hy; //mappa la risoluzione inpit sull'intervallo della tua configurazione nel mondo reale int realX = map(Tx, 0, posStepsX, 0, rangeX); //scambia se mappatura se invertita int realY = map(Ty, posStepsX, 0, 0, rangeY); //scambia se mappatura se invertita // calcola angolo per attuatore sinistro // cartesiano dx/dy dx = realX - originL; //include offset dy = realY; // lunghezza polare (c) e angolo (a1) c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = angolo_ritorno(L1, L2, c); attuatore sinistro = floor(((M_PI - (a2 + a1)) * 4068) / 71); //angolo finale e conversione da rad a deg //calc angolo per attuatore destro dx = realX - originR; //include offset dy = realY; c = sqrt(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = angolo_ritorno(L1, L2, c); attuatore destro = floor(((a1 - a2) * 4068) / 71); //angolo finale e converti da rad a deg }
Vuoto aggiuntivo per il calcolo dell'angolo:
double return_angle(double a, double b, double c) { // regola del coseno per l'angolo tra c e un return acos((a * a + c * c - b * b) / (2 * a * c)); }
Passaggio 4: cinematica inversa
La cinematica inversa funziona al contrario. Inserisci la rotazione dei tuoi attuatori in gradi e il vuoto aggiornerà la posizione definita in precedenza.
Tieni presente che avrai bisogno di attuatori o di un sensore separato in grado di leggere l'angolo del braccio. Nel mio caso, ho utilizzato attuatori in grado di leggere e scrivere la loro posizione contemporaneamente. Sentiti libero di sperimentare questo e considera l'aggiunta di una sorta di calibrazione in modo da essere sicuro che il tuo angolo venga letto correttamente.
Consigliato:
Robot da disegno con scudo Adafruit (concorso Make It Move): 10 passaggi (con immagini)
Drawing Robot With Adafruit Shield (Make It Move Contest): Ciao, mi chiamo Jacob e vivo nel Regno Unito. In questo progetto costruirò un robot che disegna per te. *Sono sicuro che molti di voi vogliono vederlo, quindi se vuoi saperlo, salta direttamente al penultimo passaggio ma assicurati di tornare qui per vedere
Modulo di prossimità aptico - Economico e facile: 5 passaggi (con immagini)
Modulo di prossimità tattile - Economico e facile: il senso della vista dotato di Dio per l'essere umano è un aspetto importante della nostra vita. Ma ci sono alcune persone sfortunate che non hanno la capacità di visualizzare le cose. Ci sono circa 37 milioni di persone in tutto il mondo che sono cieche, oltre 15 milioni
Robot da disegno per Arduino: 18 passaggi (con immagini)
Robot da disegno per Arduino: Nota: ho una nuova versione di questo robot che utilizza un circuito stampato, è più facile da costruire e ha il rilevamento degli ostacoli IR! Dai un'occhiata a http://bit.ly/OSTurtleHo progettato questo progetto per un workshop di 10 ore per ChickTech.org il cui obiettivo è quello di i
Robot da disegno economico e compatibile con Arduino: 15 passaggi (con immagini)
Robot di disegno a basso costo, compatibile con Arduino: Nota: ho una nuova versione di questo robot che utilizza un circuito stampato, è più facile da costruire e ha il rilevamento degli ostacoli IR! Dai un'occhiata a http://bit.ly/OSTurtleHo progettato questo progetto per un workshop di 10 ore per ChickTech.org il cui obiettivo è quello di i
Scansione e disegno del robot LEGO Delta: 7 passaggi (con immagini)
Scansione e disegno del robot LEGO Delta: utilizzo di LEGO NXT per costruire un robot Delta. Scansione e disegno combinati