Mediapipe

스쿼트 자세 피드백과 스쿼트 모션트래킹을 위하여 Mediapipe를 이용한다.
Mediapipe는 Google에서 개발된 Open Source Api로 다양한 신체, 객체 인식 알고리즘을 제공하며, 그중에서 Mediapipe Pose알고리즘을 이용한다.
이는 아래 그림처럼 사람의 중심이되는 골반에서부터 시작해 33개의 신체 포인트를 찾고 정 규화된 x, y좌표로 접근가능하게 해주는 알고리즘이다.
Mediapipe는 Jupyter Notebook환경에서 사용 및 개발되었으며, 트레킹 된 신체 포인트들로 자세를 추정한다. 추가로 스쿼트 정확도, 스쿼트 자세 피드백, 스쿼트 횟수 카운트 등 다양한 로직을 구현하였다.
아두이노, 미디어 파이프 전체 구조 메커니즘

위와 같이 전체 구조 메커니즘을 나타낼 수 있으며 크게 3가지로 분류가 가능하다.
1) 컨트롤러
- 먼저 사용자가 SKH-EK056(조이스틱)을 통해 무게를 입력한다.
- 입력된 무게 정보가 Aruduino uno(slave)에 전달되어 해당 무게 값을 I2C-LCD2004 상에 표시하도록 한다.
- 또한 해당 센서 정보를 통한 무게 정보가 bluetooth HC-06 모듈(master)을 통해 본체의 bluetooth HC-06모듈(slave)로 블루투스 통신을 거쳐 전달된다.
2) 본체
- 수신 받은 블루투스 통신 정보를 본체 bluetooth HC-06 모듈(slave)이 수신한다.
- 블루투스 통신을 통해 수신된 정보로 Arduino UNO(master)에서 목표 하중 값을 설정한다.
- 사용자가 설정한 무게과 Load cell을 통한 현재 측정된 하중을 비교하여 Arudino UNO(master)에서 PID 제어를 거쳐 모터를 컨트롤한다.
- 또한 Load cell을 통해 사용자가 상승 운동을 하는지 하강 운동을 하는지 판정하여 모터의 회전 방향을 설정한다.