Talaan ng mga Nilalaman:

Haptic Drawing Robot: 5 Hakbang (na may Mga Larawan)
Haptic Drawing Robot: 5 Hakbang (na may Mga Larawan)

Video: Haptic Drawing Robot: 5 Hakbang (na may Mga Larawan)

Video: Haptic Drawing Robot: 5 Hakbang (na may Mga Larawan)
Video: Playstation 5 | Astro's Playroom | Augmented reality controller 2024, Hulyo
Anonim

Bilang bahagi ng aking graduation ng master sa dep. Pang-industriya na Disenyo sa Eindhoven University, lumikha ako ng isang haptic na guhit na aparato na maaaring magamit upang mag-navigate sa isang semi-autonomous na kotse sa pamamagitan ng trapiko. Ang interface ay tinatawag na scribble at hinahayaan ang gumagamit na maranasan ang mga haptic fixture sa isang 2D space sa pamamagitan ng isang variable na puwersa at lokasyon. Bagaman ang konsepto ay hindi tungkol sa itinuturo na ito, maaari kang magbasa nang higit pa tungkol sa Scribble dito:

Gumagamit ang scribble ng isang 5 bar linkage configure na nagbibigay-daan dito upang ilipat ang dalawang mga lateral degree ng kalayaan (DoF). Ang setup na ito ay medyo popular sa mga prototype upang lumikha ng mga robot ng pagguhit, narito ang ilang mga halimbawa:

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

Mekanikal ang mga robot na ito ay madaling gawin. Kailangan lang nila ng mga pangunahing kasukasuan at mayroong dalawang mga actuator na maaaring lumikha ng ilang mga galaw ng likido. Ang istrakturang ito ay mainam para sa mga tagadisenyo na interesado sa paggawa ng gumagalaw na istraktura Gayunpaman hindi ako isang mekanikal na inhinyero, nahanap kong mahirap ang mga kinematic na isalin sa code. Samakatuwid ay magbibigay ako ng pangunahing Arduino code na tumutukoy sa pasulong at kabaligtaran na kinematics upang madali mong magamit ito sa iyong mga hinaharap na disenyo!;-)

Mangyaring i-download ang code sa ibaba!

* EDIT: para sa isang katulad na proyekto, tingnan ang https://haply.co *

Hakbang 1: Pagbuo ng Istraktura

Pagbuo ng Istraktura
Pagbuo ng Istraktura

Nakasalalay sa layunin na nasa isip mo dapat mo munang magdisenyo ng isang istrakturang 5-linkage. Isipin ang tungkol sa mga sukat, actuators na nais mong gamitin, at kung paano ilakip ang mga kasukasuan para sa makinis na paggalaw.

Para sa aking prototype, pinapatakbo ko ang aking code sa isang Arduino DUE na kontrolado sa serial ng isang programa sa aking Mac na ginawa sa Open Frameworks. Gumagamit ang programa ng isang koneksyon sa UDP upang makipag-usap sa isang Unity 3D batay sa pagmamaneho simulator.

Gumagamit ang prototype ng Scribble ng 5mm bearings at gawa sa 5 mm na laser-cut na acrilic. Ang mga actuator ay Haptic Engines ni Frank van Valeknhoef na nagpapahintulot sa pag-aktibo, pagbabasa ng posisyon, at paglabas ng isang puwersang variable. Ginawa nitong perpekto ang mga ito para sa nais na mga haptic na katangian ng Scribble. Dagdag pa tungkol sa kanyang mga actuator ay matatagpuan dito:

Hakbang 2: Alamin ang Iyong Mga Halaga sa Hardware

Alamin ang Iyong Mga Halaga ng Hardware
Alamin ang Iyong Mga Halaga ng Hardware

Ang mga forward kinematics ay batay sa istasyon ng panahon ng Plot na orasan ng SAP:

Tulad ng ipinakita sa kanilang pagsasaayos ay pinalawig para sa braso na humawak ng isang marker upang gumuhit. Inalis ito dahil hindi ito naghahatid ng layunin para sa prototype ng scribble. Suriin ang kanilang code kung nais mong idagdag muli ang sangkap na ito. Ang mga pangalan sa larawan ay pinananatiling pareho sa aking pagsasaayos.

