산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Rocky Rover:로봇 비전 시스템 PixyCam 및 Arduino 101

구성품 및 소모품

아두이노 101
× 1
Adafruit 모터/스테퍼 쉴드 V2
× 1
SparkFun Dagu DG102 탱크 섀시
× 1
AA 배터리
× 1
USB-A-B 케이블
× 1
Adafruit USB 배터리 팩
× 1
M2.5 너트와 나사가 있는 스탠드오프
× 4
남성 및 여성 극성 JST 배터리 커넥터
× 1
남성 헤더 40 위치 1 행(0.1")
× 1
남성/남성 점퍼 와이어
× 1
Pixy(CMUcam5)
× 1
Pixy용 Pixel 팬틸트 키트
× 1

앱 및 온라인 서비스

Arduino IDE
블링크

이 프로젝트 정보

PixyCam을 사용하는 Intel Arduino 101 기반 로버!

Hackster Live 이벤트는 굉장합니다! Intel은 Hackster Dallas 이벤트를 후원하고 Rovers를 구축하기 위해 Intel Arduino 101을 보냈습니다. Intel에게 감사합니다. Arduino에게 감사합니다. 여기 이벤트를 위해 만든 로버가 있습니다.

Johnathan Hottell의 이 튜토리얼에 따라 이 장치를 만들었습니다. 그는 BLE Rover를 만들기 위해 몇 가지 비디오를 만들었습니다. 그리고 쉽게 따라할 수 있습니다! 여기에서 확인하세요. 다음은 Johnathan Hottell의 동영상입니다.

나는 4개의 모터가 있는 Rover가 있어서 이것을 따랐습니다.

Rover를 빌드하고 Blynk와 연결한 후. 빌드를 개선하고 PixyCam을 추가하기로 결정했습니다. 팬/틸트 카메라를 장착할 수 있도록 배터리 홀더를 앞쪽으로 옮겼습니다.

픽시캠

PixyCam은 로봇 비전을 쉽게 만듭니다. Pixy는 DIY 로봇 공학을 위한 빠른 비전 센서로, 버튼을 누르는 것만으로 Pixy에게 물체를 쉽게 가르칠 수 있습니다. 수백 개의 물체를 동시에 추적할 수 있으며 추적 중인 데이터만 제공합니다.

나는 오렌지 호박을 추적하기로 결정했습니다.

나는 그것을 얻는 것이 얼마나 쉬운지 놀랐다. 다음은 PixyCam을 Arduino에 연결하는 방법에 대한 링크입니다. 팬/틸트 메커니즘의 조립 지침을 보려면 여기를 클릭하십시오. 사진이 많아서 따라하기 쉽네요. 설정 및 빌드 지침, Arduino와 통합하는 방법을 따랐습니다. 나는 그들의 예를 시험했다.

다음은 API에 대해 알게 된 내용입니다.

PixyCam Arduino API

Arduino와 함께 Pixy를 사용하는 것은 정말 간단합니다. SPI 및 Pixy 헤더를 포함하기만 하면 됩니다.

#include  #include   

그리고 이 작은 녀석을 setup() 외부에 넣어 Pixy의 전역 인스턴스를 만드세요. 및 loop() 기능:

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() 감지된 개체 정보를 직렬 포트에 출력하는 멤버 함수
  • 따라서 Arduino로 Pixy와 대화하는 것은 간단합니다! Arduino 라이브러리 및 API에 대한 자세한 내용은 여기를 참조하십시오. 다음은 Rover에 사용된 코드입니다. 원본 BLE 코드를 수정하고 객체 추적을 추가했습니다. 설정 중:

    <사전><코드> 무효 setup() { ..... pixy.init(); ....}

    메인 루프는 다음과 같습니다.

    void loop() { ...... // pixy 데이터를 읽고 블록을 가져옵니다. static int i =0; 정수 j; uint16_t 블록; 문자 버퍼[32]; int32_t panError, tiltError; 블록 =pixy.getBlocks(); //블록이 있는 경우 if (blocks) { panError =X_CENTER-pixy.blocks[0].x; 틸트 오류 =pixy.blocks[0].y-Y_CENTER; panLoop.updatePan(panError); 틸트 루프.업데이트(틸트 오류); pixy.setServos(panLoop.m_pos, tiltLoop.m_pos); 나는 ++; // 프레임은 Arduino를 방해할 것입니다. if (i%10==0) { int trackedBlock =0; sprintf(buf, "%d 감지됨:\n", 블록); Serial.print(buf); 긴 최대 크기 =0; for (j=0; j<블록; j++) { sprintf(buf, "블록 %d:", j); Serial.print(buf); pixy.blocks[j].print(); 긴 newSize =pixy.blocks[j].height * pixy.blocks[j].width; if (newSize> maxSize) { trackedBlock =j; 최대 크기 =새로운 크기; } } int32_t FollowError =RCS_CENTER_POS - panLoop.m_pos; // Size는 객체의 면적입니다. // 마지막 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 ​​=제약(forwardSpeed ​​- 미분, -400, 400); motor1->setSpeed(leftSpeed); //왼쪽 motor3->setSpeed(leftSpeed); motor2->setSpeed(rightSpeed); //왼쪽 모터4->setSpeed(rightSpeed); 이중 너비 =pixy.blocks[trackedBlock].width; if (너비 <=5) { } else if (너비 <20 &&!running) { Serial.println("실행 중"); 모터1->실행(앞으로); motor3->실행(앞으로); 모터2->실행(앞으로); 모터4->실행(앞으로); 실행 =사실; } else if (너비> 80 &&!running) { Serial.println("실행 중"); 모터1->실행(뒤로); motor3->실행(뒤로); 모터2->실행(뒤로); 모터4->실행(뒤로); 실행 =사실; } else if (폭>=20 &&너비 <=80 &&실행 중) { motor1->setSpeed(128); motor2->setSpeed(128); motor3->setSpeed(128); motor4->setSpeed(128); 모터2->실행(RELEASE); 모터4->실행(RELEASE); 모터1->실행(RELEASE); motor3->run(RELEASE); 실행 =거짓; } } } }  

    PixyCam을 제어하지 않고 Blynk를 실행하려면 렌즈 캡을 착용하십시오. PixyCam이 봇 제어를 방해하지 않도록 합니다. 이 프로젝트로 인해 Arduino 프로그래밍 또는 다음 프로젝트에서 PixyCam 사용에 관심이 생겼다면 "Respect Project" 버튼을 클릭하고 저를 팔로우하세요.

    자유롭게 질문하세요.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    록키 로버

    제조공정

    1. Arduino 관점 시계
    2. Arduino 알람 시스템:SERENA
    3. Arduino 3D 인쇄 로봇 팔
    4. Arduino Power
    5. Nunchuk 제어 로봇 팔(Arduino 포함)
    6. 인텔 Arduino 101 BLE 블링크 탱크
    7. Arduino101 / tinyTILE BLE:매치메이킹 선글라스
    8. 시력의 지속성
    9. Arduino Apple Watch
    10. 로봇 수술 비전 시스템을 위한 조명 설계 고려 사항