歩数計はトレンチコートを着た三つの部品です。加速度計が動きを数字の並びに変えます。フィルターが、その数字のどれが信号で、どれが世界があなたを押しているだけなのかを決めます。検出器がきれいにされた並びの中のピークを数え、その数字をアプリに渡し、アプリがどう見せるかを決めます。それぞれの部品が「何が一歩か」について独自の意見を持っており、その意見が一致するのはほとんどの場合にすぎません。
このシステムが実際にやっていること
センサーは三軸の加速度を一秒に何度も報告します。歩行は周期的な隆起を生みます——かかとの接地、蹴り出し、脚の振り——それが重力や、そのとき体がしているほかのことの上に乗っています。フィルターの仕事は、その周期的な隆起をそれ以外から分離することです。実装によっては、典型的な歩行周波数、およそ毎秒一〜三歩に合わせたバンドパスフィルターを使います。移動平均、ハイパス段、あるいは小さな学習モデルを使うものもあります。次に検出器が適応的なしきい値を超えるピークを探し、一歩が二度数えられないように不応期を強制し、カウンターを一つ増やします。
この流れは整然と聞こえます。そうではありません。しきい値は動かさなければなりません。ジョギングとすり足では振幅が大きく異なり、固定したしきい値ではすり足を取りこぼすか、ジョギングを二重に数えるかのどちらかになります。不応期は、リンギングを抑えるのに十分長く、速いケイデンスを許すのに十分短くなければなりません。この連鎖の中のすべての定数は妥協であり、誤差はその妥協の中に住んでいます。
各層を順に見ていく
まずセンサーから。手首に装着した加速度計は、足音よりも腕の振りを多く見ているので、この信号は歩行そのものの測定ではなく歩行の代理です。ポケットや腰の位置は体の重心を見ており、歩をより直接的に追跡しますが、椅子をずらす動きや車の振動も拾います。センサー自体は正直です。変数なのは装着位置です。これは手首の光電容積脈波と同じ教訓です——ハードウェアは問題なく、論点は位置なのです。
次にフィルター。歩行周波数に合わせたバンドパスは、通過帯域より下のゆっくりしたすり足を弾き、通過帯域より上の速いスプリントも弾きます。これは設計上の選択であって欠陥ではありませんが、カウンターに好みの歩容があるということです。適応フィルターは代わりに支配的な周波数を追跡しようとし、これは速度をまたいで役立ちますが、電話中にリズミカルな腕の振りにロックしてしまうことがあります。
最後にアプリ。一日の歩数を平滑化したり、目標値に丸めたり、部分的な歩を加算したりするかもしれません。それらは一つ一つが検出の判断の上に重ねられた提示の判断であり、両者は食い違うことがあります。午後十一時に九八〇〇歩、真夜中に一万歩を見ているユーザーは、検出器ではなくアプリを見ているのです。
エッジケース、ここからが面白い
ベビーカーを押すのが典型的な例です。両手がふさがり、腕の振りが抑えられ、手首のカウンターはほとんど何も見ません。腰のカウンターのほうが、体がまだ上下に揺れているのでうまくいきます。片側にバッグを掛けると、信号がその腕の側に偏ります。階段を上ると振幅とケイデンスが変わり、ある検出器は歩行と読み、別の検出器はノイズと読みます。
次に手を振る動作。歩行周波数の勢いのあるジェスチャーはバンドパスを通り抜け、検出器を作動させることがあります。だから座って画面に手を振っているだけでも歩数を報告するカウンターがあるのです。修正は通常、第二の特徴——周期性、あるいは軸間の相関——を加えることですが、それは遅延と複雑さを増やします。適応的な歩数検出の研究は、フィルタリング後の振幅ベースの計数が誤り率を高めるのは、まさに歩容が人によって異なるからだと指摘しています。
ノイズ自体は一つのものではありません。センサーノイズはランダムで小さなものです。モーションアーティファクトは構造を持ち、大きなものです。面白い失敗は後者から来ます。周波数しか知らないフィルターにとって、それは信号のように見えるからです。
何が壊れるのか、そしてそれを知ることがなぜ役立つのか
歩数は、平らな地面を一定の装着位置で安定して歩くときに最も信頼できます。最も信頼できないのは端の状況です。非常に遅い、非常に速い、両手がふさがっている、あるいはデバイスが緩んでいる。これを知っても数字が役に立たなくなるわけではありません。数字が解釈可能になるのです。通勤中のポケットからの一万歩は、ベビーカーを押しながらの手首からの一万歩とは性質の異なる証拠です。
工学上の教訓は、フィルタリングはきれいな測定に後付けされた後片付けの工程ではないということです。それは測定の一部です。バンドパスが何を一歩とするかを定義し、不応期が何を二歩とするかを定義します。どちらかを変えれば、同じ歩行が異なる数字を生みます。それは製品のバグではありません。それが製品であり、継ぎ目がどこにあるかを知る価値があるのです。
グラフベースおよび学習ベースのフィルターがこれを押し進めています。グラフニューラルネットワークの手法はメッセージパッシングを反復して遠くの隣接ノードを統合し、Ising ノイズフィルターはフィルタリングを物理に基づくグラフ問題として扱います。周期的信号源検出の研究は正則化項に頼って周期的な信号をノイズから分離します。これらは別の服を着た同じ問題です。何が周期的かを決めれば、数は自然に出てきます。
FAQ
腕を振っているだけなのに、なぜ時計が歩数を数えるのですか?
歩行周波数の手振りは、バンドパスフィルターにとって一歩のように見えるからです。フィルターは周波数しか知らず、意図は知りません。第二のチェック——周期性や軸間相関——を加えるカウンターもありますが、それは遅延とバッテリーを犠牲にします。
ポケットの計数は手首の計数より正確ですか?
歩行に関しては、たいていはそうです。ポケットや腰の位置は体の重心を追跡し、それは一歩ごとに動きます。手首のセンサーは腕の振りを追跡し、それは代理です。しかしポケットのカウンターは椅子をずらす動きやバスの振動を拾うので、どの位置もすべての場面で勝つわけではありません。
二つの異なるデバイスの歩数を比較できますか?
おおまかにしかできません。各デバイスには独自のフィルター定数、しきい値の挙動、アプリレベルの平滑化があります。同じ歩行で二台のスマホが数百歩食い違うこともあります。その数字は一つのデバイスの傾向として扱い、普遍的な測定とは考えないことです。




