Оглавление:

Робот тактильного рисования: 5 шагов (с изображениями)
Робот тактильного рисования: 5 шагов (с изображениями)

Видео: Робот тактильного рисования: 5 шагов (с изображениями)

Видео: Робот тактильного рисования: 5 шагов (с изображениями)
Видео: Drawing Robot. Робот - Художник на 3D принтере 2024, Ноябрь
Anonim

В рамках обучения в магистратуре на кафедре. Промышленный дизайн в университете Эйндховена, я создал устройство для тактильного рисования, которое можно использовать для навигации на полуавтономном автомобиле в условиях дорожного движения. Интерфейс называется scribble и позволяет пользователю ощущать тактильные приспособления в двухмерном пространстве за счет переменной силы и местоположения. Хотя это руководство не является концепцией, вы можете узнать больше о 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-миллиметрового акрила, вырезанного лазером. Приводы - это тактильные двигатели Франка ван Валекнхёфа, которые позволяют приводить в действие, считывать положение и выводить переменное усилие. Это сделало их идеальными для желаемых тактильных свойств Scribble. Больше о его приводах можно найти здесь:

Шаг 2: знайте ценность своего оборудования

Знайте свои ценности оборудования
Знайте свои ценности оборудования

Передняя кинематика основана на метеостанции Plot clock от 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 {// некоторые значения, которые нам нужны, но мы не хотим сохранять их для long double dx, dy, c, a1, a2, Hx, Hy; // сопоставляем разрешение inpit с диапазоном вашей конфигурации в реальном мире int realX = map (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 = return_angle (L1, L2, c); leftActuator = этаж (((M_PI - (a2 + a1)) * 4068) / 71); // конечный угол и преобразование из рад в градусы // расчетный угол для правого привода dx = realX - originR; // включаем смещение dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = этаж (((a1 - a2) * 4068) / 71); // конечный угол и преобразование из рад в град}

Дополнительная пустота для расчета угла:

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

Шаг 4: обратная кинематика

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

Обратная кинематика работает наоборот. Вы подключаете вращение ваших приводов в градусах, и пустота обновляет положение, определенное ранее.

Обратите внимание, что вам потребуются приводы или отдельный датчик, который может считывать угол руки. В моем случае я использовал приводы, которые могут одновременно считывать и записывать свое положение. Не стесняйтесь экспериментировать с этим и подумайте о добавлении какой-либо калибровки, чтобы вы были уверены, что ваш угол считывается правильно.

Рекомендуемые: