EpsonのGPS付き心拍計(脈拍計)「SF-810」を使い始めました。今まで使っていたSportTracks3.1で記録を管理しようとしましたが、心拍がうまく反映できませんでした。そのため、GPXファイルを修正して対応しました。
今回は、とてもマニアックな記事です。
SF-810のGPXの心拍数が、SportTracks3.1に反映されない
EpsonのSF-810Bは、胸ベルトなしで心拍数が計測できる、便利なGPS付き脈拍計です。
電池も20時間もつので、ウルトララマラソンに最適です。
SF-810は、エプソンの「NeoRun」というサイトを経由してGPXデータをエクスポートできます。
これを、普段使っているSportTracksというソフトにインポートしたのですが、心拍数が反映されません。
NeoRunでは、GPXをエクスポートする時に、出力するGPXに心拍情報を含めるか聞いてきます。「ON」を選択してGPXファイルを作っても、SportTracksでは心拍数が読み込めませんでした。
SportTracks3.1のPluginには、Epsonの品揃えがない
SportTracks3.1には、豊富なプラグインがあります。私がずっと使っていたGlobalsat社の「GH-625XT」という、マイナーなGPS付き心拍計用のプラグインもありました。
でも、EpsonのSF-810のプラグインは有りません。そのため、どうしてもGPXファイルを経由してSportTracksに読み込ませる必要があります。
今後はNeoRunで管理してもいいけれど‥
せっかく心拍数(正確には、腕で測っているので脈拍ですね)を計測しているのに、それが記録されないのはもったいないです。今後はずっとNeoRunを使うと言う手もありますが、今までのデータが別アプリだと面倒です。
また、NeoRunに他のデバイスで計測したGPXファイルをインポートする方法が見つかりません。今後も、別のデバイスでランの記録を取ることも有るでしょう。その時には別アプリで見るのは面倒です。
SF-810のGPXファイルには、心拍数が記録されている
エクスポートされたGPXファイルを見てみると、しっかり心拍数が記録されています。
こんな感じです↓
<extensions>
<gpxdata:hr>91</gpxdata:hr>
</extensions>
そして、gpxdataという名前空間が、エプソンで定義されています。
xmlns:gpxdata="https://go-wellness.epson.com/neo-run/GPX/1/0"
ですが、SportTracksにとっては、これが理解できないのかもしれません。
エプソンのGPXファイルを、ガーミンのGPXファイルに合わせる:sed編
GPSといえばガーミン、というくらいメジャーなガーミン。SportTracks3.1でも、当然ながらガーミンからデータを読めるはずです。
ガーミンのGPXファイルを見てみる
EpsonからエクスポートしたGPXファイルの形式を、ガーミンからエクスポートした様に見せかければOKのはずです。
でも、ガーミンを持っていないのでファイル形式が判りません。ガーミンから出力したGPXファイルの見本がないかなあ、と探していたら、以下にありました。
https://getsatisfaction.com/sportstracking/topics/heart_rate_import_from_gpx_file
心拍が記録されている部分は、以下のように書いてあります。
<extensions>
<gpxtpx:TrackPointExtension>
<gpxtpx:hr>91</gpxtpx:hr>
</gpxtpx:TrackPointExtension>
</extensions>
これに合わせていけばOKです。
ガーミンとエプソンのGPXファイルの違いは、どこ?
2つのファイルを見比べると、GarminのGPXと、EpsonのGPXの違いは、以下のとおりです。
- ガーミンは、「gpxtpx」という名前空間になっていて、それがTrackPointExtensionに含まれている
- それに伴い、名前空間の宣言も変わっている
エプソンのGPXファイルの心拍部分をガーミンに合わせるスクリプト
違いがわかりましたので、それを合わせればOK、のはずです。でも、GPXファイルの中の心拍数が記録された箇所は膨大です。2秒単位の記録で1時間走ると、60*60/2=1800個の心拍数の記録があります。これを全部書き換えないといけません。
人手では無理なので、機械に任せることにします。
超マニアックになりますが、sedというストリームエディタを持っている人であれば、以下をスクリプトとして突っ込めばOKだと思います。
s/<gpxdata:hr>/<gpxtpx:TrackPointExtension><gpxtpx:hr>/g
s/<\/gpxdata:hr>/<\/gpxtpx:hr><\/gpxtpx:TrackPointExtension>/g
s/^<gpx .*/<gpx xmlns:gpxtpx="http:\/\/www.garmin.com\/xmlschemas\/TrackPointExtension\/v1" xmlns="http:\/\/www.topografix.com\/GPX\/1\/1" version="1.1" creator="NeoRun2G">/
Windows用のsedは、以下にありました。
http://gnuwin32.sourceforge.net/packages/sed.htm
なぜエプソンが独自の名前空間を作ったのか、よくわかりません。デファクトスタンダードであろう、ガーミンに合わせれば良いのに、と思うのですが、著作権とかの問題があるのでしょうか??
おまけ:sports-trackerでは、EPSONのGPXファイルを直接読めた
スマホで計測するときは、私はsports-trackerのアプリを使っています。
EPSON SF-810の心拍数付きGPXデータをsports-trackerにインポートすると、無事に心拍数が表示されました。
今後は、sports-trackerで一元管理するか、とも思いますが、グラフがちょっと見づらいのがいまいちです。また、データもクラウド管理なので、ちょっと不安です。
課題:Epson SF-810で計測したストライドやピッチは、どうする?
Epson SF-810で計測したデータをNeoRunにアップロードすると、時間と距離(ペース)と心拍数だけでなく、以下も計測されています。
- ピッチ
- ストライド
- 歩数
- カロリー
これらは、NeoRunからエクスポートされるGPXファイルに、そもそも入っていません。
でも、NeoRunからバックアップとして出力できるCSVファイルには、入っています。なんとか一元管理したいですね。
まとめ
EpsonのSF-810から出力されるGPXファイルは、少し書き換えればガーミンと同様になり、SportTracks3.1に心拍数が読み込めるようになりました。めでたしめでたし。
(追伸)
やっぱり、多くの人が使っている、ガーミンの920XTJを買えばよかったかなあ。。