
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36
Като част от магистърското ми дипломиране в деп. Индустриален дизайн в университета в Айндховен, създадох устройство за хаптично рисуване, което може да се използва за навигация в полуавтономна кола през трафика. Интерфейсът се нарича драскане и позволява на потребителя да изпита хаптични тела в 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: Обратна кинематика

Обратната кинематика работи обратно. Включвате въртенето на вашите задвижвания в градуси и празнотата ще актуализира определената по -рано позиция.
Моля, обърнете внимание, че ще ви трябват задвижващи механизми или отделен сензор, който може да отчете ъгъла на рамото. В моя случай използвах задвижващи механизми, които могат едновременно да четат и записват позицията си. Не се колебайте да експериментирате с това и помислете за добавяне на някакъв вид калибриране, за да сте сигурни, че ъгълът ви се чете правилно.
Препоръчано:
Хаптичен модул за близост - евтин и лесен: 5 стъпки (със снимки)

Модул за тактилна близост - евтин и лесен: Дареното от Бога чувство за зрение на човешкото същество е важен аспект от нашия живот. Но има някои нещастни хора, които нямат способността да визуализират нещата. Има около 37 милиона души по света, които са слепи, над 15 мили
Евтин, съвместим с Arduino робот за рисуване: 15 стъпки (със снимки)

Евтин, съвместим с Arduino робот за рисуване: Забележка: Имам нова версия на този робот, който използва печатна платка, е по-лесен за изграждане и има откриване на IR препятствия! Проверете го на http://bit.ly/OSTurtle Проектирах този проект за 10-часов семинар за ChickTech.org, чиято цел е да
Светодиодни писалки за рисуване: Инструменти за рисуване на леки драскулки: 6 стъпки (със снимки)

Светодиодни химикалки за рисуване: Инструменти за рисуване на леки драскулки: Съпругата ми Лори е непрекъснато рисувачка и от години играя с фотография с дълга експозиция. Вдъхновени от групата PikaPika за лека артистичност и лекотата на цифровите фотоапарати, ние се възползвахме от формата на изкуството за рисуване на светлина, за да видим какво можем да направим
Рисуване със светлина: 12 стъпки (със снимки)

Рисуване със светлина: Просто казано „Живопис със светлина“е техника, използвана във фотографията за създаване на светлинни ефекти в камерата. Той може да се използва за подчертаване на обекти в изображение, създаване на призрачни изображения и някои други доста готини ефекти. Това е основен урок, предназначен за
Пиян робот за рисуване!: 4 стъпки (със снимки)

Пиян робот за рисуване! Вдъхновен от джобния пиян робот, исках да му дам работа. Реших да оставя пияния робот да направи някои рисунки. За да направите своя собствена, ще ви трябва следното: материали: 3 маркера с филцови връхчета клетъчна батерия с бутон