태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Welcome to youlsa's home!



Zwift라는 게임이 있습니다. 일반 로라나 스마트 로라에 자전거를 올려서 페달을 밟으면 전 세계인들과 경쟁하게 되는 온라인 자전거 게임입니다. 작년부터 큰 인기를 끌고 있어서 한동안 와후 키커라는 비싼 스마트 로라를 사서 꽤 즐겁게 즐겼었는데요, 로라를 집안 사정으로 팔아버리게 되면서 마땅히 Zwift를 즐길 방법이 없어졌습니다.


집안을 둘러봐도 그나마 제일 비슷하게 생긴게 아내가 다이어트를 위해 얻어온 헬스 자전거, 숀리 엑스 바이크라고 하는 이름을 가진 십몇만원 한다는 실내용 자전거입니다. 하지만, 아무런 센서류가 없기 때문에 이대로는 Zwift 플레이가 불가능합니다.






때마침, 올해 시즌에 쓰려고 새로 산 페달형 파워미터인 가민 벡터2가 도착했습니다. 파워값만 제대로 나오면 Zwift 플레이에 아무 문제가 없다는데 착안하여 일단 이걸 끼워서 Zwift를 돌려봤습니다. 잘 됩니다. 싸이클에 비해 페달이 너무 앞쪽에 있어 힘 싣기 어렵고 그런 어려움들은 좀 있지만, 어쨌든 Zwift를 즐길 수 있습니다. ㅋㅋㅋ






스마트 로라와 같이 지형에 따라 자동으로 부하를 넣었다 뺐다 하지는 못하지만, 까짓거 손으로 조절하면 됩니다. 업힐 만나면 단수를 올려주고, 평지 만나면 내려주고 등등... ^^








전체적으로 할만 합니다만.... 십몇만원짜리 자전거에 백몇만원짜리 파워미터라니 뭔가 너무 언밸런스합니다.


그래서, 여러가지 방법을 생각을 해봤는데요, 자전거 센서들 중에 아무래도 가장 싼 축에 속하는 케이던스 센서나 속도 센서를 이용해서 파워값을 연산해서 얻어내어 Zwift 클라이언트에 쏴주면 파워미터가 없어도 별 상관 없이 게임을 즐길 수 있을 것 같습니다. 실제로도 Zwift에서도 인증 받은 로라나 트레이너 기기들은 속도 센서만 붙여도 vPower라고 하는 가상 파워 계산 루틴을 통해 게임을 즐길 수 있게 해줍니다.


물론 비싸거나 유명한 기종들만 대상이고, 이런 숀리 엑스 바이크 같은 변방의 헬스 바이크를 등록해줄리는 만무합니다.




그래서, 일단 이 실내 자전거의 부하 그래프를 얻어보기로 했습니다. 속도 센서와 파워미터를 모두 자전거에 달고 열심히 페달을 밟아 (속도 : 파워) 데이타를 얻어냅니다. 아주 느린 속도에서부터 아주 빠른 속도까지 대략 10초 정도 간격으로 LAP을 나눠가며 자전거를 돌립니다. 가장 많이 쓰이는 파워 구간인 100W~400W 까지 모두 고르게 나오도록 하려면 자전거의 부하 스위치를 8에 두어야 하네요. (10단 중 8단이니 꽤 힘듭니다만, 원래 자전거는 고통으로 타는겁니다^^)









데이타를 정렬해서 그래프로 그려봅니다. 가로가 속도(mi/h), 세로가 파워(W)입니다. 부하 그래프를 구할 때에는 이상하게들 km단위가 아닌 마일 단위를 쓰네요. 그래서 저도 역시 한번 그렇게 해봅니다.


그래프의 모양새는 아주 정밀하지는 않지만 어느 정도 괜찮은 부하 그래프를 얻을 수 있을 것처럼 생겼습니다.


요즘 딥 러닝이 핫하다고 하니 한창 이야기들이 많은 Tensorflow를 써서 간단하게 선형 회귀 분석을 해봅니다. 아래의 식을 이용합니다. x가 속도, y는 파워.


y = a*x + W



분석하니 아래와 같은 값들이 나옵니다.

W = -88.4703598, a = 13.56646538, LOSS=594.065


그래프로 그려보면 아래와 같습니다. 괜찮네요, Tensorflow.







사실, 위의 그래프 정도만 해도 쓸만은 한데, 한가지 눈에 띄는 점은 bias 값이 지나치게 크다는 겁니다. (여기서는 W) 이대로 쓰면 페달을 돌리지 않아도 마이너스 파워가 나오는 결과를 초래하게 됩니다.


그래서, 0점의 데이타 (0mi/h : 0W) 를 추가해서 그래프가 0점을 지나도록 해줘서 어떤 형태의 그래프를 얻어야 하는지 한번 살펴봅니다. 대략 아래와 같은 모양이 나와야 할 것 갈습니다.


가만 보니 뭔가 지수함수적으로 생겼으니 수식을 아래와 같이 바꿔줍니다.


y = W + a*x + b*x^2 + c*x^3



Loss 함수를 그래프의 값과 실제의 값과의 차이분들을 모아 그 면적을 구하도록 해서 해당 값을 손실 값으로 간주하도록 하고, 이 손실이 최대한 적은 쪽으로 학습을 하도록 합니다. 아주 세밀세밀하게...


소스는 아래와 같습니다.


[ 소스 보기 ]




Tensorflow에게 10만회 정도 학습을 시키니 어느 정도 쓸만한 괜찮은 인자들을 뱉어냅니다.


아래 화면에 찍힌 값들을 이용해 최종 결정된 수식은..

y = 0.00259981 + 0.03980412 * x + 0.46587375 * x^2 + (-0.00238126) * x^3


이젠 속도만 알면 파워값을 얻을 수 있습니다!!!!!  ^^






참고로, 아래의 그래프들은 학습 횟수에 따라 그래프의 모양을 찾아가는 과정입니다. 좌상단으로부터 책 읽는 순서로 각각 1회, 2만회, 4만회, 6만회, 8만회, 10만회째에 해당하는 그래프입니다. 실용적으로는 2만회 정도만 해도 어느 정도 충분한 것 같습니다.





부하 그래프를 얻어서 속도에 따른 파워값을 계산해낼 수 있게 되었습니다. 이제 이렇게 얻은 파워값을 어떻게 Zwift한테 쏘아줄지 고민해보도록 하겠습니다. 지금까진 비교적 손쉬웠는데 이제부터는 머리 아프네요.

Comment +2

  • 겨울이 되어서 헬스바이크로 즈위프트 할 방법이 없을까 찾아보다가, 제가 막연히 생각했던것을 구현하려는 글을 보니 감탄이 나옵니다. y = a*x + W 이 수식은 파워 구하는 공식인가요?

    • 그냥 부하-파워 그래프의 모양을 보고 가정해서 넣어본 공식입니다. 하지만 전 구간을 놓고 보면 그래프가 곡선이라 그 다음 공식으로 바꿔서 추정해봤습니다. y = W + a*x + b*x^2 + c*x^3



행사용(?) 카본 자전거에는 4iiii의 크랭크 부착형 파워미터를 사용하고 있습니다. 파워미터를 써보니 일정한 페이스를 뽑아내는 용도로 굉장히 효과가 좋습니다. 파워 테스트를 통해 FTP 파워 값을 구해놓고 나면 (저는 284W -_- ) 해당 파워값을 기준으로 파워미터를 보며 페이스를 유지하면 효율적인 라이딩이 가능해집니다. 그래서 평소 출퇴근 등에 타고 다니는 저렴이 철 자전거에도 파워미터를 달고 싶었었지만 비싼 가격때문에 어쩔 수가 없었습니다.


그러다가, Kickstarter에 뜬 $269짜리 PowerPod라는 파워미터 프로젝트를 보고 돈을 넣어서 12월에 제품을 받았습니다. (지금은 $299) 킥스타터에 올라온걸 보고 별 이름 없는 회사인 줄 알았더니 IBike Newton등을 만든 Velocomp라는 꽤 오래된 파워미터 회사의 제품입니다. 틴코프 삭소 등의 팀들이 이 회사의 파워미터를 사용한다고 합니다.


제품 공식 홈페이지는 => PowerPodSports.com

회사 공식 홈페이지는 => IBikeSports.com



