Open4

Google FitとiOS ヘルスケアの歩数を同時に取って比較

okuokuokuoku

とりあえず 6km と 30km 歩いて比較してみた。どちらも徒歩だけでなくサイクリングやランニングに対応しているがiOSは単体ではサイクリングは取れないようだ。

6.6km

30.0km

okuokuokuoku

比較

Android(Pixel 5a)の方がiOS(iPhone SE2)より多めに出てるな。。どっちの方が正確なのかは更に歩数計を追加して多数決するしか無いのか。。?

それぞれ、

  • 6km: 8532 vs. 8714 = 102.1 %
  • 30km: 37864 vs. 39412 = 104.0 %

差が10%未満ということは常識的な精度(±10%程度)は出ているように見える。

基本的にどちらの歩数計もリアルタイムにカウントが増えることはなく、 行動認識 → ウォーキングと認識した場合に期間中の歩数を追加 という挙動になっているため多少のタイムラグが出る。

このラグは精度のために必要と説明されている:

歩行検出機能と比較して、歩数計のレイテンシは高くなる(最大 10 秒)場合があります。このレイテンシのおかげで、センサーの精度が向上しました。丸 1 日の測定後の歩数は、実際の歩数の 10% 以内の誤差にとどまります。歩行検出機能と歩数計はどちらも、ユーザーが歩いている、走っている、階段を歩いて昇っていることを検出します。ユーザーが自転車で移動している、運転している、または他の車両内にいる場合にはトリガーしないようにする必要があります。

行動認識

どちらも行動認識には位置情報を活用しているが、位置情報とGPSトラックは必ずしも一致しない(= GPS航跡を記録して加算してもウォーキング距離にならず、20%以上の差がある)ため、ウォーキング距離は歩数と身長から概算した歩幅、または加速度センサの積算だろう。

より正確に推定されるようにするには、位置情報とアクティビティのトラッキングを有効にします。

okuokuokuoku

デバイスの変遷

コンピュータ歩数計のアイデアは相当に昔からある。単体製品での てくてくエンジェル → ポケットピカチュウ の流れや、その流れを組む任天堂の 生活リズム計 → ポケウォーカー → フィットメーター → 3DS内蔵の歩数計があった。

そうですね。最近の歩数計には、
加速度センサーやショックセンサーが採用されていることが多いのですが、
「ポケットピカチュウ」の時代は、機械仕掛けになっていて、
...
どんな向きで持ち歩いても歩数がカウントされるようにするには、
2軸の加速度センサーや、2個のショックセンサーを使う必要があります。
...
今回は電池寿命のことも考えて、消費電力の少ないショックセンサーで
開発するという方針を決めました。

現在ではAndroidが歩行検出や歩数カウントを標準化しているため、センサチップ側にそれらが装備されていることがある。例えば、BOSCH BMI160やSTのLSM6DSO(X)はAndroidの要件を満たす歩行検出/カウント機能をチップレベルで備え、ホスト側でデータ処理をしなくても歩数計を実現できる。

https://www.switch-science.com/catalog/7182/

https://www.switch-science.com/catalog/6448/

例えば↓のBNO055ではBOSCHの製品で9軸センサを構成できるが、歩数計は内蔵していない。

https://www.switch-science.com/catalog/5511/

Invensense(TDKが買収して傘下に置いている)のICM-20948は専用のプロセッサを内蔵して行動認識までカバーしているが、ライブラリとして組込むにはファームウェアのバイナリblobを再配布する必要がある。

https://www.switch-science.com/catalog/5854/

https://github.com/isouriadakis/Arduino_ICM20948_DMP_Full-Function

フィットメーターやiOSデバイスは気圧計を搭載し、上下動を検出できるようにしている。 ...気圧でわかるもんなんだろうか。。

okuokuokuoku

更に24.7 km

Google fit: 32840 vs. iOS: 32498 = 101.0 % ほぼ同じだった。Androidの方がカウントが大きい傾向はかわらずだけど、たぶんiOSの方がカウント開始が保守的なんだろう。