Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Rocky Rover:система роботизированного зрения PixyCam и Arduino 101

Компоненты и расходные материалы

Arduino 101
× 1
Adafruit Motor / Stepper Shield V2
× 1
Шасси резервуара SparkFun Dagu DG102
× 1
Батарейки AA
× 1
Кабель USB-A - B
× 1
USB-аккумулятор Adafruit
× 1
Стойка M2.5 с гайкой и винтом
× 4
Поляризованные разъемы батареи JST типа "папа" и "мама"
× 1
Мужской заголовок 40, позиция 1, строка (0,1 ")
× 1
Штыревой / штыревой перемычки
× 1
Pixy (CMUcam5)
× 1
Pixy Pan-Tilt Kit для Pixy
× 1

Приложения и онлайн-сервисы

IDE Arduino
Блинк

Об этом проекте

Ровер на базе Intel Arduino 101 с PixyCam!

События Hackster Live - это круто! Intel спонсировала наше мероприятие Hackster Dallas и прислала нам немного Intel Arduino 101 для сборки роверов. Спасибо Intel, спасибо Arduino. А вот и Ровер, который я построил для этого мероприятия.

Я построил это устройство, следуя инструкциям Джонатана Хоттелла. Он снял несколько видеороликов, чтобы построить BLE Rover. И за этим легко следить! Посмотрите здесь. Вот видео от Джонатана Хоттелла.

У меня есть Ровер с 4-мя моторами, поэтому я последовал этому.

После постройки Ровера и подключения его к Блинку. Решил улучшить сборку и добавить PixyCam. Я переместил батарейный отсек вперед, чтобы установить камеру панорамирования / наклона.

PixyCam

PixyCam упрощает роботизированное зрение. Pixy - это датчик быстрого зрения для робототехники DIY, который легко научить Pixy объекту, просто нажав кнопку. Он способен одновременно отслеживать сотни объектов и предоставляет только те данные, которые отслеживает.

Я решил выследить апельсиновую тыкву.

Я удивлен, насколько легко это сделать. Вот ссылка на инструкции по подключению PixyCam к Arduino. Щелкните здесь для получения инструкций по сборке механизма поворота / наклона. Я рад, что на нем много фотографий, за которыми очень легко следить. Я выполнил инструкции по установке и сборке, как интегрироваться с Arduino. Я протестировал их примеры.

Вот что я узнал об API.

PixyCam Arduino API

Использовать Pixy с Arduino действительно просто. Вы просто включаете заголовки SPI и Pixy:

  #include  #include   

И создайте глобальный экземпляр Pixy, поместив этого человечка за пределы вашего setup () и loop () функции:

  Pixy pixy;  

Самый важный метод в библиотеке Arduino - это getBlocks () . , который возвращает количество объектов, обнаруженных Pixy. Затем вы можете просмотреть pixy.blocks [] массив для информации о каждом обнаруженном объекте (один член массива для каждого обнаруженного объекта). Каждый член массива ( i ) содержит следующие поля:

  • pixy.blocks [i] .signature Номер подписи обнаруженного объекта (1-7 для обычных подписей)
  • pixy.blocks [i] .x Положение центра обнаруженного объекта по оси x (от 0 до 319)
  • pixy.blocks [i] .y Положение центра обнаруженного объекта по оси Y (от 0 до 199).
  • pixy.blocks [i] .width Ширина обнаруженного объекта (от 1 до 320)
  • pixy.blocks [i] .height Высота обнаруженного объекта (от 1 до 200)
  • pixy.blocks [i] .angle Угол наклона обнаруженного объекта, если обнаруженный объект имеет цветовой код.
  • pixy.blocks [i] .print () Функция-член, которая выводит информацию об обнаруженном объекте в последовательный порт.

Так что разговаривать с Pixy с помощью Arduino просто! Для получения дополнительной информации о библиотеке и API Arduino перейдите сюда. Вот код, используемый для Ровера. Я изменил исходный код BLE и добавил отслеживание объектов. Во время настройки:

  void setup () {..... pixy.init (); ....}  

Основной цикл выглядит примерно так:

  void loop () {...... // считываем данные pixy и получаем блоки static int i =0; int j; uint16_t блоки; char buf [32]; int32_t panError, tiltError; блоки =pixy.getBlocks (); // если есть блоки if (блоки) {panError =X_CENTER-pixy.blocks [0] .x; tiltError =pixy.blocks [0] .y-Y_CENTER; panLoop.updatePan (panError); tiltLoop.update (tiltError); pixy.setServos (panLoop.m_pos, tiltLoop.m_pos); я ++; // фрейм остановит Arduino if (i% 10 ==0) {int trackedBlock =0; sprintf (buf, «Обнаружено% d:\ n», блоки); Serial.print (buf); длинный maxSize =0; for (j =0; j <блоки; j ++) {sprintf (buf, "блок% d:", j); Serial.print (buf); pixy.blocks [j] .print (); long newSize =pixy.blocks [j] .height * pixy.blocks [j] .width; если (newSize> maxSize) {trackedBlock =j; maxSize =newSize; }} int32_t followError =RCS_CENTER_POS - panLoop.m_pos; // Размер - это площадь объекта. // Мы сохраняем текущее среднее значение за последние 8. size + =pixy.blocks [trackedBlock] .width * pixy.blocks [trackedBlock] .height; размер - =размер>> 3; int forwardSpeed ​​=ограничение (400 - (размер / 256), -100, 400); int32_t дифференциал =(followError + (followError * forwardSpeed))>> 8; int leftSpeed ​​=ограничение (forwardSpeed ​​+ дифференциал, -400, 400); int rightSpeed ​​=constrain (forwardSpeed ​​- дифференциал, -400, 400); мотор1-> setSpeed ​​(leftSpeed); // левый мотор3-> setSpeed ​​(leftSpeed); мотор2-> setSpeed ​​(rightSpeed); // левый мотор4-> setSpeed ​​(rightSpeed); двойная ширина =pixy.blocks [trackedBlock] .width; if (width <=5) {} else if (width <20 &&! работает) {Serial.println ("работает"); мотор1-> бег (ВПЕРЕД); мотор3-> бег (ВПЕРЕД); мотор2-> бег (ВПЕРЕД); мотор4-> бег (ВПЕРЕД); running =true; } иначе, если (ширина> 80 &&! работает) {Serial.println ("работает"); motor1-> run (НАЗАД); motor3-> run (НАЗАД); motor2-> run (НАЗАД); motor4-> run (НАЗАД); running =true; } else if (width> =20 &&width <=80 &&running) {motor1-> setSpeed ​​(128); мотор2-> setSpeed ​​(128); мотор3-> setSpeed ​​(128); мотор4-> setSpeed ​​(128); motor2-> run (РЕЛИЗ); motor4-> run (РЕЛИЗ); motor1-> run (РЕЛИЗ); motor3-> run (РЕЛИЗ); работает =ложь; }}}}  

Чтобы запустить Blynk без управления PixyCam, наденьте крышку объектива. Это гарантирует, что PixyCam не будет мешать управлению ботом. Если этот проект заинтересовал вас программированием на Arduino или использованием PixyCam в вашем следующем проекте, нажмите кнопку «Уважать проект» и подписывайтесь на меня.

Не стесняйтесь задавать вопросы.

Код

Рокки Ровер

Производственный процесс

  1. Часы видения Arduino pov
  2. Система сигнализации Arduino:SERENA
  3. Роботизированная рука, напечатанная на 3D-принтере Arduino
  4. Arduino Power
  5. Роботизированная рука, управляемая нунчук (с Arduino)
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE:подходящие солнцезащитные очки
  8. Постоянство видения
  9. Arduino Apple Watch
  10. Рекомендации по проектированию освещения для роботизированных хирургических систем машинного зрения