Kazalo:

Haptični robot za risanje: 5 korakov (s slikami)
Haptični robot za risanje: 5 korakov (s slikami)

Video: Haptični robot za risanje: 5 korakov (s slikami)

Video: Haptični robot za risanje: 5 korakov (s slikami)
Video: Как научиться резать ножом. Шеф-повар учит резать. 2024, November
Anonim

Kot del moje magistrske študije na dep. Industrijsko oblikovanje na univerzi v Eindhovenu sem ustvaril napravo za haptično risanje, ki jo lahko uporabljamo za krmarjenje po polavtonomnem avtomobilu skozi promet. Vmesnik se imenuje scribble in uporabniku omogoča spreminjanje sile in lokacije s pomočjo haptičnih napeljav v 2D prostoru. Čeprav ta pouk ne govori o konceptu, lahko več o Scribbleu preberete tukaj:

Scribble uporablja 5 -palčno konfiguracijo povezave, ki mu omogoča premikanje dveh stranskih stopenj svobode (DoF). Ta nastavitev je med prototipi zelo priljubljena za ustvarjanje risarskih robotov, tukaj je nekaj primerov:

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

Mehansko je te robote enostavno izdelati. Potrebujejo le osnovne spoje in imajo dva pogona, ki lahko ustvarita kar nekaj gibanja tekočine. Ta struktura je idealna za oblikovalce, ki jih zanima izdelava premične strukture. Ker pa nisem strojni inženir, se mi je kinematiko zdelo težko prevesti v kodo. Zato bom zagotovil osnovno kodo Arduino, ki določa prednjo in obratno kinematiko, tako da jo lahko preprosto uporabite v svojih prihodnjih modelih!;-)

Prosimo, prenesite spodnjo kodo!

* EDIT: za podoben projekt si oglejte https://haply.co *

1. korak: Gradnja strukture

Gradnja strukture
Gradnja strukture

Odvisno od namena, ki ga imate v mislih, morate najprej oblikovati 5-vezno strukturo. Razmislite o meritvah, aktuatorjih, ki jih želite uporabiti, in o tem, kako pritrditi spoje za nemoteno gibanje.

Za svoj prototip kodo izvajam na Arduino DUE, ki ga serijsko nadzira program na mojem Macu, izdelan v Open Frameworks. Program uporablja povezavo UDP za komunikacijo s simulatorjem vožnje, ki temelji na Unity 3D.

Prototip Scribble uporablja 5 mm ležaje in je izdelan iz 5 mm lasersko izrezanega akrila. Pogoni so haptični motorji Franka van Valeknhoefa, ki omogočajo aktiviranje, odčitavanje položaja in oddajanje spremenljive sile. Zaradi tega so bili idealni za Scribblejeve želene haptične lastnosti. Več o njegovih aktuatorjih najdete tukaj:

2. korak: Spoznajte svoje vrednosti strojne opreme

Spoznajte svoje vrednosti strojne opreme
Spoznajte svoje vrednosti strojne opreme

Predhodna kinematika temelji na vremenski postaji Ura za ploskev podjetja SAP:

Kot je prikazano v njihovi konfiguraciji, se roka raztegne tako, da drži oznako za risanje. To je bilo odstranjeno, ker prototipu za pisanje ni služilo. Preverite njihovo kodo, če želite znova dodati to komponento. Imena na sliki so v moji konfiguraciji enaka.

Odvisno od strojne opreme mora algoritem poznati lastnosti strojne opreme:

int leftActuator, rightActuator; // kot za zapis na aktuator v stopinjah, spremenite v plavajoče, če želite večjo natančnost

int posX, posY; // koordinate lokacije kazalca

Nastavite ločljivost vhodnih vrednosti

int posStepsX = 2000;

int posStepsY = 1000;

Mere vaše nastavitve, vrednosti so v mm (glejte sliko SAP)

#define L1 73 // dolžina motorne roke, glej sliko SAP (levo in desno sta enaka)

#define L2 95 // podaljšek dolžine, glej sliko SAP (levo in desno sta enaka)

#define rangeX 250 // največje območje v smeri X za premikanje točke (od leve proti desni, 0 - maxVal)

#define rangeY 165 // največje območje v smeri Y za premikanje točke (od 0 do največjega dosega, medtem ko ostane centrirano)

#define originL 90 // odmik razdalje od največje minimalne vrednosti X do sredinskega položaja aktuatorja

#define originR 145 // odmik razdalje od največje minimalne vrednosti X do sredinskega položaja aktuatorja, v tem primeru je razdalja med dvema motorjema

3. korak: naprej kinematika

Naprej kinematika
Naprej kinematika

Kot je bilo omenjeno v prejšnjem koraku, kinematika naprej temelji na algoritmu SAP.

Praznina posodobi željene vrednosti kota levega in desnega aktuatorja, opredeljene prej. Na podlagi vstavljenih vrednosti X in Y bo izračunal prave kote, da bo kazalec postavljen v ta položaj.

void set_XY (double Tx, double Ty) // vnesite vrednost X in Y {// nekaj vrednosti, ki jih potrebujemo, vendar jih ne želimo shraniti za dolge dvojne dx, dy, c, a1, a2, Hx, Hy; // preslikava začetno ločljivost na obseg vaše konfiguracije v resničnem svetu int realX = map (Tx, 0, posStepsX, 0, rangeX); // zamenjaj, če preslikava, če je obrnjena int realY = map (Ty, posStepsX, 0, 0, rangeY); // zamenjaj, če je preslikava obrnjena // kot izračuna za levi aktuator // kartezijski dx/dy dx = realX - originL; // vključuje odmik dy = realY; // polarna dolžina (c) in kot (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = povratni kot (L1, L2, c); leftActuator = tla (((M_PI - (a2 + a1)) * 4068) / 71); // končni kot in pretvorba iz rad v deg // kot izračunavanja za desni pogon dx = realX - originR; // vključuje odmik dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = povratni kot (L1, L2, c); rightActuator = tla (((a1 - a2) * 4068) / 71); // končni kot in pretvorba iz rad v deg}

Dodatna praznina za izračun kota:

double return_angle (double a, double b, double c) {// kosinusno pravilo za kot med c in povratnim acos ((a * a + c * c - b * b) / (2 * a * c)); }

4. korak: Inverzna kinematika

Inverzna kinematika
Inverzna kinematika

Obratna kinematika deluje obratno. Vklopite vrtenje pogonov v stopinjah in praznina bo posodobila položaj, ki je bil opredeljen prej.

Upoštevajte, da boste potrebovali aktuatorje ali ločen senzor, ki bo lahko prebral kot roke. V mojem primeru sem uporabil aktuatorje, ki lahko hkrati berejo in zapisujejo svoj položaj. S tem lahko eksperimentirate in razmislite o dodajanju neke vrste umerjanja, da boste prepričani, da je vaš kot pravilno prebran.

Priporočena: