

바위, 보, 가위만으로 Chrome Dino를 이길 수 있을까요?
이것이 이 프로젝트를 시작한 아이디어였습니다.
키보드를 만지지 않고 Chrome Dino를 플레이할 수 있는 간단한 게임 컨트롤러를 만들고 싶었습니다. 키를 누르는 대신 손동작 세 가지인 Rock, Paper, Scissors를 사용하기로 했습니다. 각 손동작이 게임의 서로 다른 명령으로 작동하도록 했습니다.
기본 아이디어는 꽤 간단합니다. 카메라가 제 손을 바라보고 AI가 손동작을 인식한 다음, 컨트롤러가 해당 키보드 명령을 노트북으로 전송합니다. 비전 처리에는 Grove Vision AI V2에서 지원하는 기존 Rock Paper Scissors 손동작 모델을 사용했으므로, 모델을 처음부터 학습시킬 필요가 없었습니다.
Grove Vision AI V2가 비전 처리를 담당하고, OV5647 카메라가 손동작을 촬영합니다. 제어 로직과 노트북과의 USB HID 통신에는 Seeed Studio XIAO ESP32S3를 사용했습니다.
최종 제어 방식은 다음과 같습니다:
실제 게임 중 시스템이 안정적으로 작동하도록 만드는 것이 흥미로운 부분이었습니다. 한때 같은 손동작을 유지하면 동일한 명령이 계속 반복해서 실행되는 문제가 발생했기 때문에, 손동작이 동작을 생성할 수 있는 빈도를 제어하는 로직을 추가해야 했습니다.
이 Instructables 가이드에서는 하드웨어 연결과 손동작 모델 설정부터 XIAO ESP32S3 프로그래밍, 그리고 이를 사용해 Chrome Dino를 플레이하는 과정까지 전체 설정을 설명하겠습니다.



이 프로젝트에는 많은 부품이 필요하지 않습니다. 구성은 주로 Grove Vision AI V2와 XIAO ESP32S3를 중심으로 이루어집니다.

모든 것을 연결하기 전에 전체 시스템이 어떻게 작동할지 이해해 보겠습니다.
이 프로젝트는 두 가지 주요 부분으로 나눌 수 있습니다. 첫 번째 부분은 손동작을 보고 인식하는 역할을 하고, 두 번째 부분은 해당 손동작을 Chrome Dino용 키보드 명령으로 변환하는 역할을 합니다.
전체 흐름은 다음과 같습니다:
손동작 → 카메라 → Grove Vision AI V2 → XIAO ESP32S3 → USB HID → Chrome Dino
The OV5647 카메라 가 손동작을 촬영하고 카메라 데이터를 Grove Vision AI V2로 전송합니다. 그러면 Vision AI V2가 Rock Paper Scissors 손동작 모델을 실행하고 해당 동작이 Rock, Paper 또는 Scissors인지 식별합니다.
손동작이 감지되면 XIAO ESP32S3 가 제어 로직을 처리합니다. 감지된 손동작을 수신하고 노트북으로 어떤 키보드 동작을 전송할지 결정합니다.
이 프로젝트에서는 손동작을 다음과 같이 매핑했습니다:
Rock ---> 점프
Paper ---> 숙이기
Scissors ---> 재시작
XIAO ESP32S3는 USB HID 를 사용해 노트북과 통신합니다. 즉, 노트북은 XIAO를 키보드로 인식하므로 컨트롤러가 USB를 통해 필요한 키 명령을 직접 전송할 수 있습니다. 같은 USB 케이블이 XIAO에 전원도 공급합니다.
처리해야 할 작은 문제가 하나 더 있었습니다. 손을 같은 위치에 계속 두면 동일한 제스처가 연속으로 감지되어 같은 명령이 여러 번 실행될 수 있었습니다. 이를 방지하기 위해 제스처가 동작을 생성할 수 있는 빈도를 제어하는 로직을 추가했습니다.
즉, 간단히 말하면 Vision AI는 "내가 어떤 제스처를 보여 주고 있지?"를 처리하고, XIAO는 "그 제스처에 따라 컴퓨터가 무엇을 해야 하지?"





