스마트폰을 이용한 사용자 운동 모션 인식 시스템 구현

 

권승현1, 최유순1, 임순자2, 정석태1*

1원광대학교 컴퓨터공학과, 2원광대학교 전자공학과

 

A Implementation of User Exercise Motion Recognition System Using Smart-Phone

 

Seung-Hyun Kwon1, Yue-Soon Choi1, Soon-Ja Lim2, Suck-Tae Joung1*

1Dept. of Computer Engineering, Wonkwang University

2Dept. of Electronic Engineering, Wonkwang University

 

 

요  약  최근 스마트폰의 성능이 향상되고 보급이 증가하면서 기존 기기들의 다양한 기능들이 집적되고 있다. 특히 각종 센서들의 개발로 스마트 기기의 기능은 한층 성숙단계에 이르렀다. 스마트 기기의 발달과 더불어 각종 애플리케이션이 쏟아져 나오는 요즘 애플리케이션을 이용하여 사용자의 신체적 활동을 촉진하는 헬스케어 서비스 및 연구가 각광 받고 있다. 그러나 이러한 서비스들은 다이어트를 혼자서 해야 하고, 사용자가 정확한 자세로 운동을 하고 있는지 감지하는 운동 모션 인식 기능이 없기 때문에 운동의 효과를 얻기에는 제한이 있다. 본 논문에서는 스마트폰 내에 내장되어 있는 센서들을 이용하여 사용자의 움직임을 감지할 수 있는 운동 모션 인식 소프트웨어를 개발하고 더불어 웹서버와 연동하여 지인들과 친구를 맺어 서로 운동을 제안하고 이를 수행할 수 있는 시스템을 설계 하고 구현하였다. 운동 모션 인식은 Kalman Filter 알고리즘을 이용하여 사용자의 움직임 데이터를 보정하고, DTW 알고리즘을 이용하여 기존에 샘플링 되어 있는 데이터와 비교하여 사용자가 정확한 자세로 운동을 하였는지 판단되어 진다.

 

Abstract  Recently, as the performance of smart phones has advanced and their distribution has increased, various functions in existing devices are accumulated. In particular, functions in smart devices have matured through improvement of diverse sensors. Various applications with the development of smart phones get fleshed out. As a result, services from applications promoting physical activity in users have gotten attention from the public. However, these services are about diet alone, and because these have no exercise motion recognition capability to detect movement in the correct position, the user has difficulty obtaining the benefits of exercise. In this paper, we develop exercise motion-recognition software that can sense the user's motion using a sensor built into a smart phone. In addition, we implement a system to offer exercise with friends who are connected via web server. The exercise motion recognition utilizes a Kalman filter algorithm to correct the user's motion data, and compared to data that exist in sampling, determines whether the user moves in the correct position by using a DTW algorithm.

 

Keywords : Android, App, Motion, Exercise Motion Recognition, Smart Phone

1. 서론

스마트폰의 성능이 향상되고 보급이 증가하면서 기존 기기들의 다양한 기능들이 집적되고 있다. 특히 최근 스마트폰에는 기본적으로 자이로 센서, 가속도 센서, 근접 센서 등이 내장되어 있다. 이러한 센서들은 스마트폰이 이동 또는 회전하면서 발생하는 데이터가 변화량만큼의 수치화 형태로 나타나기 때문에 모션인식 활용에 적합하며, 이에 따라 모션인식 관련 기술이 활발히 연구되고 있다[1-3]. 또한 모션인식 기술을 이용하여 사용자의 신체적 활동을 촉진하는 헬스케어 서비스 및 연구가 각광 받고 있다[4-7].

현재 서비스가 진행중인 헬스케어 서비스 중의 하나인 ‘다이어터’[8]는 식단일기, 운동일기, 체중관리 등 다양한 다이어트 커뮤니티를 제공하고 사용자에게 다이어트에 대한 지식의 폭을 넓힌다는 것에 중점을 두고 있는 서비스이다. ‘런타스틱’[9]은 스마트폰에 내장된 센서를 이용하여 운동량을 체크해주고, 운동 강도도 조절해주는 건강관리 서비스이다. 그러나 이러한 서비스들은 다이어트를 혼자서 해야 하고, 하나의 운동에 대해서만 서비스되고 있으며, 또한 사용자가 정확한 자세로 운동을 하고 있는지 감지하는 운동 모션인식 기능이 없기 때문에 운동의 효과를 얻기에는 제한이 있다.

본 연구에서는 이러한 단점들을 보완하여 사용자간 커뮤니티를 형성해 적절한 동기부여가 가능하도록 하며, Kalman Filter 알고리즘[10]과 DTW 알고리즘[11]을 통하여 사용자의 움직임에 대한 모션인식을 보다 정확하게 한다. 또한 여러 가지 운동이 가능하게 하여 체계적인 다이어트가 가능하게 하는 것을 목표로 하는 모바일 기반 사용자 운동 모션인식 시스템을 설계하고 구현한다.

본 논문의 구성은 다음과 같다. 2장에서는 스마트폰을 이용한 운동 모션인식 시스템의 설계 및 구성에 대하여 설명하고 3장에서는 설계한 시스템을 구현하도록 한다. 4장에서는 본 연구에 관한 성능 평가를 진행한다. 마지막으로 5장에서는 본 연구에 대한 결론을 정리한다.



2. 운동 모션인식 시스템 설계

2.1 시스템 구성도

본 시스템의 전체적인 구성도는 Fig. 1과 같다. 시스템은 스마트폰 애플리케이션과 서버로 구성되었으며, 서버는 Apache와 MySql데이터베이스를 이용하여 구성하였다.

먼저 스마트폰 애플리케이션은 xml로 사용자 인터페이스를 설계하였으며 자이로 센서를 이용하여 스마트폰의 회전량을 계산하고, 가속도 센서를 이용하여 3가지 축의 가속도를 계산하였다. 또한 스마트 디바이스와 사용자의 거리만을 이용해서 측정할 수 있는 운동의 측정을 위해 근접 센서를 이용한다. 이렇게 센서를 이용하여 수집된 데이터는 오차값이 포함되어 있기 때문에 Kalman Filter 알고리즘을 이용하여 데이터를 보정하고, DTW 알고리즘을 이용하여 기존에 샘플링 되어있는 데이터와 비교하는 과정을 거쳐 사용자가 정확한 자세로 운동을 하였는지 판단한다.

웹서버는 Apache와 MySql을 이용하여 사용자들의 회원정보 및 각 운동에 대한 숙련도와 경험치 그리고 사용자들의 친구관계를 저장한다. 그리고 스마트폰과 MySql 데이터베이스 간의 직접적인 데이터 교환을 위해 PHP를 사용하였다.


Fig. 1. System Configuration


2.2 데이터베이스 설계

데이터베이스는 사용자의 정보를 저장 및 관리할 수 있도록 총 4개의 테이블로 구성하였으며 구성요소는 회원 관리 테이블, 친구관계 테이블, 운동제안 사항 테이블, 메모테이블로 구성되어 있다. 각 테이블의 구조는 Table 1, Table 2, Table 3, Table4와 같다.


Table 1. User Table

 FIELD

TYPE

DEFAULT

NULL

idx

int

auto_increment

NOT_NULL

user_id

varchar

NULL

NOT_NULL

password

varchar

NULL

NOT_NULL

nickname

varchar

NULL

NOT_NULL

name

varchar

NULL

NOT_NULL

phone

varchar

NULL

NOT_NULL

exp

int

NULL

NOT_NULL

fitness_1

int

NULL

NOT_NULL

fitness_2

int

NULL

NOT_NULL

fitness_3

int

NULL

NOT_NULL

fitness_4

int

NULL

NOT_NULL

fitness_5

int

NULL

NOT_NULL

fitness_6

int

NULL

NOT_NULL

Table 2. Friend Table

 FIELD

TYPE

DEFAULT

NULL

user_id

varchar

NULL

NOT_NULL

friend_id

varchar

NULL

NOT_NULL

application

int

NULL

NOT_NULL


Table 3. Suggestion Table

 FIELD

TYPE

DEFAULT

NULL

user_id

varchar

NULL

NOT_NULL

friend_id

varchar

NULL

NOT_NULL

fitness

int

NULL

NOT_NULL

date

datetime

NULL

NOT_NULL


Table 4. Memo Table

 FIELD

TYPE

DEFAULT

NULL

idx

int

auto_increment

NOT_NULL

user_id

varchar

NULL

NOT_NULL

photo

varchar

NULL

NOT_NULL

title

varchar

NULL

NOT_NULL

weight

int

NULL

NOT_NULL

memo

text

NULL

NOT_NULL

date

datetime

NULL

NOT_NULL


회원정보 테이블에서는 사용자의 계정과 비밀번호, 닉네임 등 기본적인 정보들과 경험치 그리고 운동별 숙련도를 저장한다. 비밀번호는 SHA1 함수와 MD5 함수를 이용하여 암호화된 뒤 저장된다. 친구관계 테이블은 사용자들 간의 친구관계를 저장한다. 이 테이블에서는 간단하게 자신의 친구가 누구인지 저장한다. 운동제안 테이블은 친구관계인 사용자 간의 운동제안 사항을 저장한다. 마지막으로 메모테이블은 사용자가 매일 작성하는 운동일지에 대한 내용을 저장한다. 저장되는 내용으로는 작성자의 계정과 사용자가 지정한 사진, 제목, 몸무게 등이 있다.


2.3 모션인식 알고리즘

본 연구에서 사용자가 정확한 자세로 운동을 하였는지 판단하는 모션인식 알고리즘은 DTW 알고리즘과 Kalman Filter 알고리즘이다.

DTW 알고리즘은 음성인식, 생물정보공학, 온라인 필기체 문자 인식 등에서 널리 사용되고 있는 것으로, 두 시계열 간의 거리를 최소화 하는 방향으로 움직이면서 매칭시켜 각 템플릿과의 누적거리를 계산하여 최소가 되는 클래스로 인식한다. DTW 알고리즘을 이용하여 두 시계열을 매칭시켰을 경우 유클리디안 거리 방법을 사용했을 때와는 달리 부분적으로 왜곡되거나 변형된 파형에 대해서도 적절하게 매칭시킬 수 있다는 것을 보여준다. Fig. 2는 Android에 적용하기 위해 만든 DTW 알고리즘이다.

Kalman Filter 알고리즘은 노이즈가 존재하는 센서 측정값으로부터 노이즈가 제거된 정확한 값을 확률적인 추정을 해내는 데에 널리 사용되는 방법이고, Estimated error convariance를 최소화한다는 의미에서 최적화라고 말할 수 있다. 그리고 ‘Predict’와 ‘Correct’ 추정 루틴을 수행하는 수학적 식들의 집합이다. 다시 말하면 최소자승법(Least Square)의 개념을 바탕으로 이전의 측정 데이터와 새로운 측정 데이터를 사용하여 데이터에 포함된 노이즈를 제거하여 새로운 결과를 추정하는 알고리즘이다. 여기서 Filter란 측정 데이터에 포함된 불확실성(Noise)을 필터링하는 것으로 노이즈를 동반한 측정데이터에서 원하는 신호를 골라내는 알고리즘이다. Fig. 3은 칼만 필터의 수식을 나타내었다.


Fig. 2. DTW Algorithm