다소 부실한 포장...



크랭크나 페달, 허브 등에 부착하는 기존의 파워미터들과는 달리 PowerPod는 핸들바에 부착합니다. 일반적인 파워미터들은 "라이더가 자전거에 가하는 힘"을 스트레인 게이지 등을 통해 측정해서 라이더의 파워값을 계산하게 되는데요, 이 PowerPOD는 "라이더가 자전거에 가하는 힘"을 제외한 나머지의 값들을 측정해서 파워값을 수학적으로 계산해냅니다.


가장 중요한 측정값은 역시 바람의 세기와 자전거의 속도입니다. 공압계와 가속 센서등을 이용해서 현재의 풍속을 계산, 라이더가 자전거에 가하는 기본적인 파워를 측정합니다. 당연히 뒷바람이 불면 전방에서 불어오는 바람의 세기가 줄고, 역풍이 불면 바람의 세기가 늘어나기 때문에 이를 고려해서 꽤 정확한 파워값을 뽑아냅니다.


그리고, 두번째 중요한 값은 자전거의 현재 기울기입니다. 매우 정밀한 기울기와 고도센서를 내장해서 초당 8백회의 계산을 통해 정확한 파워값을 계산해낸다고 합니다. 


이 파워미터의 가장 좋은 점은 일반적인 고프로 마운트를 이용한다는 점입니다. 다른 사람에게 빌려주거나 여러대의 자전거 사이를 왔다 갔다 하기도 좋습니다. 페어링 되는 센서의 종류에 따라 별도의 Profile을 자동으로 선택해주기도 합니다.


처음 부착을 하고 전원을 켜면 센서들을 페어링을 합니다. 속도 센서만 필수이고요, 케이던스 센서도 함께 하면 정밀도가 더 높아진다고 합니다. 심박계도 페어링 합니다만, 심박계의 값은 계산에 고려하기 위한 용도는 아니고 단순 기록용입니다.


센서 페어링이 끝나면 Calibrate를 합니다. 5분 정도 노란불이 깜빡이는 동안 대충 자전거를 타면 됩니다. 평지이건 오르막이건 그런건 별 상관 없다고 하고요. Calibrate를 하는 동안 가민을 통해 파워값을 보면 파워값 수치가 1부터 시작해서 100까지 순차적으로 올라가는게 보입니다. 아래의 그래프를 보면 초반에 파워값이 점진적으로 올라가는게 보입니다. 100까지 올라가고 나면 초록불이 켜지고 정상적인 파워값이 나오기 시작합니다. Calibrate는 처음 한번만 필요하다고 합니다. 다만, 파워미터의 설치 위치가 달라진 경우(특히 설치 각도가 달라진 경우) 등등에는 다시 자체 Calibrate에 돌입하기도 합니다. 역시 5분~10분 정도 걸립니다. 하지만, 그냥 같은 위치에 같은 각도로 달아놓으면 별다른 문제 없이 간편하게 사용이 가능합니다.


기존 파워미터와 비교해보니 파워값은 비슷하게 잘 나옵니다. 아래의 두번째 파워 그래프 참고... 겨울철이고 워낙 비루한 몸이라 값들이 좀 그렇지만 인터벌을 칠 때에나 오르막 올라가는 등의 상황에서 파워값의 범위가 어느 정도 기존에 알고 있던 값과 근사함을 느낄 수 있었습니다. (제가 기존에 쓰던 4iiii 파워미터와 WAHOO Kickr 스마트 롤러의 내장 파워미터와 비교한 경우에 한정한 직감적인 느낌입니다.) 자세한 비교는 제품 소개 페이지에 올라와 있는 SRM이나 Stages등 다른 파워미터들과의 비교 자료를 참고 바랍니다. (Newton에 대한 내용들인데 완전히 동일합니다.)

[타 파워미터와의 비교]


그 외에도 DCRainmaker의 블로그에의 사용기에서도 다른 파워미터들과 정밀 비교한 데이타를 볼 수 있습니다.

[DCRainmaker의 리뷰]






