김다솜

Update README.md

Showing 1 changed file with 49 additions and 49 deletions
1 -# Kinect와 Unity AR을 활용한 운동 자세 교정 시스템
2 -
3 -
4 -## 프로젝트 목표
5 -
6 -* Kinect로부터 Body Tracking된 데이터를 제공받아 Unity AR캐릭터로 출력하는 동시에 Joint 각도를 계산하여 실시간으로 운동자세에 대한 피드백을 제공한다.
7 -
8 -## 지도 교수님
9 -
10 -이승규 교수님
11 -
12 -## 팀원
13 -고다경 2017103948
14 -김다솜 2017103960
15 -이상윤 2014104125
16 -
17 -## 적용 기술 요약
18 -### 각도에 대한 판별
19 -+ 운동에 대한 기초조사를 진행한 후, Kinect에서 Tracking을 잘 할 수 있을거이라고 예상되는 운동 3개를 선정.
20 -+ 운동 자세 판단은 각 운동 별 주요 관절의 각도를 보고 판단함.
21 - + 스쿼트 : 스쿼트 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 오른쪽 무릎, 왼쪽 무릎, 척추관절, 골반, 양 쪽 발 끝
22 - + 사이드하이킥 : 사이드하이킥 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 양쪽 골반, 척추 관절.
23 - + 런지: 런지 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 오른쪽 무릎, 왼쪽 무릎, 척추관절.
24 -+ 각 관절의 각도는 Joint들의 position을 이용하여 Vector3D 구조체를 만든 후, 벡터의 내적을 통해 계산함.
25 -+ 운동을 잘 하고 있는지 판단할 기준이 될 각도를 정하여 Rule-based 방식을 통해 사용자가 운동을 잘 하고 있는지 아닌지 즉각적으로 직관적인 Text를 표시함
26 -
27 -### 주요 클래스 및 함수 설명
28 -+ Angle Class - Vector3D 구조체 생성 및 정규화, 벡터 내적을 통한 각도 계산
29 -+ DetectJoints Class - Kinect SDK가 전송하는 joint별 position을 받아와 계산 후, GameObject position에 할당.
30 -+ BodySourceManager - Kinect와 Unity를 연결
31 - + 키넥트에서 Joint position 받아와 아바타에 넣어주는 역할을 수행함
32 -+ Move - AR을 움직이며 Update를 계속 수행
33 - + Move 클래스에 트레이너와 트레이니 오브젝트 변수 선언, CharacterSkeleton 선언
34 - + start()함수에서 게임오브젝트의 스켈레톤 생성
35 - + update()문을 돌면서 tracking된 joint를 계속 update
36 -+ CreateBodyObject 함수 - body object 생성
37 -+ RefreshBodyObject 함수 - AR의 Joint를 계속 Refresh함.
38 - + 트레이니 운동 자세 각도 판단
39 -+ Trainer_Run 함수 - Trainer를 담당하는 함수
40 - + 운동 선택에서 넘겨진 운동에 대한 file stream 수행
41 - + txt파일 하나마다 한 동작, count를 적용
42 - + txt파일에 정리된 Kinect 값은 데이터 전처리를 통해 적당하게 움직이도록 미리 제작
43 -+ Trainee_Count 함수 - 운동 별 트레이니의 운동 횟수 카운트
44 -
45 -### 코드 활용방법
46 -1. Unity를 이용하여 Assets파일 위치에서 Unity Project Open
47 -2. Script폴더에 있는 c#파일들을 Code editor를 이용해 Open
48 -3. Kinect는 Kinect SDK설치 후 USB3.0을 이용하여 연결 (Intel CPU 7세대에서 오류 발생, 8세대 이상 권장)
49 -4. Unity 실행 시 항상 Kinect studio 또는 Configuration 실행 권장
...\ No newline at end of file ...\ No newline at end of file
1 +# Kinect와 Unity AR을 활용한 운동 자세 교정 시스템
2 +
3 +
4 +## 프로젝트 목표
5 +
6 +* Kinect로부터 Body Tracking된 데이터를 제공받아 Unity AR캐릭터로 출력하는 동시에 Joint 각도를 계산하여 실시간으로 운동자세에 대한 피드백을 제공한다.
7 +
8 +## 지도 교수님
9 +
10 +이승규 교수님
11 +
12 +## 팀원
13 +고다경 2017103948
14 +김다솜 2017103960
15 +이상윤 2014104125
16 +
17 +## 적용 기술 요약
18 +### 각도에 대한 판별
19 ++ 운동에 대한 기초 조사를 진행한 후, Kinect에서 Tracking을 잘할 수 있을 것으로 예상되는 운동 3개를 선정.
20 ++ 운동 자세 판단은 각 운동 별 주요 관절의 각도를 보고 판단함.
21 + + 스쿼트 : 스쿼트 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 오른쪽 무릎, 왼쪽 무릎, 척추관절, 골반, 양 쪽 발 끝
22 + + 사이드하이킥 : 사이드하이킥 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 양쪽 골반, 척추 관절.
23 + + 런지: 런지 운동을 잘 하고 있는지 판단하는 데 기준이 된 관절은 오른쪽 무릎, 왼쪽 무릎, 척추관절.
24 ++ 각 관절의 각도는 Joint들의 position을 이용하여 Vector3D 구조체를 만든 후, 벡터의 내적을 통해 계산함.
25 ++ 운동을 잘 하고 있는지 판단할 기준이 될 각도를 정하여 Rule-based 방식을 통해 사용자가 운동을 잘 하고 있는지 아닌지 즉각적으로 직관적인 Text를 표시함
26 +
27 +### 주요 클래스 및 함수 설명
28 ++ Angle Class - Vector3D 구조체 생성 및 정규화, 벡터 내적을 통한 각도 계산
29 ++ DetectJoints Class - Kinect SDK가 전송하는 joint별 position을 받아와 계산 후, GameObject position에 할당.
30 ++ BodySourceManager - Kinect와 Unity를 연결
31 + + 키넥트에서 Joint position 받아와 아바타에 넣어주는 역할을 수행함
32 ++ Move - AR을 움직이며 Update를 계속 수행
33 + + Move 클래스에 트레이너와 트레이니 오브젝트 변수 선언, CharacterSkeleton 선언
34 + + start()함수에서 게임오브젝트의 스켈레톤 생성
35 + + update()문을 돌면서 tracking된 joint를 계속 update
36 + + CreateBodyObject 함수 - body object 생성
37 + + RefreshBodyObject 함수 - AR의 Joint를 계속 Refresh함.
38 + + 트레이니 운동 자세 각도 판단
39 + + Trainer_Run 함수 - Trainer를 담당하는 함수
40 + + 운동 선택에서 넘겨진 운동에 대한 file stream 수행
41 + + txt파일 하나마다 한 동작, count를 적용
42 + + txt파일에 정리된 Kinect 값은 데이터 전처리를 통해 적당하게 움직이도록 미리 제작
43 + + Trainee_Count 함수 - 운동 별 트레이니의 운동 횟수 카운트
44 +
45 +### 코드 활용방법
46 +1. Unity를 이용하여 Assets파일 위치에서 Unity Project Open
47 +2. Script폴더에 있는 c#파일들을 Code editor를 이용해 Open
48 +3. Kinect는 Kinect SDK설치 후 USB3.0을 이용하여 연결 (Intel CPU 7세대에서 오류 발생, 8세대 이상 권장)
49 +4. Unity 실행 시 항상 Kinect studio 또는 Configuration 실행 권장
...\ No newline at end of file ...\ No newline at end of file
......