public double orientDtw(ArrayList<ORIENTC>

    olddat, ArrayList<ORIENTC> newdat) {

 double[][] matrix

    = new double[olddat.size()][newdat.size()];

 if (olddat.size() < 2 || newdat.size() < 2) {

    return –1; }

 matrix[0][0]       

    = orientDistance(olddat.get(0),

    newdat.get(0));

 for (int j = 1; j < newdat.size(); j++) {

    matrix[0][j]     = matrix[0][j - 1]

      + orientDistance(olddat.get(0)

      , newdat.get(j));}

 for (int i = 1; i < olddat.size(); i++) {

    matrix[i][0]     = matrix[i - 1][0]

      + orientDistance(olddat.get(i),

      newdat.get(0));

   for (int j = 1; j < newdat.size(); j++) {

      matrix[i][j]    = Math.min

         (matrix[i - 1][j],

         Math.min(matrix[i - 1][j – 1],

         matrix[i][j - 1]))

         + orientDistance(olddat.get(i)

         , newdat.get(j));}}

 return

   matrix[olddat.size() - 1][newdat.size() - 1];}

Fig. 3. Kalmann Filter statement

xk : system state at k

xk-1 : system state at k-1

wk-1:process noise at k-1

vk:measurement noise at k

A, B, H:systme matrix

Q:process noise covariance

R:measurement noise

covariance



3. 운동 모션인식 시스템 구현

본 논문에서 제안한 모바일 애플리케이션의 프로세스는 Fig. 4와 같다.


Fig. 4. Application Process


애플리케이션을 실행하면 처음에 자연스러운 화면전환을 위하여 스플래쉬 뷰가 출력된다. 2초후 스플래쉬 뷰가 사라지면 로그인 혹은 회원가입을 할 수 있는 화면으로 전환된다. 회원등록 및 로그인을 하여 애플리케이션에 성공적으로 접속하면 총 4개의 탭으로 구성된 화면을 볼 수 있다.

첫 번째 탭에서는 자신의 레벨과 사용자들의 랭킹을 확인할 수 있다. Fig. 5는 자신의 레벨을 알 수 있는 그림을 나타내었다. 두 번째 탭에서는 다른 사용자로부터 제안된 운동의 목록을 볼 수 있고 각 목록을 터치하면 제안받은 운동을 수행할 수 있다.

Fig. 5. My information tab


또한 상단에 위치한 버튼을 터치하면 다른 사용자에게 운동을 제안할 수 있다. Fig. 6은 사용자에게 운동을 제안하는 화면을 나타내었다.


Fig. 6. Exercise suggestions


세 번째 탭에서는 현재 자신과 친구관계에 있는 사용자의 목록을 볼 수 있다. 상단에 위치한 ‘요청 수락’ 버튼을 터치하면 다른 사용자로부터 신청된 친구제안 목록을 볼 수 있다. Fig. 7은 친구 목록을 나타내었다. 친구 목록을 터치하면 친구신청을 수락하거나 거절할 수 있고 ‘친구 찾기’ 버튼을 터치하면 다른 사용자에게 친구신청을 할 수 있다.

Fig. 7. Friends tab


마지막 탭에서는 다양한 운동 정보를 확인할 수 있고 운동일지를 작성할 수 있으며 데이터베이스에 저장된 다이어트 식단을 추천받을 수 있다. 그리고 제안 받지 않더라도 운동할 수 있는 기능을 위하여 싱글모드를 추가하였다. 또한 추가할 운동 종류를 선택할 수 있으며, Fig. 8은 운동일지를 작성하는 화면을 나타내었다.


Fig. 8. Additional tab



4. 성능평가

본 연구에서 제안한 운동 모션인식 시스템의 성능 평가를 위하여 실험을 하였다. 제안한 시스템은 스마트폰에 내장되어 있는 센서들을 이용하여 사용자의 운동 횟수를 정확하게 측정하는 것이 중요하다. 본 연구의 실험을 위하여 정확한 운동 자세를 다음과 같이 정의하였다. 윗몸일으키기는 다리와 허리의 각도를 30o로 하고 목을 감싼 팔꿈치가 무릎에 닿을 때로 정의하였으며, 줄넘기는 두 발을 모아 뛰는 동작으로 손잡이는 되도록 자신의 몸에 가까이 오도록 하고 손목으로 줄을 돌리고 손잡이를 잡은 손은 몸에서 멀리 떨어지지 않도록 한다. 또한 팔 올리기는 팔의 높이에서 위로 60o이상 팔을 들어 올리는 동작을 기본 동작으로 정의하였다.