ANT+를 통해 가민으로 기록도 가능하지만, 자체 메모리가 있기 때문에 기기를 USB에 연결해서 Isaac 이라는 이름의 자체 프로그램을 이용하여 더 정밀한 분석이 가능합니다. 한가지 재미있는 점은, 아래의 그래프를 살펴보면 브레이크 잡은 시점, 타력 주행 하는 구간, 드래프팅 하는 구간 등등이 아주 정밀하게 자세히 나옵니다. 계산에 의해 이런게 가능할거라고는 상상하기 힘듭니다만, 어쨌든 아주 정확하게 집어냅니다.


프로그램을 써보면 알 수 있듯이 PowerPod 나오기 전에 나왔던 Newton과 모든 면에서 기능도 동일하고 조절 가능한 파라미터들도 똑같습니다. 아마도 Newton이 속도나 파워값등등등을 보여주는 가민 비슷한 싸이클링 컴퓨터를 내장하고 있었는데요, PowerPod에서는 그 부분을 떼어낸 것 같습니다. 그 외의 기능들이 동일한걸 보면요...


계산에 의해 파워값을 얻어내는 것이기 때문에 상식적으로 라이더와 자전거의 무게 등등의 값들도 중요한데요, 기본 그대로 놔둬도 그럭저럭 괜찮은 값을 뽑아줍니다만, 가능하면 Isaac 프로그램을 이용해서 설정을 해주는게 좋습니다. 디폴트로는 180cm/70kg 인가 뭐 그런 비슷한 값으로 설정되어 있습니다.



파워미터 내에 자체 메모리가 있어서 가민에서 기록하는 데이타 말고도 따로 나름의 기록을 합니다. 역시 Isaac 프로그램을 이용해서 각종 데이타들을 뽑아낼 수 있습니다. 그리고, 별도 비용이 들기는 하지만 PowerStroke라고 하는 기능을 구매하면 일반적인 파워/속도/심박/케이던스 이외에도 자전거의 자세와 라이딩 시의 요동 등등을 분석해주기도 합니다.


아래의 그림은 PowerStroke를 이용하여 라이딩 자세와 페달링의 불균형, 파워 손실 등을 보여주는 화면입니다. 일반적인 파워미터에는 없는 가속도계 등의 다양한 센서들 덕분에 페달링의 불균형이나 잘 알지 못했던 라이더의 버릇등등에 의해 생기는 손실들을 기록이 가능하고 라이딩 구간별/평균 동작 등등을 애니메이션으로 재현하며 보여줍니다. 초록색 원이 이상적인 페달링 파워 곡선, 초록 네모가 허용 손실 영역(2W 손실 이내)입니다. 파란색이 왼발, 빨간색이 오른발에 의한 모션과 데이타들 입니다.


제 경우에는 아래와 같이  앞-뒤 요동은 49%이고 좌-우 요동이 51%. 자전거가 좌측으로 더 많이 기울어짐을 알 수 있습니다. 전체 라이딩에 걸쳐 불필요한 움직임의 합이 187m였고, 37초의 시간을 손해봤으며, 총 손실 파워는 6W. 원래 좀 자전거를 좌우로 많이 흔들며 타는 타입이긴 한데 이렇게 불균형한 모습인지는 몰랐네요. 작년 이맘때 오른 발목이 부러졌던 영향이 있는 것 아닌가 싶습니다. 라이딩 마다 데이타를 기록해서 자세 교정을 해볼 생각입니다.


고정 로라 훈련을 할 때에도 PowerPod 파워미터를 사용 가능합니다만, 안써봤습니다. 대충 살펴보니 롤러의 종류를 선택하면 해당 롤러의 파워 곡선에 의해 속도로부터 파워값을 얻어내어 가민에 쏘아 주는 식인 것 같습니다.



제가 느낀 결정적인 단점이 두가지 있습니다.

첫째는, 일반적인 도로 환경이 아닌 임도나 코블스톤 같은 길에서는 제대로 된 파워값이 나오지 않는다는 것입니다. 오직 일반 도로나 자전거 도로를 타는 경우에만 사용 가능하다고 볼 수 있죠. 출퇴근시 파워 측정이 주된 목적인 제 경우에는 별 문제 아닙니다만, MTB 라이더들에게는 큰 단점일 수도 있겠습니다.


