Taula de continguts:

Robot de dibuix haptic: 5 passos (amb imatges)
Robot de dibuix haptic: 5 passos (amb imatges)

Vídeo: Robot de dibuix haptic: 5 passos (amb imatges)

Vídeo: Robot de dibuix haptic: 5 passos (amb imatges)
Vídeo: Как установить цену на свою работу? Этот вопрос простой и сложный одновременно😅#художница#рисование 2024, De novembre
Anonim

Com a part de la meva graduació en màster al dep. Disseny industrial a la Universitat d’Eindhoven, vaig crear un dispositiu de dibuix hàptic que es pot utilitzar per navegar per un cotxe semiautònom a través del trànsit. La interfície s’anomena gargot i permet a l’usuari experimentar accessoris hàptics en un espai 2D mitjançant una força i una ubicació variables. Tot i que aquest concepte no és el concepte, podeu llegir més sobre Scribble aquí:

Scribble utilitza una configuració d'enllaç de 5 barres que li permet moure dos graus de llibertat laterals (DoF). Aquesta configuració és bastant popular entre els prototips per crear robots de dibuix, a continuació en detallem alguns exemples:

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

Mecànicament aquests robots són fàcils de fabricar. Només necessiten juntes bàsiques i tenen dos actuadors que poden crear moviments fluids. Aquesta estructura és ideal per als dissenyadors que estiguin interessats a fer una estructura mòbil. Tot i que, en no ser enginyer mecànic, em va semblar que la cinemàtica era força difícil de traduir al codi. Per tant, proporcionaré codi Arduino bàsic que descobreixi la cinemàtica directa i inversa perquè pugueu utilitzar-la fàcilment en els vostres futurs dissenys.;-)

Descarregueu el codi següent.

* EDIT: per a un projecte similar, consulteu https://haply.co *

Pas 1: construir l’estructura

Construint l’estructura
Construint l’estructura

En funció del propòsit que tingueu present, primer heu de dissenyar una estructura de 5 enllaços. Penseu en les mesures, els actuadors que voleu utilitzar i com fixar les articulacions per a un moviment suau.

Per al meu prototip, executo el meu codi en un Arduino DUE que està controlat per sèrie mitjançant un programa del meu Mac que es va fer a Open Frameworks. El programa utilitza una connexió UDP per comunicar-se amb un simulador de conducció basat en Unity 3D.

El prototipus Scribble utilitza coixinets de 5 mm i està fabricat amb acrílic tallat amb làser de 5 mm. Els actuadors són els motors haptics de Frank van Valeknhoef que permeten accionar, llegir la posició i generar una força variable. Això els va fer ideals per a les propietats hàptiques desitjades de Scribble. Podeu trobar més informació sobre els seus actuadors aquí:

Pas 2: coneixeu els valors del maquinari

Conegueu els vostres valors de maquinari
Conegueu els vostres valors de maquinari

La cinemàtica directa es basa en l’estació meteorològica del rellotge Plot de SAP:

Com es mostra a la seva configuració, s’amplia perquè el braç tingui un marcador per dibuixar. S'ha eliminat perquè no servia de res al prototipus de gargots. Comproveu el seu codi si voleu tornar a afegir aquest component. Els noms de la imatge es mantenen iguals a la meva configuració.

Depenent del vostre maquinari, l'algorisme ha de conèixer les propietats del maquinari:

int leftActuator, rightActuator; // angle per escriure a l'actuador en grad, canvieu a flotant si voleu més precisió

int posX, posY; // les coordenades de la ubicació del punter

Definiu la resolució dels valors d’entrada

int posStepsX = 2000;

int posStepsY = 1000;

Dimensions de la configuració, els valors són en mm (vegeu la imatge SAP)

#define L1 73 // longitud del braç del motor, vegeu la imatge SAP (esquerra i dreta són iguals)

#define L2 95 // braç d’extensió de longitud, vegeu la imatge SAP (esquerra i dreta són iguals)

#define rangeX 250 // interval màxim en direcció X per al punt a moure (d'esquerra a dreta, 0 - maxVal)

#define rangeY 165 // rang màxim en direcció Y per al punt a moure (de 0 a abast màxim mentre es manté centrat)

#define originL 90 // compensar la distància des del valor mínim X màxim fins a la posició central de l’actuador

#define originR 145 // distància de desplaçament des del màxim valor mínim X fins a la posició central de l'actuador, la distància entre els dos motors és en aquest cas

Pas 3: endavant la cinemàtica

Cinemàtica cap endavant
Cinemàtica cap endavant

Com es va esmentar al pas anterior, la cinemàtica directa es basa en l'algorisme de SAP.

El buit actualitza els valors d'angle desitjats de l'actuador esquerre i dret definits anteriorment. Basant-se en els valors X i Y connectats, es calcularan els angles rectes per aconseguir el punter en aquesta posició.

void set_XY (doble Tx, doble Ty) // introduïu el vostre valor X i Y {// alguns vals que necessitem, però no volem desar per a dx llargs llargs, dy, c, a1, a2, Hx, Hy; // resolució de mapes inpit al rang de la vostra configuració al món real int realX = map (Tx, 0, posStepsX, 0, rangeX); // canviar si mapeja si s'inverteix int realY = mapa (Ty, posStepsX, 0, 0, intervalY); // canvieu si mapeu si s'inverteix // angle calc per a l'actuador esquerre // cartesià dx / dy dx = realX - origenL; // inclou offset dy = realY; // longitud polar (c) i angle (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = retorn_angle (L1, L2, c); leftActuator = floor (((M_PI - (a2 + a1)) * 4068) / 71); // angle final i converteix de rad a deg // angle calc per actuador dret dx = realX - origenR; // inclou offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = retorn_angle (L1, L2, c); rightActuator = floor (((a1 - a2) * 4068) / 71); // angle final i converteix de rad a deg}

Buit addicional per al càlcul de l'angle:

doble retorn_angle (doble a, doble b, doble c) {// regla del cosinus per a l'angle entre c i un retorn acos ((a * a + c * c - b * b) / (2 * a * c)); }

Pas 4: Cinemàtica inversa

Cinemàtica inversa
Cinemàtica inversa

La cinemàtica inversa funciona al revés. Connecteu la rotació dels actuadors en graus i el buit actualitzarà la posició definida anteriorment.

Tingueu en compte que necessitareu actuadors o un sensor independent que pugui llegir l’angle del braç. En el meu cas, he utilitzat actuadors que poden llegir i escriure la seva posició simultàniament. No dubteu a experimentar amb això i penseu en afegir algun tipus de calibratge per assegurar-vos que el vostre angle es llegeix correctament.

Recomanat: