Объект управления: Манипулятор типа рука (robotic arm), состоящий из двух узлов и двух плечей. Пример:
www.thingiverse.com/thing... Исполнительные механизмы и датчики: поворот плечей вокруг узлов обеспечивается двумя шаговыми двигателями с датчиками угла положения (энкодеры AS5600)
Платформа реализации: предпочтительно ПО должно встраиваться в программу STM32F103 существующего устройства, в крайнем случае возможно применения отдельной платы управления (по выбору разработчика). Допускается использование существующих библиотек или программ G-code (похожие
github.com/cgxeiji/CGx-Gc... или открытого ПО для 3D принтера (типа Marlin Firmware). Управление шаговыми моторами по Step, Dir (в крайнем случае UART). Опрос энкодеров I2C.
Функции: Обеспечения движения крайней точки манипулятора по заданной траектории, с постоянной скоростью без остановок. Траектория задается массивом точек, которые изменяются пользователем в любой момент. Траектория задается в прямоугольный (декартовых) координатах, в которые пересчитываются углы поворота приводов. Траектория может иметь отклонения от заданной (не 3D принтер, где требуется точное позиционирование). В процессе работы траектория (требуемый угол поворота) контролируется энкодермами и в случае отклонения корректируется.
Управление: управление программой выполняется внешними командами (координаты, старт-стоп, скорость перемещения, останов в заданной точке и т.д. имеется описание). Программа формирует выходные сигналы (текущая координата, состояние: в движении, остановлен, аварии: невозможно достичь траектории, заклинило привод и т.д. имеется описание). В случае реализации встраиваемого в STM32 ПО команды и сигналы передаются между блоками программы, при реализации на внешней плате обмен данными через UART.
Имеется более подробное ТЗ.