Përmbajtje:

Roboti i vizatimit Haptic: 5 hapa (me fotografi)
Roboti i vizatimit Haptic: 5 hapa (me fotografi)

Video: Roboti i vizatimit Haptic: 5 hapa (me fotografi)

Video: Roboti i vizatimit Haptic: 5 hapa (me fotografi)
Video: HOW TO DRAW A DIAMOND 2024, Nëntor
Anonim

Si pjesë e diplomimit tim master në dep. Dizajni Industrial në Universitetin Eindhoven, krijova një pajisje vizatimi haptike që mund të përdoret për të lundruar në një makinë gjysmë autonome përmes trafikut. Ndërfaqja quhet shkarravitje dhe i lejon përdoruesit të përjetojë pajisje haptike në një hapësirë 2D përmes një force dhe vendndodhjeje të ndryshueshme. Edhe pse koncepti nuk ka të bëjë me këtë udhëzues, mund të lexoni më shumë rreth Scribble këtu:

Scribble përdor një konfigurim të lidhjes me 5 shirita i cili e lejon atë të lëvizë dy shkallë anësore të lirisë (DoF). Ky konfigurim është mjaft i popullarizuar në mesin e prototiperëve për të krijuar robotë vizatimi, këtu janë disa shembuj:

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

Mekanikisht, këta robotë janë të lehtë për t'u bërë. Ata kanë nevojë vetëm për nyje themelore dhe kanë dy aktivizues që mund të krijojnë mjaft lëvizje të lëngshme. Kjo strukturë është ideale për stilistët që janë të interesuar të bëjnë strukturë lëvizëse Megjithatë, duke mos qenë një inxhinier mekanik, e kam gjetur kinematikën mjaft të vështirë për t'u përkthyer në kod. Prandaj, unë do të siguroj kodin bazë Arduino që përcakton kinematikën e përparme dhe të kundërt, në mënyrë që ta përdorni me lehtësi këtë në modelet tuaja të ardhshme!;-)

Ju lutemi shkarkoni kodin më poshtë!

* EDIT: për një projekt të ngjashëm, hidhini një sy https://haply.co *

Hapi 1: Ndërtimi i strukturës

Ndërtimi i Strukturës
Ndërtimi i Strukturës

Në varësi të qëllimit që keni në mendje, së pari duhet të hartoni një strukturë me 5 lidhje. Mendoni për matjet, aktivizuesit që dëshironi të përdorni dhe mënyrën e lidhjes së nyjeve për lëvizje të lëmuara.

Për prototipin tim, unë drejtoj kodin tim në një Arduino DUE që kontrollohet mbi serialin nga një program në Mac tim që është bërë në Open Frameworks. Programi përdor një lidhje UDP për të komunikuar me një imitues të drejtimit të bazuar në Unity 3D.

Prototipi Scribble përdor kushineta 5 mm dhe është bërë nga akrilikë 5 mm të prerë me lazer. Aktivizuesit janë Makinat Haptic të Frank van Valeknhoef që lejojnë aktivizimin, leximin e pozicionit dhe nxjerrjen e një force të ndryshueshme. Kjo i bëri ato ideale për vetitë haptike të dëshiruara të Scribble. Më shumë për aktivizuesit e tij mund të gjeni këtu:

Hapi 2: Njihni vlerat tuaja të harduerit

Njihni vlerat tuaja të harduerit
Njihni vlerat tuaja të harduerit

Kinematika e përparme bazohet në stacionin e motit Plot clock nga SAP:

Siç tregohet në konfigurimin e tyre është zgjatur që krahu të mbajë një shënues për të vizatuar. Kjo është hequr pasi nuk ka shërbyer për qëllim për prototipin e shkarravitjes. Kontrolloni kodin e tyre nëse dëshironi të shtoni përsëri këtë përbërës. Emrat në figurë mbahen të njëjtë në konfigurimin tim.

Në varësi të harduerit tuaj, algoritmi duhet të dijë vetitë tuaja të harduerit:

int leftActuator, rightActuator; // këndi për t'i shkruar aktivizuesit në deg, ndryshoni në nota nëse dëshironi më shumë saktësi

int posX, posY; // koordinatat e vendndodhjes së treguesit

Vendosni zgjidhjen e vlerave tuaja hyrëse

int posHapatX = 2000;

int posHapatY = 1000;

Dimensionet e konfigurimit tuaj, vlerat janë në mm (shiko foton SAP)

#define L1 73 // krahun motorik me gjatësi, shihni foton SAP (majtas dhe djathtas janë të njëjtë)

#define L2 95 // krahu i zgjatjes së gjatësisë, shihni foton SAP (majtas dhe djathtas janë të njëjtë)

#përcakto gamënX 250 // diapazoni maksimal në drejtimin X që pika të lëvizë (nga e majta në të djathtë, 0 - maxVal)

#përcakto gamënY 165 // diapazoni maksimal në drejtim Y që pika të lëvizë (nga 0 në arritjen maksimale duke qëndruar në qendër)

#përcaktoni origjinënL 90 // distanca e kompensuar nga vlera më e vogël minimale X në pozicionin e qendrës së aktivizuesit

#përcaktoni origjinënR 145 // distanca e kompensuar nga shuma minimale X në pozicionin e qendrës së aktivizuesit, distanca midis dy motorëve është në këtë rast

Hapi 3: Kinematika përpara

Kinematika përpara
Kinematika përpara

Siç u përmend në hapin e mëparshëm, kinematika e përparuar bazohet në algoritmin e SAP.

Boshllëku përditëson vlerat e këndit të dëshiruar të aktivit të majtë dhe të djathtë të përcaktuar më parë. Bazuar në vlerat X dhe Y që lidhen me të do të llogarisë këndet e drejta për ta çuar treguesin në këtë pozicion.

void set_XY (double Tx, double Ty) // futni vlerën tuaj X dhe Y {// disa vale që na duhen, por nuk duam t'i ruajmë për një kohë të gjatë dyfish dx, dy, c, a1, a2, Hx, Hy; // hartoni rezolucionin e inpitit në rangun e konfigurimit tuaj në botën reale int realX = hartë (Tx, 0, posStepsX, 0, rangeX); // ndërroj nëse hartëzohet nëse përmbyset int realY = hartë (Ty, posStepsX, 0, 0, rangeY); // shkëmbim nëse hartëzimi është i përmbysur // këndi calc për aktivizuesin e majtë // kartezian dx/dy dx = realX - origjinL; // përfshini offset dy = realY; // gjatësia polare (c) dhe këndi (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = kthesa e kthimit (L1, L2, c); leftActuator = kati (((M_PI - (a2 + a1)) * 4068) / 71); // këndi përfundimtar dhe konvertohet nga rad në deg // këndi calc për aktivizuesin e drejtë dx = realX - origRR; // përfshini offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = kthesa e kthimit (L1, L2, c); rightActuator = kati (((a1 - a2) * 4068) / 71); // këndi përfundimtar dhe konvertohet nga rad në deg}

Boshllëku shtesë për llogaritjen e këndit:

kthesë e dyfishtë e kthimit (dyshe a, dyshe b, dyshe c) {// rregulli i kosinusit për këndin midis c dhe një kthimi acos ((a * a + c * c - b * b) / (2 * a * c)); }

Hapi 4: Kinematika Inverse

Kinematika inverse
Kinematika inverse

Kinematika e kundërt punon anasjelltas. Ju lidhni rrotullimin e aktivizuesve tuaj në shkallë dhe zbrazëtia do të azhurnojë pozicionin e përcaktuar më parë.

Ju lutemi vini re se do t'ju nevojiten aktivizues ose një sensor i veçantë që mund të lexojë këndin e krahut. Në rastin tim, kam përdorur aktivizues që mund të lexojnë dhe shkruajnë pozicionin e tyre njëkohësisht. Ndjehuni të lirë të eksperimentoni me këtë dhe konsideroni të shtoni një lloj kalibrimi në mënyrë që të jeni të sigurt se këndi juaj është lexuar saktë.

Recommended: