uitspitss blog

プログラミングと音楽とエッセイ ※記載内容は個人の見解であり、所属する組織とは一切関係がありません。

Googleのサイエンスジャーナルで実験

先日、5/20にGoogleからローンチされた、自由研究アプリ「サイエンス ジャーナル」。 このアプリで本当に実験ができるのか、単振り子の実験で試した。 ※カジュアルな実験なので、そのあたりはご了承ください。

実験環境

  • Android端末「XPeriaZ(SO-02E)」

開発環境

  • Windows10
  • Python(3.5.1) on Anaconda

実験

今回は、振り子の周期を出すことを目標に実験をした。

  • 時間もあまりかけられなかったので、脚立、少し太めの竹串、塩ビパイプで、簡単な振り子を作った。
  • 試行回数は4回。
  • サイエンスジャーナルで、端末座標上のX軸、Y軸、Z軸、それぞれの方向の加速度を記録。

実験が終ったら、実験結果の数値データを解析するために、エクスポートする。 Googleドライブに出してしまうのが、早そう。

f:id:uitspitss:20160608152438p:plain

結果

今回、サイエンスジャーナルで得られた実験結果が妥当かどうかを調べる方法を以下のようにした。

  • サイエンスジャーナルの実験結果データから周期を予測する。
  • 動画から周期を予測する。

この2つの方法から確かめた結果が合えば、妥当ということで…

実験データから周期を予測

実験結果のデータはcsvなので、メモ帳やエクセルなど、適当なエディタで開くことができる。

とりあえず、1回目の実験結果から見ていくと、

1回目

数値データのグラフが下記の通り、今回欲かったX軸方向のデータに関してはまずまず周期的に見える。 他のY軸とZ軸に関してのコメントは後述の考察にて。ちなみにこの傾向は、他の試行でも同様だった。

f:id:uitspitss:20160608150906p:plain

ここで、X軸方向のデータからグラフのピーク間の秒数を計測して、半周期の予測をする。 今回は、ノイズが少なさそうに見える、timeが8~20の範囲のデータを用いた。 計測結果は、

f:id:uitspitss:20160608150910p:plain

ピーク間の時間間隔[s]
最小時間間隔 0.07
最大時間間隔 1.24
平均時間間隔 0.40

バラツキはありますが、半周期が0.4秒前後だろうと予測できる。

他、3回の試行結果のデータは、

2回目

f:id:uitspitss:20160608150916p:plain f:id:uitspitss:20160608150918p:plain

ピーク間の時間間隔[s]
最小時間間隔 0.34
最大時間間隔 1.36
平均時間間隔 0.57

3回目

f:id:uitspitss:20160608150923p:plain f:id:uitspitss:20160608150925p:plain

ピーク間の時間間隔[s]
最小時間間隔 0.07
最大時間間隔 0.89
平均時間間隔 0.39

4回目

f:id:uitspitss:20160608150942p:plain f:id:uitspitss:20160608150945p:plain

ピーク間の時間間隔[s]
最小時間間隔 0.07
最大時間間隔 0.89
平均時間間隔 0.42

動画から周期を予測

実験の様子を撮影した動画から、下のように10秒前後のところを切り出してスローモーションで動画を確認して、 左右に最大に振れた時間の間隔を記録すると、 ※タイムコードからタイムへの変換は30fps動画なので、(タイムコード)×100/30で求めた。

f:id:uitspitss:20160608151803g:plain

タイムコード タイム[s] 時間間隔[s]
20:24 20:80 -
21:06 21:20 0:40
21:20 21:67 0:47
22:02 22:07 0:40
22:16 22:53 0:46

動画からは、半周期が0.4秒強と予測できる。

結果のまとめ

以上の結果より、この単振り子の周期は、

  • サイエンスジャーナルから、(0.40 + 0.57 + 0.39 + 0.42) / 4 * 2 = 0.89[s]
  • 動画から、 (0.40+0.47+0.40+0.46) / 4 * 2 = 0.87[s]

と予測できる、という結果になった。 こういった実験で使うには十分な精度の結果が得られるようだ。

考察

動画から時間間隔を求めるのは手間だったので、1回目の試行の動画の、さらに、2秒間の部分だけから最終結果を出しているので、マズい気もしなくはない…

さて、数値データから作成した実験結果のデータを見ていると、X軸方向以外のY軸・Z軸方向にも、周期的な振動があるように見える。 Y軸・Z軸方向のデータについても、同様に周期を予測してみると、

  • Y軸方向には、0.30秒前後
  • Z軸方向には、0.40秒前後

という、X軸方向の周期より短かい時間間隔の周期が陽に表われた。 これは、実験装置自体が揺れてしまったためだと考えられる。 また、X軸方向でピーク間の時間間隔を計測した際に、最小値が異様に小さく出てしまったのも、これが原因だろう。

最後に、サイエンスジャーナルで取得した実験データを扱うときの注意として、

  • サイエンスジャーナルの数値データの計測頻度は、0.1秒間に1回ないしは2回程度(端末によって違いがあるかも?)
  • 今回のように、1回の計測で複数の数値データを取得することが可能だが、計測した瞬間のタイムスタンプは一致しない。
    → 解析用コードを作る際に、そのあたりは予想できたので、つまづかなかったが、知らずにハマってしまうことも…