Sadržaj:

Robot za haptičko crtanje: 5 koraka (sa slikama)
Robot za haptičko crtanje: 5 koraka (sa slikama)

Video: Robot za haptičko crtanje: 5 koraka (sa slikama)

Video: Robot za haptičko crtanje: 5 koraka (sa slikama)
Video: ДЕТИ ЛЕДИБАГ И СУПЕР-КОТА 😱 Сказки на ночь от Маринетт Miraculous Ladybug & Cat Noir in real life 2024, Juli
Anonim

Kao dio moje master diplome na odjelu Industrijski dizajn na Sveučilištu Eindhoven, stvorio sam uređaj za haptičko crtanje koji se može koristiti za navigaciju poluautonomnog automobila kroz promet. Sučelje se naziva scribble i omogućava korisniku da doživi haptičke instalacije u 2D prostoru kroz promjenjivu silu i lokaciju. Iako ovo uputstvo ne govori o konceptu, više o Scribble -u možete pročitati ovdje:

Scribble koristi konfiguraciju povezivanja od 5 bara koja mu omogućuje pomicanje dva bočna stupnja slobode (DoF). Ova postavka je prilično popularna među prototipima za stvaranje robota za crtanje, evo nekoliko primjera:

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

Mehanički, ove je robote lako napraviti. Potrebni su im samo osnovni zglobovi i imaju dva pogona koji mogu stvoriti dosta tekućih pokreta. Ova je struktura idealna za dizajnere koji su zainteresirani za izradu pokretnih struktura. Međutim, budući da nisam inženjer strojarstva, kinematiku je bilo prilično teško prevesti u kod. Stoga ću pružiti osnovni Arduino kôd koji izračunava prednju i obrnutu kinematiku, tako da ga možete lako koristiti u svojim budućim dizajnom!;-)

Molimo preuzmite donji kod!

* EDIT: za sličan projekat pogledajte https://haply.co *

Korak 1: Izgradnja strukture

Izgradnja strukture
Izgradnja strukture

Ovisno o namjeri koju imate na umu, prvo biste trebali projektirati strukturu s 5 spojeva. Razmislite o mjerenjima, aktuatorima koje želite koristiti i kako pričvrstiti zglobove za glatke pokrete.

Za svoj prototip, ja pokrećem svoj kôd na Arduino DUE -u koji kontrolira serijski program na mom Mac -u napravljen u Open Frameworks -u. Program koristi UDP vezu za komunikaciju sa simulatorom vožnje temeljenim na Unity 3D.

Prototip Scribble koristi ležajeve od 5 mm i izrađen je od 5 mm laserski izrezanog akrila. Pokretači su haptički motori Franka van Valeknhoefa koji omogućuju aktiviranje, očitavanje položaja i izlaženje promjenjive sile. To ih je učinilo idealnim za željena haptička svojstva Scribble -a. Više o njegovim aktuatorima možete pronaći ovdje:

Korak 2: Upoznajte svoje vrijednosti hardvera

Upoznajte svoje vrijednosti hardvera
Upoznajte svoje vrijednosti hardvera

Kinematika prema naprijed zasnovana je na vremenskoj stanici za sat Plot kompanije SAP:

Kao što je prikazano u njihovoj konfiguraciji, ruka je produžena za držanje markera za crtanje. Ovo je uklonjeno jer nije imalo nikakvu svrhu za prototip za pisanje. Provjerite njihov kod ako želite ponovo dodati ovu komponentu. Imena na slici su ista u mojoj konfiguraciji.

Ovisno o vašem hardveru, algoritam mora znati vaša hardverska svojstva:

int leftActuator, rightActuator; // kut za pisanje aktuatoru u stupnjevima, promijenite u plutajući ako želite više točnosti

int posX, posY; // koordinate lokacije pokazivača

Postavite rezoluciju vaših ulaznih vrijednosti

int posStepsX = 2000;

int posStepsY = 1000;

Dimenzije vašeg postavljanja, vrijednosti su u mm (pogledajte SAP sliku)

#define L1 73 // motorna ruka dužine, pogledajte SAP sliku (lijevo i desno su iste)

#define L2 95 // produžni krak, pogledajte SAP sliku (lijevo i desno su isti)

#define rangeX 250 // maksimalni raspon u smjeru X za pomicanje točke (slijeva nadesno, 0 - maxVal)

#define rangeY 165 // maksimalni raspon u smjeru Y za pomicanje točke (od 0 do maksimalnog dosega dok je centriran)

#define originL 90 // pomak udaljenosti od najveće minimalne vrijednosti X do središnje pozicije aktuatora

#define originR 145 // pomak udaljenosti od najveće minimalne vrijednosti X do središnjeg položaja pogona, u ovom slučaju udaljenost između dva motora je

Korak 3: Naprijed kinematika

Napredna kinematika
Napredna kinematika

Kao što je spomenuto u prethodnom koraku, napredna kinematika je zasnovana na SAP -ovom algoritmu.

Praznina ažurira željene vrijednosti kuta lijevog i desnog pogona definirane ranije. Na osnovu vrijednosti X i Y koje su uključene, izračunat će prave kutove kako bi pokazivač došao do ove pozicije.

void set_XY (double Tx, double Ty) // unesite vašu vrijednost X i Y {// neke vrijednosti koje su nam potrebne, ali ne želimo spremati na duge duple dx, dy, c, a1, a2, Hx, Hy; // mapirajte inpit rezoluciju u raspon vaše konfiguracije u stvarnom svijetu int realX = mapa (Tx, 0, posStepsX, 0, rangeX); // zamijeniti ako je mapiranje obrnuto int realY = map (Ty, posStepsX, 0, 0, rangeY); // zamijeni ako je preslikavanje ako je obrnuto // kut izračuna za lijevi pogon // kartezijanski dx/dy dx = realX - originL; // uključuje pomak dy = realY; // polarna dužina (c) i kut (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = povratni_ugao (L1, L2, c); leftActuator = floor (((M_PI - (a2 + a1)) * 4068) / 71); // konačni kut i pretvoriti iz rad u deg // kut izračuna za desni pogon dx = realX - originR; // uključuje pomak dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = povratni_ugao (L1, L2, c); rightActuator = floor (((a1 - a2) * 4068) / 71); // konačni ugao i pretvori iz rada u deg}

Dodatna praznina za proračun ugla:

double return_angle (double a, double b, double c) {// kosinusno pravilo za ugao između c i povratnog acos ((a * a + c * c - b * b) / (2 * a * c)); }

Korak 4: Inverzna kinematika

Inverzna kinematika
Inverzna kinematika

Inverzna kinematika funkcionira obrnuto. Uključujete rotaciju pokretača u stupnjevima i praznina će ažurirati položaj koji je ranije definiran.

Imajte na umu da će vam trebati pokretači ili zasebni senzor koji može očitati kut ruke. U mom slučaju, koristio sam pokretače koji mogu istovremeno čitati i pisati svoj položaj. Slobodno eksperimentirajte s ovim i razmislite o dodavanju neke vrste kalibracije kako biste bili sigurni da se vaš kut pravilno čita.

Preporučuje se: