Оглавление:
- Шаг 1: построение структуры
- Шаг 2: знайте ценность своего оборудования
- Шаг 3: прямая кинематика
- Шаг 4: обратная кинематика
Видео: Робот тактильного рисования: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В рамках обучения в магистратуре на кафедре. Промышленный дизайн в университете Эйндховена, я создал устройство для тактильного рисования, которое можно использовать для навигации на полуавтономном автомобиле в условиях дорожного движения. Интерфейс называется 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: обратная кинематика
Обратная кинематика работает наоборот. Вы подключаете вращение ваших приводов в градусах, и пустота обновляет положение, определенное ранее.
Обратите внимание, что вам потребуются приводы или отдельный датчик, который может считывать угол руки. В моем случае я использовал приводы, которые могут одновременно считывать и записывать свое положение. Не стесняйтесь экспериментировать с этим и подумайте о добавлении какой-либо калибровки, чтобы вы были уверены, что ваш угол считывается правильно.
Рекомендуемые:
Модуль тактильного приближения - дешево и просто: 5 шагов (с изображениями)
Модуль тактильного приближения - дешево и просто: Бог, одаренный человеком, является важным аспектом нашей жизни. Но есть несчастные люди, которым не хватает способности визуализировать. Во всем мире около 37 миллионов слепых людей, более 15 миллионов
Робот для рисования для Arduino: 18 шагов (с изображениями)
Робот для рисования для Arduino: Примечание: у меня есть новая версия этого робота, которая использует печатную плату, проще в сборке и имеет инфракрасное обнаружение препятствий! Проверьте это на http://bit.ly/OSTurtle Я разработал этот проект для 10-часового семинара для ChickTech.org, цель которого - я
Недорогой робот для рисования, совместимый с Arduino: 15 шагов (с изображениями)
Недорогой, совместимый с Arduino робот для рисования: Примечание: у меня есть новая версия этого робота, которая использует печатную плату, проще в сборке и имеет ИК-обнаружение препятствий! Проверьте это на http://bit.ly/OSTurtle Я разработал этот проект для 10-часового семинара для ChickTech.org, цель которого - я
Робот для рисования аватара с использованием MESH: 6 шагов (с изображениями)
Робот для рисования аватара с использованием MESH: Слышали ли вы, что физическая активность может сделать вас более творческими? Активность помогает расширить ваше мышление и генерировать творческие идеи. Если вы не часто занимаетесь спортом, но хотите развить свои творческие способности, не волнуйтесь - вот вам что-нибудь! Это »
Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: 6 шагов (с изображениями)
Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: Моя жена Лори - ярый рисовальщик, и я много лет играл с фотографией с длинной выдержкой. Вдохновленные группой художников по свету PikaPika и простотой цифровых фотоаппаратов, мы взяли на вооружение искусство рисования светом, чтобы увидеть, что мы можем сделать. У нас есть большой