Sisukord:

Haptiline joonistusrobot: 5 sammu (piltidega)
Haptiline joonistusrobot: 5 sammu (piltidega)

Video: Haptiline joonistusrobot: 5 sammu (piltidega)

Video: Haptiline joonistusrobot: 5 sammu (piltidega)
Video: WRC Generations REVIEW: Now That's What I Call RALLY! 2024, November
Anonim

Osana oma magistriõppest dep. Tööstusdisain Eindhoveni ülikoolis lõin haptilise joonistusseadme, mille abil saab liikluses liikuda poolautonoomses autos. Liidese nimi on kritseldus ja see võimaldab kasutajal kogeda haptilisi seadmeid 2D -ruumis muutuva jõu ja asukoha kaudu. Kuigi kontseptsioon ei ole see, mida see juhend sisaldab, saate Scribble'i kohta rohkem lugeda siit:

Scribble kasutab 5 -baarilist haakeseadistust, mis võimaldab tal liigutada kahte külgmist vabadusastet (DoF). See seadistus on joonistusrobotite loomiseks prototüüpide seas üsna populaarne, siin on mõned näited:

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

Neid roboteid on mehaaniliselt lihtne valmistada. Neil on vaja ainult põhilisi liigendeid ja neil on kaks täiturmehhanismi, mis võivad tekitada üsna vedelaid liigutusi. See struktuur sobib ideaalselt disaineritele, kes on huvitatud liikuva konstruktsiooni valmistamisest. Kuna ma ei olnud mehaanikainsener, leidsin, et kinemaatikat on koodiks tõlkida üsna raske. Seetõttu pakun välja Arduino põhikoodi, mis selgitab välja ja vastupidine kinemaatika, nii et saate seda hõlpsalt oma tulevastes kujundustes kasutada!;-)

Palun laadige alla kood alla!

* EDIT: sarnase projekti jaoks vaadake aadressi https://haply.co *

Samm: struktuuri ehitamine

Struktuuri ehitamine
Struktuuri ehitamine

Sõltuvalt eesmärgist, mida silmas peate, peaksite kõigepealt kavandama 5-lülilise konstruktsiooni. Mõelge mõõtmistele, ajamitele, mida soovite kasutada, ja kuidas liigesed sujuvaks liikumiseks kinnitada.

Oma prototüübi jaoks käivitan oma koodi Arduino DUE -l, mida seeria kaudu kontrollib minu Maci programm, mis on loodud avatud raamistikes. Programm kasutab UDP ühendust, et suhelda Unity 3D -põhise sõidusimulaatoriga.

Scribble'i prototüüp kasutab 5 mm laagreid ja on valmistatud 5 mm laserlõigatud akrüülist. Täiturmehhanismid on Frank van Valeknhoefi haptilised mootorid, mis võimaldavad käivitada, positsiooni välja lugeda ja muuta jõudu. See muutis need ideaalseks Scribble'i soovitud haptiliste omaduste jaoks. Lisateavet tema ajamite kohta leiate siit:

2. samm: teadke oma riistvara väärtusi

Teadke oma riistvara väärtusi
Teadke oma riistvara väärtusi

Edasine kinemaatika põhineb SAP-i graafikakella ilmajaamal:

Nagu on näidatud nende konfiguratsioonis, on käsi sirutatud, et hoida joonistamiseks markerit. See on eemaldatud, kuna sellel pole kritselduse prototüübil mingit otstarvet. Kontrollige nende koodi, kui soovite selle komponendi uuesti lisada. Pildil olevad nimed jäävad minu konfiguratsioonis samaks.

Sõltuvalt teie riistvarast peab algoritm teadma teie riistvara omadusi:

int leftActuator, rightActuator; // nurk ajamile kirjutamiseks kraadides, muutke ujukiteks, kui soovite rohkem täpsust

int posX, posY; // osuti asukoha koordinaadid

Määrake sisendväärtuste eraldusvõime

int posStepsX = 2000;

int posStepsY = 1000;

Teie seadistuse mõõtmed, väärtused on millimeetrites (vt SAP -pilti)

#define L1 73 // mootori õla pikkus, vt SAP -pilti (vasak ja parem on samad)

#define L2 95 // pikendusvarras, vt SAP -pilti (vasak ja parem on samad)

#define rangeX 250 // maksimaalne vahemik X suunas, kus punkt liigub (vasakult paremale, 0 - maxVal)

#define rangeY 165 // maksimaalne vahemik Y -suunas punkti liigutamiseks (0 -st maksimaalse ulatuseni, jäädes tsentreerituks)

#define originL 90 // nihkekaugus enamikust minimaalsest X väärtusest ajami keskmisesse asendisse

#define originR 145 // nihutatud kaugus enamikust minimaalsest X väärtusest ajami keskmisesse asendisse, sel juhul on kahe mootori vaheline kaugus

3. samm: kinemaatika edasisuunamine

Edasine kinemaatika
Edasine kinemaatika

Nagu eelmises etapis mainitud, põhineb edasine kinemaatika SAP -i algoritmil.

Tühjus uuendab vasakpoolse ja parema täiturmehhanismi eelnevalt määratud nurkväärtusi. Ühendatud X- ja Y -väärtuste põhjal arvutab kursor sellesse asendisse õige nurga.

void set_XY (double Tx, double Ty) // sisestage oma X ja Y väärtus {// mõned valud, mida vajame, kuid ei taha pikaajalise topelt dx, dy, c, a1, a2, Hx, Hy jaoks salvestada; // kaardista inpit resolutsioon reaalses maailmas oma konfiguratsiooni vahemikku int realX = map (Tx, 0, posStepsX, 0, rangeX); // vaheta kaardistamise korral, kui see on ümber pööratud int realY = map (Ty, posStepsX, 0, 0, rangeY); // vahetus, kui kaardistamine, kui see on ümber pööratud // vasakpoolse täituri kalkulatsiooninurk // desartesian dx/dy dx = realX - originL; // kaasata nihke dy = realY; // polaarpikkus (c) ja nurk (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = tagasipöördenurk (L1, L2, c); leftActuator = korrus ((((M_PI - (a2 + a1)) * 4068) / 71); // lõplik nurk ja teisendamine radast degreemiks // parema täiturmehhanismi kalkuleerimisnurk dx = realX - originR; // kaasata nihke dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = tagasipöördenurk (L1, L2, c); rightActuator = korrus ((((a1 - a2) * 4068) / 71); // lõplik nurk ja teisendamine radist degradesse}

Täiendav tühimik nurga arvutamiseks:

double return_angle (double a, double b, double c) {// koosinusreegel nurga c ja tagasipöördumise acos vahel ((a * a + c * c - b * b) / (2 * a * c)); }

Samm: pöördkinemaatika

Pöördkineemika
Pöördkineemika

Pöördkineetika töötab vastupidi. Ühendate ajamite pöörlemise kraadidega ja tühimik värskendab varem määratletud asendit.

Pange tähele, et vajate täiturmehhanisme või eraldi andurit, mis loeb käe nurka. Minu puhul kasutasin täiturmehhanisme, mis suudavad oma positsiooni samaaegselt lugeda ja kirjutada. Katsetage seda julgelt ja kaaluge mõne kalibreerimise lisamist, et olla kindel, et teie nurk on õigesti loetud.

Soovitan: