https://www.drivelinebaseball.com/2022/12/openbiomechanics-project/
22년 12월 드라이브라인은 바이오메카닉스 데이터를 오픈한다.
누구나 이용가능하며 일부는 교육용으로도 활용가능하다. (23년 12월까지 교육용 무료, 상업용 별도 문의)
현재 공유된 야구 바이오메카닉스 데이터 중 가장 크고 퀄리티 있는 데이터라고 할 수 있겠다.
약 100여명의 투수가 최소 2경기 이상에서 속구 계열의 데이터가 있고, 98여명의 타자 데이터가 있다.
rawdata가 있고 요약된 데이터도 따로 있다.
해당 부분에 대해 전문적인 지식은 없으나 조금 공부하여 뜯어본 내용으로 공유한다.
아래 설명을 확인해보자.
https://www.openbiomechanics.org/
파이썬을 통해 c3d 데이터를 접근할 수 있게 친절하게 코드를 공유해놨다.
참고로 c3d는 3차원 이상의 데이터가 있다고 보면 되겠다.
프레임별(시간별) 선수가 움직이는 3차원의(x, y, z) 데이터가 있는데, 여기서 지면발력이 있다면 한 차원 더 더한셈으로 있다고 보면 되겠다.
데이터 가져오기 및 데이터 보기
우선 아래 깃을 통해 하나씩 확인해보자.
git clone https://github.com/drivelineresearch/openbiomechanics.git
https://github.com/drivelineresearch/openbiomechanics
파이썬 ezc3d 라이브러리 설치 (c3d파일 불러올 수 있음, 딕셔너리 구조)
conda install -c conda-forge ezc3d
파이썬에서 c3d 데이터 들고오기, 위치 설정값을 넣어주면 된다.
# import package
import ezc3d
file = 'path to your c3d file'
# read in c3d file and assign to variable c
c = ezc3d.c3d(file)
해당 c3d 데이터 변수 확인 하기 (여기선 크게 헤더, 파라메터, 데이터가 있다)
c = ezc3d.c3d(file)
c.keys()
# dict_keys(['header', 'parameters', 'data'])
아래 처럼 데이터를 직접 확인할 수 있다.
c = ezc3d.c3d(<'path to your c3d file'>)
c.keys()
# dict_keys(['header', 'parameters', 'data'])
c['header'].keys()
# dict_keys(['points', 'analogs', 'events'])
c['header']['points'].keys()
# dict_keys(['size', 'frame_rate', 'first_frame', 'last_frame'])
각 변수 내엔 이렇게 구성되어 있다.
1. 헤더
1) 포인트
(1) 데이터 사이즈
(2) fps (초당 프레임)
(3) 첫 프레임
(4) 마지막 프레임
2) 아날로그
(1) 데이터 사이즈
(2) fps (초당 프레임)
(3) 첫 프레임
(4) 마지막 프레임
3) 이벤트
(1) 데이터 사이즈
(2) 이벤트 시간
(3) 이벤트 라벨
* 2~3은 너무 많아서 생략한다. (깃 내용을 확인하거나 직접 해당 변수를 프린트해보자)
2. 파라메터
1) 포인트
2) 아날로그
3) 포스 플랫폼
4) 메뉴펙처
5) 주제
6) 포스 구조
7) 이벤트
3. 데이터
1) 포인트
2) 메타 포인트
3) 아날로그
확장자가 ipynb 라고 되어 있는 것을 열어서 jupyter(이나 colab 혹은 vscode)에서 환경을 맞춘 뒤 실행하면 Database에 연결해서 사용할 수 있다.
또한 기본적으로 이 데이터 선수들의 레벨, 구속 등도 확인할 수 있는 가벼운 코드도 제공한다.
바이너리 폴더에선 Mokka라는 게 존재하는데, 설치하고 c3d파일을 불러오면 3차원 + 지면반력 시각화를 확인할 수 있다. Mokka라는 프로그램은 무료이고 파이썬에서도 연동하여 사용할 수 있는 걸로 보인다. (어떻게 함?)
그리고 시점은 원하는 곳에서도 선택 가능하다.
c3d 데이터가 아닌 csv로도 존재하는데, 선수-프레임 별로 되어 있다.
그리고 poi_metrics 파일에선 선수별로 큰 이벤트가 있는 동작에 대한 수치를 요약해놨다.
개인적으론 가장 복잡하지 않은 데이터로 보인다. 처음 접근했을 땐 이걸로 이것저것 해보길 권한다.
선수 유형을 분류한다거나 구속에 영향을 주는게 어떤지 등 가볍게 연구해볼 수 있을 것 같다.
그리고 모델링이라는 게 존재 하는데 v3d에서 오픈 가능한 것 같다.
* 이 모델링은 일반적인 분석에서 모델링과 다르다. 마커를 통해 뼈 마디가 어딘인지 태깅을 하는 것이고, 미세한 조정을하는 칼리브레이션 개념이다.
그 외 재밌는 것이 있는데, 책과 기사들을 모아 놓은 걸 공유했다. (ezc3d 파일 다루는 법)
독학하기에 좋은 것 같다.
드라이브라인의 창업자 카일 바디는 트래킹데이터, 바이오메카닉스를 논문이나 기사 등으로 독학했다고 한다
카일바디는 참고로 고졸이다.
다들 해부 펀 (have fun)
https://contents.diegobaseball.com/classes/149114