4. 1. /Futsal Manager
1. /
Futsal
- 5:5
- 20Min / 20Min
- Small (1/3)
- Just Fun
- Familiar
Why Futsal?
5. 1. /Futsal Manager
1. /
Target Pattern
Amateur player
wants to record
their games
Futsal Manager
But there is
no one to record
Automatic
Record System
Highlight
Extraction
36. Sprint Retrospect
Well Done
1. 자신의 작업이 무엇인지 파악하기 편함, 일정관리가 용이함
2. 팀원들의 진행도를 번다운 차트를 통해 한눈에 파악 가능
Wrong or Difficult
1. 자신의 작업을 진행에 바빠서 팀원들의 작업을 살펴볼 시간이 없었음
2. 스프린트 계획에서 작업량을 예측하지 못하여, 기간이 부족하거나 남는 팀원이 발생함
3. 일정대로 Sprint를 진행하기 까다로움
Retrospective comment
1. 데일리 미팅을 빠지지 않고 진행해야 한다
2. 스프린트 계획에서 작업량을 잘 배분하고, 기간 할당을 팀원과 논의한다
3. 일정을 산정할때, 세부 구현내용을 고려하여 일정을 산정한다.
42. WBS (Work Breakdown Structure)
임베디드
장비구매
개발환경 준비
블루투스 통신
모터 제어
스마트폰 페어링
데이터 업로드
데이터 다운로드
특정 각도로 회전
X축, Y축 회전
App
개발환경 준비
카메라 모듈
영상 처리
블루투스 모듈
서버 연동
안드로이드 스튜디오 설치
안드로이드 SDK 설치
영상 녹화
영상 저장
공 트레킹
카메라 중앙에 공이 위치할 최적
의 좌표 계산
임베디드 장비간 페어링
좌표 데이터 업로드
좌표 데이터 다운로드
영상 데이터 업로드
영상 데이터 다운로드
Server
물리적 서버 장비 구매
도메인 연결
데이터 처리
리눅스 설치
영상 편집
하이라이트 추출
골 인지 알고리즘
골대, 아웃라인 인식
골인 후 1분간의 영상
추출
유효 슈팅 판별
페이드 인/아웃
줌 인/아웃
배경음악 삽입
영상 인코딩
개발환경 준비
영상 데이터 수신
영상 처리
44. 4. Agile스프린트 스프린트1 스프린트 2 스프린트 3 스프린트 4
항목
임베디드 임베디드 임베디드 테스트
장비 구매 블루투스 통신 모터 제어 배포
개발 환경 준비 스마트폰 페어링 알고리즘, 필드 최적화
모터 제어 데이터 다운로드
특정 각도로 회전 데이터 업로드
어플리케이션 어플리케이션 어플리케이션
개발 환경 준비 영상 처리 영상 처리
IDE 설치
카메라 중앙에 공이
위치할 최적의 좌표 계산
공 트래킹
안드로이드 SDK
설치
블루투스 통신 서버 전송 속도 최적화
카메라 모듈 임베디드 장비간 페어링
영상 녹화 데이터 업로드
영상 저장 데이터 다운로드
서버 서버 서버
물리적 서버 장비
구매
데이터 수신 하이라이트 추출
리눅스 설치 영상 편집, 인코딩 골대, 아웃라인 인식
도메인 연결 유효슈팅 판별
골인 후 1분 사이의 영상
추출
배경음악 삽입
결과물 각 모듈간 통신
1차 프로토타입
완성(유저가 업로드한
영상을 받을 수 있음)
하이라이트 영상 제작 및
다수의 알고리즘 최적화
필드 테스트 및 최적화
Sprint WrapUp
47. Application
ES 통신 모듈
BT
좌표값 전송
카메라 모듈
녹화
처리
저장
계산 모듈
공 위치 계산
Server 통신 모듈 Player 모듈
Streaming
저장
HTTP 전송
좌표값 계산
골대위치 계산
아웃라인 계산
Embedded
App
Server
App 통신
계산 모듈
제어 모듈
ES 통신
카메라
계산
Viewer
Server 통신
App 통신
DB
하이라이트 제작
Architecture: Application
48. 하이라이트
제작 모듈
골인식
선수인식
하이라이트
DB 모듈
App 통신모듈
Save
HTTP 응답
Retrieve
배경음악 삽입
인코딩
Embedded
App
Server
App 통신
계산 모듈
제어 모듈
ES 통신
카메라
계산
Viewer
Server 통신
App 통신
DB
하이라이트 제작
Server
Architecture:Server
49. Architecture Summary
Embedded
(모터 제어)
App
(모터 제어값 계산)
Server
(하이라이트 추출)
App 통신
String agent;
String macAddr;
void connectAgent()
void sendToApp(char *)
char* recvFromApp();
계산 모듈
float ballX, ballY;
float motorX, motorY;
void calculateAwesomeDirection(struct *pos);
모터 모듈
float motorX, motorY;
void moveMotorToCustomDirection(float, float);
ES 통신
float ballX;
float ballY;
void BluetoothPairing(String)
void SendToEmbedded(float, float)
String RecvFromEmbedded();
카메라
String videoSavePath;
void StartRecordVideo();
boolean SaveVideo(String);
IplImage GetEachVideoFrame();
계산
IplImage eachVideoFrame;
Vector2 CalculateBallPosition(IplImage)
Viewer
String videoUrl;
void ConnectToServer(String);
void PlayVideo();
DB
let query;
let s3AccessKey;
let s3SecretKey;
function createVideo(String url,String user);
function uploadViedeoToS3Stream(Stream
video);
하이라이트 제작
IplImage eachVideoFrame;
def IsTheyMadeGoal(IplImage)
def DetectLineCannyEdge(IplImage)
def DetectBallHaarCascades(IplImage)
def VideoEdit(int)
App Http 통신
let router;
function middleWare;
function router.post(‘/video’,middleWare,
UserVideoRouter.create);
function router.get(‘/video’,middleWare,
UserVideoRouter.read);
Bluetooth
Architecture:UML