Cuprins:

Robot de desen haptic: 5 pași (cu imagini)
Robot de desen haptic: 5 pași (cu imagini)

Video: Robot de desen haptic: 5 pași (cu imagini)

Video: Robot de desen haptic: 5 pași (cu imagini)
Video: High Density 2022 2024, Iulie
Anonim

Ca parte a absolvirii masterului la dep. Proiectare industrială la Universitatea Eindhoven, am creat un dispozitiv de desen haptic care poate fi folosit pentru a naviga printr-o mașină semi-autonomă prin trafic. Interfața se numește scribble și permite utilizatorului să experimenteze corpuri haptice într-un spațiu 2D printr-o forță și locație variabile. Deși conceptul nu este despre acest lucru instructiv, puteți citi mai multe despre Scribble aici:

Scribble utilizează o configurație de legătură de 5 bare, care îi permite să se deplaseze cu două grade laterale de libertate (DoF). Această configurație este destul de populară printre prototipuri pentru a crea roboți de desen, iată câteva exemple:

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

Mecanic, acești roboți sunt ușor de realizat. Au nevoie doar de articulații de bază și au două dispozitive de acționare care pot crea mișcări fluide. Această structură este ideală pentru proiectanții care sunt interesați să realizeze o structură în mișcare. Cu toate acestea, nefiind inginer mecanic, am găsit cinematica destul de dificil de tradus în cod. Prin urmare, voi oferi codul Arduino de bază care descrie cinematica inversă și inversă, astfel încât să o puteți utiliza cu ușurință în proiectele viitoare!;-)

Vă rugăm să descărcați codul de mai jos!

* EDIT: pentru un proiect similar, aruncați o privire la https://haply.co *

Pasul 1: Construirea structurii

Construirea structurii
Construirea structurii

În funcție de scopul pe care îl aveți în vedere, ar trebui mai întâi să proiectați o structură cu 5 legături. Gândiți-vă la măsurătorile, dispozitivele de acționare pe care doriți să le utilizați și cum să atașați articulațiile pentru mișcări fine.

Pentru prototipul meu, îmi rulez codul pe un Arduino DUE care este controlat în serie de un program de pe Mac-ul meu care a fost realizat în Open Frameworks. Programul folosește o conexiune UDP pentru a comunica cu un simulator de conducere bazat pe Unity 3D.

Prototipul Scribble folosește rulmenți de 5 mm și este realizat din acrilic tăiat cu laser de 5 mm. Actuatoarele sunt motoarele Haptic ale lui Frank van Valeknhoef, care permit acționarea, citirea poziției și producerea unei forțe variabile. Acest lucru le-a făcut ideale pentru proprietățile haptice dorite de Scribble. Mai multe despre actuatoarele sale pot fi găsite aici:

Pasul 2: Cunoaște-ți valorile hardware

Cunoaște-ți valorile hardware
Cunoaște-ți valorile hardware

Cinematica directă se bazează pe stația meteo de ceas Plot de către SAP:

Așa cum se arată în configurația lor, este extins pentru ca brațul să țină un marker de desenat. Acest lucru a fost eliminat deoarece nu a servit niciunui scop pentru prototipul mâzgălitului. Verificați codul lor dacă doriți să adăugați din nou această componentă. Numele din imagine sunt păstrate la fel în configurația mea.

În funcție de hardware-ul dvs., algoritmul trebuie să vă cunoască proprietățile hardware:

int leftActuator, rightActuator; // unghiul pentru a scrie la actuator în deg, schimbați-l în flotant dacă doriți mai multă acuratețe

int posX, posY; // coordonatele locației indicatorului

Setați rezoluția valorilor de intrare

int posStepsX = 2000;

int posStepsY = 1000;

Dimensiunile configurării dvs., valorile sunt în mm (consultați imaginea SAP)

#define L1 73 // lungime braț motor, vezi imaginea SAP (stânga și dreapta sunt aceleași)

#define L2 95 // lungimea brațului de extindere, vezi imaginea SAP (stânga și dreapta sunt aceleași)

#define rangeX 250 // interval maxim în direcția X pentru punctul de deplasare (de la stânga la dreapta, 0 - maxVal)

#define rangeY 165 // interval maxim în direcția Y pentru punctul de deplasare (de la 0 la atingere maximă în timp ce rămâneți centrat)

#define originL 90 // compensează distanța de la cea mai mare valoare minimă X la poziția centrală a actuatorului

#define originR 145 // distanța de deplasare de la cea mai mică valoare X minimă până la poziția centrală a actuatorului, distanța dintre cele două motoare este în acest caz

Pasul 3: Transmiteți cinematica

Cinematica înainte
Cinematica înainte

Așa cum am menționat în pasul anterior, cinematica directă se bazează pe algoritmul SAP.

Golul actualizează valorile unghiurilor dorite ale actuatorului stânga și dreapta definite anterior. Pe baza valorilor X și Y care sunt conectate, acesta va calcula unghiurile drepte pentru a duce indicatorul în această poziție.

void set_XY (dublu Tx, dublu Ty) // introduceți valoarea X și Y {// niște valuri de care avem nevoie, dar nu vrem să le salvați pentru dx dublu lung, dy, c, a1, a2, Hx, Hy; // rezoluție hărți inpit pentru a varia configurația dvs. în lumea reală int realX = hartă (Tx, 0, posStepsX, 0, rangeX); // swap if mapping if inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // swap if mapping if inversed // calc angle for left actionator // cartesian dx / dy dx = realX - originL; // include offset dy = realY; // lungimea polară (c) și unghiul (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = etaj (((M_PI - (a2 + a1)) * 4068) / 71); // unghiul final și convertirea de la rad la deg // unghiul de calc pentru actuatorul drept dx = realX - originR; // include offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = etaj (((a1 - a2) * 4068) / 71); // unghiul final și conversia de la rad la deg}

Gol suplimentar pentru calculul unghiului:

double return_angle (double a, double b, double c) {// regula cosinusului pentru unghiul dintre c și a returnează acos ((a * a + c * c - b * b) / (2 * a * c)); }

Pasul 4: Cinematică inversă

Cinematica inversă
Cinematica inversă

Cinematica inversă funcționează invers. Conectați rotația actuatorilor dvs. în grade și golul va actualiza poziția definită anterior.

Vă rugăm să rețineți că veți avea nevoie de servomotoare sau de un senzor separat care să poată citi unghiul brațului. În cazul meu, am folosit actuatoare care pot să citească și să scrie poziția lor simultan. Simțiți-vă liber să experimentați acest lucru și luați în considerare adăugarea unui fel de calibrare, astfel încât să vă asigurați că unghiul dvs. este citit corect.

Recomandat: