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 | ... | ... |
-
Please register or login to post a comment