두번째 단점은, 겨울철에는 핸들바에 커다란 바미트를 달아 손 시렵지 않게 지내고 있는데요, 이게 파워미터로 가는 바람의 측풍 성분을 다소 가려주기 때문에 파워값이 적게 나옵니다. 다리로 느낀건 200W정도의 느낌인데 140W 나오고 이런 식입니다. 물론 바미트를 제거하면 파워값이 다시 잘 나옵니다만... 기기를 핸들바에 달지 말고 K-Edge 등의 아웃 프론트 마운트를 사용하여 앞쪽으로 옮겨 달면 한결 낫다고 합니다만 실제 해보지는 않았습니다.




한가지 참고할 점은, 제가 구매한 버전은 ANT+ 전용 버전인데 근시일 내에 블루투스/ANT+ 동시 지원 버전이 같은 가격으로 나온다고 합니다. 그러면 휴대폰도 이용할 수 있겠지요. 싼 가격에 실용적인 파워미터를 찾는 분들은 이 버전을 구매하시면 괜찮을 것 같습니다.





자전거 타기 위해 충전해야만 하는 기기들이 늘어갑니다. 가민, 스피커, 앞카메라, 뒷카메라, 라이트, 파워미터.. -_-






추가사항) Power POD의 파워값이 나오는 타이밍이 다른 파워미터들과 뭔가 조금 다릅니다. 처음엔 좀 의아하게 생각했었는데요, Newton에서부터 탑재된 Dynamic Power Smoothing이라는 기능 때문에 그렇습니다. Isaac에서 아래와 같은 설정 화면에서 조절이 가능합니다.




보통 파워값은 페달을 밟을 때마다 요동을 치기 마련입니다. 값이 굉장히 빨리 바뀌어서 현재의 파워가 어느 정도인지 파악이 힘들죠. 그래서 보통 가민에서 3초 평균 파워, 10초 평균파워, 30초 평균 파워등을 설정해놓고 씁니다. 3초 평균 파워는 반응성이 좋기 때문에 스프린트 등의 상황에서 페이스를 볼 때 좋고요, 긴 업힐 오를 때나 장거리를 달릴 때 제 경우엔 10초 파워가 실용적이었습니다. 이 각각의 파워값이 해당 용도 이외에는 단점이 있습니다. 10초 파워는 반응성이 느립니다. 인터벌을 치거나 스프린트 상황에서는 값이 바뀌려면 한참 걸리고, 심지어 파워값에 반영되기도 전에 상황이 끝나 버리기도 합니다.


그래서 Newton에 추가된 기능이 Dynamic Power Smoothing인데, 긴 호흡의 평균값도 유지하면서 순간적으로 일어나는 인터벌/스프린트나 페달링을 정지하는 등의 급속한 파워 변화에도 능동적으로 대응하도록 해서빠르게 반응하도록 하는 기능입니다.


따라서, PowerPod를 디폴트 상태로 두었을 때에는 가민에서 3초 파워나 그런 필드를 쓰지 않고 그냥 "POWER" 필드를 보도록 설정해도 장거리 페이싱도 편안하고 스프린트 등에 반응성도 좋은 편안한 파워값을 볼 수 있습니다. 가민에 굳이 3초 파워/10초 파워 같은 필드를 올려서 쓸 필요 없습니다. 물론, 위 설정의 Power Smoothing 시간을 0으로 바꾸어 이 기능을 끄고 가민에 3초/10초 파워를 쓰셔도 됩니다만, 저는 굳이 그럴 필요를 못느껴서 그냥 POWER 필드 하나만 올려서 쓰고 있습니다.


아래의 영상을 보시면 쉽게 이해가 되실 겁니다.







Comment +2



날 좋은 가을이라 여러 지인들과 나들이를 가거나 스포츠 대회 같은 곳에 참가하게 되는 경우가 많습니다. 행사 도중에는 모두들 흥겨운 마음에 즐거움이 가득한데요, 정작 문제는 행사를 마치고 난 후에 찾아오죠. 수많은 사진들을 어떻게 처리할 건지... -_-


