카테고리 없음

RC카 물체 따라 움직이기

abc0123 2017. 11. 9. 17:55
반응형

 

요즘 아두이노로 다양한 예제들을 만들어보고 있는데 이번 글에서는 물체를 따라서 움직이는 RC카를 만들어보려고 한다. 며칠 동안 RC카와 RC 탱크를 만들어보고 엉성한 어플로 블루투스 통신을 하면서 그 녀석들을 제어해봤는데 이번에는 우리가 조종을 하는 것이 아니고 등록한 물체를 따라서 움직이도록 하는 내용의 예제를 만들어보려는 것이다.

 

RC카

RC탱크

 

이번 예제에서는 얼마 전에 조립하고 사용방법을 알아봤던 PIXY 카메라를 이용할 텐데 이게 눈의 역할을 해줄 것이다.

 

pixy

 

위 글에서도 확인할 수 있듯이 pixy 카메라는 어떤 물체의 색을 등록하면 그 색을 따라서 움직이는 기능이 있는데 카메라가 보고 있는 색의 데이터를 아두이노로 전달할 수가 있다. 아두이노에서는 그 값을 받아& 모터를 제어해서 자동차가 움직이도록 해볼 생각이다.

 

 

 

▲ 현재 준비물의 상태가 열악하기 때문에 일단은 위 영상처럼 물체와의 거리에 따라서 앞뒤로만 움직이는 예제를 만들어보려고 한다. 영상에서도 알 수 있듯이 앞부분에는 PIXY 카메라를 설치했으며 그 녀석이 받아들인 값을 아두이노에 전달한 후 물체와의 거리에 따라서 모터의 회전 방향을 앞, 뒤로 변경해주고 있다.

 

저 녀석을 만들어보기 위해서 첫 단계로 바퀴만 달려있는 차체의 앞에 카메라를 붙여본다.

 

PIXY

 
▲ 이 녀석이 등록한 색을 추적하는 PIXY 카메라이다. 그리고 옆으로 뻗어 나온 케이블이 아두이노에 데이터를 전송하는 역할을 한다.

 

카메라 달기

 

▲ 모양은 꽤 엉성하지만 여기에 아두이노와 모터 드라이버를 올려서 회로를 만들어보자.

 

모터 드라이버

 

▲ 먼저 아두이노를 올리고 모터드라이버를 그 위에 올려서 뒤쪽 바퀴를 움직이는 모터에 연결을 했다.

 

건전지

 

▲ 그리고 모터를 돌리는데 힘을 보태줄 9V 건전지 하나를 뒤쪽에 실었는데 원래부터 자기 자리였던 딱 맞다. ㅎ

 

완료

 

▲ 마지막으로 아두이노에 전원을 공급할 9V 짜리 건전지 하나를 더 실었다. 이제 pixy 카메라에 물체의 색을 등록하도록 하기 위해서 pixymon 프로그램을 실행하자.

 

 

pixymon

 

▲ pixymon을 실행한 후 카메라를 연결하면 이렇게 화면에 물체가 보이는데 앞에 보이는 빨간색을 추적할 색으로 등록을 해보자.

 

컬러 등록

 

▲ 색을 등록하는 방법은 간단하다. 메뉴 중에서 Action을 선택한 후 7개의 색까지 등록할 수 있는데 Set signature1에 지정을 해보자.

 

빨간색

 

▲ 이처럼 지정하고 싶은 색을 드래그해서 범위를 선택해주면 완료가 되고 이 색을 추적하도록 실행을 시킨다.

 

실행

 

▲ 실행 방법은 [Action > Run pan/tilt demo]를 선택하면 되고 이제부터 카메라가 해당 물체를 추적하기 시작하는데 이 정보를 아두이노에서 받아서 데이터를 처리한 후 상황에 따라서 앞뒤로 움직이도록 해보자.

 

라이브러리 포함

 

▲ 먼저 PIXY 카메라 사용을 위한 라이브러리 SPI와 Pixy를 포함시켰으며 pixy 클래스 객체를 생성했다. 그리고 setup()에서는 모터에 전원을 공급하기 위한 8번 핀과 9번 핀을 OUTPUT으로 초기화했다.

 

 

반복 함수

 

▲ 그리고 loop()에서는 pixy 카메라에 잡히고 있는 블록을 가져와서 blocks에 저장했으며 해당 블록의 가로 크기를 int p 변수에 저장하고 있다. pixy는 쫓고 있는 사물의 가로와 세로 길이 및 화면상의 x, y 좌표 등을 제공하는데 좀 더 자세한 정보는 아래 홈페이지에서 확인하면 될 것이고...

 

API

 

화면에 보이는 사물의 x좌표를 불러와서 활용한 예제는 다음 글을 참고하면 도움이 될 것이다.

 

서보모터
 

여하튼 여기서는 물체의 가로폭을 받아와서 그 값이 커지면... 즉, 카메라 쪽으로 가까워지면 자동차를 뒤로 움직이게 해서 물체로부터 도망가도록 했으며 반대로 거리가 멀어져서 사물의 가로폭이 줄어들면 앞으로 전진을 해서 해당 물체를 쫓아가도록 해봤다.

 

이렇게 해서 pixy 카메라의 데이터를 가지고 모터를 제어하는 예제를 만들어봤는데 앞에서 잠깐 알아본 카메라 화면에 보이는 사물의 x좌표와 y좌표를 사용한다면 전진 후진뿐만 아니라 좌우로도 이동하면서 사물을 쫓아가게 할 수 있을 것이다. 해당 예제는 다음에 만들면서 정리하기로 하고 이번 글은 여기서 마무리하자.

반응형