Съдържание:

Хаптичен робот за рисуване: 5 стъпки (със снимки)
Хаптичен робот за рисуване: 5 стъпки (със снимки)

Видео: Хаптичен робот за рисуване: 5 стъпки (със снимки)

Видео: Хаптичен робот за рисуване: 5 стъпки (със снимки)
Видео: Iron Man,Fantastic 4,Superman,Spiderman,Batman ...Coloring,All Superheros Drawing/Coloring Pages Tv 2024, Юли
Anonim

Като част от магистърското ми дипломиране в деп. Индустриален дизайн в университета в Айндховен, създадох устройство за хаптично рисуване, което може да се използва за навигация в полуавтономна кола през трафика. Интерфейсът се нарича драскане и позволява на потребителя да изпита хаптични тела в 2D пространство чрез променлива сила и местоположение. Въпреки че концепцията не е това, за което се отнася тази инструкция, можете да прочетете повече за Scribble тук:

Scribble използва конфигурация на 5 бара, която му позволява да премества две странични степени на свобода (DoF). Тази настройка е доста популярна сред прототипите за създаване на роботи за рисуване, ето няколко примера:

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

Механично тези роботи са лесни за изработка. Те се нуждаят само от основни съединения и имат два задвижващи механизма, които могат да създават доста течни движения. Тази структура е идеална за дизайнери, които се интересуват от създаване на движеща се структура Въпреки това, тъй като аз не съм машинен инженер, намерих кинематиката доста трудна за превод в код. Следователно ще предоставя основен код на Arduino, който определя предната и обратната кинематика, така че можете лесно да го използвате в бъдещите си дизайни!;-)

Моля, изтеглете кода по -долу!

* РЕДАКТИРАНЕ: за подобен проект, вижте https://haply.co *

Стъпка 1: Изграждане на структурата

Изграждане на структурата
Изграждане на структурата

В зависимост от целта, която имате предвид, първо трябва да проектирате структура с 5 връзки. Помислете за измерванията, задвижванията, които искате да използвате, и как да прикрепите ставите за плавни движения.

За моя прототип изпълнявам кода си на Arduino DUE, който се контролира серийно от програма на моя Mac, направена в Open Frameworks. Програмата използва UDP връзка за комуникация с Unity 3D базиран симулатор на шофиране.

Прототипът Scribble използва 5 мм лагери и е направен от 5 мм лазерно изрязан акрил. Задвижващите механизми са тактичните двигатели на Frank van Valeknhoef, които позволяват задействане, отчитане на позицията и извеждане на променлива сила. Това ги направи идеални за желаните хаптични свойства на Scribble. Повече за неговите задвижващи механизми можете да намерите тук:

Стъпка 2: Познайте вашите хардуерни стойности

Знайте вашите хардуерни стойности
Знайте вашите хардуерни стойности

Предната кинематика се основава на метеорологичната станция на часовника на Plot от SAP:

Както е показано на тяхната конфигурация, ръката е удължена, за да държи маркер за теглене. Това е премахнато, тъй като не е послужило за прототипа за драскане. Проверете кода им, ако искате да добавите отново този компонент. Имената на снимката се запазват същите в моята конфигурация.

В зависимост от вашия хардуер, алгоритъмът трябва да знае вашите хардуерни свойства:

int leftActuator, rightActuator; // ъгъл за запис на задвижващия механизъм в градуси, промяна на плаващ, ако желаете повече точност

int posX, posY; // координатите на местоположението на показалеца

Задайте разделителната способност на вашите входни стойности

int posStepsX = 2000;

int posStepsY = 1000;

Размерите на вашата настройка, стойностите са в мм (вижте картината на SAP)

#define L1 73 // дължина на рамото на двигателя, вижте SAP картината (лявата и дясната са еднакви)

#define L2 95 // удължително рамо за дължина, вижте SAP картината (лявата и дясната са еднакви)

#define rangeX 250 // максимален диапазон в посока X за преместване на точката (отляво надясно, 0 - maxVal)

#define rangeY 165 // максимален обхват в посока Y за преместване на точката (от 0 до максимален обхват, като останете центрирани)

#define originL 90 // изместване на разстоянието от най -минималната стойност X до централната позиция на задвижването

#define originR 145 // изместване на разстоянието от най -минималната стойност X до централната позиция на задвижването, в този случай разстоянието между двата двигателя е

Стъпка 3: Напред кинематика

Предна кинематика
Предна кинематика

Както бе споменато в предишната стъпка, кинематиката напред се основава на алгоритъма на SAP.

Празнотата актуализира желаните стойности на ъгъла на левия и десния задвижващ механизъм, определени по -рано. Въз основа на включените стойности X и Y, той ще изчисли правилните ъгли, за да постави показалеца до тази позиция.

void set_XY (double Tx, double Ty) // въведете вашата стойност X и Y {// някои вали, от които се нуждаем, но не искаме да запазваме за дълги двойни dx, dy, c, a1, a2, Hx, Hy; // картографиране на началната резолюция до обхвата на вашата конфигурация в реалния свят int realX = карта (Tx, 0, posStepsX, 0, rangeX); // разменяме, ако картографирането е обърнато int realY = map (Ty, posStepsX, 0, 0, rangeY); // сменяме, ако картографирането е обърнато // изчислява ъгъл за ляв задвижващ механизъм // декартово dx/dy dx = realX - originL; // включваме отместване dy = realY; // полярна дължина (c) и ъгъл (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = ъгъл на връщане (L1, L2, c); leftActuator = етаж (((M_PI - (a2 + a1)) * 4068) / 71); // краен ъгъл и преобразуване от rad в deg // изчисляване на ъгъла за десен задвижващ механизъм dx = realX - originR; // включваме отместване dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = ъгъл на връщане (L1, L2, c); rightActuator = етаж (((a1 - a2) * 4068) / 71); // краен ъгъл и преобразуване от rad в deg}

Допълнителна празнота за изчисляване на ъгъла:

double return_angle (double a, double b, double c) {// правило за косинус за ъгъл между c и връщане acos ((a * a + c * c - b * b) / (2 * a * c)); }

Стъпка 4: Обратна кинематика

Обратна кинематика
Обратна кинематика

Обратната кинематика работи обратно. Включвате въртенето на вашите задвижвания в градуси и празнотата ще актуализира определената по -рано позиция.

Моля, обърнете внимание, че ще ви трябват задвижващи механизми или отделен сензор, който може да отчете ъгъла на рамото. В моя случай използвах задвижващи механизми, които могат едновременно да четат и записват позицията си. Не се колебайте да експериментирате с това и помислете за добавяне на някакъв вид калибриране, за да сте сигурни, че ъгълът ви се чете правилно.

Препоръчано: