https://www.drivelinebaseball.com/2022/12/openbiomechanics-project/

 

The OpenBiomechanics Project: Driveline Goes Open Source

Over a decade ago, Driveline Founder Kyle Boddy proposed open-sourcing biomechanics data. Looking back, the premise was simple: Open-source pitch physics

www.drivelinebaseball.com

22년 12월 드라이브라인은 바이오메카닉스 데이터를 오픈한다. 

누구나 이용가능하며 일부는 교육용으로도 활용가능하다. (23년 12월까지 교육용 무료, 상업용 별도 문의)

현재 공유된 야구 바이오메카닉스 데이터 중 가장 크고 퀄리티 있는 데이터라고 할 수 있겠다.

약 100여명의 투수가 최소 2경기 이상에서 속구 계열의 데이터가 있고, 98여명의 타자 데이터가 있다.

 

rawdata가 있고 요약된 데이터도 따로 있다.

 

해당 부분에 대해 전문적인 지식은 없으나 조금 공부하여 뜯어본 내용으로 공유한다.

 

아래 설명을 확인해보자.

https://www.openbiomechanics.org/

 

OpenBiomechanics

The OpenBiomechanics Project (OBP) is an initiative committed to providing free, high fidelity, elite-level athletic motion capture data to the scientific community. Our aim is to first advance research in the sport biomechanics and high-performance domain

www.openbiomechanics.org

 

파이썬을 통해 c3d 데이터를 접근할 수 있게 친절하게 코드를 공유해놨다.

 

참고로 c3d는 3차원 이상의 데이터가 있다고 보면 되겠다.

프레임별(시간별) 선수가 움직이는 3차원의(x, y, z) 데이터가 있는데, 여기서 지면발력이 있다면 한 차원 더 더한셈으로 있다고 보면 되겠다.

 

데이터 가져오기 및 데이터 보기

우선 아래 깃을 통해 하나씩 확인해보자.

git clone https://github.com/drivelineresearch/openbiomechanics.git

 

https://github.com/drivelineresearch/openbiomechanics

 

GitHub - drivelineresearch/openbiomechanics: The open source initiative for anonymized, elite-level athletic motion capture data

The open source initiative for anonymized, elite-level athletic motion capture data. Run by Driveline Baseball. - GitHub - drivelineresearch/openbiomechanics: The open source initiative for anonymi...

github.com

 

파이썬 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

 

[서울 6.24~7.29] 야구데이터 분석 교육 세이버메트릭스 유치원

세이버메트릭스 유치원

contents.diegobaseball.com

 

히말라야에서 2023 WBC 공인구와 함께

 

2023년 5월에 있었으며 MLB 구단 담당자의 허락을 받아 글을 씁니다.

 

 

 제 주변에는 MLB를 도전하며 능력이 좋은 5툴 플레이어들이 많은데요. 제 주변뿐만 아니라 많은 분들이 도전했으면 하는 바람에 이렇게 글을 씁니다. 일반적으로 공고가 떠서 지원을 하는 루트가 아닌 다른 방법으로 진행했습니다. 개인적으로는 일반적으로 지원하는 루트와는 다르게 생각하여, 이런 기회가 있다는 걸 공유하면 좋을 것 같다는 생각을 했습니다.

 

링크드인을 통해

 

 어느 날 링크드인으로 직급이 높아 보이는 구단관계자분이 쪽지로, 제 프로필을 확인하며 다음 커리어 플랜이 어떻게 되는지 물어봤습니다. 그러곤 '이력서 제출하고 면접 볼래?'고 제안을 받았습니다. 처음엔 유령 계정으로 사기 치는 게 아닌가 의심을 했습니다.

 

 포지션을 정하지 않고 적정한 게 있으면 다시 제안하겠다며 얘기를 했었거든요. 그분의 프로필을 확인하여 구글링 해보니 MLB 혹은 구단의 공홈에 있는 정보랑 일치도 했고, 일촌 중에 아는 사람과도 친구가 있었습니다. 

 