실험은 20대 성인 남성 10명을 대상으로 각 운동마다 정확한 자세 10회, 부정확한 자세 10회씩 진행하였고, 정확한 자세를 유지하여 운동했을 때의 오차율과 부정확한 자세를 유지하여 운동했을 때의 오차율을 측정하였다. Table 5는 실제 운동 횟수와 스마트폰을 이용하여 측정된 운동 횟수를 나타내었다. A는 사용자가 정확한 자세를 유지하여 운동했을 때 스마트폰이 측정한 결과이며 B는 부정확한 자세로 운동했을 때 애플리케이션이 측정한 결과이다. 각 운동별로 약 5% 내외의 오차율이 발생하였다. 이러한 오차율이 발생한 원인은 사용자의 운동자세가 부정확하거나 알고리즘의 최적화문제로 인해 발생하였다. 실험 결과 알고리즘의 최적화 문제를 조금 더 해결하면 오차율을 크게 줄일 수 있을 것으로 판단된다.


Table 5. Lapse rate of Application

 

Actual number of sports /

Number of measurements

Lapse rate

A

B

A

B

Sit-up

100/95

100/97

5%

3%

Jump Rope

100/98

100/93

2%

7%

Arm Raise

100/99

100/97

1%

3%



5. 결론

초기의 헬스케어 서비스 애플리케이션들은 각각의 장점이 있지만 여러 가지 단점 즉 다이어트를 혼자서 해야 하고 하나의 운동에 대해서만 서비스되고 있으며 또한 사용자가 정확한 자세로 운동을 하고 있는지 감지하는 모션인식 기능이 없기 때문에 운동의 효과를 얻기에는 제한된다는 여러 가지 단점으로 인해 생각만큼 사용자들에게 인기를 얻지 못했다.

본 논문에서는 이러한 단점을 보완하기 위해 사용자들간의 커뮤니티를 형성해 운동에 적절한 동기부여를 할 수 있고, 한가지 운동이 아닌 여러 가지의 운동을 가능하게 하여 체계적인 다이어트가 가능하도록 하였다. 뿐만 아니라, 측정할 수 있는 운동 이외에도 여러 운동들의 정보를 제공하여 사용자들이 보고 따라할 수 있도록 하였다. 가장 중요한 모션인식은 사용자의 움직임의 정확성을 높이기 위하여 Kalman Filter 알고리즘과 DTW 알고리즘을 사용하여 사용자의 움직임을 정확하게 측정할 수 있는 시스템을 구현하였다. 사용자는 스마트폰 애플리케이션을 이용하여 다른 지인들과 운동을 제안하고 제안 받을 수 있으며, 제안 받은 운동은 스마트폰을 이용하여 정확한 자세를 유지하며 운동을 계속할 수 있다. 향후 연구 계획은 모션 인식률을 높이기 위한 알고리즘의 최적화 문제를 해결하고 더 많은 종류의 운동을 제공하여 사용자의 선택 폭을 확장할 계획이다.



