概要
コンポーネントがSRAMのAXSになり、完全ワイヤレスになりました。

SHIMANOではワイヤレスモジュールを取り付けないとANT+でギア情報を送信できませんが、SRAMは元からフルワイヤレスなのでANT+でギア情報が送信されています。
このギア情報を表示してみます。
問題
Garmin Edge 530でギア情報を表示できます。
ANT+ではギアのポジションが配信されています。

そのギアポジションにおける歯数がいくつかなのかは受信側で設定する必要があります。
Garmin Edge 530の設定画面で、ポジションごとの歯数を設定できるようになっています。ある程度メジャーなスプロケはプリセットされているので選択するだけで良いのですがSRAM Force AXSはフロントチェーンリング、リアスプロケの歯数を減らすことによって軽量化を図っています。よって、プリセットが存在していなかったので手動で各ポジションの歯数を入力していきました。
それによって、上記の写真で表示されているギア比が正確に表示されれるようになります。と同時に、下に表示されているギアコンボの値も正しくなります。
のちのち、このギアポジションをグラフィカルに表示して分析などに利用したいなと思ってGarmin ConnectやStravaを見てみましたが見当たりませんでした。
Garmin Edge 530のトレーニング済みのデータにはシフトチェンジした回数が表示されています。データとしては残っているようです。

シフト情報はどこに保存されているのか?
Garmin Connectのアクティビティ詳細で、ギアマーククリックしてExportを押すと.fitファイルをダウンロードできます。このファイルの中に記録されています。
.fitファイルはバイナリデータなのでテキストエディタで簡単に処理できません。
なので、今回はPythonスクリプトを書いてデータを抽出してみます。
データの確認
まずは、こんな感じのスクリプトを書いて、.fitファイルにギア情報が記録されているかチェックしてみます。
以下のような表示がされれば.fitファイルにギア情報が含まれています。
eventという型に入っているようです。event型はシフトチェンジをしたタイミングで発行されるデータのようです。
Searching for gear-related fields…
Found 7 gear-related fields:
- event.front_gear_num
- event.front_gear
- event.rear_gear_num
- event.rear_gear
- event.gear_change_data
- segment_lap.front_gear_shift_count
- segment_lap.rear_gear_shift_count
変数名から察するに、
- フロントギアの数
- フロントギアのポジション
- リアギアの数
- リアギアのポジション
- 時間(秒)
- フロントギアのシフト回数(ラップごと)
- リアギアのシフト回数(ラップごと)
入っているデータの例
{
'event': 'rear_gear_change'
'data': 16717829,
'gear_change_data':16717829, ## Sub Field of data when event == 'rear_gear_change'
'front_gear': 2,
'front_gear_num': 53,
'rear_gear': 11,
'rear_gear_num': 1,
}
分析
.fitファイルを読み込んで、グラフ化してみます。
Pythonスクリプトは以下です。
中間データとしてCSVファイルを出力します。
CSVファイルの例

上記のCSVをグラフ化すると以下のようになります。
一番上のグラフがギアのポジション、2つ目がギア比を出力してみたところです。

.fitファイルにはギアのポジションデータしか記録されていないため、ポジションに対しての歯数は自分で定義しておく必要があります。
今回はPythonスクリプトの中でハードコードしてあります。
今回のグラフは、家から皇居に行き、4周して返ってくるアクティビティです。行きと帰りの道が違うので高度(下から2番目)のデータは対象ではないです。
皇居は信号が多いのでstop and goばかりです。1周回で3回は信号に引っかかってるみたいです。
考察
このグラフから何がわかるかといったら、あんまりわからないような気はします。
タイムトライアルのときに変化を見ると役立つのかもしれません。






















コメント