Журнал проекта для FirePick Delta, MicroFactory с открытым исходным кодом
Топология программного обеспечения и теория работы
OpenPnP - это высокоуровневый мозг машины, который выполняет такие, казалось бы, простые вещи, как «взять ту часть» и «положить ее туда». Множество библиотек и подсистем передают ему информацию, и он передает информацию различным двигателям и исполнительным механизмам через другие библиотеки и программные модули. Он был создан Джейсоном фон Ниедой задолго до запуска FirePick Delta. Технически он все еще находится в альфа-состоянии, но лежащее в основе программное обеспечение надежно и использовалось на нескольких производственных машинах. Хотя он был хорошо написан, имел чрезвычайно модульную и расширяемую структуру, документация не была отличной… До сих пор. В духе открытого исходного кода и полного раскрытия информации мы решили сами задокументировать OpenPnP. Надеюсь, мы перенесем все это в официальный проект.
Показанные выше файлы Java (значки «JAR») можно заменить или использовать в качестве базового класса для создания собственной конфигурации компьютера. Каждый из указанных выше файлов Java (за исключением модели (моделей) конфигурации) можно указать в файле «machine.xml». Если вы не знакомы с Java, это может показаться странным, но это действительно удобно. Это означает, что вы можете указать путь к группе файлов .java, и это определит, какие классы будут созданы и использованы, тем самым изменив поведение. Он сохраняет код действительно чистым и модульным, что важно для чего-то столь сложного, как машина для подбора и размещения. OpenPnP поставляется с набором справочных файлов для стандартной реализации PnP с управлением движением TinyG, одной головкой, одним соплом и приводом, перетаскиваемой лентой и камерой, направленной вниз. Мы изменили довольно много вещей, чтобы заставить их делать все, что нам было нужно.
Драйвер движения: Мы используем специальную плату контроллера движения, вдохновленную платами RepRap RAMPS 1.4 и Melzi, на которой работает модифицированная прошивка Marlin. Я написал драйвер OpenPnP Marlin, который отправляет правильный g-код контроллеру движения. На данный момент это отлично работает, но мы обнаруживаем, что выполнение дельта-вычислений и многоточечной коррекции Z-зонда на 8-битном Arduino с ограниченной памятью и без плавающей запятой кажется немного глупым, когда у нас есть все эти вычислительные мощности. Пи. Кроме того, мы хотим использовать камеру и настраиваемое приложение для калибровки XY, чтобы повысить точность, и это намного проще и быстрее выполнять эти вычисления на Pi. Однако этот код не является частью OpenPnP, поскольку мы планируем предлагать другие приложения в будущем. Это означает, что OpenPnP не может напрямую взаимодействовать с контроллером движения, он должен пройти через слой программного обеспечения, которое выполняет вычисления дельты и корректирующие смещения XYZ. Мы обернули весь этот код в FireFUSE (нашу файловую систему в картографе пользовательского пространства), что позволяет нам делать много полезных вещей, о которых мы поговорим позже. По большей части это довольно прозрачно; вместо записи OpenPnP в «/ dev / ttys0» вы пишете в «/dev/firefuse/sync/cnc/marlin/gcode.fire». FireFUSE преобразует декартовы координаты в дельта-координаты, вычислит смещение ошибки, используя интерполированные точки из процесса автоматической калибровки машины, и отправит этот новый g-код драйверу Marlin. И этот код будет переносимым и может использоваться с приложениями для 3D-печати, приложениями для распределения паяльной пасты и т.д.
Драйвер камеры и Vision Framework :Поддержка камеры OpenPnP была немного привередливой и не поддерживала замечательную 5-мегапиксельную камеру Raspberry Pi. Их компьютерное зрение было тонкой прокладкой поверх кода OpenCV, в котором реализованы некоторые действительно базовые функции поиска дыр, но не более того. Карл Лью, наш программист, видел в этом огромную проблему и последние год или два потратил на написание потрясающей библиотеки визуализации с открытым исходным кодом под названием FireSight. Он написал десятки потрясающих процедур видения, которые можно объединить в конвейер очень высокоуровневым способом, который не требует математических знаний более высокого уровня или знания C / C ++ более низкого уровня. Для камеры мы используем модуль камеры RasPi, как уже упоминалось, с пользовательской версией «распистилля», называемой FirePiCam. Мы делаем снимки и сохраняем их в файловой системе FUSE, что предохраняет нас от износа битов во флэш-памяти SD-карты. Чтобы OpenPnP мог видеть изображения и выполнять операции компьютерного зрения, Карл написал библиотеку Java под названием «firerest-client», которая заставляет все это работать.
GUI :Графический интерфейс OpenPnP Java действительно неуклюж и неинтуитивен, и наличие специального монитора, подключенного к Raspberry Pi, кажется немного сумасшедшим в 2014 году, также известном как Рассвет Интернета вещей. Мы хотели бы, чтобы пользовательский интерфейс был настраиваемым веб-приложением, которое можно было просматривать в любом браузере HTML5. Эта функция не поддерживается напрямую через OpenPnP, но может быть реализована, если потребуется немного поработать. К счастью, Джейсон написал OpenPnP, где вы можете вызвать конструктор (ы) для функций конфигурации машины и файла, который обходит графический интерфейс. Мы можем использовать мост node-java для вызова java-функций из javascript и наоборот, без особых усилий благодаря некоторому коду, который мы нашли на github. Нам остается только написать умное веб-приложение с использованием node.js, Express, AngularJS и Twitter Bootstrap. Сейчас мы находимся на начальной стадии написания этого приложения. А пока мы можем запустить OpenPNP в обычном режиме и использовать стандартный графический интерфейс, который позволяет нам отлаживать другие части машины.
Топология оборудования и теория работы
Мы используем стандартную Raspberry Pi Model B +. B + - это RPi, которую мы всегда хотели; они переместили разъемы в более логичное место и добавили настоящий набор монтажных отверстий. По-прежнему есть дрянной медленный Broadcom 2835, но чего вы ожидаете за 30 долларов. Нам часто задают вопрос:«Почему вы использовали BeagleBone Black?» или с десяток других одноплатных компьютеров. Ответ довольно прост. Мы делаем ставку на машину за 300 долларов, а это значит, что нам нужно выбрать ДЕШЕВОЙ одноплатный компьютер. Raspberry Pi - самый дешевый, поэтому выигрывает. QED. 🙂 На самом деле, нам очень нравится черный BeagleBone и другие платформы, такие как Allwinner A4, Intel Galileo и даже более традиционные конфигурации, такие как Mini ITX. Все наше программное и аппаратное обеспечение должно работать на этих платформах. Но они дорогие, и Raspberry Pi отлично справляется со своей задачей.
Мы действительно были удивлены производительностью Pi. Он не светится быстро, но обеспечивает компьютерное зрение и без проблем обслуживает веб-страницы.
ERPIHAT01 HAT Board
Вскоре после выпуска Raspberry Pi Model B + RPi Foundation выпустила спецификацию «HAT», которая очень похожа на Arduino Shield или накидку BeagleBone. Это мезонинная плата нестандартной формы, которую можно настроить, чтобы добавить изящные элементы в Raspberry Pi без всяких кабелей и прочей ерунды. До HAT существовали подключаемые модули, но они не были стандартизированы. Мы довольны новой спецификацией HAT и с гордостью представляем нашу FirePick Delta HAT ниже:
Вот список функций FirePick Delta HAT:
- Предоставляет разъем ЖК-дисплея размером 16 × 2 символа, который подключается к разъему Raspberry Pi GPIO.
- Предоставляет разъемы для поворотного энкодера и кнопочного переключателя (со светодиодом), которые подключены к разъему GPIO Raspberry Pi.
- Обеспечивает понижающий импульсный источник питания 12 В -> 5 В для Raspberry Pi.
- Предоставляет сквозной разъем для модуля камеры RasPi, чтобы мы могли продлить камеру до концевого эффектора дельта-механизма.
- Обеспечивает пьезо-зуммер, управляемый единственным выводом PWM RasPi на разъеме GPIO. Это было дешевле, чем использование аудиоразъема Pi.
- Согласно официальной спецификации HAT, эта плата обеспечивает необходимую микросхему EEPROM и защиту от обратного тока на входе +5 В постоянного тока. Поскольку мы подаем питание через разъем GPIO, нам не нужно подавать питание через разъем micro-USB.
Для более подробной информации:журнал проекта FirePick Delta, MicroFactory с открытым исходным кодом
Производственный процесс
- Введение в терминологию с открытым исходным кодом
- Открытый исходный код и Интернет вещей:инновации через сотрудничество
- DHT Tiny Breakout для Raspberry Pi
- Лучшие аксессуары для Raspberry Pi
- Зрение:для слепых
- Smart Pen:последний проект для ECE5725
- 3 совета по управлению логистикой вашего строительного проекта
- Необходимость открытого исходного кода на периферии (электронная книга)
- Как правильно выбрать кран для вашего проекта
- Умные очки — новый источник производительности для технического специалиста?