이제 기본 아키텍처를 이해했으므로 프로젝트의 비전 부분을 설정해 보겠습니다. Grove Vision AI V2는 카메라 영상을 확인하고 Rock, Paper, Scissors 제스처를 인식하는 역할을 합니다.
먼저 OV5647 카메라 를 CSI 연결 케이블을 사용해 Grove Vision AI V2에 연결합니다.
연결할 때 케이블의 방향에 주의하세요. 커넥터는 올바른 방향으로 삽입해야 하며, 잘못된 방향으로 억지로 밀어 넣어서는 안 됩니다. Seeed는 Grove Vision AI V2와 함께 사용할 카메라로 OV5647-62 FOV Camera Module도 권장합니다.
다음으로 Grove Vision AI V2를 USB Type-C 데이터 케이블을 사용해 컴퓨터에 연결합니다.
이 단계에서는 USB 케이블을 Grove Vision AI V2에 직접 연결하고 XIAO ESP32S3에는 연결하지 마세요. AI 모델을 구성하고 배포하려면 컴퓨터가 Vision AI V2와 통신해야 합니다.
브라우저로는 Chrome, Edge 또는 다른 Chromium 기반 브라우저를 사용하는 것이 좋습니다. Seeed가 SenseCraft AI를 통한 모델 배포에 권장하는 브라우저이기 때문입니다.
SenseCraft AI 플랫폼을 엽니다:
https://sensecraft.seeed.cc/en
Grove Vision AI V2 작업 공간으로 이동하여 장치를 연결합니다. SenseCraft가 보드를 감지하고 사용 가능한 장치 및 모델 정보를 표시해야 합니다.
보드가 감지되지 않으면 적절한 USB 데이터 케이블을 사용하고 있는지, 올바른 USB/serial 장치가 선택되어 있는지 확인하세요. Windows에서 장치가 인식되지 않는 경우 Seeed는 CH343 드라이버가 필요할 수 있다고 안내합니다.
Grove Vision AI V2가 연결되면 적절한 장치를 선택하고 Connect를 클릭합니다.
SenseCraft가 장치 정보와 현재 로드된 모델을 읽습니다. 연결이 설정되면 모델을 배포하고 브라우저에서 직접 출력을 확인할 수 있습니다.
이 시점의 기본 하드웨어 구성은 다음과 비슷해야 합니다:
아직 XIAO ESP32S3는 연결하지 않습니다. 프로젝트의 컨트롤러 부분을 구성할 때 나중에 연결합니다.
Vision AI V2가 성공적으로 연결되면 다음 단계는 Rock Paper Scissors 제스처 모델 을 로드하고, 컨트롤러로 넘어가기 전에 카메라가 실제로 세 가지 제스처를 모두 인식할 수 있는지 확인하는 것입니다.

이 프로젝트에서는 제스처 인식 모델을 처음부터 학습할 필요가 없습니다. Grove Vision AI V2는 이미 SenseCraft AI를 통해 배포할 수 있는 제스처 감지 모델을 지원합니다. Seeed의 문서에도 Grove Vision AI V2용 Rock Paper Scissors 예제가 제공됩니다.
다음 SenseCraft AI 를 열고 모델 섹션으로 이동합니다. 그곳에서 적절한 Rock Paper Scissors 또는 Gesture Detection 모델을 찾습니다. 배포하기 전에 모델 정보를 확인하여 Grove Vision AI V2와 호환되는지 확인하세요. SenseCraft에서는 지원되는 모델을 선택하여 장치에 직접 배포할 수 있습니다.
모델을 선택했으면 USB Type C 케이블을 사용해 Grove Vision AI V2를 컴퓨터에 연결합니다.
SenseCraft AI 작업 공간에서:
그러면 SenseCraft가 카메라 영상과 함께 모델의 감지 결과를 표시합니다. Grove Vision AI V2 문서에 따르면 모델 업로드에는 약 1~2분이 걸릴 수 있습니다.
이제 중요한 단계입니다. XIAO ESP32S3를 연결하기 전에 Vision AI V2가 세 가지 제스처를 모두 올바르게 인식할 수 있는지 테스트합니다.
카메라 앞에서 다음 제스처를 보여 주세요:
손의 위치를 약간씩 바꿔 보면서, 게임 중 사용할 조명과 카메라 위치를 동일하게 설정한 상태에서 테스트해 보세요.
여기서 목표는 한 번 감지되는 것을 확인하는 데 그치지 않습니다. 컨트롤러가 명령으로 사용할 수 있을 만큼 모델이 세 가지 제스처를 일관되게 인식하도록 하는 것이 목표입니다.
모델의 정확도가 충분하지 않다면 SenseCraft에서 classification 및 object detection 워크플로를 포함한 모델 학습 옵션을 제공하며, custom model을 학습시켜 Grove Vision AI V2에 배포할 수도 있습니다.
하지만 이 프로젝트에서는 기존 Rock Paper Scissors 제스처 모델을 사용했기 때문에 새 데이터 세트를 만들고 학습시킬 필요가 없었습니다.
세 가지 제스처가 모두 제대로 감지되면 비전 부분은 준비된 것입니다. 이제 다음 단계로 넘어가 XIAO ESP32S3를 연결하면, 이 감지 결과를 Chrome Dino에서 사용할 실제 키보드 명령으로 변환할 수 있습니다.



이제 Grove Vision AI V2가 Rock, Paper, Scissors 제스처를 감지하므로, 이 감지 결과를 실제 게임 명령으로 변환할 컨트롤러를 추가할 차례입니다.
이 프로젝트에서는 Seeed Studio XIAO ESP32S3를 사용합니다. XIAO는 제어 로직을 처리하고 USB 장치로서 노트북과 통신합니다. XIAO ESP32S3는 USB 인터페이스를 통해 USB 통신을 지원하므로 이 프로젝트에 적합합니다.
XIAO ESP32S3를 USB Type-C 데이터 케이블을 사용해 노트북에 직접 연결합니다.
이 프로젝트에서는 Bluetooth HID 대신 유선 USB 연결을 사용합니다. 이렇게 하면 두 가지 이점이 있습니다. 하나의 케이블로 XIAO에 전원을 공급하는 동시에 노트북과 USB 통신도 할 수 있습니다.
이 단계의 기본 구성은 다음과 같습니다:
여기서 설명하는 기본 구성에서는 Grove Vision AI V2와 XIAO를 물리적으로 연결할 필요가 없습니다. Vision AI V2는 비전 측을 담당하고, XIAO는 컨트롤러 측에 사용됩니다.
XIAO는 Arduino IDE를 사용해 프로그래밍합니다. Seeed는 XIAO ESP32S3 프로그래밍에 Arduino IDE를 권장합니다. 또한 ESP32 보드 패키지를 설치하고 Arduino IDE에서 XIAO ESP32S3를 보드로 선택해야 합니다.
보드를 연결한 후:
XIAO가 사용 가능한 포트로 나타나지 않거나 업로드에 실패하면, 컴퓨터에 연결하는 동안 BOOT 버튼을 누르고 있으면 BootLoader 모드로 전환할 수 있습니다. Seeed는 이를 XIAO ESP32S3의 표준 복구 방법 중 하나로 제공합니다.
이 구성에서 중요한 점은 XIAO가 Chrome을 직접 제어할 필요가 없다는 것입니다.
대신 XIAO는 노트북에 연결된 키보드처럼 동작합니다. XIAO가 제스처 명령을 받으면 해당 키보드 입력을 USB를 통해 전송합니다.
예를 들면:
다른 제스처에도 동일한 방식이 사용됩니다:
이 점이 이 프로젝트를 흥미롭게 만듭니다. 노트북은 입력이 AI 비전 모델에서 왔다는 사실을 알 필요가 없습니다. 컴퓨터 입장에서는 단순히 XIAO에서 키보드 입력을 받는 것뿐입니다.
XIAO가 연결되고 컴퓨터에서 인식되면, 다음 단계는 감지된 각 제스처를 필요한 키보드 동작에 매핑하는 로직을 XIAO에 프로그래밍하는 것입니다.


