ギア比とケイデンスを与えたときに速度を求めるスクリプト

front_gears = [34, 50]
rear_gears = [12,13,14,15,17,19,21,23,25]

cadence = 70.0 #rpm
tire = 2096 #mm

'''From Polar manual'''
TIRES = {
 '30-559 26x1.26': 1953,
 '35-559 26x1.5': 1985,
 '44-559 26x1.75': 2030,
 '47-559 26x1.95': 2050,
 '47-559 26x2.0': 2055,
 '47-559 26x2.1': 2068,
 '622-20 26x1 1/8 Tubular': 1970,
 '622-23 650x20C': 1952,
 '622-25 700x20C': 2086,
 '622-25 700x23C': 2096,
 '622-25 700x25C': 2105,
 '622-25 700C Tubular': 2130,
 '622-25 28(700B)': 2105,
}

def calc(cadence):
  print 'cadence', cadence
  front_rpm = cadence
  for front in front_gears:
    front_Tm = front_rpm * front
    rear_Tm = front_Tm
    print 'front=%dT'%(front,)
    for rear in rear_gears:
      print 'rear=%dT'%(rear,),
    print
  
    for rear in rear_gears:
      rear_rpm = rear_Tm / rear
      print '%2.5f'%(rear_rpm * tire * 60 / 1000 /1000,),
    print 

if __name__=='__main__':
  import sys
  calc(float(sys.argv[1]))

実行結果

[nori@shinano]~/Desktop/study/python% python bike.py 60.0
front=34T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
24.94240 23.02375 21.37920 19.95392 17.60640 15.75309 14.25280 13.01343 11.97235
front=50T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
36.68000 33.85846 31.44000 29.34400 25.89176 23.16632 20.96000 19.13739 17.60640
[nori@shinano]~/Desktop/study/python% python bike.py 70.0 
cadence 70.0
front=34T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
24.94240 23.02375 21.37920 19.95392 17.60640 15.75309 14.25280 13.01343 11.97235
front=50T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
36.68000 33.85846 31.44000 29.34400 25.89176 23.16632 20.96000 19.13739 17.60640
[nori@shinano]~/Desktop/study/python% python bike.py 80.0
cadence 80.0
front=34T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
28.50560 26.31286 24.43337 22.80448 20.12160 18.00354 16.28891 14.87249 13.68269
front=50T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
41.92000 38.69538 35.93143 33.53600 29.59059 26.47579 23.95429 21.87130 20.12160
[nori@shinano]~/Desktop/study/python% python bike.py 90.0
cadence 90.0
front=34T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
32.06880 29.60197 27.48754 25.65504 22.63680 20.25398 18.32503 16.73155 15.39302
front=50T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
47.16000 43.53231 40.42286 37.72800 33.28941 29.78526 26.94857 24.60522 22.63680
[nori@shinano]~/Desktop/study/python% python bike.py 100.0
cadence 100.0
front=34T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
35.63200 32.89108 30.54171 28.50560 25.15200 22.50442 20.36114 18.59061 17.10336
front=50T
rear=12T rear=13T rear=14T rear=15T rear=17T rear=19T rear=21T rear=23T rear=25T
52.40000 48.36923 44.91429 41.92000 36.98824 33.09474 29.94286 27.33913 25.15200

cadence/トルクのプロットもやりたいが、トルクを入手する方法が無い。

プロ用ならあるようです。
http://www.bluewych.co.jp/powermeter.html
しかしお値段が¥294,000〜479,000(!)、なんとチャリ本体が買えてしまいます。

iBikeというものもあるらしい。こちらはお手頃(?)
http://www.geocities.co.jp/SilkRoad/3119/i_bike/index.html

本国サポートとのやりとりで強調されていたのですが、毎回走るたびに、以下の二つの調整をした方がいいようです。サポート担当氏によると、「iBkeは勾配と風速、この二つの変数を使ってパワーを計算している。だからこの二つのデータの基礎になる二つのセンサーは毎回調整をした方がいい」とのことでした。(081011追加)

トルクを直接測るのではなくて、仕事を測定してそこから求めているのですな。

クランクやギア自体に歪み計を仕込めば小さくなりそうな気もしますが。そんなことできる力をもっているのはshimanoとかだろうなぁ。

flashでがんばっているものがある。
http://www.electricsheep.co.jp/hc/index.html

出力体重比・・・ロケットの比推力(正確には推力重量比)みたい。

updownが無い経路で停止しなければ、投入されるエネルギーはすべて空気抵抗を打ち破るために使われることになるので計算は楽だ。
減速加速があると、減速の分ブレーキが運動エネルギーを熱に変えている。加速は投入エネルギーは運動エネルギーにかわっている。
街乗りだと発進回数を数えないとダメだろうなぁ。