Skip to content

Latest commit

Β 

History

358 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎲 BoardBot

μ˜€λ²„ν—€λ“œ 카메라 기반 μ‹€μ‹œκ°„ 객체인식과 λ©€ν‹°μ—μ΄μ „νŠΈλ₯Ό ν™œμš©ν•œ λ³΄λ“œκ²Œμž„ μ§„ν–‰ μ‹œμŠ€ν…œ

ν”Œλ ˆμ΄μ–΄λŠ” μ‹€λ¬Ό λ³΄λ“œκ²Œμž„μ„ κ·ΈλŒ€λ‘œ 즐기고, μ—μ΄μ „νŠΈκ°€ μ§„ν–‰μž(λ”œλŸ¬)λ₯Ό λŒ€μ‹ ν•΄ 인식 Β· μ‹¬νŒ Β· μ§„ν–‰ Β· 해섀을 μˆ˜ν–‰ν•œλ‹€.

Python FastAPI React Vite YOLO MediaPipe Google TTS


πŸ“Œ ν”„λ‘œμ νŠΈ κ°œμš”

ν…Œμ΄λΈ” μœ„μ— μ„€μΉ˜λœ 카메라 ν•œ λŒ€κ°€ μ£Όμ‚¬μœ„ Β· μΉ΄λ“œ Β· μ†λ™μž‘μ„ μ‹€μ‹œκ°„μœΌλ‘œ μΈμ‹ν•˜κ³ , κ²Œμž„ κ·œμΉ™ μ—”μ§„(FSM)κ³Ό λ„€ 개의 μ—μ΄μ „νŠΈκ°€ ν˜‘λ ₯ν•˜μ—¬ μ‚¬λžŒ μ§„ν–‰μž 없이 λ³΄λ“œκ²Œμž„μ„ μ²˜μŒλΆ€ν„° λκΉŒμ§€ μ§„ν–‰ν•œλ‹€. ν”Œλ ˆμ΄μ–΄λŠ” νƒœλΈ”λ¦Ώ ν™”λ©΄κ³Ό μŒμ„± μ•ˆλ‚΄λ§Œ 따라가면 되며, ν˜„μž¬ μš”νŠΈλ‹€μ΄μŠ€μ™€ ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„μ„ μ§€μ›ν•œλ‹€.

λ³΄λ“œκ²Œμž„μ€ κ·œμΉ™ μ„€λͺ… Β· μ°¨λ‘€ 관리 Β· 점수 계산 Β· νŒμ •μ— μ§„ν–‰μžλ₯Ό ν•„μš”λ‘œ ν•˜κ³ , κ·œμΉ™μ„ λͺ¨λ₯΄λ©΄ μ‹œμž‘ μžμ²΄κ°€ μ–΄λ ΅λ‹€. λ³Έ μ‹œμŠ€ν…œμ€ ν…Œμ΄λΈ”μ„ κ΄€μ°°ν•˜κ³ , κ·œμΉ™μ„ μ μš©ν•˜κ³ , μŒμ„±μœΌλ‘œ μ•ˆλ‚΄ν•˜λŠ” AI μ§„ν–‰μžλ₯Ό κ΅¬ν˜„ν•˜μ—¬ 이 μ§„μž… μž₯벽을 ν•΄μ†Œν•˜λ©°, ν”Œλ ˆμ΄μ–΄ κ²½ν—˜μ€ μ‹€λ¬Ό κ·ΈλŒ€λ‘œ μœ μ§€ν•˜λŠ” Analog-first 섀계λ₯Ό λ”°λ₯Έλ‹€.

ν•­λͺ© λ‚΄μš©
지원 κ²Œμž„ μš”νŠΈλ‹€μ΄μŠ€(Yacht Dice) Β· ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„(One Night Werewolf)
인식 YOLO(μ£Όμ‚¬μœ„ Β· μΉ΄λ“œ) + MediaPipe(손) + OpenCV(μ£Όμ‚¬μœ„ 눈 νŒλ…)
μ§„ν–‰ μ‹¬νŒ Β· ν…œν¬ Β· μ§„ν–‰ Β· μ „λž΅ λ„€ μ—μ΄μ „νŠΈμ˜ μš°μ„ μˆœμœ„ ν˜‘λ ₯ + LLM μ „λž΅ μ½”μΉ­
μŒμ„± Google Cloud TTS Β· 3-계측 μΊμ‹œ Β· μš°μ„ μˆœμœ„ 큐(끼어듀기 Β· νŽ˜μ΄λ“œ)
ν™”λ©΄ React 기반 νƒœλΈ”λ¦Ώ UI Β· WebSocket μ‹€μ‹œκ°„ 동기화

μ‹œμ—° 및 ν™”λ©΄

μ‹œμŠ€ν…œ ꡬ성 β€” μ˜€λ²„ν—€λ“œ 카메라 + ν…Œμ΄λΈ” + νƒœλΈ”λ¦Ώ

μ‹œμŠ€ν…œ ꡬ성

λ‘œλΉ„ Β· μ’Œμ„ 등둝 ν™”λ©΄

λ‘œλΉ„ ν™”λ©΄

μš”νŠΈλ‹€μ΄μŠ€ μ§„ν–‰ ν™”λ©΄

μš”νŠΈλ‹€μ΄μŠ€ μ§„ν–‰ ν™”λ©΄

ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„ μ§„ν–‰ ν™”λ©΄

ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„ μ§„ν–‰ ν™”λ©΄


✨ 핡심 νŠΉμ§•

1. 인식과 κ·œμΉ™μ„ λΆ„λ¦¬ν•œ μ–‘λ°©ν–₯ 톡신 ꡬ쑰

λΉ„μ „(카메라)κ³Ό κ²Œμž„ κ·œμΉ™μ€ μ„œλ‘œμ˜ μ½”λ“œλ₯Ό 직접 ν˜ΈμΆœν•˜μ§€ μ•Šκ³  두 μ’…λ₯˜μ˜ λ©”μ‹œμ§€λ‘œλ§Œ ν†΅μ‹ ν•œλ‹€.

  • GameEvent (λΉ„μ „ β†’ κ·œμΉ™): "νŠΉμ • 사건이 λ°œμƒν–ˆλ‹€" β€” 예: μ£Όμ‚¬μœ„λ₯Ό κ΅΄λ Έλ‹€, μΉ΄λ“œλ₯Ό ν™•μΈν–ˆλ‹€.
  • FusionContext (κ·œμΉ™ β†’ λΉ„μ „): "ν˜„μž¬ λ‹¨κ³„μ—μ„œ κΈ°λŒ€ν•˜λŠ” μž…λ ₯" β€” 예: ν˜„μž¬ μ°¨λ‘€ Β· ν—ˆμš© 행동 Β· κΈ°λŒ€ 이벀트.

κ·œμΉ™ 엔진이 λ‹¨κ³„λ§ˆλ‹€ κΈ°λŒ€ 이벀트λ₯Ό ν•œμ •ν•΄ μ „λ‹¬ν•˜λ©΄ 비전은 κ·Έ μ™Έμ˜ 사건을 λ°œν™”ν•˜μ§€ μ•ŠλŠ”λ‹€. 이 μƒνƒœ 기반 κ²Œμ΄νŒ…μ€ μ˜€μΈμ‹μ„ μ€„μ΄λŠ” λ™μ‹œμ— μƒˆ κ²Œμž„μ„ μΆ”κ°€ν•˜κΈ° μ‰¬μš΄ ν™•μž₯성을 μ œκ³΅ν•œλ‹€.

2. μ˜€λ²„ν—€λ“œ ν™˜κ²½μ— νŠΉν™”λœ 인식 기법

  • νŒ” λ°©ν–₯ 기반 μ’Œμ„ λ§€μΉ­ β€” μœ„μ—μ„œ λ‚΄λ €λ‹€λ³΄λŠ” μ‹œμ μ—μ„œλŠ” 얼꡴이 보이지 μ•ŠμœΌλ―€λ‘œ, νŒ”μ΄ λ»—μ–΄ λ“€μ–΄μ˜€λŠ” 각도와 μΆ”μ •ν•œ λͺΈ μœ„μΉ˜λ‘œ μ†μ˜ 주인을 μ‹λ³„ν•œλ‹€. 이λ₯Ό 톡해 μ°¨λ‘€κ°€ μ•„λ‹Œ μ‚¬λžŒμ˜ 행동을 μžλ™μœΌλ‘œ κ°μ§€ν•œλ‹€.
  • κ΅΄λ¦Ό 귀속(RollAttributor) β€” μš”νŠΈ μ£Όμ‚¬μœ„λŠ” ꡴림톡을 μ—Žμ–΄ 거의 ꡬλ₯΄μ§€ μ•ŠμœΌλ―€λ‘œ, μ›€μ§μž„ λŒ€μ‹  μ†μ˜ 트레이 점유 Β· ꡴림톡 μ‚¬μš© Β· μ£Όμ‚¬μœ„ 눈 뢄포 λ³€ν™”λ₯Ό μ’…ν•©ν•΄ μ‹€μ œ ꡴림을 νŒμ •ν•œλ‹€.
  • μ˜μƒμ²˜λ¦¬ 기반 μ£Όμ‚¬μœ„ 눈 νŒλ… β€” OpenCV둜 밝기λ₯Ό 보정(CLAHE)ν•œ λ’€ μ›ν˜• κ²€μΆœ(HoughCircles)둜 μ£Όμ‚¬μœ„ 눈 1~6을 μ½λŠ”λ‹€.

3. λ©€ν‹°μ—μ΄μ „νŠΈ μ§„ν–‰μž

ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ λͺ¨λΈ λŒ€μ‹  역할이 κ΅¬λΆ„λœ λ„€ 개의 κ²½λŸ‰ μ—μ΄μ „νŠΈκ°€ μš°μ„ μˆœμœ„μ— 따라 ν˜‘λ ₯ν•œλ‹€. μ‹¬νŒμ€ μ¦‰μ‹œ κ°œμž…ν•˜κ³ , μ§„ν–‰κ³Ό μ „λž΅ μ•ˆλ‚΄λŠ” κ²Œμž„ 흐름을 λ°©ν•΄ν•˜μ§€ μ•ŠλŠ”λ‹€.

μš°μ„ μˆœμœ„ μ—μ΄μ „νŠΈ μ—­ν•  μŒμ„± μš°μ„ μˆœμœ„
1 Rules (μ‹¬νŒ) μ°¨λ‘€ μœ„λ°˜ Β· κΈˆμ§€ 행동 μ¦‰μ‹œ κ°œμž…, ν•˜μœ„ μ–΅μ œ CRITICAL
2 Tempo (ν…œν¬) ν„΄ 타이머 κ²½κ³Ό Β· μ’…λ£Œ μž„λ°• κ²½κ³  HIGH
3 Progress (μ§„ν–‰) 단계 μ „ν™˜ μ•ˆλ‚΄ 및 ν•΄μ„€ NORMAL
4 Strategy (μ „λž΅) (선택) LLM 기반 μ „λž΅ μΆ”μ²œ, κ·œμΉ™ 폴백 LOW

4. μžμ—°μŠ€λŸ¬μš΄ μŒμ„± μ§„ν–‰

Google Cloud TTS와 3-계측 λ””μŠ€ν¬ μΊμ‹œλ‘œ ν•©μ„± λΉ„μš©μ„ μ΅œμ†Œν™”ν•˜κ³ , μš°μ„ μˆœμœ„ 큐둜 μ•ˆλ‚΄κ°€ κ²ΉμΉ˜μ§€ μ•Šλ„λ‘ μ§λ ¬ν™”ν•œλ‹€. κΈ΄κΈ‰ μ•ˆλ‚΄(CRITICAL)λŠ” μ§„ν–‰ 쀑인 멘트λ₯Ό νŽ˜μ΄λ“œμ•„μ›ƒν•˜λ©° μ¦‰μ‹œ 끼어든닀.


πŸ“Š μ„±λŠ₯

ν”Œλ ˆμ΄μ–΄ 등둝 β†’ μš”νŠΈλ‹€μ΄μŠ€ β†’ ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„μ„ ν•˜λ‚˜μ˜ μ„Έμ…˜μœΌλ‘œ 연속 μ§„ν–‰ν•˜λ©° μΈ‘μ •ν•˜μ˜€λ‹€. μ‘λ‹΅μ‹œκ°„μ€ End-to-End(ν”Œλ ˆμ΄μ–΄μ˜ 물리적 행동뢀터 ν™”λ©΄ Β· μŒμ„± λ°˜μ˜κΉŒμ§€)λ₯Ό κΈ°μ€€μœΌλ‘œ ν•œλ‹€.

정확도

μ§€ν‘œ κ°’
톡합 μ„Έμ…˜ 전체 인식 정확도 93.5%
κ²Œμž„ 동일 가쀑 κΈ°ν•˜ν‰κ·  86.6%

ν‘œλ³Έ: 4인 ν”Œλ ˆμ΄ 10판. μš”νŠΈ 총 800회 μ£Όμ‚¬μœ„ κ΅΄λ¦Ό, ν•œλ°€ 총 40회 μ—­ν•  등둝 μΈμ‹μœΌλ‘œ μ‚°μΆœ.

응닡 속도 (End-to-End)

ν•­λͺ© 평균 ν‘œμ€€νŽΈμ°¨ ν‘œλ³Έ
μ£Όμ‚¬μœ„ κ΅΄λ¦Ό 인식 μ•½ 1.14초 121 ms n = 30
μ’Œμ„/μ—­ν•  등둝 인식 208.5 ms 21 ms n = 30
ν•œλ°€ μ—­ν•  μΉ΄λ“œ 인식 430.7 ms 63.6 ms n = 30
μ‹œμŠ€ν…œ 전체 0.47초 (κΈ°ν•˜ν‰κ· ) β€” β€”

지속성 (μ•½ 26λΆ„ 연속 ꡬ동)

μ§€ν‘œ κ°’
λΉ„μ „ 처리 속도 평균 25.1 fps (λͺ©ν‘œ 30), ν”„λ ˆμž„ λ“œλžλ₯  16.4%
RAM μ‚¬μš©λŸ‰ 평균 1,061 MB Β· μ΅œλŒ€ 1,066 MB (ν‘œμ€€νŽΈμ°¨ Β±21 MB, λˆ„μˆ˜ μ—†μŒ)
κ²Œμž„ μ™„μ£Όμœ¨ 100% (운영자 κ°œμž… 없이 μ™„μ£Ό)
TTS μΊμ‹œ 적쀑λ₯  64.6% (κ³ μ • 멘트 100% Β· 동적 멘트 54.5%)

μΈ‘μ • ν™˜κ²½ β€” Apple M4 Pro (12-core) Β· RAM 48 GB Β· macOS Β· Python 3.13. RAM은 26λΆ„ λ‚΄λ‚΄ ν‰νƒ„ν•˜κ²Œ μœ μ§€λ˜μ–΄ μž₯μ‹œκ°„ ꡬ동에도 λˆ„μˆ˜κ°€ μ—†μŒμ„ ν™•μΈν•˜μ˜€λ‹€.


πŸ— μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

        [μ˜€λ²„ν—€λ“œ 카메라]
               β”‚  단일 카메라 β†’ μ—¬λŸ¬ μΈμ‹κΈ°λ‘œ ν”„λ ˆμž„ λΆ„λ°° (drop-oldest)
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β–Ό           β–Ό                β–Ό                  (각각 별도 μŠ€λ ˆλ“œ, ν™œμ„± 1개만 μ—°μ‚°)
 λ‘œλΉ„        μš”νŠΈ              λŠ‘λŒ€μΈκ°„       ← λΉ„μ „ νŒŒμ΄ν”„λΌμΈ
 (손/제슀처) (μ£Όμ‚¬μœ„/트레이)   (μΉ΄λ“œ/손/νˆ¬ν‘œ)
   └───────────┴───── GameEvent ┴───────────┐
                                            β–Ό
                              Bridge (λΉ„μ „ ↔ κ·œμΉ™ 톡신 계측)
                              β–² FusionContext        β”‚ GameEvent
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β–Ό
        λ‘œλΉ„ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°            κ²Œμž„λ³„ Runner β†’ Session β†’ FSM (κ·œμΉ™ μ—”μ§„)
        (ν”Œλ ˆμ΄μ–΄ Β· μ’Œμ„ 등둝)                          β”‚
                                            λ©€ν‹°μ—μ΄μ „νŠΈ (μ‹¬νŒ Β· ν…œν¬ Β· μ§„ν–‰ Β· μ „λž΅)
                                                       β”‚
                                            μ˜€λ””μ˜€ λ§€λ‹ˆμ € (TTS Β· 효과음 Β· BGM 큐)
                                                       β”‚
              WebSocket: /ws/tablet Β· /ws/yacht Β· /ws/werewolf
                                                       β–Ό
                                        [νƒœλΈ”λ¦Ώ β€” React UI]
  • 단일 ν”„λ‘œμ„ΈμŠ€μ—μ„œ FastAPI μ„œλ²„μ™€ λΉ„μ „ νŒŒμ΄ν”„λΌμΈμ΄ ν•¨κ»˜ λ™μž‘ν•˜λ©° μΈν”„λ‘œμ„ΈμŠ€λ‘œ 직접 ν†΅μ‹ ν•œλ‹€.
  • 톡신은 λ‚΄λΆ€(Bridge: GameEvent/FusionContext)와 μ™ΈλΆ€(WebSocket: ν™”λ©΄ Β· μŒμ„± Β· μž…λ ₯) 두 ν‰λ©΄μœΌλ‘œ λ‚˜λ‰œλ‹€.
  • λͺ¨λ“  μƒνƒœ 변화에 버전 번호(state_version)λ₯Ό λΆ€μ—¬ν•΄ ν™”λ©΄ 일관성과 μ„±λŠ₯ μΈ‘μ •μ˜ κΈ°μ€€μ μœΌλ‘œ ν™œμš©ν•œλ‹€.

🧩 기술 μŠ€νƒ

μ˜μ—­ μŠ€νƒ
μ–Έμ–΄ / λŸ°νƒ€μž„ Python 3.11+ Β· asyncio
물체 인식 YOLO26s (Ultralytics) μ»€μŠ€ν…€ ν•™μŠ΅ Β· μΆ”λ‘  해상도 640
손 인식 MediaPipe HandLandmarker (Tasks API, mediapipe 0.10+) Β· μ΅œλŒ€ 8손
μ˜μƒμ²˜λ¦¬ OpenCV (HoughCircles Β· CLAHE Β· SimpleBlobDetector) Β· NumPy
좔적 ByteTrack(자체 κ²½λŸ‰ κ΅¬ν˜„) + Hungarian λ§€μΉ­(lap/lapjv)
λ°±μ—”λ“œ FastAPI Β· uvicorn Β· websockets
κ²Œμž„ 둜직 순수 Python FSM (μ™ΈλΆ€ μ˜μ‘΄μ„± μ—†μŒ, StrEnum μƒνƒœλ¨Έμ‹ )
μ—μ΄μ „νŠΈ μš°μ„ μˆœμœ„ μ€‘μž¬ + OpenAI gpt-5.4-mini(μ „λž΅) Β· κ·œμΉ™ 기반 폴백
μ˜€λ””μ˜€ Google Cloud TTS (ko-KR Neural2) Β· 3-계측 λ””μŠ€ν¬ μΊμ‹œ Β· μš°μ„ μˆœμœ„ 큐
ν”„λ‘ νŠΈμ—”λ“œ React 18.3 Β· Vite 5.4 Β· zustand 4.5 Β· WebSocket
ν’ˆμ§ˆ 관리 pytest Β· ruff Β· black Β· mypy(strict) Β· GitHub Actions CI

인식 λͺ¨λΈ β€” μš”νŠΈ YOLO 4μ’…(trayΒ·tray_innerΒ·roll_trayΒ·dice, yacht_v4.pt) Β· λŠ‘λŒ€ YOLO 13μ’…(μ—­ν•  μΉ΄λ“œ 12μ’… + Card_Back, werewolf_v8.pt) Β· 손 λžœλ“œλ§ˆν¬ 21 keypoints(hand_landmarker.task).


πŸš€ μ‹œμž‘ν•˜κΈ°

# 1) μ„€μΉ˜
cd boardgame-ai
pip install -e ".[dev]"
pytest tests/test_contracts.py -v          # λ™μž‘ 확인

# 2) λ°±μ—”λ“œ (λΉ„μ „ νŒŒμ΄ν”„λΌμΈμ€ μ‹œμž‘ μ‹œ μžλ™ μ‹€ν–‰)
uvicorn backend.server:app --host 127.0.0.1 --port 8000

# 3) ν”„λ‘ νŠΈμ—”λ“œ (Vite 개발 μ„œλ²„)
cd frontend && npm install && npm run dev
  • YOLO κ°€μ€‘μΉ˜(weights/*.pt)λŠ” μ €μž₯μ†Œμ— ν¬ν•¨λ˜μ§€ μ•ŠμœΌλ―€λ‘œ Google Driveμ—μ„œ λ°›μ•„ weights/에 λ‘”λ‹€(μ—†μœΌλ©΄ ν•΄λ‹Ή μΈμ‹λ§Œ λΉ„ν™œμ„±).
  • μŒμ„±μ„ μ‚¬μš©ν•˜λ €λ©΄ .env에 GOOGLE_APPLICATION_CREDENTIALS(Google Cloud TTS μ„œλΉ„μŠ€ 계정 ν‚€ 경둜)λ₯Ό μ„€μ •ν•œλ‹€.
  • 카메라 인식 과정을 단독 μ‹œκ°ν™”ν•˜λŠ” μ‹œμ—° μŠ€ν¬λ¦½νŠΈλŠ” boardgame-ai/demos/ μ°Έκ³ .

πŸ“‚ μ €μž₯μ†Œ ꡬ쑰

boardgame-ai/
β”œβ”€β”€ core/        곡유 νƒ€μž… Β· μƒμˆ˜ (순수 Python β€” μ™ΈλΆ€ 라이브러리 Β· κ²Œμž„ 쒅속 κΈˆμ§€)
β”œβ”€β”€ bridge/      λΉ„μ „ ↔ κ·œμΉ™ 톡신 (LocalBridge / WebSocketBridge)
β”œβ”€β”€ vision/      λΉ„μ „ νŒŒμ΄ν”„λΌμΈ (detectors Β· tracking Β· attribution Β· fusion Β· κ²Œμž„λ³„ pipeline)
β”œβ”€β”€ games/       κ²Œμž„ κ·œμΉ™ FSM (yacht Β· werewolf)
β”œβ”€β”€ agents/      λ©€ν‹°μ—μ΄μ „νŠΈ (rules Β· tempo Β· progress Β· strategy)
β”œβ”€β”€ audio/       Google TTS Β· 3-계측 μΊμ‹œ Β· μš°μ„ μˆœμœ„ 큐
β”œβ”€β”€ backend/     FastAPI μ„œλ²„ Β· κ²Œμž„λ³„ runner/session Β· WebSocket
β”œβ”€β”€ frontend/    React νƒœλΈ”λ¦Ώ UI (Vite)
β”œβ”€β”€ benchmarks/  μ„±λŠ₯ μΈ‘μ • (정확도 Β· μ‘λ‹΅μ‹œκ°„ Β· FPS Β· μžμ›)
β”œβ”€β”€ demos/       λΉ„μ „ μ‹œκ°ν™” μ‹œμ—° 슀크립트
β”œβ”€β”€ weights/     YOLO κ°€μ€‘μΉ˜ (git μ œμ™Έ, Drive 곡유)
β”œβ”€β”€ tests/       계약 Β· FSM Β· μœ΅ν•© Β· 좔적 ν…ŒμŠ€νŠΈ
└── docs/        섀계 λ¬Έμ„œ

πŸ‘₯ νŒ€ β€” Takoyaki

이름 λ‹΄λ‹Ή
μ–‘μŠΉκ²½ (νŒ€μž₯) ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„ λΉ„μ „ Β· λ©€ν‹°μ—μ΄μ „νŠΈ Β· ν”„λ‘œμ νŠΈ 총괄
κΉ€μ„±λ―Ό μš”νŠΈλ‹€μ΄μŠ€ λΉ„μ „ Β· ν”Œλ ˆμ΄μ–΄ 등둝 및 λ§€μΉ­ Β· λ‘œλΉ„ UI Β· μ˜€λ””μ˜€/TTS Β· μ„±λŠ₯ μΈ‘μ •
강병진 μš”νŠΈλ‹€μ΄μŠ€ FSM Β· μš”νŠΈλ‹€μ΄μŠ€ UI Β· 곡톡 νƒ€μž…(core)
μœ ν˜•μŠΉ ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„ FSM Β· ν•œλ°€μ˜ λŠ‘λŒ€μΈκ°„ UI Β· 비전↔FSM λΈŒλ¦Ώμ§€/λ°±μ—”λ“œ

πŸ“š λ¬Έμ„œ

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages