(이전 글) 2016/12/08 - [진행중인 프로젝트/Homing Robot] - 프로젝트 개요


지난 포스트에서 프로그램의 흐름을 말했는데, 여기서는 좀 더 구체적으로 방법을 설명하려고 한다.


우선 소리의 크기는 거리가 멀어질 수록 작아진다는 점에서 착안해, 마이크에 인식되는 소리의 크기는 그 마이크의 주인으로부터의 거리와 비례한다고 가정했다. (여기서 소리의 반사, 2개 이상의 음원, 거리에 따른 역자승 법칙 등은 고려하지 않았다.)


이 때 로봇에 마이크를 3개 장착하는데, 그 마이크들은 서로 120˚의 각도를 두고 각각 전방 왼쪽, 전방 오른쪽, 후방에 배치한다.

그러면 각 위치로부터 들리는 소리의 크기를 마이크 방향 벡터와 곱해서, 그 합이 음원의 위치일 것이라고 생각하고, 식을 계산했다.


이것을 구현할 때, 단순히 소리의 크기로만 계산하면 다른 소리나 잡음에 취약하기도 하고, 주인만을 찾아가기가 힘들 것이라고 생각했다.

그래서 주인은 특정한 신호를 내고, 로봇은 그 특정한 신호만 인식하기 위해 푸리에 변환을 사용했다. 푸리에 변환으로 일정한 주기의 소리를 주파수 대역별 음량으로 변환해서, 그 중 원하는 주파수 대역만 골라 사용하는 것이다.

이걸 이용해 주인, 집, 다른 사람 등 서로 다른 주파수 대역을 사용해 대상을 바꾸는 것도 생각했는데 미처 구현하지는 못하고 주인의 주파수만 따라오도록 했다.


정리하면, 주인이 특정 주파수를 내는 비콘(스마트폰의 사인파 소리 생성기 앱)을 들고있으며, 로봇은 마이크별로 다르게 들려올 그 주파수 대역의 음량을 이용해 방향을 찾는다.


여기서 주인이 내는 주파수는 사람에게 잘 안들리는, 들려도 심하게 거슬리지는 않을 18000Hz로 사용했었는데, 실험해본 결과 마이크 감도 문제인지 방향을 잘 잡지 못해서 15000Hz로 내리게 되었다.

'완료된 프로젝트 > Homing Robot' 카테고리의 다른 글

완성품 & 작동 영상  (0) 2017.01.07
프로그램 제작기  (2) 2016.12.10
로봇 따라가기의 기본 원리  (3) 2016.12.09
프로젝트 개요  (5) 2016.12.08
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.