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, Studeni
Anonim

U sklopu moje master mature na dep. 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ćuje korisniku da doživi haptičke instalacije u 2D prostoru kroz promjenjivu silu i mjesto. 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 je postavka 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, te 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 jednostavno koristiti u svojim budućim dizajnom!;-)

Molimo preuzmite donji kod!

* EDIT: za sličan projekt 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 se serijski kontrolira programom na mom Macu koji je napravljen u Open Frameworks -u. Program koristi UDP vezu za komunikaciju s 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 Scribbleova željena haptička svojstva. 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 temelji se na vremenskoj stanici Plot clock SAP-a:

Kao što je prikazano u njihovoj konfiguraciji, ruka je produžena za držanje markera za crtanje. Ovo je uklonjeno jer nije imalo nikakve svrhe 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će ako želite više točnosti

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

Postavite razlučivost 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žna ruka, pogledajte SAP sliku (lijevo i desno su iste)

#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 većine minimalne vrijednosti X do središnjeg položaja pogona

#define originR 145 // pomak udaljenosti od većine 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 temelji se na SAP -ovom algoritmu.

Šupljina ažurira željene vrijednosti kutova lijevog i desnog pogona definirane ranije. Na temelju vrijednosti X i Y koje su uključene, izračunat će prave kutove kako bi pokazivač došao u ovaj položaj.

void set_XY (double Tx, double Ty) // unesite 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 = karta (Tx, 0, posStepsX, 0, rangeX); // zamijeniti ako je mapiranje obrnuto int realY = map (Ty, posStepsX, 0, 0, rangeY); // zamijeni ako je preslikavanje obrnuto // kut izračuna za lijevi pogon // kartezijanski dx/dy dx = realX - ishodišteL; // uključuje pomak dy = realY; // polarna duljina (c) i kut (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = povratni kut (L1, L2, c); leftActuator = kat (((M_PI - (a2 + a1)) * 4068) / 71); // konačni kut i pretvoriti iz rada u stupnjeve // 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 kut (L1, L2, c); rightActuator = kat (((a1 - a2) * 4068) / 71); // konačni kut i pretvoriti iz rad u deg}

Dodatna praznina za izračun kuta:

double return_angle (double a, double b, double c) {// pravilo kosinusa za kut 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 radi obrnuto. Uključujete rotaciju pokretača u stupnjevima i praznina će ažurirati ranije definirani položaj.

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 nekakve kalibracije kako biste bili sigurni da se vaš kut pravilno čita.

Preporučeni: