|
|
| 1번째 줄: |
1번째 줄: |
| − | ==프로젝트 소개==
| + | {{목차제한|2}} |
| − | 테이블탑 프로젝터는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 수 있는 새로운 형태의 게임 환경을 제공합니다.
| + | <div style="float: right; width: 350px; margin-left: 20px;"> |
| − | | + | {| class="wikitable" style="width: 100%; background-color: #f8f9fa; border: 1px solid #a2a9b1;" |
| − | ===프로젝트 명=== | + | |+ style="background-color: #ddd; font-weight: bold; padding: 5px;" | 프로젝트 정보 |
| − | 테이블탑 프로젝터 (Tabletop Projector)
| + | |- |
| − | | + | ! colspan="2" style="background-color: #eee; text-align: center; padding: 10px;" | '''테이블탑 프로젝터'''<br/>Tabletop Projector |
| − | ===프로젝트 기간===
| + | |- |
| − | 2025.3~2025.6
| + | ! style="width: 40%;" | 프로젝트명 |
| − | | + | | 테이블탑 프로젝터 |
| − | ===팀 소개===
| |
| − | 팀명: Imbedded<br/>
| |
| − | 서울시립대학교 기계정보공학과 2020430001 구효본 (팀장)<br/>
| |
| − | 서울시립대학교 기계정보공학과 2022430012 김지호 <br/>
| |
| − | 서울시립대학교 기계정보공학과 2020430008 류정현 <br/>
| |
| − | 서울시립대학교 기계정보공학과 2021430035 조수민 <br/>
| |
| − | 서울시립대학교 기계정보공학과 2020430028 전진형 <br/>
| |
| − | | |
| − | ===개발 소요 비용=== | |
| − | 404.8천원 (초기 계획: 183천원)
| |
| − | | |
| − | ==프로젝트 개요== | |
| − | | |
| − | ===초기 개발 컨셉===
| |
| − | '''프로젝트 비전'''
| |
| − | | |
| − | 보드게임 화면을 책상에 투사하고 영상을 터치함으로써 상호작용이 가능한 장치를 제작하여, 여러 사람들이 개인용 기기로만 접할 수 있었던 게임을 함께 참여할 수 있게 공통된 책상에 투사해주는 시스템을 구현합니다. 전통적인 보드게임의 정적인 특성에서 벗어나, 사용자와 영상의 상호작용으로 동적인 보드게임이 가능해지며, 온라인 게임의 약점으로 꼽혀왔던 사람들과의 대면 부족이라는 문제를 해결할 수 있습니다.
| |
| − | | |
| − | '''핵심 가치'''
| |
| − | * '''확장 가능성''': 리눅스 플랫폼 특성상 개발 환경이 잘 갖추어져 있어 향후 추가 보드게임 개발 가능
| |
| − | * '''직관적 조작''': 빠른 터치 속도 및 영상인식을 통한 자연스러운 사용자 상호작용
| |
| − | * '''사회적 연결''': 대면 보드게임의 장점과 디지털 게임의 편의성 결합
| |
| − | | |
| − | ===프로젝트 요약===
| |
| − | 본 프로젝트는 프로젝터와 터치 센서를 결합하여 테이블 위에서 다양한 인터랙티브 게임을 즐길 수 있는 플랫폼을 개발하는 것을 목표로 합니다. 라즈베리파이를 중심으로 한 제어 시스템과 벨로스탯(Velostat)을 활용한 터치 모듈, 카메라를 통한 실물 카드 인식 시스템을 구현하여 디지털과 아날로그의 장점을 결합한 새로운 게임 경험을 제공합니다.
| |
| − | | |
| − | ===프로젝트의 배경 및 기대효과=== | |
| − | '''배경'''
| |
| − | * '''기존 보드게임의 한계''': 종이 카드, 고정된 규칙, 제한된 게임 도구로 인한 정적인 플레이 방식
| |
| − | * '''온라인 게임의 한계''': 개인용 기기 중심으로 인한 대면 상호작용 부족, 사회적 단절 현상
| |
| − | * '''기술적 공백''': 프로젝터 활용 프로젝트는 있으나 터치 기능과 카메라 기반 객체 인식을 결합한 사례 부족
| |
| − | * '''시장 요구''': COVID-19 이후 소규모 모임 증가, 홈 엔터테인먼트 수요 증가
| |
| − | | |
| − | '''기대효과'''
| |
| − | * '''보드게임 혁신''': 기존 카드와 기물 중심에서 벗어나 복잡하고 다양한 규칙 적용 가능
| |
| − | * '''접근성 향상''': 플레이어가 복잡한 룰을 모두 숙지하지 않아도 시스템 보조로 원활한 게임 진행
| |
| − | * '''사회적 가치''': 온라인 게임의 사회적 단절 문제 보완, 공동 참여형 콘텐츠 발전
| |
| − | * '''콘텐츠 확장성''': 소프트웨어 업데이트를 통한 지속적인 새로운 룰 추가, 기존 IP 재활용
| |
| − | * '''상업적 가능성''': 보드게임 개발사에게 새로운 개발 방향성 제시
| |
| − | | |
| − | ===프로젝트 개발 목표===
| |
| − | | |
| − | '''초기 목표 (2025.4 제안서 기준)'''
| |
| − | {| class="wikitable"
| |
| − | ! 평가 항목
| |
| − | ! 평가방법
| |
| − | ! 초기 목표치
| |
| − | ! 최종 목표치 (수정)
| |
| − | ! 비중(%)
| |
| | |- | | |- |
| − | | 터치 정확도
| + | ! 팀명 |
| − | | 터치 인식 간격 (mm)
| + | | Imbedded |
| − | | < 30mm
| |
| − | | < 20mm
| |
| − | | 35 | |
| | |- | | |- |
| − | | 터치 응답시간
| + | ! 프로젝트 기간 |
| − | | 20회 반복 측정 (ms)
| + | | 2025.3 ~ 2025.6 |
| − | | < 5ms
| |
| − | | < 100ms
| |
| − | | 20 | |
| | |- | | |- |
| − | | 카드 객체인식 정확도
| + | ! 예산 |
| − | | 100프레임당 인식률 (%)
| + | | 404.8천원 |
| − | | > 50%
| |
| − | | > 90%
| |
| − | | 10 | |
| | |- | | |- |
| − | | 게임 응답속도
| + | ! 진행률 |
| − | | 입력-반응 사이 시간 (ms) | + | | <div style="background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 5px; overflow: hidden;"> |
| − | | < 100ms
| + | <div style="background-color: #4CAF50; width: 80%; text-align: center; color: white;">80%</div> |
| − | | < 100ms
| + | </div> |
| − | | 25
| |
| | |- | | |- |
| − | | 지원 게임 가짓수
| + | ! 주요 기술 |
| − | | 빌드된 게임 개수
| + | | • Velostat 터치센서<br/>• 카메라 객체인식<br/>• PyQt5 GUI |
| − | | 3+ 개
| |
| − | | 2+ 개
| |
| − | | 10 | |
| | |- | | |- |
| − | | 화면투사 선명도
| + | ! 지원 게임 |
| − | | sharpness 계산 (%)
| + | | • 4인 체스 ✅<br/>• Texas Hold'em ✅<br/>• TRPG 🔄 |
| − | | > 70% | |
| − | | > 70%
| |
| − | | 10
| |
| | |} | | |} |
| | + | </div> |
| | | | |
| − | '''목표 수정 사유'''
| + | ==프로젝트 소개== |
| − | * '''터치 정확도''': 30mm → 20mm (하드웨어 성능 향상으로 목표 강화)
| + | '''테이블탑 프로젝터'''는 프로젝터를 이용하여 테이블 위에 게임 화면을 투사하고, 터치 센서를 통해 사용자와 상호작용할 수 있는 인터랙티브 게임 플랫폼입니다. 다양한 보드게임과 카드게임을 디지털화하여 여러 사용자가 함께 즐길 수 있는 새로운 형태의 게임 환경을 제공합니다. |
| − | * '''터치 응답시간''': 5ms → 100ms (하드웨어 한계를 고려한 현실적 조정)
| |
| − | * '''카드 인식률''': 50% → 90% (카메라 성능 향상과 알고리즘 개선으로 목표 강화)
| |
| − | * '''게임 가짓수''': 3개 → 2개 (프로젝트 기간 내 완성도 높은 구현을 위한 조정)
| |
| | | | |
| − | ==개념 설계== | + | <div style="clear: both;"></div> |
| | | | |
| − | ===시스템 목적 계통도=== | + | ==프로젝트 개요== |
| − | 테이블탑 프로젝터는 다음 5가지 핵심 가치를 중심으로 설계되었습니다:
| + | ===프로젝트 비전=== |
| − | | + | <div style="background-color: #f0f8ff; border-left: 4px solid #1e90ff; padding: 15px; margin: 10px 0;"> |
| − | '''편의성 (직관성, 조작감)'''
| + | '''핵심 가치''' |
| − | * '''직관성''': 터치와 프로젝터의 빔을 이용하는 테이블탑 프로젝터는 간편한 UI를 제공하여 처음 사용하는 사용자에게도 직관적으로 사용법을 알 수 있도록 설계
| + | * 🎯 '''직관적 조작''' - 스마트폰처럼 쉬운 터치 인터페이스 |
| − | * '''조작감''': 뮤직 플레이어의 UI와 유사하게 구성하여 게임이 목록화되고, 각 게임마다의 사진과 설명을 화면 대부분에 할당하여 표시
| + | * ⚡ '''빠른 반응속도''' - 100ms 이내 응답시간 목표 |
| − | * 터치라는 익숙한 입력 방식을 통해 스마트폰 사용 경험자들이 쉽게 장치를 조작하고 실행할 수 있도록 구현
| + | * 🔧 '''확장 가능성''' - 새로운 게임 추가 가능한 플랫폼 |
| − | | + | * 🤝 '''사회적 연결''' - 대면 게임의 장점과 디지털 편의성 결합 |
| − | '''성능 (신속성, 정밀성)'''
| + | </div> |
| − | * '''신속성''': 터치 압력 감지용 Velostat 소재의 저항값이 민감하게 변하는 구간을 선택하여 정전식 터치방식인 스마트폰과 유사한 압력대를 감지
| |
| − | * '''정밀성''': 저항값이 변하는 지점을 통해 정확한 터치 지점을 좌표 계산하여 mm단위의 정밀한 터치점을 찾아내고, 압력의 세기도 구분하여 범용적인 활용 가능
| |
| − | * 터치 모듈을 구동하는 연산을 아두이노로 분리하여 라즈베리파이에서는 게임 소프트웨어에 리소스를 최대한 투자
| |
| − | * 프로젝터는 해상도보다는 높은 밝기값을 지원하는 제품을 선택하여 주변 빛에 의한 프로젝션 영상의 선명도를 최대한 보존
| |
| − | | |
| − | '''확장가능성 (범용성, 확장성)'''
| |
| − | * '''모듈성''': 라즈베리파이, 터치 모듈, 프로젝터, 카메라 각각이 모듈로 구성되어 요구되는 테이블 크기, 게임 성능 등에 따라 시스템 변경 가능
| |
| − | * '''표준화된 단자''': HDMI, USB, FPC/FFC 케이블 등 표준화된 단자를 사용하여 다양한 환경, 가격 조건, 성능 조건에 따라 적합한 시스템 성능 구축 가능
| |
| − | * '''포팅 편의성''': 소스가 LINUX 환경에서 실행되며, 터치 시스템을 하드웨어 부분에서 지원하므로 터치입력 처리만 구현하면 어렵지 않게 이식 가능
| |
| − | | |
| − | '''내구성'''
| |
| − | * '''높은 내구성''': 프로젝터, 라즈베리파이, 카메라 모듈은 표준화된 입출력 단자가 존재하여 체결성이 높고 여러번의 탈착에도 높은 내구성 보장
| |
| − | * '''PCB 구현''': 터치 모듈의 복잡한 회로를 PCB 기판으로 구현하고 케이블의 단자를 FPC/FFC 규격으로 압축하여 부품의 탈착, 이동에도 높은 내구성 유지
| |
| − | | |
| − | '''경제성'''
| |
| − | * '''비용 절감''': 압력인식 패널, 고가의 카메라 등을 사용하지 않고 저렴한 회로기판과 velostat 소재, 이미지처리 기법과 객체인식 모델을 활용하여 센서 비용 최소화
| |
| − | * '''확장성을 통한 경제성''': 같은 기능을 가진 저렴한 모델(저렴한 프로젝터, 라즈베리파이 4 이하의 CPU 등)로 교체하여 단가 절감 가능성 확보
| |
| − | | |
| − | ===입력장치 검토 및 선정=== | |
| − | | |
| − | '''1. 압력 감지 소자 (Velostat)'''
| |
| − | * '''특성''': 전기 전도성을 띄는 소재로 압력 혹은 비틀림에 의해 전기 저항이 낮아지는 성질을 보유
| |
| − | * '''구조''': 구리선을 상부와 하부에 교차로 배치하여 압력에 의해 구리선 사이의 전류가 흐르는 양을 감지하고, 이를 통해 압력점을 추정
| |
| − | * '''장점''': 저비용, 넓은 면적 커버 가능, 압력 세기 구분 가능
| |
| − | * '''단점''': 정밀도가 전용 터치스크린 대비 낮음
| |
| − | | |
| − | '''2. 저항막 방식 터치스크린 패널''' | |
| − | * '''특성''': ITO 처리된 필름 및 글라스의 2중 레이어로 구성되어 화면을 누르면 레이어가 서로 맞닿으며 발생한 전류와 저항의 변화를 감지 | |
| − | * '''장점''': 높은 정밀도, 상용화된 기술
| |
| − | * '''단점''': 높은 비용, 크기 제한, 압력 세기 구분 어려움 | |
| − | | |
| − | '''3. 카메라 모듈 (IMX-219)'''
| |
| − | * '''특성''': 3296 x 2480의 해상도를 지원하는 CMOS 카메라 센서 | |
| − | * '''용도''': 프로젝터의 구조 특성상 객체인식 등에 활용하기 위해 전체 이미지에 비해 작은 사이즈의 ROI만을 사용
| |
| − | * '''장점''': 고해상도로 확대 시 이미지 손실 최소화
| |
| − | * '''단점''': IMX-708 대비 낮은 성능
| |
| − | | |
| − | '''4. 카메라 모듈 (OV5647)'''
| |
| − | * '''특성''': 2592 x 1944의 해상도를 지원하는 CMOS 카메라 센서
| |
| − | * '''장점''': IMX-219 모델에 비해 저렴한 가격 | |
| − | * '''단점''': 카메라의 해상도가 낮아 성능 제한
| |
| − | | |
| − | ===제어장치 검토 및 선정===
| |
| | | | |
| − | '''1. Arduino uno'''
| + | ===개발 목표 및 달성도=== |
| − | * '''역할''': 터치모듈의 연산, Shift register와 Multiplexer 제어를 위한 MCU(Micro Controller Unit)
| + | {| class="wikitable sortable" style="width: 100%; text-align: center;" |
| − | * '''장점''': 터치 장치에 별개로 연결되어 배선 길이를 줄여 모듈성 향상, 연산 소모를 분할하여 라즈베리파이 리소스 부담 절약
| + | |+ 프로젝트 성능 목표 |
| − | * '''적용성''': 높음
| + | ! 평가 항목 !! 초기 목표 !! 최종 목표 !! 현재 상태 !! 달성률 |
| − | | |
| − | '''2. Arduino pro mini'''
| |
| − | * '''특성''': 아두이노 우노와 유사한 MCU 장치로, 크기가 더 작다는 장점
| |
| − | * '''장점''': 소형화에 유리, 아두이노 우노와 동일한 성능
| |
| − | * '''단점''': USB 연결, 핀 체결이 우노에 비해 어려워 작동 테스트 단계에서 사용이 번거로움
| |
| − | | |
| − | '''3. Raspberry Pi 4B'''
| |
| − | * '''특성''': HDMI와 USB 연결을 기본적으로 지원하며, 1.8GHz Arm CPU, 4GB의 SDRAM 메모리 보유
| |
| − | * '''장점''': 이더넷 연결과 블루투스 모델을 자체지원하여 추후 기능 확장에 유용
| |
| − | * '''적용성''': 중간
| |
| − | | |
| − | '''4. Raspberry Pi 5'''
| |
| − | * '''특성''': 라즈베리파이 4B에서 향상된 2.4GHz Arm CPU, SDRAM 8GB의 메모리로 쾌적한 소프트웨어 실행환경 제공
| |
| − | * '''장점''': 고성능으로 복잡한 게임 로직 처리 가능
| |
| − | * '''단점''': 4B 모델에 비해 높은 비용
| |
| − | * '''적용성''': 높음
| |
| − | | |
| − | ===통신모듈 검토 및 선정=== | |
| − | | |
| − | '''1. USB 유선'''
| |
| − | * '''특성''': 아두이노와 라즈베리파이 사이의 시리얼 통신용 연결단자
| |
| − | * '''장점''': 확장성이 높고 범용성이 높아 다양한 시스템에 터치 모듈 사용 가능, 전원을 컴퓨터로부터 받을 수 있어 아두이노에 충분한 전력 공급
| |
| − | * '''적용성''': 높음
| |
| − | | |
| − | '''2. 블루투스 무선'''
| |
| − | * '''특성''': 아두이노와 라즈베리파이 사이의 시리얼 통신용 블루투스 모듈
| |
| − | * '''장점''': 라즈베리파이의 내장 블루투스 모듈 활용 가능, 유선에 비해 통신선의 제약이 없고 미관상 유리
| |
| − | * '''단점''': 통신 딜레이 및 배터리의 필요성 요구
| |
| − | * '''적용성''': 중간
| |
| − | | |
| − | '''3. HDMI 유선'''
| |
| − | * '''특성''': 라즈베리파이와 프로젝터를 연결해주는 단자로 범용적인 영상 데이터 전송 규격
| |
| − | * '''장점''': 고화질 영상 지원, 범용적 사용으로 손쉬운 교체 가능
| |
| − | * '''적용성''': 높음
| |
| − | | |
| − | ===출력장치 검토 및 선정===
| |
| − | | |
| − | '''1. ViewSonic PJD86533WS'''
| |
| − | * '''특성''': 1280*800의 해상도를 지원하며 1m에서 100인치의 투사거리를 갖는 3000ANSI 루멘 밝기의 프로젝터
| |
| − | * '''장점''': 초단초점 지원으로 Tabletop Projector 프로젝트 목적에 부합, 밝은 밝기로 낮에도 충분히 사용 가능, 조금만 거리를 벌려도 투사 영상 크기가 넓어져 다양한 책상에 적용 가능
| |
| − | * '''적용성''': 높음
| |
| − | | |
| − | '''2. MAGCUBIC HY450'''
| |
| − | * '''특성''': 1920*1080의 해상도를 지원하며 1.2m에서 100인치의 투사거리를 갖는 900ANSI 루멘 밝기의 프로젝터
| |
| − | * '''장점''': ViewSonic 제품보다 높은 화질, 작은 사이즈로 소형화 가능
| |
| − | * '''단점''': 낮은 밝기 성능으로 주변 조명에 민감
| |
| − | * '''적용성''': 높음
| |
| − | | |
| − | ===부품 평가 및 선정 결과===
| |
| − | | |
| − | 다음은 개념설계 단계에서 수행한 부품별 평가 결과입니다:
| |
| − | | |
| − | {| class="wikitable" | |
| − | ! 분류
| |
| − | ! 설계안 | |
| − | ! 직관성 | |
| − | ! 조작감 | |
| − | ! 신속성
| |
| − | ! 정밀성 | |
| − | ! 확장성 | |
| − | ! 내구성 | |
| − | ! 경제성 | |
| − | ! 합계 | |
| − | ! 순위 | |
| − | |-
| |
| − | | rowspan="4" | '''입력장치'''
| |
| − | | Velostat
| |
| − | | -
| |
| − | | 중
| |
| − | | 중
| |
| − | | 중
| |
| − | | 상
| |
| − | | 상
| |
| − | | 상
| |
| − | | 15
| |
| − | | 1
| |
| − | |-
| |
| − | | 터치 패널
| |
| − | | -
| |
| − | | 중
| |
| − | | 중
| |
| − | | 상
| |
| − | | 하
| |
| − | | 하
| |
| − | | 하
| |
| − | | 10
| |
| − | | 2
| |
| − | |-
| |
| − | | IMX219
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | 상
| |
| − | | -
| |
| − | | -
| |
| − | | 중
| |
| − | | 5
| |
| − | | 1
| |
| − | |-
| |
| − | | OV5648
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | 하
| |
| − | | -
| |
| − | | -
| |
| − | | 상
| |
| − | | 4
| |
| − | | 2
| |
| − | |-
| |
| − | | rowspan="4" | '''제어장치'''
| |
| − | | 아두이노 우노
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | 상
| |
| − | | 중
| |
| − | | 상
| |
| − | | 8
| |
| − | | 1
| |
| − | |-
| |
| − | | 아두이노 프로미니
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | 하
| |
| − | | 중
| |
| − | | 중
| |
| − | | 5
| |
| − | | 2
| |
| − | |-
| |
| − | | 라즈베리파이4B
| |
| − | | -
| |
| − | | -
| |
| − | | 하
| |
| − | | 하
| |
| − | | 중
| |
| − | | -
| |
| − | | 상
| |
| − | | 7
| |
| − | | 2
| |
| | |- | | |- |
| − | | 라즈베리파이 5 | + | | 터치 정확도 || < 30mm || < 20mm || style="background-color: #90EE90;" | '''✓ 달성''' || 100% |
| − | | - | |
| − | | - | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | - | |
| − | | 중 | |
| − | | 11 | |
| − | | 1 | |
| | |- | | |- |
| − | | rowspan="3" | '''통신모듈''' | + | | 터치 응답시간 || < 5ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || - |
| − | | USB 유선 | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | 중
| |
| − | | 중
| |
| − | | 상 | |
| − | | 19 | |
| − | | 1 | |
| | |- | | |- |
| − | | 블루투스 무선 | + | | 카드 인식률 || > 50% || > 90% || style="background-color: #90EE90;" | '''✓ 90%+''' || 100% |
| − | | 중 | |
| − | | 하 | |
| − | | 하 | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | 중 | |
| − | | 15 | |
| − | | 2 | |
| | |- | | |- |
| − | | HDMI | + | | 게임 응답속도 || < 100ms || < 100ms || style="background-color: #FFFFE0;" | 측정중 || - |
| − | | 상 | |
| − | | - | |
| − | | - | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | 상 | |
| − | | 15 | |
| − | | 1 | |
| | |- | | |- |
| − | | rowspan="2" | '''출력장치''' | + | | 지원 게임 수 || 3개 || 2개 || style="background-color: #90EE90;" | '''✓ 2개 완성''' || 100% |
| − | | PJD86533WS
| |
| − | | -
| |
| − | | -
| |
| − | | -
| |
| − | | 하
| |
| − | | 중
| |
| − | | 중
| |
| − | | 중
| |
| − | | 10 | |
| − | | 1 | |
| | |- | | |- |
| − | | HY450 | + | | 화면 선명도 || > 70% || > 70% || style="background-color: #FFFFE0;" | 측정중 || - |
| − | | - | |
| − | | - | |
| − | | - | |
| − | | 중 | |
| − | | 중 | |
| − | | 중 | |
| − | | 상 | |
| − | | 10 | |
| − | | 1 | |
| | |} | | |} |
| | | | |
| − | '''평가 기준 정의'''
| + | ==시스템 구성== |
| − | * '''직관성''': 직관적으로 사용법을 알 수 있는가?
| + | ===하드웨어 아키텍처=== |
| − | * '''조작감''': 적은 힘으로 터치 구동이 가능한가?
| + | <div style="border: 2px solid #ccc; border-radius: 10px; padding: 20px; background-color: #f9f9f9;"> |
| − | * '''신속성''': 장치의 반응속도가 빠른가?
| + | '''시스템 구성도''' |
| − | * '''정밀성''': 화면의 가시성, 터치의 정밀도가 높은가?
| + | {| style="width: 100%;" |
| − | * '''확장성''': 부품 교체 및 업그레이드가 용이한가? | + | |- |
| − | * '''내구성''': 이동 및 보관 시 배선이 끊어지거나 부품이 손상될 우려는 없는가? | + | | style="width: 50%; vertical-align: top;" | |
| − | * '''경제성''': 제품의 비용이 합리적인가? | + | '''제어부''' |
| | + | * 🖥️ Raspberry Pi 5 (2.4GHz, 8GB RAM) |
| | + | * 🎮 Arduino Uno (터치 제어) |
| | + | * 🔌 USB/HDMI 인터페이스 |
| | | | |
| − | '''선정 결과''' | + | '''입력부''' |
| − | 상기 평가를 통해 다음과 같이 부품을 선정하였습니다:
| + | * 🖱️ Velostat 터치 모듈 (400×400mm) |
| − | * '''입력장치''': Velostat + IMX219 | + | * 📷 IMX-708 카메라 (12MP, 120° 광각) |
| − | * '''제어장치''': Arduino Uno + Raspberry Pi 5 | + | * 🎯 20mm 터치 정확도 |
| − | * '''통신모듈''': USB 유선 + HDMI 유선 | |
| − | * '''출력장치''': ViewSonic PJD86533WS (1차) / MAGCUBIC HY450 (대안)
| |
| | | | |
| − | ==초기 시스템 설계== | + | | style="width: 50%; vertical-align: top;" | |
| | + | '''출력부''' |
| | + | * 📽️ XGIMI Halo+ 프로젝터 |
| | + | * 🖼️ 1920×1080 해상도 |
| | + | * 💡 고휘도 LED 광원 |
| | | | |
| − | ===초기 하드웨어 구성 (제안서 기준)===
| + | '''구조부''' |
| − | '''터치 입력 시스템''' | + | * 🏗️ 아크릴 커버 (5mm 무광 검정) |
| − | * 크기: 120 × 90 cm² (최종: 400 × 400 mm로 축소) | + | * 🔧 미니 리프트 높이 조절 |
| − | * 센서: Velostat 압력 센서 + 구리 테이프 매트릭스
| + | * 🚪 미니 경첩 소형문 |
| − | * 제어: Arduino + 멀티플렉서/시프트 레지스터 조합
| + | |} |
| − | | + | </div> |
| − | '''영상 처리 시스템'''
| |
| − | * 메인 컨트롤러: Raspberry Pi 4 (최종: Raspberry Pi 5)
| |
| − | * 카메라: SONY IMX 219 8MP (최종: IMX-708 12MP 광각으로 업그레이드)
| |
| − | * 해상도: 3280×2464 (최종: 4608×2592)
| |
| − | | |
| − | '''출력 시스템'''
| |
| − | * 프로젝터: Viewsonic PJD8653ws (최종: XGIMI Halo+로 변경)
| |
| − | * 해상도: 1280×800 (최종: 1920×1080)
| |
| − | * 밝기: 3000 ANSI (최종: 더 높은 성능)
| |
| − | | |
| − | ===초기 게임 계획===
| |
| − | '''1차 게임 - 4인 체스'''
| |
| − | * 목적: 터치 시스템 정확도 및 딜레이 측정
| |
| − | * 특징: 마우스 클릭을 터치로 대체하는 간단한 포팅
| |
| − | * 상태: ✅ 완료 (계획대로 구현)
| |
| − | | |
| − | '''2차 게임 - 카드게임'''
| |
| − | * 초기 계획: 유희왕 등 복잡한 카드게임
| |
| − | * 변경 사유:
| |
| − | * 유희왕: 뒷면 카드 규칙으로 전면 인식 시스템과 부적합
| |
| − | * 매직: 동시 인식 카드 수 과다, 플레이 영역 초과
| |
| − | * 최종 구현: Texas Hold'em Poker (프로토타입) + 포켓몬 카드게임 (개발 중)
| |
| − | | |
| − | '''3차 게임 - TRPG'''
| |
| − | * 계획: LLM API 활용한 사회자 역할 AI
| |
| − | * 목적: AI를 통한 게임 진행 관리, 공정한 랜덤성 제공
| |
| − | * 상태: 📝 개발 중 (캐릭터 생성 시스템 완료, GPT API 연동 예정)
| |
| − | | |
| − | ==설계 변경사항==
| |
| − | | |
| − | ===하드웨어 변경사항===
| |
| − | '''터치 모듈'''
| |
| − | * 초기: 터치 지점 오차범위 5mm 이하
| |
| − | * 변경: 터치 지점 오차범위 20mm 이하
| |
| − | * 사유: 벨로스탯에 구리선을 부착할 때 구리선의 폭(5mm)과 간격(20mm) 설정 시, 사람의 손가락이 닿는 면적(8mm)이 신호선들 사이에 고르게 퍼지지 못하는 문제 발생. 초기 알고리즘은 터치 입력 네 곳을 바탕으로 상세한 터치점의 위치를 정하는 것이였으나, 터치 시 네 곳이 동시에 눌리는 것이 아닌 한 곳만 눌리게 되면서 이러한 알고리즘의 적용이 불가능해짐. 시간과 수정의 용이성을 고려하여 소프트웨어의 UI를 수정하는 방법으로 문제 해결.
| |
| − | | |
| − | '''커버 설계'''
| |
| − | * 초기: 미니리프트 2개 사용, 볼 조인트 방식 소형문 | |
| − | * 변경: 미니리프트 1개 사용, 미니 경첩 부착 소형문 | |
| − | * 사유:
| |
| − | * 두 리드 스크류를 용접하여 하나로 연결하더라도 약 7kg에 달하는 프로젝터를 들어 올릴 수 있는 충분한 토크가 발생하는지 불확실
| |
| − | * 용접 과정에서 리드 스크류의 길이가 미세하게나마 짧아질 경우, 리프트 작동 자체에 문제가 생길 수 있음
| |
| − | * 실험적 경험에 비추어 볼 때, 한 개의 미니 리프트만으로도 프로젝터를 지지하고 높낮이를 안정적으로 조절할 수 있다는 점이 확인됨
| |
| − | * 5mm 아크릴 재질에서 볼 조인트 소켓 가공 어려움
| |
| − | | |
| − | ===소프트웨어 변경사항===
| |
| − | '''1차 게임 요소'''
| |
| − | * 체스 게임: 변동 없음
| |
| − | | |
| − | '''2차 게임 요소'''
| |
| − | * 초기 계획: 유희왕 등 카드게임
| |
| − | * 변경: 포커 게임으로 선구현, 포켓몬 카드게임 개발 시도중
| |
| − | * 카메라 모델 변경: imx219 → imx708 120도 광각
| |
| − | * 사유:
| |
| − | * 유희왕: 뒷면으로 카드를 내는 규칙이 존재하여 현재 시스템에서는 카드의 전면이 드러나야 카메라로 정보를 얻고 게임 로직을 수행할 수 있어 적용이 어려움
| |
| − | * 매직 더 게더링: 동시에 인식해야하는 카드가 대부분 50장에 달해 라즈베리파이의 연산능력으로 객체인식을 수행함에 있어 어려움이 존재. 또한 플레이 영역이 터치패드와 프로젝션 범위을 넘어설 우려가 있어 제작 후보에서 제외
| |
| − | * 포켓몬 카드 게임: 턴 선택, 카드의 효과, 데미지 등 PyQt UI로 대체가능한 요소가 다수 존재. 유희왕이나 매직 더 게더링과 달리 뒷면 규칙이 없으며 최대 인식 요구 갯수가 최대 13장으로 라즈베리파이의 연산성능으로 처리가 가능하다고 판단됨
| |
| | | | |
| − | '''3차 게임 요소'''
| + | ===소프트웨어 스택=== |
| − | * LLM API를 활용한 TPRG: 변동 없음
| + | {| class="wikitable" style="width: 100%;" |
| − | | + | ! 구분 !! 기술 스택 !! 용도 |
| − | ==동작 시나리오==
| |
| − | 1. '''시스템 시작''': 프로젝터 전원 ON, 라즈베리파이 부팅
| |
| − | 2. '''게임 선택''': 터치를 통해 메인 화면에서 원하는 게임 선택
| |
| − | 3. '''게임 진행'''
| |
| − | * 1차 게임(체스): 터치로 기물 이동
| |
| − | * 2차 게임(카드게임): 실물 카드를 테이블에 배치, 카메라가 인식하여 게임 진행
| |
| − | * 3차 게임(TRPG): GPT API를 활용한 스토리 진행
| |
| − | 4. '''게임 종료''': 메인 화면으로 복귀
| |
| − | | |
| − | ==구현 내용==
| |
| − | | |
| − | ===시스템 구성===
| |
| − | '''하드웨어 구성'''
| |
| − | * 제어부: Raspberry Pi 5
| |
| − | * 출력부: 프로젝터 (XGIMI Halo+)
| |
| − | * 입력부: 터치 모듈 (Velostat 기반), 카메라 모듈 (IMX-708)
| |
| − | * 구조부: 아크릴 커버, 미니 리프트
| |
| − | | |
| − | '''소프트웨어 구성'''
| |
| − | * OS: Raspberry Pi OS
| |
| − | * 개발 언어: Python, C++
| |
| − | * 주요 라이브러리: PyQt5, OpenCV, GPIO
| |
| − | * API: GPT API (3차 게임용)
| |
| − | | |
| − | ===기구부 설계 및 구현===
| |
| − | '''커버 설계'''
| |
| − | * 재질: 5mm 두께 무광 아크릴 (검정색)
| |
| − | * 크기: 프로젝터 크기에 맞춘 맞춤 제작
| |
| − | * 특징:
| |
| − | * 미니 리프트 1개를 사용한 높이 조절 기능 (커버 후면 손잡이)
| |
| − | * 미니 경첩을 이용한 여닫이 소형문
| |
| − | * 측면 방열구멍 설계
| |
| − | * 카메라 모듈 장착부
| |
| − | * 프로젝터 하부면적보다 큰 견고한 아크릴판을 리프트 상단에 부착하여 안정성 확보
| |
| − | | |
| − | '''터치 패드 구조'''
| |
| − | * 크기: 400mm × 400mm
| |
| − | * 층 구조: 마감천(인조가죽) - Velostat - 구리 테이프
| |
| − | * 구리선 배치: 5mm 폭, 20mm 간격
| |
| − | * 마감 소재: 인조가죽 (적절한 반사 특성과 부드러운 사용자 경험 제공)
| |
| − | | |
| − | ===제어부 및 회로 구현===
| |
| − | '''터치 모듈 회로'''
| |
| − | * PCB 설계: 크로스토크 방지를 위한 3W 규칙 적용
| |
| − | * 도선 사양: 두께 20mil, 간격 12mil (0.5A 기준)
| |
| − | * 사용 전류: 약 0.3A~0.5A (벨로스탯 가변저항 동작)
| |
| − | * 주요 부품:
| |
| − | * 4051D 8-channel multiplexer × 10개
| |
| − | * 595D 8-Bit Shift Registers × 10개
| |
| − | * LMV324 Operational Amplifiers × 1개
| |
| − | * 저항: 10KΩ × 10개, 1KΩ × 10개
| |
| − | * 커패시터: 100nF 16V × 100개
| |
| − | * LED × 10개
| |
| − | * 연결: 2×20 커넥터 사용으로 접촉 불량 최소화
| |
| − | * 제어: 아두이노 우노 모델 사용 (아두이노 미니는 성능 이슈로 터치 반응 불규칙)
| |
| − | | |
| − | '''카메라 시스템'''
| |
| − | * 모델: IMX-708 (12MP 자동초점 120도 광각)
| |
| − | * 기존 모델(imx219) 대비 개선사항:
| |
| − | * 화질 향상으로 카드 인식률 개선
| |
| − | * 화각 확대로 촬영 범위 증가
| |
| − | * 자동 초점 기능 추가
| |
| − | * 위치: 프로젝터 상단 커버 내부
| |
| − | * 기능: 실물 카드 인식, 게임 상황 촬영
| |
| − | | |
| − | ===소프트웨어 설계 및 구현===
| |
| − | | |
| − | ====1차 게임 - 체스====
| |
| − | * 기반: 오픈소스 체스 게임을 라즈베리파이 OS에 포팅
| |
| − | * UI 개선:
| |
| − | * 기보나, 수 돌리기 등 불필요한 UI 삭제
| |
| − | * 배경화면을 밝게 설정하여 빔프로젝터 저밝기 환경 대응
| |
| − | * 체스판 크기 확대로 터치 부정확성 보완
| |
| − | * 특징: 4명이 동시에 즐길 수 있는 변형 체스
| |
| − | | |
| − | ====2차 게임 - 카드 게임====
| |
| − | | |
| − | '''게임 UI 설계 필요조건'''
| |
| − | 1. 모든 UI 상호작용은 터치로만 구현
| |
| − | 2. 프로젝터 위치에 따른 카메라 비추는 반경 변화 고려하여 인식 기물을 화면 중앙 배치
| |
| − | 3. 다중 플레이어를 위한 각 플레이어별 개인 보드 배치
| |
| − | 4. 라즈베리파이 부하 고려하여 캡처 방식으로 카메라 인식 구현
| |
| − | 5. 초보자 돌발행동 방지를 위한 변수 요소 사전 비활성화
| |
| − | 6. 게임 진행을 위한 사회자 역할 메시지 창 구현
| |
| − | | |
| − | '''Texas Hold'em Poker (프로토타입)'''
| |
| − | * 목적: 라즈베리파이 카메라 성능과 객체 인식 성능 검증
| |
| − | * 카드 인식: YOLO 모델 활용 (테스트 이미지 90% 이상 인식률)
| |
| − | * 게임 로직:
| |
| − | * 플레이어 인원 선택 (2-5명)
| |
| − | * SB, BB 자동 배팅
| |
| − | * 콜, 체크, 폴드, 레이즈, 올인 배팅 옵션
| |
| − | * 프리플랍-플랍-턴-리버 단계별 진행
| |
| − | * 자동 승자 판별 및 배팅액 분배
| |
| − | * 파산 방지를 위한 3000칩 자동 지급
| |
| − | * UI 특징:
| |
| − | * 각 플레이어별 개인 보드 (테이블 외각 배치)
| |
| − | * 중앙 커뮤니티 카드 배치 (카메라 인식 범위 고려)
| |
| − | * 배팅액에 따른 애니메이션 효과
| |
| − | * 쇼다운 상황 특수 효과
| |
| − | * 변수 처리:
| |
| − | * 비순차 배팅 방지
| |
| − | * 턴 종료 전 카드 공개 방지
| |
| − | * 배팅액에 따른 선택지 제한
| |
| − | | |
| − | '''카드 인식 프로세스'''
| |
| − | 1. '''카메라 설정'''
| |
| − | * 해상도: 4608×2592 (IMX-708 최대 해상도)
| |
| − | * FPS: 30 (33333㎲ 프레임 지속시간)
| |
| − | * AwbMode: 0 (자동 화이트 밸런스)
| |
| − | * Sharpness: 1.5 (기본값보다 높은 선명도)
| |
| − | | |
| − | 2. '''이미지 전처리'''
| |
| − | * 카메라 캡처 → 'image' 변수 저장
| |
| − | * 이진화 처리 (프로젝터 밝은 환경 고려한 임계값 설정)
| |
| − | * 카드 최소 영역, 가로세로 비율 제한 (실제 카드 63mm×88mm 기준)
| |
| − | | |
| − | 3. '''카드 검출'''
| |
| − | * detect_card_edges() 함수로 카드 윤곽 검출
| |
| − | * 4개 끝점 좌표 확보
| |
| − | * 여백 포함한 crop으로 문양/숫자 손상 방지
| |
| − | | |
| − | 4. '''이미지 보정'''
| |
| − | * 샤프닝 커널 적용으로 확대 시 화질 저하 보완
| |
| − | * 인식 모델 최적화를 위한 이미지 품질 향상
| |
| − | | |
| − | 5. '''모델 인식'''
| |
| − | * YOLO 모델 적용
| |
| − | * 인식률 30% 이상 결과 중 최고 신뢰도 선택
| |
| − | * 좌표 정보 활용한 카드 순서 정렬 (Y좌표 오차 허용)
| |
| − | | |
| − | 6. '''게임 로직 반영'''
| |
| − | * 인식 결과를 게임 상태에 반영
| |
| − | * 승자 판별 로직 실행
| |
| − | | |
| − | '''포켓몬 카드 게임 (개발 중)'''
| |
| − | * API 활용: 16,000여 장의 카드 데이터베이스
| |
| − | * 특수 효과: 스타디움 카드에 따른 배경 변화
| |
| − | * 과제: 한국판 카드 인식 모델 부재 (대부분 영문판으로 학습된 모델)
| |
| − | * 해결방안: 영문판 카드 구매 또는 한국판 카드 일부 학습 모델 제작
| |
| − | | |
| − | ====3차 게임 - TRPG====
| |
| − | * 맵 생성: Polytopia Map Generator 오픈소스 활용 (GNU GPL 라이선스)
| |
| − | * 캐릭터 시스템:
| |
| − | * D&D 기반 12개 직업 선택
| |
| − | * 스펠 사용 가능 직업: Bard, Cleric, Druid, Paladin, Sorcerer, Warlock, Wizard
| |
| − | * 직업별 차별화된 스펠 목록
| |
| − | * 맵 구현: QWebEngineView를 사용하여 HTML 기반 맵을 PyQt5 UI에 통합
| |
| − | * 스토리 진행: GPT API를 활용한 동적 시나리오 생성 (예정)
| |
| − | | |
| − | ==현재 진행상황==
| |
| − | | |
| − | ===하드웨어 완성도===
| |
| − | '''터치 모듈 (완료)'''
| |
| − | * PCB 제작 완료 및 부품 납땜 완료
| |
| − | * 터치패드 마감재 선정 완료 (인조가죽)
| |
| − | * 캘리브레이션 코드 개발 필요
| |
| − | | |
| − | '''커버 (완료)'''
| |
| − | * 아크릴 판재 레이저 커팅 완료
| |
| − | * 조립 완료
| |
| − | * 카메라 정확한 설치 위치 협의 필요
| |
| − | | |
| − | ===소프트웨어 완성도=== | |
| − | '''1차 게임 (완료)'''
| |
| − | * 체스 게임 UI 개선 완료
| |
| − | * 터치 인터페이스 최적화 완료
| |
| − | | |
| − | '''2차 게임 (80% 완료)'''
| |
| − | * Texas Hold'em Poker 게임 로직 완성
| |
| − | * 카드 인식 시스템 구현 완료
| |
| − | * 포켓몬 카드 게임 UI 설계 완료
| |
| − | * 포켓몬 카드 인식 모델 해결 필요
| |
| − | | |
| − | '''3차 게임 (60% 완료)'''
| |
| − | * 캐릭터 생성 시스템 구현 완료
| |
| − | * 맵 생성 기능 구현 완료
| |
| − | * GPT API 연동 개발 중
| |
| − | | |
| − | ==향후 진행 계획 및 일정==
| |
| − | | |
| − | ===하드웨어 개선 계획===
| |
| − | '''터치 모듈'''
| |
| − | * 터치 캘리브레이션 코드 추가
| |
| − | * 가변적 화면 비율 대응 적응형 소프트웨어 개발
| |
| − | * 초기 시작 시 마커 터치를 통한 캘리브레이션 기능 구현
| |
| − | | |
| − | '''커버'''
| |
| − | * 카메라 모듈 최종 위치 확정
| |
| − | * 슬라이드 레일 설치 여부 결정 (카메라 깊이에 따라)
| |
| − | | |
| − | ===소프트웨어 개발 계획===
| |
| − | '''2차 게임 요소'''
| |
| − | * 포켓몬 카드 게임 본격 개발
| |
| − | * 한국판 카드 인식 해결 (영문판 구매 또는 학습 모델 제작)
| |
| − | * 카드 정보 기반 화려한 효과 구현
| |
| − | | |
| − | '''3차 게임 요소'''
| |
| − | * GPT API 연동 완료
| |
| − | * 동적 시나리오 생성 시스템 구현
| |
| − | | |
| − | ===통합 및 테스트===
| |
| − | '''시스템 통합'''
| |
| − | * 모듈 간 통합 테스트
| |
| − | * 터치 팀과 소프트웨어 팀 UI 크기 조율
| |
| − | * 커버 팀과 카메라 위치 설정 협의
| |
| − | | |
| − | '''최종 테스트'''
| |
| − | * 50cm 카메라 케이블 준비 후 최종 위치 설정
| |
| − | * 캘리브레이션 코드 적용 테스트
| |
| − | * 전체 시스템 통합 테스트
| |
| − | | |
| − | ===개발 일정표===
| |
| − | {| class="wikitable" | |
| − | ! 개발 내용 | |
| − | ! 담당자
| |
| − | ! 5월 1-2주 | |
| − | ! 5월 3주 | |
| − | ! 6월 1주 | |
| − | ! 6월 2주 | |
| − | ! 6월 3주
| |
| − | |-
| |
| − | | 터치 캘리브레이션 코드 추가
| |
| − | | 터치팀
| |
| − | | ■
| |
| − | | ■
| |
| − | |
| |
| − | |
| |
| − | |
| |
| − | |-
| |
| − | | 프로젝터 하우징
| |
| − | | 구효본, 조수민
| |
| − | | ■
| |
| − | | ■
| |
| − | |
| |
| − | |
| |
| − | |
| |
| | |- | | |- |
| − | | 1차 프로그램 통합 및 에러처리 | + | | '''운영체제''' || Raspberry Pi OS || 시스템 기반 |
| − | | 터치팀 | |
| − | | | |
| − | | ■ | |
| − | | ■
| |
| − | |
| |
| − | | | |
| | |- | | |- |
| − | | 1차 통합 테스트 | + | | '''주 언어''' || Python 3.9, C++ || 애플리케이션 개발 |
| − | | 터치팀 | |
| − | | | |
| − | | | |
| − | | ■
| |
| − | |
| |
| − | | | |
| | |- | | |- |
| − | | 2차 프로그램 통합 | + | | '''GUI 프레임워크''' || PyQt5 || 사용자 인터페이스 |
| − | | 터치팀, 전진형 | |
| − | | | |
| − | | | |
| − | |
| |
| − | | ■
| |
| − | | | |
| | |- | | |- |
| − | | 최종 통합 테스트 | + | | '''영상처리''' || OpenCV 4.5 || 카메라 영상 처리 |
| − | | 전체 | |
| − | | | |
| − | | | |
| − | |
| |
| − | | ■
| |
| − | | | |
| | |- | | |- |
| − | | Feedback 및 디버깅 | + | | '''딥러닝''' || YOLO v5 || 카드 객체 인식 |
| − | | 전체 | |
| − | | | |
| − | | | |
| − | | | |
| − | | ■
| |
| − | | ■
| |
| | |- | | |- |
| − | | 최종 프로젝트 발표 준비 | + | | '''API''' || OpenAI GPT || TRPG 스토리 생성 |
| − | | 전체 | |
| − | | | |
| − | | | |
| − | | | |
| − | |
| |
| − | | ■
| |
| | |} | | |} |
| | | | |
| − | ==프로젝트 결과== | + | ==개발 내용== |
| | + | ===[[#터치 시스템|터치 시스템]]=== |
| | + | <div class="mw-collapsible mw-collapsed" style="border: 1px solid #aaa; padding: 10px;"> |
| | + | <div style="font-weight: bold; background-color: #eee; padding: 5px;">🔧 기술적 상세 정보 (클릭하여 펼치기)</div> |
| | + | <div class="mw-collapsible-content"> |
| | + | '''Velostat 압력 센서 사양''' |
| | + | * 표면 저항: 31,000 Ω/cm² |
| | + | * 온도 범위: -45°C ~ +65°C |
| | + | * 크기: 280mm × 280mm × 0.1mm |
| | | | |
| − | ===현재 달성 성과===
| + | '''회로 구성''' |
| − | '''하드웨어''' | + | * 74HC595 시프트 레지스터 × 10 |
| − | * 터치 모듈: PCB 제작 완료, 마감천 선정 완료 | + | * CD4051D 멀티플렉서 × 10 |
| − | * 커버: 설계 변경 완료 및 제작 완료 | + | * LMV324 연산증폭기 × 1 |
| − | * 카메라: IMX-708로 성능 향상 완료 | + | * PCB 설계: KiCad (3W rule 적용) |
| | + | </div> |
| | + | </div> |
| | | | |
| − | '''소프트웨어''' | + | ===[[#게임 구현|게임 구현]]=== |
| − | * 1차 게임(체스): 프로젝터 환경 최적화 완료 | + | ====✅ 1차 게임: 4인 체스==== |
| − | * 2차 게임(포커): 완전 구현, 카드 인식률 90% 이상 달성
| + | * '''상태''': <span style="color: green;">'''완료'''</span> |
| − | * 3차 게임(TRPG): 캐릭터 및 맵 생성 시스템 구현 | + | * '''특징''': |
| | + | * 4명 동시 플레이 가능 |
| | + | * 프로젝터 환경 최적화 UI |
| | + | * 터치 오차 보정 적용 |
| | | | |
| − | ===평가 항목 달성도=== | + | ====✅ 2차 게임: Texas Hold'em Poker==== |
| − | * 터치 정확도: 20mm 달성 (목표치 충족) | + | * '''상태''': <span style="color: green;">'''완료'''</span> |
| − | * 터치 응답시간: 측정 예정
| + | * '''주요 기능''': |
| − | * 게임 응답속도: 측정 예정 | + | * YOLO 기반 카드 인식 (90%+ 정확도) |
| − | * 지원 게임 가짓수: 2개 구현 (체스, 포커) + 1개 개발중 (TRPG) | + | * 2-5인 멀티플레이 |
| − | * 화면투사 선명도: 측정 예정 | + | * 자동 배팅 및 승자 판별 |
| | + | * 애니메이션 효과 |
| | | | |
| − | ===미구현 내용 및 향후 과제=== | + | ====🔄 3차 게임: TRPG==== |
| − | * 포켓몬 카드 게임 한국판 인식 모델 | + | * '''상태''': <span style="color: orange;">'''개발중 (60%)'''</span> |
| − | * TRPG GPT API 연동 | + | * '''구현 완료''': |
| − | * 터치 캘리브레이션 자동화 | + | * D&D 기반 12개 직업 시스템 |
| − | * 카메라 최종 위치 확정 | + | * Polytopia 맵 생성기 |
| − | * 전체 시스템 통합 테스트 | + | * 캐릭터 생성 UI |
| | + | * '''개발 예정''': |
| | + | * GPT API 연동 |
| | + | * 동적 스토리 생성 |
| | | | |
| − | ==프로젝트 평가== | + | ==진행 현황== |
| − | | + | ===개발 타임라인=== |
| − | ===중간 평가 (2025년 6월 1일 기준)=== | + | <div style="background-color: #f5f5f5; border: 1px solid #ddd; padding: 15px; border-radius: 5px;"> |
| − | '''진행률'''
| + | {| class="wikitable" style="width: 100%;" |
| − | * 하드웨어: 90% 완료
| + | ! 단계 !! 기간 !! 주요 내용 !! 상태 |
| − | * 소프트웨어: 75% 완료
| + | |- |
| − | * 시스템 통합: 30% 완료
| + | | '''1단계''' || 2025.3 || 개념 설계 및 부품 선정 || ✅ 완료 |
| − | | + | |- |
| − | '''주요 성과''' | + | | '''2단계''' || 2025.4 || 하드웨어 제작 및 1차 게임 || ✅ 완료 |
| − | * 설계 변경을 통한 현실적 목표 재설정
| |
| − | * 터치 모듈 하드웨어 완성
| |
| − | * 카드 인식 시스템 성공적 구현
| |
| − | * 복수 게임 구현을 통한 플랫폼 확장성 입증
| |
| − | | |
| − | '''주요 과제''' | |
| − | * 한국어 카드 인식 문제 해결
| |
| − | * 시스템 통합 및 안정성 확보
| |
| − | * 사용자 경험 최적화
| |
| − | | |
| − | ==예산 내역==
| |
| − | | |
| − | ===총 예산 변화===
| |
| − | * 초기 계획 (2025.4): 183천원
| |
| − | * 최종 예산 (2025.6): 404.8천원
| |
| − | * 증액 사유: 카메라 업그레이드, 아크릴 판재, PCB 전문 제작
| |
| − | | |
| − | ===상세 내역 비교===
| |
| − | {| class="wikitable"
| |
| − | ! 구분
| |
| − | ! 초기 계획 (천원)
| |
| − | ! 최종 실제 (천원)
| |
| − | ! 주요 변경사항
| |
| | |- | | |- |
| − | | 기본 부품 | + | | '''3단계''' || 2025.5 || 2차 게임 및 시스템 통합 || ✅ 완료 |
| − | | 175 | |
| − | | 175 | |
| − | | 동일 | |
| | |- | | |- |
| − | | 카메라 업그레이드 | + | | '''4단계''' || 2025.6 || 3차 게임 및 최종 테스트 || 🔄 진행중 |
| − | | - | + | |} |
| − | | 54.2 | + | </div> |
| − | | IMX219 → IMX708
| + | |
| | + | ===주요 이슈 및 해결=== |
| | + | {| class="wikitable mw-collapsible" style="width: 100%;" |
| | + | |+ 문제 해결 기록 |
| | + | ! 문제 !! 원인 !! 해결 방법 !! 결과 |
| | |- | | |- |
| − | | 아크릴 판재 | + | | 터치 정확도 부족 || 센서 간격과 손가락 크기 불일치 || UI 크기 조정으로 대응 || ✅ 해결 |
| − | | - | |
| − | | 79.4 | |
| − | | 커버 제작 | |
| | |- | | |- |
| − | | PCB 제작 | + | | 카메라 성능 부족 || IMX219 화각/화질 한계 || IMX708 광각으로 업그레이드 || ✅ 해결 |
| − | | - | |
| − | | 60.0 | |
| − | | 전문 제작 | |
| | |- | | |- |
| − | | 기타 추가 부품 | + | | 게임 복잡도 || 유희왕/매직 규칙 복잡 || 포커로 범위 조정 || ✅ 해결 |
| − | | 8 | |
| − | | 36.2 | |
| − | | 터치패드 보호재 등 | |
| | |- | | |- |
| − | | '''총계''' | + | | 예산 초과 || 부품 업그레이드 필요 || 추가 예산 확보 || ✅ 해결 |
| − | | '''183''' | |
| − | | '''404.8''' | |
| − | | '''221.8천원 증액''' | |
| | |} | | |} |
| | | | |
| − | ==기술적 상세사항== | + | ==팀 구성== |
| − | | + | {| class="wikitable" style="width: 100%; text-align: center;" |
| − | ===Velostat 압력 센서 기술=== | + | |+ Imbedded 팀원 소개 |
| − | '''원리와 특성'''
| + | ! width="20%" | 이름 !! width="20%" | 학번 !! width="30%" | 담당 업무 !! width="30%" | 세부 역할 |
| − | * 소재: 전도성 폴리에틸렌 수지 필름에 탄소 블랙 항정전기 플라스틱 침투
| |
| − | * 표면 저항: 31,000 Ω/cm² (일반적으로 100,000Ω/□ 미만)
| |
| − | * 물리적 특성: 열접착 가능, 유연성, 뛰어난 내마모성
| |
| − | * 온도 범위: -45°C ~ +65°C (-50°F ~ 150°F)
| |
| − | * 크기: 280mm × 280mm, 두께 4mil/0.1mm
| |
| − | | |
| − | '''매트릭스 구성'''
| |
| − | * 구리 테이프: 5mm 폭으로 최적화 (실험적 검증)
| |
| − | * 배치: 한 면에 구리 열(column), 다른 면에 구리 행(row)
| |
| − | * 보호: 50μm PE(폴리에틸렌) 필름으로 방수 처리
| |
| − | | |
| − | ===터치 인식 회로===
| |
| − | '''핵심 구성요소'''
| |
| − | * SN74HC595: 반응 신호 제어, 하나의 활성 열(column) 스위칭
| |
| − | * CD4051D: 터치 천의 반응 신호 제어, ADC 연결된 활성 행(row) 선택
| |
| − | * 연산 증폭기: 미약한 신호 증폭
| |
| − | * Arduino: 시프트 레지스터와 멀티플렉서 제어, 직렬 데이터 수신
| |
| − | | |
| − | '''PCB 설계 기준'''
| |
| − | * 크로스토크 방지: 3W 규칙 적용
| |
| − | * 도선 사양: 20mil 두께, 12mil 간격
| |
| − | * 신호 무결성 확보
| |
| − | | |
| − | ===카메라 인식 기술===
| |
| − | '''하드웨어 사양'''
| |
| − | * 센서: Sony IMX708 (12MP, 자동초점, 120도 광각)
| |
| − | * 해상도: 최대 4608×2592
| |
| − | * 인터페이스: CSI (Camera Serial Interface)
| |
| − | | |
| − | '''이미지 처리 파이프라인'''
| |
| − | 1. 고해상도 캡처 (4608×2592)
| |
| − | 2. 이진화 및 윤곽 검출
| |
| − | 3. 카드 영역 추출
| |
| − | 4. 샤프닝 필터 적용
| |
| − | 5. 딥러닝 모델 인식
| |
| − | 6. 결과 검증 및 정렬
| |
| − | | |
| − | '''인식 정확도 향상 기법'''
| |
| − | * 프로젝터 조명 환경 고려한 임계값 설정
| |
| − | * 카드 크기 비율 검증 (63mm×88mm 기준)
| |
| − | * 여백 포함 crop으로 정보 손실 방지
| |
| − | * 좌표 기반 카드 순서 정렬
| |
| − | | |
| − | ==개발 환경 및 도구==
| |
| − | | |
| − | ===하드웨어 환경===
| |
| − | * 제어 보드: Raspberry Pi 5
| |
| − | * 개발 보드: Arduino Uno
| |
| − | * 카메라: IMX-708 12MP 광각
| |
| − | * 프로젝터: XGIMI Halo+
| |
| − | | |
| − | ===소프트웨어 환경===
| |
| − | * OS: Raspberry Pi OS
| |
| − | * 언어: Python 3.9, C++
| |
| − | * 프레임워크: PyQt5, OpenCV 4.5
| |
| − | * 딥러닝: YOLO v5
| |
| − | * API: OpenAI GPT API
| |
| − | | |
| − | ===개발 도구===
| |
| − | * PCB 설계: KiCad
| |
| − | * 3D 모델링: Fusion 360 (초기 설계)
| |
| − | * 코드 편집: VS Code
| |
| − | * 이미지 처리: OpenCV, PIL
| |
| − | | |
| − | ==참고 자료 및 오픈소스==
| |
| − | | |
| − | ===활용 오픈소스===
| |
| − | * 체스 게임: GNU GPL 라이선스
| |
| − | * YOLO 카드 인식: GitHub 공개 모델
| |
| − | * Polytopia Map Generator: GNU GPL 라이선스
| |
| − | * 포켓몬 카드 API: 16,000장 데이터베이스
| |
| − | | |
| − | ===기술 참고 문헌===
| |
| − | [1] M. Kciuk, Z. Kowalik, G. Lo Sciuto, S. Sławski, and S. Mastrostefano, "Intelligent medical Velostat pressure sensor mat based on artificial neural network and Arduino embedded system," Applied System Innovation, vol. 6, no. 5, p. 84, Sep. 2023, doi: 10.3390/asi6050084.
| |
| − | | |
| − | [2] L. Yuan, H. Qu, and J. Li, "Velostat sensor array for object recognition," IEEE Sensors Journal, vol. 22, no. 2, pp. 1692–1701, Jan. 15, 2022
| |
| − | | |
| − | ==팀 구성 및 역할 분담==
| |
| − | | |
| − | ===구성원별 전문 분야===
| |
| − | {| class="wikitable"
| |
| − | ! 팀원명 | |
| − | ! 주요 역할 | |
| − | ! 세부 담당 업무
| |
| | |- | | |- |
| − | | 구효본 (팀장) | + | | '''구효본''' || 2020430001 || 팀장, 터치 시스템 || 프로젝트 관리, 터치 하드웨어 |
| − | | 프로젝트 관리, 터치 시스템
| |
| − | | 일정 관리, 진행사항 관리, 터치 하드웨어 구현 | |
| | |- | | |- |
| − | | 김지호 | + | | '''김지호''' || 2022430012 || 터치 시스템 || 터치 설계 및 통합 |
| − | | 터치 시스템, 통합 | |
| − | | 터치 시스템 설계 및 구현, input 시스템 통합 | |
| | |- | | |- |
| − | | 류정현 | + | | '''류정현''' || 2020430008 || 게임 소프트웨어 || 게임 포팅 및 플랫폼 |
| − | | 게임 소프트웨어 | |
| − | | 게임 포팅 및 플랫폼 구현 | |
| | |- | | |- |
| − | | 조수민 | + | | '''조수민''' || 2021430035 || 기구 설계 || 외장 디자인 및 통합 |
| − | | 기구 설계, 통합 | |
| − | | 외장 디자인 설계, input 시스템 통합 | |
| | |- | | |- |
| − | | 전진형 | + | | '''전진형''' || 2020430028 || AI/객체인식 || 카메라 인식 및 API |
| − | | AI/객체인식, API | |
| − | | 객체인식 시스템, API 통합 구현 | |
| | |} | | |} |
| | | | |
| − | ==느낀점== | + | ==기술 문서== |
| − | (프로젝트 완료 후 작성 예정)
| + | ===관련 링크=== |
| − | | + | * [[Velostat 터치 센서 제작법]] |
| − | ==부록== | + | * [[YOLO 카드 인식 모델 학습]] |
| | + | * [[PyQt5 게임 UI 개발 가이드]] |
| | | | |
| − | ===문제 해결 과정=== | + | ===오픈소스 활용=== |
| − | '''터치 정확도 문제''' | + | <div style="background-color: #fff3cd; border: 1px solid #ffeaa7; padding: 10px; border-radius: 5px;"> |
| − | * 문제: 초기 설계 목표 5mm 정확도 달성 어려움 | + | '''사용된 오픈소스 프로젝트''' |
| − | * 원인: 손가락 접촉면적과 센서 간격 불일치 | + | * 🎮 체스 게임 엔진 (GNU GPL) |
| − | * 해결: UI 재설계를 통한 실용적 접근 | + | * 🗺️ Polytopia Map Generator (GNU GPL) |
| | + | * 🃏 YOLO 카드 인식 모델 (MIT) |
| | + | * 📊 포켓몬 카드 DB API (Public) |
| | + | </div> |
| | | | |
| − | '''카메라 성능 문제'''
| + | ==향후 계획== |
| − | * 문제: IMX219 화질 및 화각 부족 | + | ===단기 목표 (2025.6)=== |
| − | * 해결: IMX708 광각 카메라로 업그레이드 | + | * [ ] 터치 캘리브레이션 자동화 |
| | + | * [ ] 포켓몬 카드 게임 완성 |
| | + | * [ ] GPT API 연동 완료 |
| | + | * [ ] 시스템 통합 테스트 |
| | | | |
| − | '''게임 복잡도 문제'''
| + | ===장기 확장 계획=== |
| − | * 문제: 유희왕, 매직 더 게더링 구현 복잡도 과다 | + | * 🎯 추가 게임 장르 지원 |
| − | * 해결: 포켓몬 카드게임으로 범위 조정 | + | * 🤖 AI 대전 상대 구현 |
| | + | * 🌐 온라인 멀티플레이어 |
| | + | * 📱 모바일 앱 연동 |
| | | | |
| − | '''예산 관리'''
| + | ==갤러리== |
| − | * 초기 예산: 183천원
| + | <gallery mode="packed" heights="200px"> |
| − | * 최종 예산: 404.8천원
| + | 파일:Tabletop_projector_overview.jpg|전체 시스템 구성 |
| − | * 주요 증액 요인: 성능 향상을 위한 부품 업그레이드
| + | 파일:Touch_module_pcb.jpg|터치 모듈 PCB |
| | + | 파일:Chess_game_demo.jpg|4인 체스 실행 화면 |
| | + | 파일:Poker_card_recognition.jpg|카드 인식 시연 |
| | + | </gallery> |
| | + | ''※ 프로젝트 사진을 추가해주세요'' |
| | | | |
| − | ===향후 확장 가능성=== | + | ==참고문헌== |
| − | * 추가 게임 장르 지원
| + | <references /> |
| − | * AI 대전 상대 구현
| + | # M. Kciuk ''et al.'', "Intelligent medical Velostat pressure sensor mat based on artificial neural network and Arduino embedded system," ''Applied System Innovation'', vol. 6, no. 5, p. 84, Sep. 2023. |
| − | * 온라인 멀티플레이어 지원
| + | # L. Yuan ''et al.'', "Velostat sensor array for object recognition," ''IEEE Sensors Journal'', vol. 22, no. 2, pp. 1692–1701, Jan. 2022. |
| − | * 모바일 앱 연동
| |
| | | | |
| − | ===프로젝트 느낀점===
| + | [[분류:2025년 캡스톤 프로젝트]] |
| − | * 하드웨어 제약사항을 고려한 현실적 목표 설정의 중요성
| + | [[분류:임베디드 시스템]] |
| − | * 프로토타입을 통한 조기 검증의 필요성
| + | [[분류:인터랙티브 게임]] |
| − | * 팀 내 소통과 역할 분담의 중요성
| + | [[분류:기계정보공학과]] |
| − | * 오픈소스 활용을 통한 개발 효율성 증대
| |