Платформа Стюарта с использованием Arduino
В проекте реализована платформа Стюарта.
Данный механизм-манипулятор обеспечивает шесть степеней свободы подвижной платформы. Проектируемая конструкция может быть использована для установки зеркальной видеокамеры, манипулирования небольшими объектами.
В данной конструкции, вместо линейных актуаторов используются обычные хобби-сервы для передачи движения. Управление платформой осуществляется помощью платы Arduino, в которой проводятся все необходимые расчеты для обеспечения выхода платформы в заданную позицию и управления сервоприводами.
Общая информация о платформе
- масса груза на платформе может составлять до 2 кг (проверка проводилась при нагрузке 1.5 кг. Видимых проблем перемещения не наблюдалось.). Теоретически, можно попробовать нагрузить ее большей массой;
- низкое энергопотребление – при нагрузке около 1 кг, потребляемая мощность составляла около 5 Ватт;
- минимальное перемещение платформы составляет около 1 миллиметра;
- высокие показатели точности выхода в позицию;
- высокая стабильность платформы даже при больших нагрузках.
Все файлы проекта платформы (чертежи, программа для Arduino, дополнительные библиотеки) расположены здесь:
Стоимость платформы в основном определяется стоимостью серводвигателей и стоимостью платы Arduino. Порезка и все остальные части конструкции по стоимости обойдутся дешевле.
IrDA и LCD дисплей с интерфейсом I2C были куплены на ebay. Стоимость их составила около 10$.
Узлы платформы были вырезаны из акрила толщиной 4 мм.
Инструменты, которые могут пригодиться: дрель, отвертка измерительные приборы – все, что есть в наличии ;), двусторонний скотч.
Проектирование подвижной платформы



Для начала необходимо вырезать из акрила основные элементы конструкции. Для этого можно использовать чертежи в файлах platform_bot и platform_top. Платформа состоит из двух частей для большей универсальности. Сменив верхнюю часть, вы можете адаптировать ее к различным задачам. Соединяются они вместе винтами в отверстиях A1-A3.
Размеры данной платформы ориентированы на установку среднестатистической зеркальной видеокамеры. Это не истина последней инстанции. Платформы можно увеличивать, уменьшать, на ваше усмотрение.
Места, обозначенные на нижней части платформы B1-B3 необходимы для отверстий, которые используются при установке штанг. На третьем рисунке вы можете увидеть, как именно они крепятся. Странные швы-деформации, которые видны на рисунке вызваны использованием клея для фиксации винтов в акриле.
Важно установить на платформе прорезиненный настил или что-то подобное и зафиксировать его с помощью двухстороннего скотча. Это поможет избежать проворота и перемещений камеры на платформе.
Длина штанг должна составлять около 12 сантиметров. На рисунке конечной платформы видно, что они слегка изогнуты. Благодаря этому значительно повысился диапазон перемещений платформы. Но можно их и не сгибать. Вообще, длина штанги подбирается таким образом, чтобы угол между ней и качалкой привода в горизонтальном положении примерно равнялся 70 градусам.
Проектирование неподвижной платформы основания





Прежде чем приступить к проектированию самого основания, необходимо предусмотреть печатную плату для подключения питания сервоприводов. Электросхема печатной платы приведена на рисунке выше. Чертеж печатной платы находится в файле power_board_layout.svg. Ко всем коннекторам в синем прямоугольнике подключаются серводвигатели. В зеленом прямоугольные – пины для подключения питания к другим устройствам: LCD дисплей, передатчик для беспроводной связи и т.п. В пределах фиолетового прямоугольника находятся пины для выключателя. Буквой C обозначены позиции конденсаторов. Пин на свободном конце подключается к земле. Можно для этого использовать пин GND на плате Arduino.
Теперь можете порезать основание, которое состоит из base_bot и base_top. Печатную плату разместите на нижней части и зафиксируйте винтами в местах под отверстия C. Прикрепите три качалки к отверстиям B1-B3 (из файла servo_arm.dxf). После этого разместите сервы на верхней части. Сервы устанавливаются в отверстия A0-A5, их кабели протяните через отверстия S и W, как показано на рисунке. Подключите все серводвигатели к макетной плате. Все коннекторы для управления сервами идут к плате Arduino через отверстия W. После этого зафиксируйте штанги на верхней части основания. Надежно их зафиксируйте, серводвигатели не должны двигаться.
Плату Arduino зафиксируйте с помощью винтов в отверстиях AD, подключите все кабели. Выключатель питания зафиксируйте, воспользовавшись отверстием SW. Для установки передатчика предусмотрены отверстия I. Не забудьте, также, установить LCD монитор на основание. Все кабели от дополнительных, перечисленных выше, устройств подключите к плате Arduino.
Окончательная сборка платформы Стюарта



В качестве качалок для приводов используйте вырезанные из акрила узлы, чертеж которых находится в файле servo_arm.dxf. Просверлите в них отверстия. Расстояния до центра отверстий желательно выдержать как можно точнее. Полученные отверстия используются для фиксации сферического шарнира как это показано на рисунке выше. На другом конце сделайте отверстие для вала серводвигателя.
Установите все серводвигатели в начальное положение (ширина импульса 1500 миллисекунд), после чего наденьте качалки так, чтобы они находились в горизонтальном положении и затяните болты стяжки на торце.
Все! Ваша платформа Стюарта готова к использованию.
В проекте, ссылка на скачивание которого приведена в начале статьи, есть файл platform.ino. Это текст вашей основной программы для Arduino. В нем вам, скорее всего, придется изменить значения несколько переменных в соответствии с габаритными размерами вашей платформы. Большинство переменных показаны на рисунках выше.
MIN и MAX определяет минимальное и максимальное значения ширины импульса для серводвигателей;
zero[] – длина импульса, при которой качалки приводов находятся в горизонтальном положении;
beta[] – угол между осью x и качалкой серводвигателя;
servo_min, servo_max – угол качалки серводвигателя в крайних положениях
servo_mult – значения и даташита серводвигателей , ширина импульса и угол поворота в соответствии с этой шириной;
L1 – длина качалки серводвигателя (от оси вращения серводвигателя до оси вращения шарнира штанги), в дюймах;
L2 – длина штанги, в дюймах;
z_home – высота подъема подвижной платформы над основанием, расстояние между качалкой серводвигателя и платформой.
Значения RD, PD, theta_p, theta_r – они показаны на рисунках, которые приводились выше.
Как работает платформа Стюарта?
Для управления положением платформы решается обратная задача кинематики. Мы знаем положение основания, необходимое положение подвижной платформы, поле чего проводим расчеты необходимых углов поворота валов сервоприводов и посылаем соответствующий сигнал управления через плату Arduino.
На первом этапе необходимо определить положение шарниров на основании и на подвижной платформе. После получения значений требуемых перемещений, программа рассчитывает необходимых координат шарниров подвижной платформы. Этот процесс делится на две части. Получение вектора перемещений по осям x, y, z и матрицы угла поворота, которая характеризует три соответствующих угла, после чего все это собирается вместе в функцию getrxp, которая обеспечивает новое положение платформы. После этого в программе рассчитывается необходимый угол поворота каждого серводвигателя, этот поворот преобразуется в ширину импульса и подается через пины Arduino на серводвигатели.
Для более легкого управления платформой, обратите внимание на файл src_comm_lib в библиотеке C++ для серийного обмена данными с Arduino. Пояснения по его использованию приведены в файле заголовка.