References

 [1] Y. C. Lee, and C. W. Lee, “Motion Recognition of SmartPhone using Sensor Data,” Journal of Korea Multimedia Society, vol. 17, no. 12, pp. 1437-1445, 2014.

   DOI: http://dx.doi.org/10.9717/kmms.2014.17.12.1437

 [2] V. M. Mantyla, J. Mantyjarvi, T. Seppanen, and E. Tuulari, “Hand gesture recognition of a mobile device user,” Multimedia and Expo. ICME, vol. 1, pp. 281-284, 2000.

   DOI: http://dx.doi.org/10.1109/icme.2000.869596

 [3] S. Kallio, J. Kela, and J. Mantyjarvi, “Online gesture recognition System for mobile interaction,” IEEE International Conference on Systems, vol. 3, pp. 2070-2076, 2003.

   DOI: http://dx.doi.org/10.1109/icsmc.2003.1244189

 [4] J. T. Park, H. S. Hwang, J. S. Yun, G. S. Park, and I. Y. Moon, “User Motion Recognition Healthcare System using Smart-Band,” Journal of Advanced Navigation Technology,  vol. 18, no. 6, pp. 619-624, 2014.

   DOI: http://dx.doi.org/10.12673/jant.2014.18.6.619

 [5] H. J. Park and H. S. Kim, “Case studies and development on wearable healthcare design - mainly with diverse types of user perspectives,” Journal of Korea Digital Design Council, vol. 14, no. 3, pp. 135-144, 2014.

   DOI: http://dx.doi.org/10.17280/jdd.2014.14.3.014

 [6] D. J. Kim, H. K. Shin, and H. S. Ryu, “The preference of healthcare smart home system,” The Architectural Institute of Korea, vol. 28, no. 5, pp. 151-158, 2012.

 [7] D. K. Park, and M. H. Yeoun, “A study on the system and interaction configuration of health-band," Journal of Korea Digital Design Council, Vol. 2014, No. 5, pp.113-114, 2014.

 [8] M. K. Jun, “Effect of Dieter apps applying BodyThink program on obese highschool girls”, Department of Nursing Education The Graduate School Pusan National University.

 [9] S. E. Lee, and S. I. Kim, “Mobile Fitness Application’s User Experience Study-Analytic focus on Extreme users”, Journal of the Korea Digital Design, Vol.14 No.3, pp. 769-777, 2014.

   DOI: http://dx.doi.org/10.17280/jdd.2014.14.3.076

[10] A. M. Sabatini, “Quaternion-based Extended Kalman Filter for Determining Orientation by Inertial and Magnetic Sensing,” IEEE Transaction on biomedical Engineering, vol. 53, pp. 1346-1356, 2006.

   DOI: http://dx.doi.org/10.1109/TBME.2006.875664

[11] H. Sakoe, and S. Chiba, “Dynamic Programming Algorithm Optimization for Spoken Word Recognition,” IEEE Transaction on Acoustics, Speech and Signal Processing, vol. 26, no. 1, pp. 43-49, 1978.

   DOI: http://dx.doi.org/10.1109/TASSP.1978.1163055


권 승 현(Seung-Hyun Kwon)             [준회원]

•2010년 2월 : 평내고등학교 졸업

•2016년 8월 : 원광대학교 컴퓨터공학과 졸업

 

 

<관심분야>

안드로이드, 알고리즘, 임베디드 시스템


최 유 순(Yue-Soon Choi)                [정회원]

•1990년 8월 : 원광대학교 대학원 컴퓨터공학과(공학석사)

•2004년 2월 : 원광대학교 대학원 컴퓨터공학과 (공학박사)

•2015년 8월 ~ 현재 : 원광대학교 연구교수

 

<관심분야>

임베디드 시스템, 안드로이드, 소프트웨어공학


임 순 자(Soon-Ja Lim)                   [정회원]

•1985년 2월 : 원광대학교 전자공학과(공학사)

•1991년 8월 : 원광대학교 대학원 전자공학과 (공학석사)

•2001년 8월 : 원광대학교 대학원 전자공학과 (공학박사)

•2011년 ~ 현재 : 원광대학교 전자공학과 조교수

 

<관심분야>

임베디드시스템, 사물인터넷(IoT)


정 석 태(Suck-Tae Joung)                [정회원]

•2000년 7월 : 쓰꾸바대학교 공학연구과 전자정보(공학박사)

•2001년 3월 ~ 현재 : 원광대학교 컴퓨터공학과 교수

 

<관심분야>

멀티미디어, 이동통신, 비주얼시스템