「スマホに内蔵された気圧センサだけで、どこまで物理量を測れるだろう?」 aptitude は、加速度センサに頼らずに気圧だけから落下速度を推定することに挑戦した、 実験用の Android アプリです。
一般的には、「落下速度」を測るとき、加速度センサやジャイロを使うことが多いです。 しかし本アプリではあえて、スマホの気圧センサ(barometer)だけに頼り、 高度の変化から落下速度を推定することを目指しました。
建物の上階からスマホをパラシュート付きで落とし、 落下中に記録された気圧データから「高度 vs 時間」を復元。 そこから時間微分(数値微分)とフィルタリングを行うことで、 速度・加速度の推定を試みています。
Android の SensorManager から気圧センサを購読し、 サンプリングされた気圧データをアプリ内バッファとローカルファイルに保存します。 記録後、アプリ内の数値計算モジュールで高度・速度を計算し、 グラフとして可視化・エクスポートできる構成です。
大気圧 P [Pa] と高度 h [m] の関係には、
国際標準大気に基づいた近似式を用います。
海面気圧 P₀ を基準としたとき、
おおよそ
h ≒ 44330 × (1 − (P / P₀)^(1/5.255))
のような形で高度を求めることができます(実装では簡易版を使用)。
val P0 = 1013.25f // hPa
fun pressureToAltitude(pHpa: Float): Float {
return 44330f * (1f - (pHpa / P0).pow(1f / 5.255f))
}
高度から速度を求めるには、v ≒ Δh / Δt のように差分を取る必要があります。
しかしそのまま差分を取ると、気圧センサのノイズや一時的な揺れが
そのまま速度に増幅されてしまうという問題があります。
aptitude では、移動平均や Savitzky–Golay フィルタなどの平滑化を試し、 「応答の速さ」と「ノイズ低減」のバランスを探る実験を行っています。
単純な片側差分 v[n] = (h[n] − h[n−1]) / Δt ではノイズの影響が大きいため、
中央差分 v[n] = (h[n+1] − h[n−1]) / (2Δt) を採用することで、
多少のノイズ抑制と時間方向の対称性を両立しています。
for (i in 1 until altitudes.lastIndex) {
val dh = altitudes[i + 1] - altitudes[i - 1]
velocities[i] = dh / (2f * dt)
}
実験の途中からは、参考として加速度センサから得られる落下挙動とも比較しています。 目的はあくまで気圧だけでどこまで行けるかを探ることですが、 「加速度から求めた速度」と「気圧から求めた速度」が どれくらい一致するかを見ることで、モデルの妥当性を検証しています。
建物の 3 階相当の高さから、パラシュート付きスマホを落とし、 その間の気圧データを記録しました。 簡易な高度変換と平滑化を行った結果、以下のようなグラフが得られました(イメージ)。
パラシュートありのため最終速度は 5 m/s 前後に収束しており、 簡易に求めた落下距離・時間から計算した平均速度と 大きく矛盾しない範囲に収まりました。
・実験環境の気圧が時間とともに変化する(風・気流・温度差)問題 ・スマホ内部のフィルタリングやセンサ分解能の限界 ・短距離の落下では信号のダイナミックレンジが足りず、 「計測誤差 > 実際の高度変化」になりやすいこと など、 現実の制約が多く残っています。
落下ボタンを押してから着地までの間、 グラフがリアルタイムに伸びていく様子や、 着地後に速度プロファイルが確定する様子を撮影したデモ動画です。
aptitude は、現時点ではまだ「遊びに近い実験ツール」です。 それでも、気圧センサ単体の限界や、 フィルタ設計・モデル化の重要性を体感できる教材としての可能性を感じています。
将来的には、気圧+加速度+ジャイロ を組み合わせた 小さなセンサフュージョン実験プラットフォームとして発展させ、 Kalman Filter や Particle Filter などの実験にもつなげていきたいと考えています。
実験アプリとして、物理モデル・実験手順・UI の 3 つをバランス良く整えていきます。
「スマホに入っているセンサだけで、どこまで物理現象を測れるか?」 という問いは、子どもの頃の工作にも近い感覚があります。 aptitude を作る中で、物理モデル・計測ノイズ・実験手順が すべて繋がって初めて“それっぽい答え”になることを、改めて体験しました。
一方で、「気圧だけで落下速度を測る」というのは、 正確さを追求するには少し無茶な挑戦でもあります。 それでもこのアプリを通じて、 スマホのセンサでできること / できないことを 自分の手で確かめられたのは、大きな収穫でした。