본문으로 건너뛰기

Connect 4를 두는 물리 AI 로봇 만들기

RF-DETR과 negamax, 로봇 팔을 결합해 Connect 4를 자동 플레이하는 시스템 구축기입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Connect 4를 플레이하는 물리 AI 로봇은 카메라 인식, 게임 알고리즘, 로봇 팔 제어, 음성 생성을 분리해 구성한다. 로컬 RF-DETR small 모델은 말과 빈 칸을 감지하고 Homography로 7×6 격자에 매핑하며, negamax 엔진은 bitboard 상태를 깊이 8까지 12밀리초 안에 탐색한다. HiWonder MaxArm은 흡착 노즐로 말을 집고 경사면이 있는 cardboard funnel을 거쳐 슬롯에 넣으며, Gemini 3.6 Flash와 ElevenLabs는 수를 결정하지 않고 실시간 roast만 처리한다. 객체 탐지 모델은 confidence threshold 0.40에서 F1 0.96을 기록했고, 실제 말 두께를 6.5밀리미터로 재측정한 보정 과정이 반복 집기 실패를 해결했다.

섹션별 상세

01
이 프로젝트는 사람 대신 Connect 4를 두고 실시간으로 음성 도발까지 수행하는 물리 AI 로봇을 만드는 과정에 초점을 맞춘다. 카메라 영상에서 보드 상태를 읽고 게임 수를 계산한 뒤 HiWonder MaxArm이 말을 집어 지정된 열에 넣으며, Gemini 3.6 Flash와 ElevenLabs는 경기 발언만 맡는다. 로컬 컴퓨터 비전은 프레임당 175밀리초, 게임 상태 평가는 12밀리초에 처리되어 시각 인식과 행동 결정이 분리된 구조를 이룬다.
02
시스템은 눈, 두뇌, 손, 입으로 나뉜 네 단계 파이프라인으로 구성된다. RF-DETR small 모델이 카메라 프레임에서 Red Piece, Yellow Piece, Board, No Piece를 감지하고 Homography가 위치를 7×6 격자로 변환한 뒤, 다섯 프레임 연속으로 같은 결과가 나올 때만 수를 승인한다. 보드 상태는 bitboard로 바뀌어 negamax 엔진이 깊이 8까지 탐색하고, 로봇 팔이 말을 투입한 뒤 Gemini 3.6 Flash가 상황에 맞는 문장을 만들고 ElevenLabs가 음성으로 재생한다.
Connect Four 로봇 파이프라인을 눈, 두뇌, 손, 입의 네 단계로 구분한 다이어그램이다.
Diagram다이어그램은 RF-DETR small 모델과 Homography가 카메라 프레임을 보드 상태로 바꾸고, negamax 엔진이 12밀리초 안에 수를 계산하는 흐름을 보여준다. HiWonder MaxArm은 흡착 노즐로 말을 집어 열에 넣으며, Gemini 3.6 Flash와 ElevenLabs는 경기 발언을 생성하고 재생한다.
03
게임 의사결정에는 Large Language Model을 사용하지 않는 점이 핵심이다. negamax 엔진이 강제 승리와 결정적인 차단 수를 계산하고, 20개의 무작위 게임을 실행하는 테스트 스위트가 해당 수를 놓치지 않는지 확인한다. Gemini 3.6 Flash는 4.5초 예산 안에서 맥락에 맞는 roast를 생성하는 음성 인터페이스 역할에 한정된다.
04
빈 칸을 별도 클래스로 감지한 것은 중복 작업처럼 보이지만 카메라 파이프라인의 상태를 점검하는 장치로 기능한다. 모델은 네 클래스를 사용해 보드와 말뿐 아니라 No Piece도 예측하며, confidence threshold 0.40에서 테스트 분할 F1 0.96과 Red Piece precision 1.0을 기록했다. 로컬 inference를 사용할 때는 raw workspace checkpoint path 대신 connect4-kewhf/1 형식의 project ID를 입력해야 invalid model errors를 피할 수 있다.
Connect 4 보드 상단에 설치할 단일 cardboard funnel 채널의 측면 구조를 보여준다.
Diagram골판지 구조물은 양쪽 수직 벽과 내부 경사면으로 구성되어 흡착 노즐이 수평으로 놓은 말을 슬롯 방향으로 돌린다. 본문에서 설명한 기계적 backlash와 좁은 플라스틱 슬롯의 정렬 문제를 물리적인 유도면으로 완화하는 부품이다.
일곱 개의 Connect 4 열에 대응하는 cardboard funnel 채널을 나란히 배치한 모습이다.
Diagram각 채널은 상단의 세로 벽과 내부 경사면을 반복해 구성되어 말이 어느 열에 들어갈지 안내한다. 이 배열은 로봇 팔이 지정 열의 중심을 정확히 맞추지 못해도 말이 슬롯으로 흘러가도록 drop tolerance를 높이는 설계와 연결된다.
05
기계적 오차는 흡착 노즐이 평평하게 집은 말을 세로 슬롯에 넣는 과정에서 발생한다. 제작자는 보드 상단에 일곱 개의 경사 채널을 가진 cardboard funnel을 설치해 수평으로 놓인 말이 경사면에 부딪힌 뒤 수직으로 뒤집히도록 만들었고, 몇 밀리미터의 위치 오차도 흡수하도록 했다. 이 구조는 흡착컵이 말을 놓는 위치와 실제 슬롯 사이의 정렬 허용 범위를 넓혀 자동 투입의 실패 가능성을 줄인다.
bash
git clone https://github.com/aarnavshah12/connect4-robot.git
cd connect4-robot
uv venv .venv --python 3.12
uv pip install --python .venv/bin/python -r requirements.txt
cp config.example.yaml config.yaml

Connect 4 로봇 저장소를 복제하고 Python 3.12 가상 환경과 의존성을 설치한 뒤 설정 파일을 생성한다.

06
보정 단계에서는 하드웨어 고정과 실제 치수 측정이 성능을 좌우한다. 로봇 팔을 나사로 고정하고 feeder를 테이블에 고정해야 하며, 2밀리미터만 움직여도 흡착 정렬이 깨지고 저장된 좌표가 무효화된다. 표준 말 두께를 5밀리미터로 가정했을 때 교차된 집기 실패가 발생했지만, 성공한 Z축 좌표 96밀리미터, 90밀리미터, 83밀리미터를 다시 읽어 실제 두께 6.5밀리미터를 확인했다.
HiWonder MaxArm이 Connect 4 말을 흡착 노즐로 집고 있으며, 말 하나의 두께가 6.5밀리미터로 표시되어 있다.
Screenshot이미지는 로봇 팔의 흡착 노즐 아래에 있는 빨간 말과 feeder stack을 보여주고, 한 말의 두께 6.5밀리미터와 집을 때마다 stack이 6.5밀리미터씩 내려간다는 보정 정보를 표시한다. 이 측정값은 5밀리미터로 가정했을 때 발생한 교차 집기 실패를 해결하고 Z축 좌표를 조정하는 근거가 된다.
07
구축 절차는 저장소 복제와 uv 기반 환경 설치, config.yaml의 API key 입력, 로봇 팔의 MicroPython firmware 기록, feeder 집기 위치 학습 순서로 이어진다. 이후 보드와 빈 칸을 촬영해 RF-DETR 모델을 학습하고, 카메라 Homography와 보드 좌표를 debug tools로 확인한 다음 게임 엔진을 시작한다. Gemini와 ElevenLabs key가 없으면 기본 텍스트와 macOS system voice가 대체하므로 핵심 엔진과 vision system은 외부 API 없이도 로컬에서 실행된다.

용어 해설

호모그래피(Homography)
카메라 이미지의 평면 좌표를 실제 게임판의 7×6 격자 좌표로 변환하는 기하학적 매핑이다. 이 프로젝트에서는 감지된 말의 위치를 보드 열과 행으로 바꾸는 데 사용되며, 카메라와 보드 사이의 시점 차이를 보정한다.
비트보드(Bitboard)
게임판 상태를 비트 배열이나 정수의 비트로 표현하는 자료 구조다. Connect 4 엔진은 말의 배치를 비트보드로 바꾼 뒤 이진 연산으로 승리 조건과 후보 수를 빠르게 평가하며, 깊이 8 탐색을 12밀리초 안에 처리한다.
네가맥스(Negamax)
두 플레이어의 점수를 하나의 관점으로 통합해 게임 트리를 탐색하는 minimax 계열 알고리즘이다. 이 시스템은 보드 상태를 입력받아 최대 8수 앞까지 후보를 평가하고, 강제 승리나 핵심 차단 수를 놓치지 않도록 결정한다.
F1 점수(F1 Score)
정밀도와 재현율의 조화 평균으로 객체 탐지 성능을 평가하는 지표다. 학습한 모델은 confidence threshold 0.40에서 테스트 분할 F1 0.96을 기록했으며, Red Piece 클래스의 precision은 1.0이었다.
흡착 노즐(Suction Nozzle)
진공으로 평평한 게임 말을 붙잡아 이동시키는 로봇 팔의 도구다. 수평으로 집은 말을 수직 슬롯에 넣어야 하므로, 이 프로젝트는 경사면이 있는 cardboard funnel을 이용해 말의 방향을 바꾼다.

기술

  • RF-DETR
  • Roboflow Universe
  • Roboflow UI
  • Gemini 3.6 Flash
  • ElevenLabs
  • HiWonder MaxArm
  • ESP32
  • MicroPython
  • uv
  • Python 3.12
  • macOS system voice

활용 사례

  • Connect 4를 자동으로 플레이하는 로봇 팔
  • 보드게임용 실시간 객체 탐지와 좌표 매핑
  • 로봇 동작과 음성 생성이 결합된 상호작용 시스템
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 22.수집 2026. 08. 22.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.