Nakasalalay sa iyong hardware kailangang malaman ng algorithm ang iyong mga pag-aari sa hardware:

int leftActuator, kananActuator; // anggulo upang sumulat sa actuator sa deg, baguhin sa floats kung nais mo ng higit na acuracy

int posX, posY; // ang mga coordinate ng lokasyon ng pointer

Itakda ang resolusyon ng iyong mga halaga ng pag-input

int posStepsX = 2000;

int posStepsY = 1000;

Mga sukat ng iyong pag-set up, ang mga halaga ay nasa mm (tingnan ang larawan ng SAP)

#define L1 73 // haba ng motor braso, tingnan ang larawan ng SAP (kaliwa at kanan ay pareho)

#define L2 95 // haba ng haba ng braso, tingnan ang larawan ng SAP (pareho at kaliwa at kanan)

# tukuyin ang saklawX 250 // maximum na saklaw sa direksyon ng X para lumipat ang point (mula kaliwa hanggang kanan, 0 - maxVal)

#define rangeY 165 // maximum range sa direksyon ng Y para lumipat ang point (mula 0 hanggang maximim na maabot habang nananatiling nakasentro)

# tukuyin ang pinagmulanL 90 // offset distansya mula sa pinaka-minim na halaga X sa posisyon ng actuator center

#define originR 145 // offset distance from most minumim X halaga to actuator center posisyon, ang distansya sa pagitan ng dalawang motor ay sa kasong ito

Hakbang 3: Ipasa ang Kinematics

Ipasa ang Kinematics
Ipasa ang Kinematics

Tulad ng nabanggit sa nakaraang hakbang, ang mga forward kinematics ay batay sa algorithm ng SAP.

Ang walang bisa ay ina-update ang nais na mga halaga ng anggulo ng kaliwa at kanang aktuador na tinukoy nang mas maaga. Batay sa mga halagang X at Y na naka-plug in makakalkula nito ang tamang mga anggulo upang makuha ang pointer sa posisyon na ito.

void set_XY (dobleng Tx, dobleng Ty) // input ang iyong halagang X at Y {// ilang mga vals na kailangan namin ngunit hindi nais na makatipid para sa mahabang dobleng dx, dy, c, a1, a2, Hx, Hy; // resolusyon sa inpit ng mapa sa saklaw ng iyong pagsasaayos sa totoong mundo int realX = mapa (Tx, 0, posStepsX, 0, rangeX); // swap if mapping if inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // swap kung pagmamapa kung inversed // anggulo ng calcul para sa left actuator // cartesian dx / dy dx = realX - originL; // isama ang offset dy = realY; // polar haba (c) at anggulo (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = palapag (((M_PI - (a2 + a1)) * 4068) / 71); // panghuling anggulo at i-convert mula sa rad hanggang deg // anggulo ng cal para sa tamang actuator dx = realX - originR; // isama ang offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = palapag (((a1 - a2) * 4068) / 71); // huling anggulo at i-convert mula sa rad patungo sa deg}

Karagdagang walang bisa para sa pagkalkula ng anggulo:

dobleng return_angle (dobleng a, dobleng b, dobleng c) {// panuntunan sa cosine para sa anggulo sa pagitan ng c at isang pagbalik ng acos ((a * a + c * c - b * b) / (2 * a * c)); }

Hakbang 4: kabaligtaran Kinematics

Kabaligtaran Kinematics
Kabaligtaran Kinematics

Ang kabaligtaran na kinematics ay gumagana sa ibang paraan. I-plug mo ang pag-ikot ng iyong mga actuator sa degree at i-update ng walang bisa ang posisyon na tinukoy nang mas maaga.

Mangyaring tandaan na kakailanganin mo ang mga actuator o isang hiwalay na sensor na maaaring basahin ang anggulo ng braso. Sa aking kaso, gumamit ako ng mga actuator na maaaring parehong mabasa at isulat ang kanilang posisyon nang sabay. Huwag mag-atubiling mag-eksperimento dito at isaalang-alang ang pagdaragdag ng ilang uri ng pagkakalibrate upang matiyak mong nabasa nang tama ang iyong anggulo.

Inirerekumendang: