[아두이노] 뇌파로 움직이는 RC 자동차 만들기
- HelloMaker
- 0
- 20,865
- 0
- 0
- 글주소
- 11-06
- Download
- gyro_irsend.ino(10.4 KB) 2018-11-069
- Link
- http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=project_hardcopy&wr_id=5&page=276
1. 포스 트레이너
이거 참 재밌는 장치입니다. 헤드셋을 쓰고 공에 집중하면 공이 떠오릅니다. 포스(집중)가 강해질수록 공은 더 높이 떠오르는 간단한 게임이죠. 스타워즈 세대에게 이건 제다이로서의 잠재력을 가늠하는 시험과 다름 없습니다. 다쓰베이더가 양손을 올리고 포스를 내뿜는 모습이 떠오릅니다.
그리고 친구들과의 소모임에서 뇌파 관련된 얘기가 오가던 중 괜찮은 솔루션을 발견하고서는 '좋아. 포스(뇌파)로 움직이는 뭔가를 만들어보자.' 라고 결심했습니다.
2. 뇌파에 대한 오해와 진실
사람들은 흔히 '뇌파란 생각 그 자체의 전자기적 발현' 이라고 오해하는 것 같습니다. 하지만 직접 뇌파 데이터를 받아보니 '아.. 이것은 강산이 변하기 전에는 힘들겠구나' 싶었습니다. 내 생각과는 상관없이 들쭉날쭉한 뇌파 그래프를 보면 대체 저걸로 뭘 해야되나 싶습니다.
자료를 조사해보고 제가 내린 결론은, 우리같은 아마추어-취미 개발자에게 현재의 뇌파 컴퓨팅이란 구체적인 '생각'이 아니라 추상적인 '상태'에 대한 단서를 얻을 수 있는 수준이라는 겁니다. 즉, 현재 내가 편안하게 이완된 상태인지, 어떤 일이나 사물에 고도로 집중된 상태인지, 불안한 상태인지와 같은 두뇌 활동의 종합적인 상태에 대한 정보를 추출할 수 있단 겁니다. 그리고 그 마저도 정확히 추정하기 어렵습니다.(하나의 상태로 지속되는게 아니라 계속 변화합니다.) 더 고차원적인 결과를 위해서는 전문적인 측정장치와 신호처리 알고리즘이 필요하므로 취미로 접근하기 힘듭니다. 포스 트레이너는 '너는 떠오를 것이다!' 라는 생각을 읽은 것이 아니라, 공에 집중을 함으로써 생긴 뇌파의 변화를 감지한 것입니다.
하지만 뇌파에는 유용한 특징이 있습니다. 초저주파인 뇌파는 미세한 근육의 움직임에도 간섭을 받는다는 것이죠. 눈의 깜빡임과 같은 안면 근육의 움직임, 입의 움직임도 뇌파에 표현되는 거죠. 이걸 잘 이용해서 조합하면 여러가지 재밌는 걸 만들 수 있습니다. 뇌파에 관련된 실험적인 뉴스들 중 다수를 주의깊게 보면 크게 위에 얘기한 두뇌의 상태(집중, 명상 등등)와 근육의 움직임을 이용한 것이 많습니다.
3. 뇌파에 대한 기본 지식
뇌파에 대해 소개한 좋은 자료가 있어서 공유합니다.(Laxtha.com) 굳이 뇌파를 이용한 뭔가를 만들지 않더라도 재미로 읽을만한 자료입니다. 그리 어렵지 않습니다.
그림과 같이 일반적으로 뇌파는 진동하는 주파수의 범위에 따라 인위적으로 델타 -δ파(0.2 ~ 3.99 Hz),쎄타 -θ파(4 ~ 7.99 Hz), 알파 -α파(8 ~ 12.99 Hz), 베타 -β파(13 ~ 29.99 Hz), 감마- g파(30~50 Hz)로 구분하여 부릅니다.
델타파는 주로 정상인의 깊은 수면 시나 신생아의 경우 두드러지게 나타납니다. 만약 깨어 있는 사람에게서 델타파가 평균범위보다 매우 많이 나타난다면 대뇌피질부위의 악성 종양 또는 마취, 혼수 상태관련 질병일 수 있습니다. 만약 건강한 정상인의 경우인데도 델타파가 두드러진다면 뇌파 측정시 눈을 깜박이거나 몸을 심하게 움직인 경우가 대부분입니다. 이러한 눈 움직임이나 몸 움직임에 의해 발생하는 잡음(artifact)의 주파수 영역은 델타파 주파수 영역과 거의 일치하므로 마치 델타파가 증가한 것처럼 보일 수 있습니다. 따라서 보통 장시간 뇌파 측정실험을 할 경우엔 눈움직임과 몸움직임이 필수적으로 발생하므로 보통 델타파의 파워증감은 분석요소로 고려하지 않습니다.
쎄타파는 정서안정 또는 수면으로 이어지는 과정에서 주로 나타나는 파형으로 성인보다는 어린이에게 더 많이 분포합니다. 쎄타파는 기억력, 초능력, 창의력, 집중력, 불안해소 등... 많은 다양한 상태와 관련되어 있다고 보고되고는 있으나, 연구자들마다 실험프로토콜과 피험자 특성이 조금씩 달라 각 대뇌피질 부위별 증감의 방향이 일치하지는 않는 등... 아직은 표준화된 결과들이 다소 부족한 상태입니다.
알파파는 긴장이완과 같은 편안한 상태에서 주로 나타나며, 안정되고 편안한 상태 일수록 진폭이 증가합니다. 일반적으로 규칙적인 파동의 형태로 연속적으로 나타나며, 두정부와 후두부에서 가장 크게 기록되고 전두부에 가장 작게 나타나는 특성이 있습니다. 특히 안정된 알파파가 나타나는 때는 눈을 감고 진정한 상태에 있을 때이며, 눈을 뜨고 물체를 주시하거나 정신적으로 흥분하게 되면 알파파는 억제됩니다. 이 현상을 ‘알파 저지’라고 합니다. 알파파는 뇌의 발달과 밀접한 관계가 있고 유아기에는 4 ~ 6Hz에서 측정되나, 그 후 나이가 들수록 주파수도 증가하여 20세 정도 성인의 값에 이르게 됩니다.
베타파는 주로 전두부에서 많이 나타나며, 깨어 있을 때, 말할 때와 같이 모든 의식적인 활동을 할 때 나타납니다. 특히, 불안한 상태나 긴장시, 복잡한 계산처리시에 우세하게 나타나기도 합니다.
감마파는 베타파보다 더 빠르게 진동하는 형태로 정서적으로 더욱 초조한 상태이거나 추리, 판단등의 고도의 인지정보처리와 관련깊다고 보고되고 있습니다.
델타,쎄타,알파,베타, 감마파는 편리상 작위적으로 분류한 뇌파의 주파수 영역입니다. 어떤 연구자들은Low 알파, Middle 알파, High 알파등 더욱 세분화하여 분석하기도 합니다. 보통 특정상태의 뇌파특징을 분석하고자 하는 연구자들은 0-50Hz의 각 주파수 성분에 대한 파워의 분포를 전체적으로 보여주는 파워스펙트럼 분포를 먼저 관찰한 후, 유의미하게 변하는 주파수 성분을 찾아 의미를 부여하기도 합니다.
이러한 파워스펙트럼 분포는 머리표면의 각 측정부위마다 조금씩 다른 양상을 나타냅니다. 머리표면 아래의 대뇌피질은 다음 그림과 같이 전두엽(Frontal Lobe), 두정부엽(Parietal Lobe), 측두엽(Temporal Lobe), 후두엽(Occipital Lobe) 등으로 크게 나뉘며 담당 역할이 조금씩 다릅니다. 예를 들면 뒤통수에 해당하는 후두엽엔 일차시각피질이 있어 일차적인 시각정보 처리를 담당하며, 정수리근처에 해당하는 두정부엽엔 체성감각 피질이 있어 운동/감각관련 정보처리를 담당합니다.
출처 : Laxtha.com (http://www.laxtha.com/Product.asp?x=2&y=17&z=29&infid=155)
즉, 뇌파를 주파수 대역별로 분리해서 어느 주파수 대역이 뇌의 어떤 상태를 나타내 주는지를 파악하는게 핵심. 뇌파와 신호처리에 대한 좀 더 자세한 내용은 아래 링크를 참고하세요.
4. 뇌파로 움직이는 RC카 구조
최종 목표는 뇌파로 제어하는 RC카 였습니다!! 누구나 그렇듯 처음에는 뇌파로 레이싱이라도 할 기세였지만... 현실의 벽을 깨닫고는 좌우 회전과 직진만 어떻게든 해보자...가 되었습니다. 재차 본인의 한계를 깨닫고는 좌우 회전은 가속도-자이로센서로 머리 움직임을 측정해서, 직진은 안면 근육의 움직임, 속도는 집중력으로 제어하도록 바꿨습니다. 그리하여 아래와 같은 결과물이 나왔습니다.
결과물은 3파트로 이루어져 있습니다.
4.1 뇌파 헤드셋
NeuroSky 사의 MindWave 헤드셋을 이용했습니다. 헤드셋은 뇌파를 읽어서 안드로이드 폰으로 (블루투스로 연결) 신호를 전송합니다. 여기에 추가로 머리의 움직임을 측정해서 좌우 회전이 되도록 자세제어 센서를 달고, 적외선 통신으로 RC카(구동부)로 전송하도록 했습니다.
4.2 신호처리부
안드로이드 폰을 이용해서 뇌파 헤드셋과 연결하고 신호를 받습니다. NeuroSky에서 제공하는 안드로이드용 라이브러리를 사용하면 블루투스로 헤드셋 연결을 해주고 뇌파를 주파수 대역별로 분리도 해줍니다. 뇌파에서 받은 신호를 처리해서 RC카에 설정할 속도와 커맨드(직진, 정지)를 만듭니다. 그리고 usb 케이블로 구동부(아두이노 마이크로 컨트롤러)와 연결해서 커맨드를 전송합니다. 고로, 안드로이드 폰이 RC카 위에 탑재되어 움직입니다.
블루투스로 신호를 받고 신호처리 과정을 수행하려면 아두이노 마이크로 콘트롤러 만으로는 힘들어서 안드로이드 폰을 함께 사용 했습니다.
4.3 구동부
헤드셋에서 적외선 통신으로 받은 신호로 좌우 회전을 제어하고, 안드로이드 폰에서 받은 신호로 속도와 직진을 제어합니다. 아두이노 보드와 탱크키트를 이용해서 만들었습니다.
5. 구현 과정, 기술자료
5.1 뇌파 헤드셋 구현 과정
머리의 좌우 회전을 감지해서 적외선으로 전송시키기 위해서 작업을 좀 했습니다. 아두이노 나노보드 + MPU-6050 가속도 자이로 센서 + IRED 전송부 + 별도 배터리를 조합 했습니다. 작동을 시작하려면 헤드셋을 착용하고 배터리 모듈 켜고 하느라 바빠지는게 단점. 구현 과정에 대한 상세 내용과 코드는 따로 글을 작성해서 올리겠습니다.
(뇌파 기초 자료)
5.2 신호처리부
헤드셋에서 블루투스로 보내온 정보를 처리해서 직진/정지 제어신호를 생성해내는 안드로이드 어플리케이션입니다. 시스템을 동작하려면 헤드셋을 먼저 켜고 폰과 블루투스 연결 설정을 마친 후 구동부 위에 폰을 올려놓고 USB로 연결해야 합니다. 그러면 앱이 자동 실행됩니다. 사용된 소스코드는 아래 링크를 참고하세요.
5.3 구동부
AAA 배터리 6개를 잡아먹는 탱크 세트를 사용했습니다. 아두이노 모듈과 배터리, 폰을 모두 올려야해서 힘 좋은 넘으로 골랐습니다. 탱크 세트는 모터 2개와 하부 프레임이 포함되어 있습니다. 여기에 모터 제어용 모듈(L298N) + 아두이노 보드 + 적외선 수신기 + 폰 연결용 USB 케이블 + 포트 변환용 OTG 케이블을 조합 했습니다.
각 모듈을 사용하는 방법은 아래 링크를 참고하세요. 구현 과정에 대한 상세 내용과 코드는 따로 글을 작성해서 올리겠습니다.
(OTG + USB 케이블로 아두이노-안드로이드 시리얼 통신)
6. 취미 영역에서의 뇌파, 해볼만한 도전인가?
결론부터 말하자면 뇌파로 명령을 내리고 사물을 원하는대로 움직이려 한다면 실패할 가능성이 매우 큽니다. 기술적으로도 어렵구요. 그보다는 정확하게 동작할 필요가 없는 곳에서 보조용으로 사용하는게 적합해 보입니다. 예를 들면 MP3 플레이어에서 뇌파 상태에 따라 자동으로 기분에 맞는 플레이리스트를 구성해 준다던지.. 게임을 만들어도 뇌파만으로 동작하는 게임보다는 뇌파를 게임진행의 보조 요소로 사용하는게 좋겠네요.
실제로 RC 카를 뇌파로 조정해보려 했으나 생각했던 것만큼 반응 속도도 안나오고 정확도도 많이 떨어졌습니다. 특히 뇌파 헤드셋 사용시간이 길어질수록 잡음도 많이 생기고, 뇌파가 한가지 상태로 지속되지도 않더군요. 현재까지는 매우 어설프게 움직이는 상태입니다. 시간이 날 때 전체적으로 손봐서
보조 UI, 참조용으로 사용할 수 있는 다양한 아이디어가 있다면 분명 뇌파는 흥미로운 요소가 될겁니다.
포스가 함께하시길...
출처 : HARD COPY WORLD (http://www.hardcopyworld.com)