(57)【特許請求の範囲】
【請求項１】
センサデバイスを有する情報装置に搭載されたコンピュータを、センサデバイスの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとして機能させるプログラムにおいて、
前記アプリケーションは、システムマネージャとの間にサンプリングレート調整モジュールを含んでおり、
前記サンプリングレート調整モジュールは、
第１の所定期間の間、前記システムマネージャから受信したセンサイベント数をカウントするイベント数計測手段と、
単位時間における前記センサイベント数に基づくサンプリングレートを算出するサンプリングレート算出手段と、
第１の所定期間に続く第２の所定期間の間、前記システムマネージャからの前記センサイベントを受け捨てると共に、前記サンプリングレートに基づく擬似的なセンサイベントを発生させる周期イベント発生手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項２】
前記システムマネージャは、ＯＳ(Operating System)であり、前記センサデバイスから発生したセンサイベントをアプリケーション側へ出力する際に、処理負荷に基づく遅延に揺らぎが生じるものである
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
第２の所定期間は、第１の所定期間よりも長く、
第１の所定期間及び第２の所定期間を交互に繰り返す、又は、第２の所定期間の最後に第１の所定期間を重ねて実行する
ようにコンピュータを機能させることを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
先の第１の所定期間によって算出されたサンプリングレートと、後の第１の所定期間によって算出されたサンプリングレートとを比較して、
同一の場合、後の第１の所定期間に続く第２の所定期間は、先の第２の所定期間よりも長く（又は同一に）設定し、
異なる場合、後の第１の所定期間に続く第２の所定期間は、先の第２の所定期間と同一に（又は短く）設定する
ようにコンピュータを機能させることを特徴とする請求項３に記載のプログラム。
【請求項５】
前記サンプリングレート調整モジュールは、自動的に、
第２の所定期間は、前記センサデバイスを停止させ、
第１の所定期間は、前記センサデバイスを起動させる
ようにコンピュータを機能させることを特徴とする請求項１から４のいずれか１項に記載のプログラム。
【請求項６】
前記センサデバイスは、周期的にセンサイベントを発生する、加速度センサ、角速度センサ、地磁気センサ、温度・気圧センサ、照度センサ又はバッテリセンサであることを特徴とする請求項１から５のいずれか１項に記載のプログラム。
【請求項７】
センサデバイスと、センサデバイスからの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとを有する装置において、
アプリケーションとシステムマネージャとの間にサンプリングレート調整モジュールを更に有し、
前記サンプリングレート調整モジュールは、
第１の所定期間の間、前記システムマネージャから受信したセンサイベント数をカウントするイベント数計測手段と、
単位時間における前記センサイベント数に基づくサンプリングレートを算出するサンプリングレート算出手段と、
第１の所定期間に続く第２の所定期間の間、前記システムマネージャからの前記センサイベントを受け捨てると共に、前記サンプリングレートに基づく擬似的なセンサイベントを発生させる周期イベント発生手段と
を有することを特徴とする装置。
【請求項８】
センサデバイスと、センサデバイスからの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとを有する装置のセンサイベント処理方法において、
前記装置は、アプリケーションとシステムマネージャとの間にサンプリングレート調整モジュールを更に有し、
前記装置の前記サンプリングレート調整モジュールは、
第１の所定期間の間、前記システムマネージャから受信したセンサイベント数をカウントする第１のステップと、
単位時間における前記センサイベント数に基づくサンプリングレートを算出する第２のステップと、
第１の所定期間に続く第２の所定期間の間、前記システムマネージャからの前記センサイベントを受け捨てると共に、前記サンプリングレートに基づく擬似的なセンサイベントを発生させる第３のステップと
を実行することを特徴とする装置のセンサイベント処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサデバイスから周期的に出力されるセンサイベントを用いるアプリケーションの技術に関する。
【背景技術】
【０００２】
近年、様々なセンサデバイスを搭載したスマートフォンやタブレット端末が普及している。センサデバイスとしては、例えば加速度センサや角速度センサ、地磁気センサ、温度・気圧センサ、照度センサ、バッテリセンサのように様々なものがある。これらセンサデバイスには、それぞれの仕様に基づいてサンプリングレートを設定することができる。センサデバイスからそのサンプリングレートで発生するセンサイベントは、装置に搭載されたプロセッサ上で起動するプログラムによって利用される。サンプリングレートは、例えば１ｍ秒〜１０００ｍ秒程度のサンプリング周期で自由に設定することができる。
【０００３】
従来、加速度や荷重等の物理量を測定するセンサの出力を、一定の時間間隔でサンプリングして取り出す技術がある（例えば特許文献１参照）。この技術によれば、Ａ／Ｄ変換器を用いて、一端、記憶装置に集録したデータ群から、任意の周波数成分を解析することができる。
【０００４】
また、人の動き状態に応じて、サンプリング周波数を選択的にＡ／Ｄ変換回路に設定する技術もある（例えば特許文献２参照）。この技術によれば、異なる動き状態について、同一の検出信号からサンプリング周波数を切り換えて周波数成分を検出し、その検出対象となる動きの周波数エネルギー状態変化を検出することができる。
【０００５】
更に、電子機器の加速度センサに対して最適なサンプリング周期を設定することよって、当該電子機器の異常状態を検出する技術もある（例えば特許文献３及び４参照）。この技術によれば、電子機器自体の傾き変化や振動変化に対応できるように短いサンプリング周期で起動させているのに対し、それよりも長いサンプリング周期を用いて、メモリ量や演算処理量を低減させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−５３８８３号公報
【特許文献２】特開２０１２−２２５８３７号公報
【特許文献３】特開２０１２−１７３２００号公報
【特許文献４】特開２０１２−１７３１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、プロセッサによって起動されるプログラムは、センサデバイスに対してＯＳ(Operating System)を介してサンプリングレートを設定し、周期的に発生するセンサイベントの割り込みを処理する。スマートフォンやタブレット端末のような情報装置の場合、アプリケーションプログラムは、ＯＳを介してセンサデバイスから発生するセンサイベントを受信する。スマートフォンについて代表的なＯＳとしては、例えばAndroid（登録商標）やiOS（登録商標）がある。
【０００８】
しかしながら、センサデバイスが、設定されたサンプリングレートでセンサイベントを正確に出力するのに対し、ＯＳの作り込みや処理負荷によっては、アプリケーションプログラムでは同一のサンプリング周期で受信されないという課題が生じた。
【０００９】
図１は、アプリケーションに発生するセンサイベントのタイミングに生じた遅延及び揺らぎを表すシーケンス図である。
【００１０】
図１によれば、アプリケーションプログラムが、例えば加速度センサのセンサイベントをＯＳを介して受信しているとする。アプリケーションプログラムは、２０Ｈｚのサンプリングレートで設定することによって、その加速度センサから、５０ｍｓ毎のサンプリング周期のセンサイベントの発生を期待して待つこととなる。
【００１１】
しかしながら、センサデバイスからＯＳへ、５０ｍｓのサンプリング周期で正確にセンサイベントが出力されているにも拘わらず、ＯＳからアプリケーションプログラムへ出力するセンサイベントには、遅延と揺らぎが生じている。このような現象は、情報装置の作り込みによって変化し、特にスマートフォンの機種によって異なる場合がある。そのために、アプリケーションプログラムから見ると、同一のセンサデバイスに適用して実装していても、そのセンサデバイスが搭載された機種によっては適用できないという問題がある。結局、機種毎に、センサイベントの出力タイミングや揺らぎを予め計測し、その特性に対応させなければならないという課題があった。
【００１２】
また、同一センサデバイス及び同一ＯＳであっても、ＯＳの処理負荷が高い場合と低い場合とで、センサイベントを出力するタイミングに遅延や揺らぎが生じる場合がある。そのために、例えば、加速度センサを用いて歩行状態を検知するような比較的短い時間タイミングで処理する場合、センサイベントの出力タイミングの揺らぎによって、アプリケーションプログラムが正確に演算処理を実行することができないという課題もあった。
【００１３】
そこで、本発明は、アプリケーションプログラムの中で、センサデバイスからＯＳを介したセンサイベントの発生間隔を調整し、サンプリングレートの揺らぎを吸収することができるプログラム、装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明によれば、センサデバイスを有する情報装置に搭載されたコンピュータを、センサデバイスの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとして機能させるプログラムにおいて、
アプリケーションは、システムマネージャとの間にサンプリングレート調整モジュールを含んでおり、
サンプリングレート調整モジュールは、
第１の所定期間の間、システムマネージャから受信したセンサイベント数をカウントするイベント数計測手段と、
単位時におけるセンサイベント数に基づくサンプリングレートを算出するサンプリングレート算出手段と、
第１の所定期間に続く第２の所定期間の間、システムマネージャからのセンサイベントを受け捨てると共に、サンプリングレートに基づく擬似的なセンサイベントを発生させる周期イベント発生手段と
してコンピュータを機能させることを特徴とする。
【００１５】
本発明のプログラムにおける他の実施形態によれば、
システムマネージャは、ＯＳ(Operating System)であり、センサデバイスから発生したセンサイベントをアプリケーション側へ出力する際に、処理負荷に基づく遅延に揺らぎが生じるものであることも好ましい。
【００１６】
本発明のプログラムにおける他の実施形態によれば、
第２の所定期間は、第１の所定期間よりも長く、
第１の所定期間及び第２の所定期間を交互に繰り返す、又は、第２の所定期間の最後に第１の所定期間を重ねて実行する
ようにコンピュータを機能させることも好ましい。
【００１７】
本発明のプログラムにおける他の実施形態によれば、
先の第１の所定期間によって算出されたサンプリングレートと、後の第１の所定期間によって算出されたサンプリングレートとを比較して、
同一の場合、後の第１の所定期間に続く第２の所定期間は、先の第２の所定期間よりも長く（又は同一に）設定し、
異なる場合、後の第１の所定期間に続く第２の所定期間は、先の第２の所定期間と同一に（又は短く）設定する
ようにコンピュータを機能させることも好ましい。
【００１８】
本発明のプログラムにおける他の実施形態によれば、
サンプリングレート調整モジュールは、自動的に、
第２の所定期間は、センサデバイスを停止させ、
第１の所定期間は、センサデバイスを起動させる
ようにコンピュータを機能させることも好ましい。
【００１９】
本発明のプログラムにおける他の実施形態によれば、
センサデバイスは、周期的にセンサイベントを発生する、加速度センサ、角速度センサ、地磁気センサ、温度・気圧センサ、照度センサ又はバッテリセンサであることも好ましい。
【００２０】
本発明によれば、センサデバイスと、センサデバイスからの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとを有する装置において、
アプリケーションとシステムマネージャとの間にサンプリングレート調整モジュールを更に有し、
サンプリングレート調整モジュールは、
第１の所定期間の間、システムマネージャから受信したセンサイベント数をカウントするイベント数計測手段と、
単位時間におけるセンサイベント数に基づくサンプリングレートを算出するサンプリングレート算出手段と、
第１の所定期間に続く第２の所定期間の間、システムマネージャからのセンサイベントを受け捨てると共に、サンプリングレートに基づく擬似的なセンサイベントを発生させる周期イベント発生手段と
を有することを特徴とする。
【００２１】
本発明によれば、センサデバイスと、センサデバイスからの周期的なセンサイベントを利用するアプリケーションと、センサデバイスから発生したセンサイベントをアプリケーションへ出力するシステムマネージャとを有する装置のセンサイベント処理方法において、
装置は、アプリケーションとシステムマネージャとの間にサンプリングレート調整モジュールを更に有し、
装置のサンプリングレート調整モジュールは、
第１の所定期間の間、システムマネージャから受信したセンサイベント数をカウントする第１のステップと、
単位時間におけるセンサイベント数に基づくサンプリングレートを算出する第２のステップと、
第１の所定期間に続く第２の所定期間の間、システムマネージャからのセンサイベントを受け捨てると共に、サンプリングレートに基づく擬似的なセンサイベントを発生させる第３のステップと
を実行することを特徴とする。
【発明の効果】
【００２２】
本発明のプログラム、装置及び方法によれば、アプリケーションプログラムの中で、センサデバイスからＯＳを介したセンサイベントの発生間隔を調整し、サンプリングレートの揺らぎを吸収することができる。
【図面の簡単な説明】
【００２３】
【図１】アプリケーションに発生するセンサイベントのタイミングに生じた遅延及び揺らぎを表すシーケンス図である。
【図２】本発明における情報装置の機能構成図である。
【図３】本発明における第１のシーケンス図である。
【図４】本発明における第２のシーケンス図である。
【図５】本発明における第３のシーケンス図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００２５】
図２は、本発明における情報装置の機能構成図である。
【００２６】
図２によれば、情報装置１は、例えばスマートフォンやタブレット端末、パーソナルコンピュータであって、１つ以上のセンサデバイス１０を搭載している。センサデバイス１０は、例えば周期的にセンサイベントを発生する、加速度センサ、角速度センサ、地磁気センサ、温度・気圧センサ、照度センサ又はバッテリセンサのようなものである。これらセンサデバイス１０は、予め設定されたサンプリングレートで、センサイベントを周期的に出力する。
【００２７】
情報装置１は、システムマネージャ１１及びアプリケーション１２として機能させるプログラムを、プロセッサ（コンピュータ）によって実行する。システムマネージャ１１は、デバイスとアプリケーションとの間に介在する「ＯＳ」であって、例えばAndroid（登録商標）やiOS（登録商標）のような既存のものである。また、アプリケーション１２は、センサデバイス１０から発生するセンサイベントを利用するものである。
尚、ＯＳ１１は、一般的に、センサデバイス１０から発生したセンサイベントをアプリケーション１２側へ出力する際に、処理負荷や作り込みに基づく遅延や揺らぎが生じるものであるとする。
【００２８】
本発明によれば、アプリケーション１２は、ＯＳ１１との間に、サンプリングレート調整モジュール１２１を含んでいる。図２によれば、サンプリングレート調整モジュール１２１は、イベント数計測部１２１１と、サンプリングレート算出部１２１２と、周期イベント発生部１２１３とを有する。
【００２９】
イベント数計測部１２１１は、第１の所定期間（サンプリングレート算出時間）の間、ＯＳ１１（システムマネージャ）から受信したセンサイベント数をカウントする。カウントされたセンサイベント数は、サンプリングレート算出部１２１２へ出力される。
【００３０】
サンプリングレート算出部１２１２は、単位時間におけるセンサイベント数に基づくサンプリングレートを算出する。
サンプリングレート（Ｈｚ）
＝発生したセンサイベント数／サンプリングレート算出時間
サンプリング周期（ｓ）
＝サンプリングレート算出時間／発生したセンサイベント数
算出したサンプリングレートは、周期イベント発生部１２１３へ出力される。
【００３１】
周期イベント発生部１２１３は、第１の所定期間（サンプリングレート算出時間）に続く第２の所定期間（周期イベント発生期間）の間、ＯＳ１１からのセンサイベントを受け捨てると共に、サンプリングレートに基づく擬似的なセンサイベントをアプリケーション１２へ発生させる。周期イベント発生部１２１３は、センサデバイスからＯＳを介したセンサイベントの発生間隔を調整し、サンプリングレートの揺らぎを吸収する。これによって、アプリケーション１２から見て、予め設定したサンプリングレートのセンサイベントを正確に受信することができるようになる。
【００３２】
図３は、本発明における第１のシーケンス図である。
【００３３】
（Ｓ３１）アプリケーションは、ＯＳに対して、センサイベントの発生開始を登録する。例えば以下のように、センサイベントが、サンプリング周期５０ｍｓ毎（サンプリングレート２０Ｈｚ）にセンサイベントを発生するように命令する。
SensorManager.registerListener(type, 50ms)
この命令を受けたＯＳのセンサ管理部は、センサデバイスへハードウェア的な信号によって命令する。その後、センサデバイスは、ＯＳへ、５０ｍｓのサンプリング周期で正確にセンサイベントの割り込みを発生し続ける。
【００３４】
（Ｓ３２）また、サンプリングレート調整モジュールのイベント数計測部１２１１は、ＯＳに対して、サンプリングレート算出時間のタイマをスタートさせる。図３によれば、例えば、サンプリングレート算出時間として、１秒間を計測する。
Timer.schedule(1000)
ＯＳは、一般にタイマ部を有し、指定時間でタイムアウトした際に、その旨をアプリケーションへ通知する。
【００３５】
（Ｓ３３）センサデバイスは、５０ｍｓ毎に、センサイベントを出力する。ＯＳは、センサデバイスからのセンサイベントの割り込みを処理し、そのセンサイベントをアプリケーションへ出力する。このとき、ＯＳが介在することによって、センサイベントには、遅延による揺らぎが生じる場合がある。ＯＳからセンサイベントを受信したアプリケーションのサンプリングレート調整モジュール１２１は、サンプリングレート算出時間中、そのセンサイベントの発生数のみを計測し、それらセンサイベントは受け捨てる。
【００３６】
（Ｓ３４）ＯＳは、Ｓ３２によって設定されたサンプリングレート算出時間の１秒がタイムアウトした際に、その旨を、アプリケーションのサンプリングレート調整モジュール１２１へ通知する。
【００３７】
（Ｓ３５）ＯＳからタイムアウトを受信したサンプリングレート調整ジュール１２１のサンプリングレート算出部１２１２は、サンプリングレート算出時間に発生したセンサイベント数から、当該センサイベントのサンプリングレートを算出する。
サンプリングレート（Ｈｚ）
＝発生したセンサイベント数／サンプリングレート算出時間
＝２０回／１秒
＝２０Ｈｚ
（サンプリング周期＝５０ｍｓ）
【００３８】
（Ｓ３６）次に、サンプリングレート調整モジュールの周期イベント発生部１２１３は、ＯＳに対して、周期イベント発生時間のタイマをスタートさせる。例えば、周期イベント発生時間として、５秒間を計測する。
Timer.schedule(5000)
【００３９】
（Ｓ３７）アプリケーションのサンプリングレート調整モジュール１２１の周期イベント発生部１２１３は、５０ｍｓ毎に、擬似的なセンサイベントを正確にアプリケーション１２へ発生する。これによって、アプリケーション１２から見ると、遅延及び揺らぎの無いセンサイベントが、５０ｍｓの周期毎に確実に受信される。
一方で、センサデバイスは、５０ｍｓ毎に、センサイベントを継続して出力している。Ｓ３３と同様に、そのセンサイベントは、ＯＳの割り込みで処理され、アプリケーション１２へ出力される。ここで、アプリケーションのサンプリングレート調整モジュール１２１の周期イベント発生部１２１３は、周期イベント発生期間中も、それらセンサイベントを受け捨てる。
【００４０】
（Ｓ３８）ＯＳは、Ｓ３６によって設定された周期イベント発生時間の５秒がタイムアウトした際に、その旨を、アプリケーションのサンプリングレート調整モジュール１２１へ通知する。
【００４１】
周期イベント発生時間（第２の所定時間、Ｓ３７）は、サンプリングレート算出時間（第１の所定時間、Ｓ３３）よりも長く設定する。そして、周期イベント発生時間及びサンプリングレート算出時間を交互に繰り返す。
【００４２】
図４は、本発明における第２のシーケンス図である。
図５は、本発明における第３のシーケンス図である。
【００４３】
図４及び図５によれば、図３と比較して、以下の４つのシーケンスが異なる。
（Ｓ４１）最初に、アプリケーションが、ＯＳに対して、センサイベントの発生開始を登録した直後は、センサデバイスの起動による不安定動作から、センサイベントの発生タイミングもばらつく場合がある。そのために、サンプリングレート算出時間の前段で、起動不安定時間を確保している。ＯＳからセンサイベントを受信したアプリケーションのサンプリングレート調整モジュール１２１は、起動不安定時間中、それらセンサイベントを受け捨てるだけである。
【００４４】
（Ｓ４２）周期イベント発生時間（第２の所定時間、Ｓ３７）の最後に、次のサンプリングレート算出時間（第１の所定時間、Ｓ３３）を重ねて実行している。これによって、周期イベント発生時間及びサンプリングレート算出時間を交互に繰り返すことなく、常にサンプリングレートが調整されることとなる。図４によれば、周期イベント発生時間５秒間のうち、最後の１秒間では、周期イベント発生時間とサンプリングレート算出時間とが並行して実行されている。アプリケーションのサンプリングレート調整モジュール１２１は、擬似的なセンサイベントを正確にアプリケーション１２へ発生すると共に、ＯＳからのセンサイベントの発生数を計測し、それらセンサイベントは受け捨てる。
【００４５】
（Ｓ４３）先のサンプリングレート算出時間（第１の所定時間）によって算出されたサンプリングレートと、後のサンプリングレート算出時間（第１の所定時間）によって算出されたサンプリングレートとを比較する。
【００４６】
図４によれば、先と後の両方のサンプリングレート算出時間について、異なるサンプリングレートが検出されている。先のサンプリングレートが２２Ｈｚであるのに対し、後のサンプリングレートが２０Ｈｚとなっている。この場合、後のサンプリングレート算出時間（第１の所定期間）に続く周期イベント発生時間（第２の所定時間）は、先の周期イベント発生時間（第２の所定時間）と同一に（又は短く）設定される。即ち、センサデバイスから発生するサンプリングレートが変動しているために、サンプリングレート算出時間を比較的短い時間間隔で起動し、その変動に対応しようとする。
【００４７】
一方で、図５によれば、先と後の両方のサンプリングレート算出時間について、同一のサンプリングレートが検出されている。先のサンプリングレートが２０Ｈｚであるのに対し、後のサンプリングレートも２０Ｈｚとなっている。この場合、後のサンプリングレート算出時間（第１の所定期間）に続く周期イベント発生時間（第２の所定時間）は、先の周期イベント発生時間（第２の所定時間）よりも長く（又は同一に）設定される。即ち、センサデバイスから発生するサンプリングレートが安定しているために、サンプリングレート算出時間を頻繁に起動しないようにする。
【００４８】
（Ｓ５１）周期イベント発生時間（第２の所定時間）には、サンプリングレート調整モジュールから自動的に、センサデバイスを停止させる。また、サンプリングレート算出時間（第１の所定期間）の前に、サンプリングレート調整モジュールから自動的に、センサデバイスを起動させる。これによって、センサデバイスを間欠的に起動し、情報装置の消費電力を低減させることができる。
【００４９】
以上、詳細に説明したように、本発明のプログラム、装置及び方法によれば、アプリケーションプログラムの中で、センサデバイスからＯＳを介したセンサイベントの発生間隔を調整し、サンプリングレートの揺らぎを吸収することができる。センサイベントを単に擬似的に発生させたものではなく、あくまで実際に発生しているセンサイベントについて遅延及び揺らぎを調整しているために、センサイベントのリアルタイムな変化にも対応することができる。
【００５０】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【００５１】
１  情報装置、スマートフォン
１０  センサデバイス
１１  ＯＳ、システムマネージャ
１２  アプリケーション
１２１  サンプリングレート調整モジュール
１２１１  イベント数計測部
１２１２  サンプリングレート算出部
１２１３  周期イベント発生部
【図１】
0006483474.tif 000002
【図２】
0006483474.tif 000003
【図３】
0006483474.tif 000004
【図４】
0006483474.tif 000005
【図５】
0006483474.tif 000006