이제 XIAO ESP32S3가 Chrome Dino의 컨트롤러로 동작할 수 있도록 프로그래밍해야 합니다.
XIAO는 감지된 제스처 정보를 받아 각 제스처를 키보드 동작에 매핑합니다. USB HID를 사용하므로 노트북은 XIAO를 USB 입력 장치로 인식하고, 명령을 Chrome Dino에 직접 전송할 수 있습니다.
프로그래밍에는 Arduino IDE를 사용했습니다. ESP32 보드 패키지가 설치되어 있고 XIAO_ESP32S3 가 보드로 선택되어 있는지 확인하세요. Seeed의 문서에서도 XIAO ESP32S3 프로그래밍에 Arduino IDE를 권장합니다.
Arduino IDE를 열고 다음을 선택합니다:
Tools → Board → XIAO_ESP32S3
그런 다음 XIAO ESP32S3에 해당하는 COM 포트를 선택합니다.
아래 코드는 이 프로젝트의 컨트롤러 로직을 포함합니다. 제스처 명령을 처리하고 해당 USB HID 키보드 입력을 노트북으로 전송합니다.
다음 코드를 Arduino IDE에 붙여 넣습니다:
이 코드의 핵심 아이디어는 제스처를 명령에 매핑하는 것입니다:
또한 프로그램은 하나의 제스처가 동일한 키보드 명령을 계속 트리거하지 않도록 해야 합니다. 예를 들어 카메라 앞에서 Rock 제스처를 몇 초 동안 유지하더라도, 모델이 Rock을 감지할 때마다 XIAO가 점프 키를 반복해서 누르지는 않기를 원합니다.
그래서 코드에는 반복 감지를 처리하기 위한 간단한 제어 로직이 포함되어 있습니다. 제스처를 계속 유지하면 동일한 명령이 여러 번 트리거될 수 있기 때문에 테스트 중에 이것이 중요해졌습니다.
코드를 붙여 넣은 후 먼저 컴파일합니다. 오류가 없다면 XIAO ESP32S3에 업로드합니다.
업로드가 완료되면 XIAO는 USB 컨트롤러로 작동할 준비가 됩니다.
중요: 프로젝트를 테스트할 때는 USB 케이블로 XIAO를 노트북에 연결된 상태로 유지하세요. 이 연결은 전원과 HID 명령에 사용되는 USB 통신을 모두 제공합니다.
업로드에 실패하거나 XIAO가 포트로 나타나지 않으면 보드를 BootLoader 모드로 전환한 다음 업로드를 다시 시도할 수 있습니다. Seeed는 이 경우 컴퓨터에 보드를 연결하는 동안 BOOT 버튼을 누르고 있을 것을 권장합니다.
코드가 성공적으로 업로드되면 다음 단계로 넘어가 Chrome Dino에서 각 제스처를 테스트할 수 있습니다.

이제 모든 테스트 준비가 완료되었습니다.
영상에서는 전체 설정을 보여 주고 Chrome Dino에서 Rock, Paper, Scissors 제스처를 테스트합니다. 제스처가 어떻게 감지되고 해당 동작이 XIAO ESP32S3를 통해 게임으로 전송되는지 영상에서 확인할 수 있습니다.
최종 설정을 사용하면 노트북 키보드를 직접 사용하지 않고 손 제스처만으로 Chrome Dino를 제어할 수 있습니다.

이상입니다. Grove Vision AI V2와 XIAO ESP32S3를 사용해 Chrome Dino용 간단한 제스처 기반 컨트롤러를 만들었습니다.
Grove Vision AI V2는 손 제스처 인식을 담당하고, XIAO ESP32S3는 제어 로직을 처리하며 USB HID를 사용해 노트북으로 명령을 전송합니다.
이 프로젝트는 컴퓨터 비전, AI, 임베디드 하드웨어를 실제로 게임을 플레이하는 데 사용할 수 있는 무언가로 결합해 보는 재미있는 방법이었습니다. 또한 기존 AI 모델을 마이크로컨트롤러와 연결해 완전히 다른 유형의 사용자 인터페이스를 만들 수 있다는 점도 보여 줍니다.
같은 기본 아이디어를 사용해 만들 수 있는 다른 것들이 많으므로, 더 많은 제스처와 다양한 애플리케이션을 추가해 이 프로젝트를 더욱 발전시킬 수 있습니다.
원문: https://www.instructables.com/I-Controlled-Chrome-Dino-With-Rock-Paper-Scissors/