Робот-рука Бадди-младшего
Бадди младший
Я создал Бадди-младшего в качестве шага по устранению неполадок в рамках более крупного проекта руки-робота, над которым я работаю, под названием Бадди (Бадди — это название одной из рук-роботов, которую Тони Старк использует в фильме «Железный человек»). Мне нужно было что-то, что можно было бы быстро распечатать, чтобы я мог опробовать различные методы перемещения руки. Для печати каждой отдельной детали более крупного робота-манипулятора Buddy требуется около 8-10 часов (при этом рука состоит примерно из 4 частей каждая), а печать руки Buddy занимает около 40 минут.
Цели дизайна
При разработке Бадди-младшего я хотел создать роботизированную руку, которая бы:
Концептуально просто
Быстрая печать
Легко собрать
Весело играть
Эстетически приятно смотреть
Дешево построить
Функциональный
Образовательный
Возможность хранения модуля камеры Raspberry Pi.
Дизайн
Для создания Бадди-младшего я использовал Fusion 360. Простая конструкция состоит из 4 сервоприводов, основания, плеча, локтя и держателя камеры. Сервоприводы управляются платой сервопривода PCA9685, которая подключена к Raspberry Pi 5 (хотя подойдет любой Pi с контактами разъема).
База v1
Используйте либо версию v1, либо обновленную версию v2 Base.
Обновлена база v2.
Поворот
Либо используйте опору, либо плечо.
Рука
Сборка
Сборка Buddy Jr проста. Сервоприводы прикручены к основанию, плечу и локтю, а к локтю прикреплен держатель камеры. Затем сервоприводы подключаются к плате PCA9685, которая подключена к Raspberry Pi.
Спецификация материалов
Позиция Описание Количество Цена Итого
Сервоприводы Сервоприводы SG90 4 $2,50 $10,00
Серводрайвер PCA9685 1 $14,00 $14,00
Камера Модуль камеры Raspberry Pi 1 $25,00 $25,00
Raspberry Pi Raspberry Pi 5 1 $80,00 $80,00
Примечание. Вы можете использовать *любой* Raspberry Pi с контактами разъема и любой модуль камеры Raspberry Pi, совместимый *с этой моделью* Raspberry Pi.
Код Python
Последнюю версию кода Python для Buddy Jr можно найти на https://www.github.com/kevinmcaleer/buddy_jr. В коде используется библиотека adafruit-circuitpython-servokit для управления сервоприводами.
На данный момент я не использую камеру в коде Python, но планирую добавить это в будущем.
Вы можете просмотреть вывод камеры, используя команду rpicam-hello -t 0 в терминале.
В этом коде описывается базовая структура роботизированной руки, управляемой Raspberry Pi, с использованием библиотеки Adafruit CircuitPython ServoKit. Он предназначен для плавного перемещения частей руки (основания, плеча, локтя и камеры) под определенными углами в течение определенного периода и расчета положений с использованием обратной кинематики. Вот описание того, как это работает:
Настройка и инициализация
— Класс Arm инициализирует сервоконтроллер с 16 каналами, при условии, что вы используете серводрайвер PCA9685 PWM, который является обычным для таких проектов. Эта установка поддерж��вает управление до 16 отдельными серводвигателями.
— Для разных частей руки определены четыре сервопривода, каждый из которых назначен на определенный канал. Начальные углы установлены на 90 градусов, чтобы сервоприводы запускались в нейтральном положении.
Калибровка
— Асинхронный метод калибровки перемещает все сервоприводы (основание, плечо, локоть, камеру) в среднее положение (90 градусов). Этот метод служит отправной точкой, позволяющей убедиться, что все детали выровнены перед любыми дальнейшими операциями.
Перемещение сервоприводов
— Метод move_to предназначен для плавного перемещения сервопривода по указанному каналу к целевому углу в течение заданного времени. Это достигается путем расчета необходимых шагов на основе продолжительности и постепенного перемещения сервопривода к целевому углу с помощью этих шагов.
— Этот метод включает в себя несколько проверок, включая проверку того, что целевой угол находится в допустимом диапазоне (от 0 до 180 градусов), а канал — в ожидаемом диапазоне (от 0 до 15). Если целевой угол находится за пределами допустимого диапазона, в качестве меры безопасности он по умолчанию равен 0 градусам.
Вычисление положения с помощью обратной кинематики
— Методcult_position применяет принципы обратной кинематики для расчета необходимых углов для плеча, локтя и камеры для достижения целевой точки (x, y). Этот метод имеет решающее значение для определения того, как





























