スマートフォンはどうやって歩数を数えているのか? 加速度センサーと万歩計の仕組み

読了 5分

ヘルスケアアプリを開くと、今日歩いた歩数がどんと表示されます。考えてみると不思議です。万歩計を振りながら歩いた覚えはなく、スマートフォンはポケットやカバンの中に入っていただけです。スマートフォンは私の足を見てもいないのに、どうやって歩数を数えているのでしょうか。しかも一日中数えていたはずなのに、なぜバッテリーは平気なのでしょうか。今回はその仕組みを整理します。

スマートフォンの中には動きを感じる感覚器官があります #

出発点は加速度センサーです。スマートフォンには爪の欠けらより小さいこのセンサーが入っていて、端末がどの方向にどれだけ強く動いたか(正確には加速したか)を感じ取ります。画面を横に倒すと表示が回るのも、持ち上げると画面が点くのも、すべてこのセンサーの仕事です。

原理は意外と古典的です。センサーの中には、ごく小さなおもりがバネのような構造にぶら下がっています。端末が動くと慣性でおもりがほんのわずかに押され、その押された量を電気信号として読み取るのです。バスが発進するときに体が後ろに引っ張られる、あの現象を、髪の毛より細い構造物でシリコンの上に再現したものです。こうした超小型の機械装置は MEMS と呼ばれ、スマートフォン革命の隠れた立役者のひとつです。

このセンサーは上下、左右、前後の3 方向を同時に感じます。だから端末がポケットにどんな角度で入っていても、動きを取りこぼしません。

歩みは波の形をしています #

人が歩くと、体は一歩ごとにわずかに浮き上がっては沈みます。本人は気づかなくても、ポケットの中の加速度センサーにはこの動きが規則的にうねる波として見えます。一歩につき波がひとつ。だから原理的には、歩数を数えるのは単純です。波の山を数えればいいのです。

もちろん現実はそれほどきれいではありません。センサーには歩み以外のあらゆる揺れが混ざり込みます。だから万歩計ソフトの本当の実力は、山を数えることではなく選り分けることにあります。

  • 人の歩みのリズムか: 歩みはだいたい毎秒 1〜3 回の一定の拍子を刻みます。この範囲を外れた振動、たとえばバスの細かく不規則な揺れや、端末を一度コンと叩いた単発の衝撃は、歩みではないと判断します。
  • 数歩以上続いているか: 山がいくつかリズムを保って連続して現れたとき、初めて歩き始めたと認定します。多くの万歩計が歩き始めの数歩を遅れてまとめて反映するのはこのためです。「本当に歩いているのか」をしばらく見極めているのです。
  • 他のセンサーとの照合: 回転を感じるジャイロセンサーなどの信号を合わせて見ると、手元で端末を振っているのか、体全体が移動する歩行なのかをより正確に区別できます。

それでも完璧ではありません。スーパーでカートを押すと手が固定されてスマートウォッチが歩数を取りこぼしたり、でこぼこ道で自転車に乗ると歩数と誤認されたりします。万歩計の数字は精密測定値ではなく、かなり優秀な推定値として読むのが正解です。

一日中数えているのにバッテリーが平気な理由 #

歩数を数えるには、センサーを休まず見張っていなければなりません。ところが端末の頭脳であるメインチップ(AP)は大食漢で、この見張りをメインチップにやらせるとバッテリーはあっという間に溶けてしまいます。

そこで最近の端末には、センサーの見張りだけを専門にする超低電力の補助チップが別に入っています。モーションコプロセッサと呼ばれるこの小さなチップは、メインチップが眠っている間もひとりで起きてセンサーの信号を読み、歩数を数えて帳簿に積んでいきます。電気を極端に節約するよう設計されているので、夜通し数えていてもバッテリーに影響が出ません。私たちがヘルスケアアプリを開くときにアプリがやっているのは、リアルタイムの計算というより、この補助チップが積んでおいた帳簿を受け取って見せることに近いのです。

まとめると分業構造です。安い見張りは省エネの補助チップが 24 時間担当し、高くつく頭脳は必要なときだけ起きるのです。

アプリごとに数字が違う理由 #

同じ一日を過ごしたのに、スマートフォンのヘルスケアアプリ、スマートウォッチ、別の歩数計アプリがそれぞれ違う歩数を見せる経験はよくあります。理由はここまでの話の中に全部あります。

  • 選り分けの基準が会社ごとに違います。 微妙な揺れを歩数と認めるかどうかの感度が違えば、一日積もれば数百歩の差になります。
  • 身に着けている場所が違います。 ポケットの中の端末と手首のウォッチは、同じ歩みに対してまったく違う波形を見ています。ウォッチは手を使う家事を歩数に数えやすく、端末は机に置いたまま歩いた分をまったく知りません。
  • 集計の方式も違います。 複数の機器の記録を合算するとき、重なった時間帯をどう処理するかがアプリごとに違うので、連携するとかえって数字がずれて見えることもあります。

だからアプリ間の数百歩の差に意味を求める必要はありません。大事なのは同じものさしで測った昨日と今日の比較であり、その用途ならどのアプリでも十分に正確です。

まとめ #

  • 端末内の加速度センサーは、バネにぶら下がった超小型のおもりが慣性で押されるのを読み取り、3 方向の動きを感じます。
  • 歩みはセンサーには規則的な波に見え、万歩計はその山を数えます。本当の実力は、バスの振動や手の揺れをふるい落とす選り分けにあります。
  • 数歩がリズムを保って続いたときに初めて歩行と認定するため、歩き始めの数歩は遅れて反映されがちです。
  • 見張りはメインチップではなく超低電力の補助チップが専任します。一日中数えてもバッテリーが平気な理由です。
  • アプリごとに数字が違うのは、判定基準、装着位置、集計方式の違いです。絶対値より、同じアプリの中での推移を見るのが正しい使い方です。
X