구단의 프라이빗 페이지


 속는 셈 치고 이력서를 전달하고 나니 구단의 채용 관련 프라이빗 페이지를 따로 주며 (여긴 해당 구단의 채용정보와 현업 관계자들의 얘기가 있음) 이제 일자를 잡고 면접을 화상으로 보자고 제안이 왔습니다. 제가 회화에는 더더욱 자신이 없어 '영어가 서투르다'라고 말하니 괜찮다고 하며 그냥 진행하자고 하더군요. 좀 망설이다가 프라이빗 페이지를 읽다 보니 저를 자극하는 내용들이 있어 도전하기로 했습니다.

 

 * 프라이빗 페이지에서는 각 직군 별로 필요로 하는 기술들을 써놨는데요. 분석팀 외에도 운영팀 등 넘어 다수의 부서에서 SQL와(R 혹은 파이썬) 같은 언어를 요구하고 있음을 확인할 수 있었습니다. 데이터베이스에 대한 이해는 더이상 특별한 게 아니라고 생각하게 됐습니다.

 

 해당 내용을 주고 오간 후에 한국 시간으로 40시간 뒤쯤에 면접을 진행하자고 제안이 왔습니다. 담당자가 시차를 고려하여 그 지역 기준으로 새벽 7시에 진행하자고 요청했고, 저에게 맞춰주실 필요 없다고 얘기하며 한 시간 정도 늦춘 뒤에 진행하기로 했습니다. 약 30분 정도의 일정 잡았는데 뭘 준비 해야 할지 몰라서 기본 정도 예의상으로 준비했었습니다. 아무래도 언어의 장벽도 있어 몇 가지 이력 물어보다 빨리 끝낼 거라고 예상했거든요.

 

면접 시작

 약속된 시간에 줌을 통해 접속했고 해당 구단의 유니폼을 입은 담당자가 접속했습니다. 프로필 사진과 동일한 분이 들어왔고 면접을 시작했습니다. 먼저 담당자 분이 안부인사와 함께 자기소개를 쭈욱 해주셨고 이후 주로 이력과 관련된 내용을 물어봤습니다. 과거 일했던 곳에서 어떤 걸 했는지, 현재는 어떤 일을 하는지 물어봤었네요.

 

 아무래도 애널리스트 신분이었으니 데이터 쪽에 기본적인 내용을 물어보고 스카우팅과 관련한 질문을 받았습니다. 분석/연구 외에도 개발 관련 내용을 먼저 물어봤었고요. 다음엔 메이저로 간다면 어떤 선수가 성공할 것인가. 당신은 어떻게 평가하는지 등 스카우팅 관련한 얘기를 많이 물어봤었네요. 그리고 제 개인인적인 생각을 많이 여쭤봤었는데 때론 개발이나 분석, 스카우팅 쪽의 전문적인 용어로 답변했습니다 (이게 오히려 좀 잘 이해하는 느낌). 또한 개인적으로 어떤 선수가 성적이 변화한 내용과 원인에 대해 얘기했는데 면접이 끝난 이후에 별도로 메신저로 더 질문이 들어왔습니다. 

 

 그리고 계속 저에게도 질문이 있는지 물어봤습니다. 개인적으로 궁금한 게 많아서 3-4개 질문을 했습니다. 그 외에도 질문이 아니라 하고 싶은 주장(전략)이 있는데 해도 되냐고 물어보니 그렇게 하라고 했습니다. 그 전략의 내용은 되게 엉뚱하여  제 주변에 이 얘기를 꺼냈을 땐 무시당하기(+된다고 해도 책임 소재로 불가능하니 생각도 말라) 쉬운 내용이었는데요. 여기서 굉장히 놀랬습니다. 진지하게 어떻게, 왜 그렇게 생각하는지 상세하게 여쭤봤거든요. 

 

 그런 내용들이 오가다 '그 밖에 우리가 KBO리그에 대해 알아야 될 내용이 있는가?'라고 물어봤습니다. 이때 학폭이란 범죄 개념이 있고, 국제대회 관련 출전 여부와 연관이 되어 있다고 얘기를 꺼내니 굉장히 관심을 가졌습니다.

 

 저 외에도 능력을 갖춘 많은 한국인들이 도전하고 있어서 그런데 일부 내용과 과정을 공유해도 되냐고 물어보니 흔쾌히 승낙했습니다. 다시 한 번 감사의 인사를 드리며.


 특이했던 건 소통이 원활하지(영어 회화 부족 + 네트워킹 오류) 않을 땐 채팅으로 남겨서 진행도 하기도 했고요. 제가 못 들어서 다시 말해달라고 여러 번 말한 적도 많았는데요. 소통이 잘 안되면 탈락시키고 넘어가는 게 아니라 어떻게든 의견을 경청하기 위한 모습이 보였습니다.  

 

그리고 당연하겠지만(?) 나이, 결혼 유무, 가족관계 회사를 그만 둔 이유 등에 대해선 일체 물어보지 않았습니다.

 

시간은 정확하게 55분 흘렀습니다. 
영어도 잘 못하는 제겐 아주 진귀한 경험이었습니다.

 

 

 

WBC 1회 때 슬로건이 떠오른 하루였습니다.

'Baseball Spoken Here (야구가 공용어 입니다)'

 

https://contents.diegobaseball.com/

 

디에고베이스볼

세이버메트릭스 유치원

contents.diegobaseball.com

 

 

 

+ Recent posts