두세명이라면 카톡에 서로 사진 올려서 공유하거나 하면 되는데 5명 정도만 넘어도, 심지어 10여명을 넘어 수십명이 되어버리거나 하면 서로 폰으로 찍어대는 사진의 갯수도 수백~수천장 등이 되기도 하는등 어마어마하고 이걸 공유할 방법이 마땅치 않습니다. 공유 폴더나 뭐 그런 방법으로 해결하기도 하지만... 어르신이 끼어 있거나 한 경우에는 사용법 알려드리기도 그렇고 참 난감하죠.



Pottle이라는 앱에서 이런 문제들을 손쉽게 해결해줍니다. 이벤트에 대한 갤러리를 만들어 놓고 함께 참여한 사람들을 초대하면 서로의 폰으로 이벤트 기간동안 찍은 사진들이 자동으로 공유된다는 원리입니다. 찍는 족족 바로 공유해주죠.





지난달에 강릉에서 열렸던 2015 대관령 국제 힐클라임 대회에 같은 회사 사람들 9명이 참여하게 되는 전대미문의 사건이 있었습니다. 항상 혼자서만 갔었는데... 아뭏튼, 9명이 함께 가게 되니 혼자 갔을때에는 신경도 쓰지 않았던 사진 촬영과 공유의 문제가 생깁니다.


아무나 사진을 마구 찍어대니 도대체 내가 누구의 폰 카메라의 어떤 앵글에 찍혔는지 전혀 알수가 없네요. 그래서, 시험삼아 대회 기간동안 각자 찍은 사진들을 찍는 족족 실시간으로 자동 공유해보니 전혀 의외의 재미있는 사진들, 예컨대 사진의 주 피사체의 반대쪽 구석에 내가 찌그러져 있는 사진이라던지 뭐 그런 재미있는 사진들을 여러장 건졌습니다. 그런 사진들은 보통 서로 보내줄때 빼고 보내주거나 하죠. 포틀 덕분에 건진 이런 찌끄러기(?) 사진들 보는 재미가 의외로 쏠쏠합니다.




포틀의 다운로드는 구글 플레이 스토어에서 "포틀" 검색하거나 아래 링크...

http://bit.ly/1OBWQMN




그나저나, 이번 대관령 힐클라임 대회 기록은 57분 33초... -_- 재작년에 비해 10분, 작년에 비해 3분 정도 단축은 했지만, 라이딩 캠 영상을 여러차례 보며 분석을 해보니, 물 마시거나 하는 잡동작들에 소요되는 시간들을 최적화해도 내년에 55분보다 빨라지는건 불가능 하다는 결론을 내렸습니다. 이젠 진짜 체중을 줄일 차례... 하지만, 체중 줄이면 당장 파워가 따라 줄어서... 걱정입니다.







그러나, 이러한 냉철한 분석과 반성과는 달리 대회 끝나자 마자 정작 처음 했던 일은 "가민 1000이 무거워서 이렇게 늦게 달린게 분명하니 팔아버리자"며 520 주문한 것... -_-


아아.. 영롱하고 가벼운(!) 520....







지름 인증 한가지 더... ^^


크랭크를 직접 보내 장착해오는 방식으로 판매하는 4iiii의 PRECISION 파워미터... 파워미터가 있으면 오르막도 막 사뿐사뿐 오르고 장거리도 페이스 흐트러짐 없이 갈 수 있다는 몇몇 약팔이 분들에 속아서 결국 파워미터를 쓰게 되었습니다. 최근에 4iiii의 파워미터를 달아서 라이딩할 때마다 파워측정을 해보고 있는데요, FTP(Funtional Threshold Power: 1시간 지속 파워?)가 대략 284W 정도가 되네요. 더 빡세게 테스트를 해보면 약간 더 높은 수치가 나올거 같기는 하지만... 어쨌든, 페이싱 할 때 기준점을 확실하게 잡아주니 파워미터 여러모로 참 괜찮은거 같습니다.


희안한건, 몸무게를 잠시 2kg 줄여봤는데, 대번에 파워가 20W 정도 줄어서 깜짝 놀랐습니다. 이건 뭐 몸이 살 안빼고 자전거 타는 법을 익혔나봅니다. -_-;;;


아래 사진이 4iiii의 PRECISION 파워미터... 파워미터 사용기는 조금 더 사용해본 다음에...




Comment +0

티스토리 툴바