에어팟 센서로 자세교정 : 다운로드수 2000까지의 발자취
안녕하세요 저는 NeckLife를 개발한 SoMART팀에 문영상입니다.
조금 늦었지만 디스콰이엇에서 생각보다 많은 관심을 받게 되어서 이렇게 글을 작성하게 되었습니다!
우선 이렇게 많이 관심을 가져주셔서 정말 감사합니다!
시작하기 전에 모션그래픽도 만들었었는데 아쉬워서 하나 올리겠습니다 ㅎㅎ
#0 앱의 시작
저희 앱 같은 경우는 이전에 디스콰이엇에도 많이 올라왔던 Posture Pod과 해외에서 유명한 앱인 Posture Pal, Zen Posture에서 영감을 받아서 만들어졌습니다.
팀원 중에 기획을 하는 과정에서 이렇게 에어팟을 통해서 거북목을 알려주는 앱이 있다라고 해서 찾아보고 실제로 써보는 과정에서
어?? 우리가 아는 거북목은 머리가 앞으로 빠져나오는거 아니야??
에서 프로젝트를 시작하게 되었어요.
기존 앱들은 애플에서 제공해주는 CMheadphonemotionmanager API 를 이용해서 목각도를 가져오는 거더라구요.
그런데 저희가 생각하기에 거북목은 머리가 앞으로 빠지는 자세니까 이걸 어떻게 하면 알 수 있을까를 고민하게 되었어요.
이때 팀원 중 한명이 IMU 센서의 가속도 센서를 다뤄본 경험이 있어서 확실하진 않지만 가속도 센서를 통해서 앞으로 나가는 자세를 측정할 수 있을 것 같다! 이렇게 아이디어가 나오게 됐어요!!
#1 가설 검증
그래서 저희는 이게 실제로 가능한지 가속도 데이터를 간단하게 csv 파일로 뽑아서 거리를 예측하는게 되는지 실험을 해봤어요
<그 당시 Raw 데이터로 적분하여 머리 트래킹 한 GIF>
이때 이게 생각보다 쉬울 수 있겠다고 생각을 했어요 ( 앞날이 어떻게 될 지 모르고...)
처음에는 멘토님들도 이 가까운 거리를 예측하는게 되는지 의심쩍어 했고 저희도 진짜로 가능할까 고민을 많이 했었거든요.
이때는 간단하게 트래킹을 했다보니 이게 실제로 제대로 트래킹이 됐는지도 모르는 상황이었는데 아 되겠구나 하고 그냥 시작하게 된거죠..
#2 테스트 환경 구축
그 이후에 본격적으로 저희는 테스트환경을 만들어서 머리 위치 추적을 해보려고 했어요!
근데 처음부터 문제가 있었던게 저희는 처음에 3차원에 대해서 전부 위치 추적을 해보려고 했는데, 실제 앱에서는 이걸 추적하기가 생각보다 어렵더라구요 그래서 바로 앞으로 나가는 방향을 먼저 체크하자!! 로 시작하자 마자 아이디어가 수정됐습니다.. ㅎㅎ
이제 실제로 저희는 csv 파일과 옆에 동영상을 찍어놓고 제대로 예측이 되는지 확인을 해봤어요
부끄러우니까 모자이크 ㅎㅎ
이런식으로 실제 머리 위치를 동영상으로 찍어가면서 언제 거북목이 됐는지 csv파일과 비교해서 저장을 해놓고 가속도 데이터를 위치로 적분을 시켜가면서 제대로 위치 파악이 되는지 테스트를 했어요
그런데 여기서 부터 뭔가 이상하다? 라는 생각이 들게 됐죠..
??? 너 어디까지 나가니???
알고보니 처음에 테스트를 할때는 운이 좋아서 잘 측정이 되듯?? 보였지 실제로 다시 테스트를 해보니 전혀 측정을 할 수 없는? 상황이 나오게 됐어요
아 이거 큰일났다..
이렇게 생각하면서 팀원끼리 어떤 상황에서 이렇게 잘못된 상황이 있는지 알 수 있어야 된다고 생각해서 저희는 실제 센서값을 토대로 리얼타임 테스트 환경을 구축했어요.
그랬더니 이렇게 슈우우웅...
우선 가속도 데이터를 그 자체로 못쓴다는걸 알게 됐어요
가속도 데이터의 샘플링 주기가 너무 긴 문제
가만히 있어도 가속도 데이터가 갑자기 커지는 상황 발생
멈춘 이후에 역방향으로 가속도가 발생하는 문제
고개를 왔다갔다 할때 가속도 데이터가 정확하지 않은 문제
사진에서는 가속도 봉우리가 적당하게 있지만 어떤 경우에는 봉우리가 여러개 생기는 문제
등등...
실제로 내가 움직이면서 센서의 값 변화를 보니까 그냥 이상태로 놔두면 절대 위치 파악을 못하겠구나 생각했었어요
그래서 저희는 하나하나 특정 상황일 때도 이런 오류가 안 일어나게 로직을 더 추가해야겠다 하면서 계속 개발을 진행했어요
#3 데모 만들기
이 중에서 저희는 제일 심각한게 움직인 이후에 역방향까지 속도가 내려가는 문제를 해결하는게 저희 키 포인트 였어요
그래서 저희는 위치롤백이라고 말을 하면서 다시 위치가 뒤로 돌아가지 않도록?? 해주는 작업을 추가로 넣었어요.
#4 다시한번 싹다 수정
이 전처리 로직만으로는 예외상황을 다 못잡을 것 같다 하면서 다른 방식을 찾았던 것 같아요.
이건 일종의 영업비밀로 하고.. ㅎㅎ
코드 중에 일부이긴 한데 가속도의 센서 값이 0인 순간들을 잘 이용해서 노이즈를 없애주는 과정을 거쳤답니다 ㅎㅎ..
이 로직을 적용시키며 시행착오를 하는 과정에서 거북목을 예방해주는 앱인데 이걸 테스트하면서 역대급으로 거북목 자세를 많이 취해서 제가 먼저 거북목이 될 것 같다는 생각이 들었습니다..
#5 사용자 피드백들 적용
실제로 앱이 나가고 난 이후에 이제 온갖 피드백들을 받을 수 있었어요 근데 대부분의 사람들이 센서 데이터가 부정확할때 피드백을 주기보다는 앱을 지워버리기 때문에 직접 설문을 해줄 사람을 찾아갔던 것 같아요.
이때 느꼈던게 사용자들이 센서로 오류가 있을때 엄청 불쾌감을 느껴서 이걸 더 없애는게 중요하다는 점과 고개를 돌리거나 할때 많이 불편함을 느껴서 이 부분을 우선적으로 센서 로직을 수정했던 것 같아요
#6 레딧 홍보
그 이후에 어느정도 성능이 나오지 않았을까? 했을때 레딧에도 홍보를 진행했습니다.
홍보를 위해서 앱에 영어를 지원하도록 싹다 수정하는 과정이 있었어요
운이 좋게도 정말 많은 사람들이 봐주었고 외국인 분들이 많은 피드백을 줬던 것 같아요.
외국같은 경우는 우리나라랑 다르게 로그인하는걸 엄청 싫어하더라구요. 이걸 생각해서 히스토리 저장을 원할때만 로그인을 하도록 바꿔줬습니다.
이 외에도 정말 여러가지 피드백들을 받을 수 있어서 이
걸 지금 계속해서 수정해 나가고 있습니다
#7 마치며
정말 많은 일들이 있었는데 차마 다 못적는게 많이 아쉽네요.
많은 문의 중에 갤럭시와 버즈로도 만들어 달라는 내용이 많았는데 이건 API가 안열려 있어서 못하더라구요.. 정말 아쉽습니다.
그리고 많은 사람들이 이런 앱이 이전에 있지 않냐 이런 걸 많이 말해주셨는데 저희만의 차별점을 어필하는 것도 정말 힘들구나 하고 많이 느꼈던 것 같아요.
그럼에도 앱을 출시하고 많은 사람들이 실제 결제까지 하며 사용을 해주셔서 너무 감사드립니다.
점점 더 정확도도 올릴 수 있도록 연구하고 있습니다! 많이 사용해주시면 감사하겠습니다!!
AppStore :
혹시 에어팟을 음악만 듣는데 사용 중인가요? 에어팟으로 자세 교정 가능한 앱을 만들었어요!
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.