(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-08
(45)【発行日】2023-02-16
(54)【発明の名称】データ処理装置、データ処理方法、プログラム及び回転計測装置
(51)【国際特許分類】
G06F 17/14 20060101AFI20230209BHJP
G01P 3/36 20060101ALI20230209BHJP
【FI】
G06F17/14 B
G01P3/36 C
(21)【出願番号】P 2019147745
(22)【出願日】2019-08-09
【審査請求日】2022-03-03
(73)【特許権者】
【識別番号】000145806
【氏名又は名称】株式会社小野測器
(74)【代理人】
【識別番号】100108006
【氏名又は名称】松下 昌弘
(72)【発明者】
【氏名】山田 計
(72)【発明者】
【氏名】小澤 健太郎
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2013-120499(JP,A)
【文献】特開2009-129288(JP,A)
【文献】特開2001-203675(JP,A)
【文献】特開2016-217843(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/14
G01P 3/36
(57)【特許請求の範囲】
【請求項1】
時系列データをリアルタイムに処理するデータ処理装置であって、
前記時系列データの各データを一時的に記憶するための記憶領域を持つ記憶部と、
処理部とを有し、
前記時系列データにおいて連続したM個の前記データが、1つのデータ列を構成し、
前記時系列データにおいて連続した2つの前記データ列が、互いに共通するN個(NはMより小さい自然数を示す。)の前記データを含み、
前記処理部は、
前記時系列データの各前記データを順次に取得する処理と、
取得した前記データの前記記憶領域における書き込み先のアドレスを生成する処理と、
生成した前記アドレスに、取得した前記データを書き込む処理と、
各前記データ列の書き込みが完了したことを検出する処理と、
1つの前記データ列の書き込み完了を検出する度に、当該1つのデータ列に基づいて所定の演算を行う処理と
を実行し、
前記アドレスを生成する処理は、1つの前記データ列を構成する前記M個のデータに対応したM個の連続する前記アドレスを、1つの単位アドレス範囲として生成し、
1つの前記単位アドレス範囲は、
当該1つのデータ列における前半のN個の前記データに対応したN個の第1アドレスと、
当該1つのデータ列における後半の(M-N)個の前記データに対応した(M-N)個の第2アドレスとを含み、
前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より前のN個の連続した前記アドレスを、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記N個の第1アドレスとする、
データ処理装置。
【請求項2】
前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合、当該1つの単位アドレス範囲における後半のN個の前記アドレスを、前記次の単位アドレス範囲における前記N個の第1アドレスとし、当該1つの単位アドレス範囲の後に続く(M-N)個の連続した前記アドレスを、前記次の単位アドレス範囲における前記(M-N)個の第2アドレスとする、
請求項1に記載のデータ処理装置。
【請求項3】
前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、前記記憶領域における先頭からN番目までのN個の前記アドレスを、前記次の単位アドレス範囲における前記N個の第1アドレスとする、
請求項1又は2に記載のデータ処理装置。
【請求項4】
前記アドレスを生成する処理は、
取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合であって、かつ、当該1つの単位アドレス範囲における後半のN個の前記アドレスを生成する場合、当該1つのデータ列における1つの前記データを取得する度に、前記後半のN個のアドレスから1つの前記アドレスを生成するとともに、前記次の単位アドレス範囲における前記N個の第1アドレスから1つの前記アドレスを生成し、
取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合、当該1つのデータ列における1つの前記データを取得する度に、当該1つのデータに対応した1つの前記アドレスを生成する、
請求項3に記載のデータ処理装置。
【請求項5】
前記記憶領域は、{k×(M-N)+N}個以上、{(k+1)×(M-N)+N}個未満の前記アドレス(kは2以上の自然数を示す。)により構成され、
前記アドレスを生成する処理及び前記データを書き込む処理は、
初期状態において、第1変数が示す前記アドレスを、前記記憶領域の先頭の前記アドレスに設定し、
1つの前記データを取得する度に、取得した前記1つのデータを前記第1変数が示す前記アドレスに書き込み、当該書き込みの後、前記第1変数が示す前記アドレスをインクリメントし、
1つの前記データを取得する度に、前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+1}番目の前記アドレスであるか確認し、前記第1変数が示す前記アドレスが前記{k×(M-N)+1}番目のアドレスである場合、第2変数が示す前記アドレスを前記先頭のアドレスに設定し、
1つの前記データを取得する度に、前記第1変数が示す前記アドレスが、前記記憶領域の{k×(M-N)+1}番目から{k×(M-N)+N}番目までのアドレス範囲に含まれるか確認し、前記第1変数が示す前記アドレスが当該アドレス範囲に含まれる場合、取得した前記1つのデータを前記第2変数が示す前記アドレスに書き込み、当該書き込みの後、前記第2変数が示す前記アドレスをインクリメントし、
前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+N}番目のアドレスを超えた場合、前記第1変数が示す前記アドレスを、前記第2変数が示す前記アドレスに設定する、
請求項3又は4に記載のデータ処理装置。
【請求項6】
前記記憶領域は、L個(Lは2×M以上の整数を示す。)の前記アドレスにより構成され、
前記アドレスを生成する処理及び前記データを書き込む処理は、
初期状態において、第1変数が示す前記アドレスと第2変数が示す前記アドレスとのアドレス間隔を、M以上(L-M)以下に設定し、
1つの前記データを取得する度に、取得した前記1つのデータを、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとに書き込み、当該書き込みの後、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとをそれぞれインクリメントし、
前記第1変数が示す前記アドレスが、前記記憶領域の最大の前記アドレスを超えた場合、前記第1変数が示す前記アドレスを前記記憶領域の先頭の前記アドレスに設定し、
前記第2変数が示す前記アドレスが前記最大のアドレスを超えた場合、前記第2変数が示す前記アドレスを前記先頭のアドレスに設定し、
前記書き込み完了を検出する処理は、前記アドレスを生成する処理により1つの前記データ列に対応して生成された1つの前記単位アドレス範囲を、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとに基づいて特定し、
前記所定の演算を行う処理は、前記書き込み完了を検出する処理により特定された前記単位アドレス範囲から、前記所定の演算に用いる前記データ列を読み出す、
請求項1又は2に記載のデータ処理装置。
【請求項7】
前記所定の演算が離散フーリエ変換を含む、
請求項1~6のいずれか一項に記載のデータ処理装置。
【請求項8】
1以上のコンピュータが時系列データをリアルタイムに処理するデータ処理方法であって、
前記1以上のコンピュータは、前記時系列データの各データを一時的に記憶するための記憶領域を持つ記憶部を備え、
前記時系列データにおいて連続したM個の前記データが、1つのデータ列を構成し、
前記時系列データにおいて連続した2つの前記データ列が、互いに共通するN個(NはMより小さい自然数を示す。)の前記データを含み、
前記コンピュータが、
前記時系列データの各前記データを順次に取得する処理と、
取得した前記データの前記記憶領域における書き込み先のアドレスを生成する処理と、
生成した前記アドレスに、取得した前記データを書き込む処理と、
各前記データ列の書き込みが完了したことを検出する処理と、
1つの前記データ列の書き込み完了を検出する度に、当該1つのデータ列に基づいて所定の演算を行う処理と
を実行し、
前記アドレスを生成する処理は、1つの前記データ列を構成する前記M個のデータに対応したM個の連続する前記アドレスを、1つの単位アドレス範囲として生成し、
1つの前記単位アドレス範囲は、
当該1つのデータ列における前半のN個の前記データに対応したN個の第1アドレスと、
当該1つのデータ列における後半の(M-N)個の前記データに対応した(M-N)個の第2アドレスとを含み、
前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より前のN個の連続した前記アドレスを、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記N個の第1アドレスとする、
データ処理方法。
【請求項9】
1以上のコンピュータを、請求項1~7のいずれか一項に記載のデータ処理装置における前記処理部として機能させるプログラム。
【請求項10】
回転体を一定の周期で撮像する撮像装置と、
請求項7に記載のデータ処理装置とを有し、
前記時系列データの前記データを順次に取得する処理は、前記撮像装置において撮像された前記回転体の画像における特定の領域に含まれた画素の値に応じた数値データを、前記時系列データの前記データとして周期的に取得し、
前記処理部は、前記所定の演算として行った前記離散フーリエ変換の結果が示す前記時系列データの周波数成分に基づいて、前記回転体の回転速度を算出する、
回転速度計測装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びデータ処理方法とそのプログラム、並びに、データ処理装置を備えた回転計測装置に関するものである。
【背景技術】
【0002】
回転体の回転に伴う物理量(光、磁気など)の変化に基づいて、回転体の回転速度をリアルタイムに計測する計測装置が知られている。例えば下記の特許文献に記載される回転速度計測装置は、カメラで撮影した回転体の映像の一部分をユーザの操作によって選択し、選択した映像の一部分(検出範囲)に含まれる画素の情報(輝度情報)に対して時間周波数領域でフーリエ変換(離散フーリエ変換)を行い、フーリエ変換によって得られた周波数成分から回転速度を算出する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、上記特許文献1の回転速度計測装置における離散フーリエ変換(以下、DFTと略記する場合がある。)は、一連の複数の輝度情報からなるデータ列を使用する。データ列を構成する輝度情報の個数(データ長)を減らすと、DFTの演算の誤差が大きくなり、回転速度の精度が低下する。そのため、DFTに使用するデータ列にはある程度のデータ長が必要となる。
【0005】
他方、輝度情報は映像(動画)の1フレーム毎に1つずつ取得されるため、一般的なフレームレートのカメラを用いた場合、単位時間あたりに取得可能な輝度情報は数10程度である。この場合、1つのデータ列のデータ長を数100程度とすると、1つのデータ列に対応する映像の期間は数秒程度となる。1つの映像の期間から1つのデータ列のみを取得してDFTを行ったとすると、DFTは数秒に1回しか行われないため、回転速度の算出結果も数秒に1回しか得られないことになる。
【0006】
DFTの実行頻度を高める1つの方法として、連続したデータ列における一部の輝度情報を重複させることが考えられる。例えば、連続した2つのデータ列における半分の輝度情報を重複させた場合、1つのデータ列が取得されてから次のデータ列が取得されるまでの期間が半分になる。この場合、データ列の取得頻度が2倍になり、DFTの実行頻度も2倍となる。
【0007】
連続したデータ列における一部のデータ(輝度情報など)が重複するようにデータ列を取得する処理は、例えば
図10Aに示すようなリングバッファを用いて実現することができる。
図10Aに示すリングバッファは、アドレスA0からアドレスA15までの16個のメモリ領域を備える。一定の時間間隔でサンプリングされたデータは、アドレスA0,A1,A2,…の順番で、リングバッファの各メモリ領域に書き込まれる。1つのデータが末尾のアドレスA15に書き込まれると、その次のデータは先頭のアドレスA0に書き込まれる。
【0008】
図10Bは、アドレスA0~A11にデータD0~D11が格納された状態を示す。12個のデータD0~D11が1つのデータ列DS1を構成するものとすると、アドレスA0~A11からデータ列DS1を読み出すことができる。
【0009】
図10Cは、
図10Bの状態から更に8つのデータD12~D19がリングバッファに書き込まれた状態を示す。
図10Cに示すように、アドレスA12~A15,A0~A3に書き込まれた12個のデータD8~D19がデータ列DS2を構成するものとすると、アドレスA12~A15,A0~A3からデータ列DS2を読み出すことができる。この場合、連続する2つのデータ列DS1及びDS2においては、4つのデータD8~D11が重複している。
【0010】
このように、リングバッファを用いることによって、連続したデータ列における一部のデータが重複するようにデータ列を取得することが可能となる。しかしながら、リングバッファにおいては、書き込み先のアドレスが末尾のアドレスとなった場合、次の書き込み先のアドレスが先頭のアドレスに戻るため、1つのデータ列に含まれる一連のデータにおいてアドレスが不連続になる場合がある。例えば
図10Cに示すデータ列DS2は、前半の8つのデータD8~D15のアドレスA8~A15と、後半の4つのデータD16~D19のアドレスA0~A3とが不連続になっている。DFTの演算処理では、データ列の各データを決められた組み合わせで順次、積和を繰り返す。そのため、データ列に含まれる一連のデータのアドレスが不連続になっていると、リングバッファからデータの読み出す際に条件判断などの処理が必要になり、全体的な演算の負荷が重くなるという不利益がある。
【0011】
本発明はかかる事情に鑑みてなされたものであり、その目的は、時系列データから周期的にデータ列を取得してDFTなど所定の演算を行う場合に、連続するデータ列において一部のデータが重複していても、記憶領域における連続したアドレス範囲に各データ列を書き込むことができるデータ処理装置、データ処理方法及びプログラムを提供することと、そのようなデータ処理装置を備える回転速度計測装置を提供することにある。
【課題を解決するための手段】
【0012】
本発明の第1の態様は、時系列データをリアルタイムに処理するデータ処理装置であって、前記時系列データの各データを一時的に記憶するための記憶領域を持つ記憶部と、処理部とを有し、前記時系列データにおいて連続したM個の前記データが、1つのデータ列を構成し、前記時系列データにおいて連続した2つの前記データ列が、互いに共通するN個(NはMより小さい自然数を示す。)の前記データを含み、前記処理部は、前記時系列データの各前記データを順次に取得する処理と、取得した前記データの前記記憶領域における書き込み先のアドレスを生成する処理と、生成した前記アドレスに、取得した前記データを書き込む処理と、各前記データ列の書き込みが完了したことを検出する処理と、1つの前記データ列の書き込み完了を検出する度に、当該1つのデータ列に基づいて所定の演算を行う処理とを実行し、前記アドレスを生成する処理は、1つの前記データ列を構成する前記M個のデータに対応したM個の連続する前記アドレスを、1つの単位アドレス範囲として生成し、1つの前記単位アドレス範囲は、当該1つのデータ列における前半のN個の前記データに対応したN個の第1アドレスと、当該1つのデータ列における後半の(M-N)個の前記データに対応した(M-N)個の第2アドレスとを含み、前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より前のN個の連続した前記アドレスを、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記N個の第1アドレスとする。
【0013】
この構成によれば、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より後の前記記憶領域には、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記(M-N)個の第2アドレスを確保することができない。この場合、当該1つの単位アドレス範囲より前のN個の連続した前記アドレスが、当該次の単位アドレス範囲における前記N個の第1アドレスとされる。これにより、当該次の単位アドレス範囲として、前記記憶領域の連続したM個の前記アドレスが確保される。また、当該次の単位アドレス範囲における前記N個の第1アドレスが当該1つの単位アドレス範囲から外れているため、当該N個の第1アドレスにN個の新たな前記データが書き込まれても、当該1つの単位アドレス範囲に既に書き込まれた前記データが当該新たなデータによって上書きされることがない。従って、連続する2つの前記データ列においてN個の前記データを重複させつつ、前記記憶領域の連続したアドレス範囲(単位アドレス範囲)に各前記データ列を書き込むことが可能となる。
【0014】
好ましくは、前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合、当該1つの単位アドレス範囲における後半のN個の前記アドレスを、前記次の単位アドレス範囲における前記N個の第1アドレスとし、当該1つの単位アドレス範囲の後に続く(M-N)個の連続した前記アドレスを、前記次の単位アドレス範囲における前記(M-N)個の第2アドレスとする。
【0015】
この構成によれば、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合、当該1つの単位アドレス範囲より後の前記記憶領域には、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記(M-N)個の第2アドレスを確保することができる。この場合、当該1つの単位アドレス範囲における後半のN個の前記アドレスが、前記次の単位アドレス範囲における前記N個の第1アドレスとされ、当該1つの単位アドレス範囲の後に続く(M-N)個の連続した前記アドレスが、前記次の単位アドレス範囲における前記(M-N)個の第2アドレスとされる。これにより、当該1つの単位アドレス範囲と前記次の単位アドレス範囲とが前記記憶領域において重なり合って確保されるため、前記記憶領域を効率的に使用することが可能となる。
【0016】
好ましくは、前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、前記記憶領域における先頭からN番目までのN個の前記アドレスを、前記次の単位アドレス範囲における前記N個の第1アドレスとする。
【0017】
この構成によれば、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より後の前記記憶領域には、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記(M-N)個の第2アドレスを確保することができない。この場合、前記記憶領域における先頭からN番目までのN個の前記アドレスが、前記次の単位アドレス範囲における前記N個の第1アドレスとされる。これにより、前記次の単位アドレス範囲における前記N個の第1アドレスの範囲が、当該1つの単位アドレス範囲に対して最大限に離れるため、当該1つの単位アドレス範囲への書き込みが完了した前記データ列が別の前記データによって上書きされるまでの時間を長くすることが可能となり、前記所定の演算の処理時間を確保し易くなる。
【0018】
好ましくは、前記アドレスを生成する処理は、取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合であって、かつ、当該1つの単位アドレス範囲における後半のN個の前記アドレスを生成する場合、当該1つのデータ列における1つの前記データを取得する度に、前記後半のN個のアドレスから1つの前記アドレスを生成するとともに、前記次の単位アドレス範囲における前記N個の第1アドレスから1つの前記アドレスを生成し、取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合、当該1つのデータ列における1つの前記データを取得する度に、当該1つのデータに対応した1つの前記アドレスを生成する。
【0019】
この構成によれば、取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合であって、かつ、当該1つの単位アドレス範囲における後半のN個の前記アドレスを生成する場合に、前記次の単位アドレス範囲における前記N個の第1アドレスの生成も並行して行われる。すなわち、当該1つのデータ列における1つの前記データが取得される度に、前記後半のN個のアドレスから1つの前記アドレスが生成されるとともに、前記次の単位アドレス範囲における前記N個の第1アドレスから1つの前記アドレスが生成される。他方、取得途中の1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個以上の場合は、当該1つのデータ列における1つの前記データを取得する度に、当該1つのデータに対応した1つの前記アドレスが生成される。これにより、同じ前記データが異なる前記アドレスに並行して書き込まれる場合が限定される。
【0020】
好ましくは、前記記憶領域は、{k×(M-N)+N}個以上、{(k+1)×(M-N)+N}個未満の前記アドレス(kは2以上の自然数を示す。)により構成され、前記アドレスを生成する処理及び前記データを書き込む処理は、初期状態において、第1変数が示す前記アドレスを、前記記憶領域の先頭の前記アドレスに設定し、1つの前記データを取得する度に、取得した前記1つのデータを前記第1変数が示す前記アドレスに書き込み、当該書き込みの後、前記第1変数が示す前記アドレスをインクリメントし、1つの前記データを取得する度に、前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+1}番目の前記アドレスであるか確認し、前記第1変数が示す前記アドレスが前記{k×(M-N)+1}番目のアドレスである場合、第2変数が示す前記アドレスを前記先頭のアドレスに設定し、1つの前記データを取得する度に、前記第1変数が示す前記アドレスが、前記記憶領域の{k×(M-N)+1}番目から{k×(M-N)+N}番目までのアドレス範囲に含まれるか確認し、前記第1変数が示す前記アドレスが当該アドレス範囲に含まれる場合、取得した前記1つのデータを前記第2変数が示す前記アドレスに書き込み、当該書き込みの後、前記第2変数が示す前記アドレスをインクリメントし、前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+N}番目のアドレスを超えた場合、前記第1変数が示す前記アドレスを、前記第2変数が示す前記アドレスに設定する。
【0021】
この構成によれば、前記第1変数が示す前記アドレスが前記{k×(M-N)+1}番目のアドレスである場合、当該アドレスからN番目の前記アドレスは1つの前記単位アドレス範囲の末尾と一致する一方、当該アドレスからM番目の前記アドレスは前記記憶領域から逸脱する。この場合、当該アドレスより後の前記記憶領域には、当該1つの前記単位アドレス範囲に対して次の前記単位アドレス範囲における前記(M-N)個の第2アドレスを確保することができない。そのため、前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+1}番目から{k×(M-N)+N}番目のアドレス範囲に含まれる場合(当該1つの前記単位アドレス範囲に含まれる場合)は、当該1つの前記単位アドレス範囲へのデータ書き込みと並行して、前記先頭のアドレスから始まる当該次の単位アドレス範囲へのデータ書き込みが行われる。
前記第1変数が示す前記アドレスが前記記憶領域の{k×(M-N)+N}番目のアドレスを超えた場合、当該1つの前記単位アドレス範囲に対する前記データ列の書き込みが完了する。この場合、前記第1変数が示す前記アドレスとして、前記第2変数が示す前記アドレスが設定されることにより、当該次の単位アドレス範囲へのデータ書き込みが続行される。
【0022】
好ましくは、前記記憶領域は、L個(Lは2×M以上の整数を示す。)の前記アドレスにより構成され、前記アドレスを生成する処理及び前記データを書き込む処理は、初期状態において、第1変数が示す前記アドレスと第2変数が示す前記アドレスとのアドレス間隔を、M以上(L-M)以下に設定し、1つの前記データを取得する度に、取得した前記1つのデータを、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとに書き込み、当該書き込みの後、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとをそれぞれインクリメントし、前記第1変数が示す前記アドレスが、前記記憶領域の最大の前記アドレスを超えた場合、前記第1変数が示す前記アドレスを前記記憶領域の先頭の前記アドレスに設定し、前記第2変数が示す前記アドレスが前記最大のアドレスを超えた場合、前記第2変数が示す前記アドレスを前記先頭のアドレスに設定し、前記書き込み完了を検出する処理は、前記アドレスを生成する処理により1つの前記データ列に対応して生成された1つの前記単位アドレス範囲を、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとに基づいて特定し、前記所定の演算を行う処理は、前記書き込み完了を検出する処理により特定された前記単位アドレス範囲から、前記所定の演算に用いる前記データ列を読み出す。
【0023】
この構成によれば、前記第1変数が示す前記アドレスへのデータ書き込みと前記第2変数が示す前記アドレスへのデータ書き込みとが並行して行われ、このデータ書き込みの後、前記第1変数が示す前記アドレス及び前記第2変数が示す前記アドレスがそれぞれインクリメントされる。そして、前記第1変数が示す前記アドレス及び前記第2変数が示す前記アドレスは、それぞれ前記記憶領域の前記最大のアドレスに達した後、前記記憶領域の前記先頭のアドレスに戻される。
前記記憶領域がL個(≧M)の前記アドレスにより構成されており、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとのアドレス間隔が前記初期状態においてM以上(L-M)以下に設定されるため、当該アドレス間隔は、前記初期状態の後もM以上(L-M)以下に保たれる。これにより、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスの少なくとも一方が、M回のインクリメントによってM個の連続した前記アドレス(前記単位アドレス範囲)を生成する。
前記第1変数の前記アドレスをインクリメントすることにより得られる一連の前記アドレスと、前記第2変数の前記アドレスをインクリメントすることにより得られる一連の前記アドレスとは、前記記憶領域において異なるアドレス範囲にあるため、前記第1変数が示す前記アドレスと前記第2変数が示す前記アドレスとに基づいて(例えば両者の大小関係から)、前記単位アドレス範囲を構成する一連の前記アドレスが特定される。
【0024】
好ましくは、前記所定の演算が離散フーリエ変換を含む。
この構成によれば、前記データ列が連続したM個の前記アドレスからなる前記単位アドレス範囲に書き込まれているため、前記単位アドレス範囲から前記データを読み出す際の処理が前記単位アドレス範囲の先頭アドレスを基準としたオフセットとして常に同一表現できることで簡易になり、離散フーリエ変換における算術演算の負荷が軽減される。
【0025】
本発明の第2の態様は、1以上のコンピュータが時系列データをリアルタイムに処理するデータ処理方法であって、前記1以上のコンピュータは、前記時系列データの各データを一時的に記憶するための記憶領域を持つ記憶部を備え、前記時系列データにおいて連続したM個の前記データが、1つのデータ列を構成し、前記時系列データにおいて連続した2つの前記データ列が、互いに共通するN個(NはMより小さい自然数を示す。)の前記データを含み、前記コンピュータが、前記時系列データの各前記データを順次に取得する処理と、取得した前記データの前記記憶領域における書き込み先のアドレスを生成する処理と、生成した前記アドレスに、取得した前記データを書き込む処理と、各前記データ列の書き込みが完了したことを検出する処理と、1つの前記データ列の書き込み完了を検出する度に、当該1つのデータ列に基づいて所定の演算を行う処理とを実行し、前記アドレスを生成する処理は、1つの前記データ列を構成する前記M個のデータに対応したM個の連続する前記アドレスを、1つの単位アドレス範囲として生成し、1つの前記単位アドレス範囲は、当該1つのデータ列における前半のN個の前記データに対応したN個の第1アドレスと、当該1つのデータ列における後半の(M-N)個の前記データに対応した(M-N)個の第2アドレスとを含み、前記アドレスを生成する処理は、1つの前記データ列に対応する1つの前記単位アドレス範囲より後の前記アドレスの個数が(M-N)個未満の場合、当該1つの単位アドレス範囲より前のN個の連続した前記アドレスを、当該1つのデータ列に続く次の前記データ列に対応した次の前記単位アドレス範囲における前記N個の第1アドレスとする。
【0026】
本発明の第3の態様は、1以上のコンピュータを、上記第1の態様のデータ処理装置における前記処理部として機能させるプログラムである。
【0027】
本発明の第4の態様は、回転体を一定の周期で撮像する撮像装置と、上記第1の態様のデータ処理装置とを有し、前記時系列データの前記データを順次に取得する処理は、前記撮像装置において撮像された前記回転体の画像における特定の領域に含まれた画素の値に応じた数値データを、前記時系列データの前記データとして周期的に取得し、前記処理部は、前記所定の演算として行った離散フーリエ変換の結果が示す前記時系列データの周波数成分に基づいて、前記回転体の回転速度を算出する、回転速度計測装置である。
【発明の効果】
【0028】
本発明によれば、時系列データから周期的にデータ列を取得してDFTなど所定の演算を行う場合に、連続するデータ列において一部のデータが重複していても、記憶領域における連続したアドレス範囲に各データ列を書き込むことができる。
【図面の簡単な説明】
【0029】
【
図1】
図1は、本実施形態に係る回転計測装置の構成の一例を示す図である。
【
図2】
図2は、時系列データからデータ列を取得してフーリエ変換を実行する動作の一例を図解した図である。
【
図3】
図3は、第1の実施形態に係る回転計測装置において、記憶領域に時系列データを書き込む動作の一例を図解した図である。
【
図4】
図4は、第1の実施形態に係る回転計測装置において、記憶領域に時系列データを書き込む動作の一例を図解した図である。
【
図5】
図5は、第1の実施形態に係る回転計測装置の処理の一例を説明するためのフローチャートである。
【
図6】
図6は、第1の実施形態に係る回転計測装置の処理の第1変形例を説明するためのフローチャートである。
【
図7】
図7は、第1の実施形態に係る回転計測装置の処理の第2変形例を説明するためのフローチャートである。
【
図8】
図8は、第2の実施形態に係る回転計測装置において、記憶領域に時系列データを書き込む動作の一例を図解した図である。
【
図9】
図9は、第2の実施形態に係る回転計測装置の処理の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【0030】
<第1の実施形態>
図1は、本実施形態に係る回転計測装置の構成の一例を示す図である。
図1に示す回転計測装置は、回転駆動されたプロペラ5を一定の周期(フレームレート)で撮像する撮像装置2と、撮像装置2で撮像されたプロペラ5の画像に基づいてプロペラ5の回転速度を算出するデータ処理装置1とを有する。なお、本実施形態における回転速度の計測対象は、
図1に示すようなプロペラ5に限定されず、撮像装置2によって撮像可能な任意の回転体でよい。
【0031】
撮像装置2は、回転体(プロペラ5など)の少なくとも一部の画像を直接的若しくは間接的に撮像し、その撮像データをデータ処理装置1に出力する。撮像装置2は、例えばCMOSセンサやCCDセンサなどの撮像素子を含む。
【0032】
データ処理装置1は、撮像装置2から入力した撮像データをもとに、回転体の回転に伴って変化する一連のデータを時系列データとして取得し、時系列データに高速フーリエ変換(以下、「FFT」と記す場合がある。)などのDFT演算を行うことによって回転体の回転速度を算出する。
【0033】
図1に示すデータ処理装置1は、入力部11と、表示部12と、記憶部13と、処理部14を含む。
【0034】
入力部11は、ユーザの指示を処理部14へ入力するための機器である。例えば入力部11は、マウス、キーボード、タッチパッド、タッチパネル、押しボタン、回転スイッチなど、ユーザの操作に応じた信号を生成する1以上の入力機器を含む。
【0035】
表示部12は、処理部14において生成される映像データに基づいて映像を表示する装置であり、例えば液晶ディスプレイや有機ELディスプレイなどを含む。
【0036】
記憶部13は、処理部14の後述するコンピュータにおいて処理を実行させるためのプログラム15を記憶する。また記憶部13は、処理の実行に繰り返し使用される定数データ、処理の実行過程で一時的に保存される変数データなどを記憶する。具体的には、記憶部13は、撮像装置2から入力した撮像データに基づく時系列データの各データを一時的に記憶するための記憶領域を持つ。
【0037】
記憶部13に格納されるプログラム15は、例えば、処理部14が備える任意の入力インターフェースに接続された外部記憶装置(USBメモリ)から読み出されたものでもよいし、処理部14に接続される任意の記録媒体読み取り装置において非一時的な記録媒体(光ディスクなど)から読み出されたものでもよいし、処理部14が備える任意の通信インターフェースを介して外部のサーバ装置などからダウンロードしたものでもよい。
【0038】
記憶部13は、例えばDRAM、SRAM、ROM、フラッシュメモリ、ハードディスクなど、1以上の任意の記憶装置を含む。
【0039】
処理部14は、データ処理装置1の全体的な動作を制御する装置であり、回転体の回転速度の計測に関わる処理を実行する。処理部14は、記憶部13に格納された1以上のプログラム15の命令コードに従って処理を実行する1以上の処理回路(CPU、MPUなど)を含む。1以上の処理回路がプログラム15に基づいて処理を実行する場合、処理部14は1以上のコンピュータとして動作する。処理部30は、回転体の回転速度の計測に関わる処理を、上述した1以上のコンピュータとして実行する。
【0040】
なお、処理部14は、特定の機能を実現するように構成された1以上の専用のハードウェア(ASIC、FPGAなど)を含んでもよい。この場合、処理部14は、回転体の回転速度の計測に関わる処理の少なくとも一部を、専用のハードウェアにおいて実行してもよい。
【0041】
処理部14は、回転速度の測定に関する処理として、検出範囲設定処理、時系列データ取得処理、アドレス生成処理、データ書き込み処理、書き込み完了検出処理、演算処理、及び、回転速度算出処理を実行する。
【0042】
(検出範囲設定処理)
処理部14は、回転速度の測定を開始する前に、撮像装置2で撮像された回転体の画像において回転速度の測定に使用される検出範囲を設定する。例えば処理部14は、撮像装置2で撮像された回転体の映像を動画として表示部12の画面に表示し、入力部11において入力されるユーザの指示に従って、画面上の回転体の映像から検出範囲を設定する。
【0043】
(時系列データ取得処理)
処理部14は、回転速度の測定を開始すると、撮像装置2から入力した撮像データに基づいて、時系列データの各データを順次に取得する。処理部14は、撮像データにおける1フレーム分の画像の中から、上記の検出範囲に含まれる1以上の画素を特定し、特定した1以上の画素の値に基づいて、時系列データの1つのデータを取得(サンプリング)する。例えば処理部14は、検出範囲に含まれる1以上の画素の値に基づいて、この検出範囲における平均的な光の強度(輝度など)を示す数値を算出し、この数値を時系列データの1つのデータとして取得する。
【0044】
処理部14は、後述するアドレス生成処理、データ書き込み処理及び書き込み完了検出処理によって、時系列データからデータ列を反復的に取得する。時系列データにおいて連続したM個のデータは、1つのデータ列を構成する。「M」は、データ列のデータ長を示す。また、時系列データにおいて連続した2つのデータ列は、互いに共通するN個(NはMより小さい自然数を示す。)のデータを含む。「N」は、連続した2つのデータ列におけるデータ重複数を示す。
【0045】
(アドレス生成処理、データ書き込み処理)
処理部14は、時系列データ取得処理においてデータを取得すると、記憶部13において確保した記憶領域における当該データの書き込み先のアドレスを生成する。処理部14は、1つのデータ列の書き込み先として、記憶領域における連続したアドレスを生成する。すなわち、処理部14は、1つのデータ列を構成するM個のデータに対応したM個の連続するアドレスを生成する。処理部14は、時系列データ取得処理においてデータを取得したデータを、上記のアドレス生成処理によって生成したアドレスに書き込む。
【0046】
以下の説明では、1つのデータ列の書き込み先となるM個の連続したアドレスを、「単位アドレス範囲」と呼ぶ。また、1つの単位アドレス範囲における前半のN個のアドレスを、それぞれ「第1アドレス」と呼び、1つの単位アドレス範囲における後半の(M-N)個のアドレスを、それぞれ「第2アドレス」と呼ぶ。N個の第1アドレスは、1つのデータ列における前半のN個のデータに対応したアドレスであり、(M-N)個の第2アドレスは、1つのデータ列における後半の(M-N)個のデータに対応したアドレスである。
【0047】
また、以下の説明では、時系列データにおいて任意に選ばれた2つの連続するデータ列のうち、前のデータ列を「第1データ列」と呼び、後のデータ列を「第2データ列」と呼ぶ。また、ここで、第1データ列の書き込み先となる単位アドレス範囲を、「第1単位アドレス範囲」と呼び、第2データ列の書き込み先となる単位アドレス範囲を、「第2単位アドレス範囲」と呼ぶ。更に、第1データ列及び第2データ列において互いに共通するN個のデータを、それぞれ「共通データ」と呼び、第1データ列において共通データが書き込まれるアドレスを、「共通データ書き込みアドレス」と呼ぶ。
【0048】
上述したように、第1データ列及び第2データ列は、互いに共通するN個の共通データを含む。第1単位アドレス範囲における後半のN個のアドレス(第2アドレス)は、それぞれ共通データ書き込みアドレスであり、N個の共通データが書き込まれる。また、第2単位アドレス範囲におけるN個の第1アドレスにも、N個の共通データが書き込まれる。
【0049】
処理部14は、記憶領域において第1単位アドレス範囲より後に残るアドレスの個数(以下、「残存アドレス数」と記す場合がある。)に応じて、記憶領域における第2単位アドレス範囲の位置を変化させる。
【0050】
残存アドレス数が(M-N)個より大きい場合、記憶領域において第1単位アドレス範囲より後に、第2単位アドレス範囲の(M-N)個の第2アドレスを確保できる。この場合、処理部14は、記憶領域において第1単位アドレス範囲と重なる範囲を第2単位アドレス範囲とする。すなわち、処理部14は、残存アドレス数が(M-N)個以上の場合、第1単位アドレス範囲のN個の共通データ書き込みアドレス(第1単位アドレス範囲における後半のN個のアドレス)を、第2単位アドレス範囲のN個の第1アドレスとする。また、処理部14は、第1単位アドレス範囲に続く(M-N)個の連続したアドレスを、第2単位アドレス範囲における(M-N)個の第2アドレスとする。
【0051】
残存アドレス数が(M-N)個より大きい場合、処理部14は、1つのデータを取得する度に1つのアドレスを生成する。すなわち、この場合、処理部14は、第1データ列を取得する途中において1つのデータを取得する度に、当該1つのデータに対応した1つのアドレス(第1単位アドレス範囲のアドレス)を生成する。
【0052】
一方、残存アドレス数が(M-N)個未満の場合、記憶領域において第1単位アドレス範囲より後には、第2単位アドレス範囲の(M-N)個の第2アドレスを確保できない。この場合、処理部14は、記憶領域において第1単位アドレス範囲より前のN個の連続したアドレスを、第2単位アドレス範囲におけるN個の第1アドレスとする。例えば、処理部14は、記憶領域における先頭からN番目までのN個のアドレスを、第2単位アドレス範囲におけるN個の第1アドレスとする。
【0053】
第2単位アドレス範囲のN個の第1アドレスにN個のデータを書き込んだとき、第1単位アドレス範囲において第1データ列の書き込みが完了する。このとき、第2単位アドレス範囲のN個の第1アドレスが第1単位アドレス範囲より前のアドレスであることにより、第2単位アドレス範囲に書き込んだデータは、第1単位アドレス範囲の各データ(第1データ列)を上書きすることがない。そのため、書き込みが完了した第1データ列を、後述のFFT演算処理において正常に読み出すことができる。
【0054】
残存アドレス数が(M-N)個未満の場合であって、かつ、第1単位アドレス範囲における後半のN個のアドレス(共通データ書き込みアドレス)を生成する場合、処理部14は、2つのアドレスを並行して生成する。すなわち、この場合、処理部14は、第1データ列を取得する途中において1つのデータを取得する度に、第1単位アドレス範囲における後半のN個のアドレスから1つのアドレスを生成するとともに、第2単位アドレス範囲におけるN個の第1アドレスから1つのアドレスを生成する。
【0055】
ここで、時系列データの一時的な保存のために確保される記憶領域が、{k×(M-N)+N}個以上、{(k+1)×(M-N)+N}個未満のアドレス(kは2以上の自然数を示す。)により構成されるものとする。また、記憶領域の先頭から{k×(M-N)+1}番目のアドレスを、「第1境界アドレスAt1」と呼び、記憶領域の先頭から{k×(M-N)+N}番目のアドレスを、「第2境界アドレスAt2」と呼ぶものとする。
【0056】
第1境界アドレスAt1(先頭から{k×(M-N)+1}番目のアドレス)は、記憶領域の最も末尾に近い単位アドレス範囲(以下、「末尾側単位アドレス範囲」と記す場合がある。)に含まれる。第1境界アドレスAt1から数えてN番目のアドレスが、末尾側単位アドレス範囲における末尾のアドレスである。末尾側単位アドレス範囲を第1単位アドレス範囲と見なした場合、第1境界アドレスAt1は、N個の共通データ書き込みアドレスにおける1番目のアドレスである。
【0057】
第2境界アドレスAt2(先頭から{k×(M-N)+N}番目のアドレス)は、第1境界アドレスAt1から数えてN番目のアドレスであり、末尾側単位アドレス範囲における末尾のアドレスである。
【0058】
例えば処理部14は、それぞれ書き込み先のアドレスを示す2つの変数(第1変数W1、第2変数W2)を使用して、アドレス生成処理とデータ書き込み処理を行う。
まず初期状態において、処理部14は、第1変数W1が示すアドレスを、記憶領域の先頭のアドレス(以下、「先頭アドレスAh」と記す場合がある。)に設定する。
処理部14は、時系列データ取得処理において1つのデータを取得する度に、取得した1つのデータを第1変数W1が示すアドレスに書き込み、当該書き込みの後、第1変数W1が示すアドレスをインクリメントする。
また、処理部14は、時系列データ取得処理において1つのデータを取得する度に、第1変数W1が示すアドレスが第1境界アドレスAt1であるか確認し、第1変数W1が示すアドレスが第1境界アドレスAt1である場合、第2変数W2が示すアドレスを先頭アドレスAhに設定する。
更に、処理部14は、時系列データ取得処理において1つのデータを取得する度に、第1変数W1が示すアドレスが第1境界アドレスAt1から第2境界アドレスAt2までのアドレス範囲に含まれるか確認する。第1変数W1が示すアドレスがこのアドレス範囲(At1~At2)に含まれる場合、処理部14は、取得した1つのデータを、第1変数W1が示すアドレスと第2変数W2が示すアドレスとにそれぞれ書き込み、この書き込み後、第1変数W1が示すアドレスと第2変数W2が示すアドレスとをそれぞれインクリメントする。
第1変数W1が示すアドレスをインクリメントした結果、第1変数W1が示すアドレスが第2境界アドレスAt2を超えた場合、処理部14は、第1変数W1が示すアドレスを、第2変数W2が示すアドレスに設定する。
【0059】
(書き込み完了検出処理)
処理部14は、上述したアドレス生成処理及びデータ書き込み処理の過程において、各データ列の単位アドレス範囲への書き込みが完了したことを検出する。例えば処理部14は、記憶領域の先頭アドレスAhからデータの書き込みを開始するとき、記憶領域に対するデータの書き込み回数の計数を開始し、その計数値に基づいて、各データ列の書き込みが完了したことを検出する。
【0060】
また処理部14は、1つのデータ列の書き込みが完了したことを検出した場合、当該1つのデータ列が書き込まれた単位アドレス範囲を特定する。例えば処理部14は、単位アドレス範囲の先頭アドレスを所定の変数に保存し、1つのデータ列の書き込みが完了したことを検出する度に、次の単位アドレス範囲の先頭アドレスを示すように当該所定の変数を更新する。
【0061】
なお、上述した第1変数W1は、最新の書き込み先のアドレスを示しており、この書き込み先のアドレスに基づいて、単位アドレス範囲中のどのアドレスまでデータが書き込まれたかを把握することが可能である。そこで、処理部14は、この第1変数W1が示すアドレスに基づいて、単位アドレス範囲の末尾のアドレスにおけるデータの書き込みを検出することにより、データ列の書き込みが完了したことを検出してもよい。この場合、処理部14は、1つのデータ列の書き込みが完了した際の第1変数W1が示すアドレスに基づいて、当該1つのデータ列が書き込まれた単位アドレス範囲(例えば単位アドレス範囲における先頭アドレス)を特定してもよい。
【0062】
(FFT演算処理、回転速度算出処理)
処理部14は、書き込み完了検出処理において1つのデータ列の書き込み完了を検出する度に、当該1つのデータ列に基づいてFFT演算を行う。処理部14は、書き込み完了検出処理において特定した単位アドレス範囲から、FFT演算に使用するデータ列を読み出す。処理部14は、FFT演算の結果が得られると、この演算結果が示す時系列データの周波数成分に基づいて、回転体の回転速度を算出する。例えば
図1に示すようなプロペラ5において、対称な5枚の羽根51が通過する位置を検出範囲とした場合、処理部14は、FFT演算によって得られた周波数成分における最大ピークの周波数に対して5分の1の周波数を、プロペラ5の回転速度(単位時間当たりの回転数)として算出する。
【0063】
次に、上述した本実施形態に係る回転速度検出装置の動作について説明する。
【0064】
図2は、時系列データからデータ列を取得してFFTを実行する動作の一例を図解した図である。
図2における「D(1)」,「D(2)」,…は、時系列データにおける個々のデータを示す。以下の説明では、個々のデータ(D(1),D(2),…)を区別せずに「データD」と記す場合がある。また、
図2における「DS1」,「DS2」,…は、それぞれ時系列データにおける個々のデータ列を示す。以下の説明では、個々のデータ列(DS1,DS2,…)を区別せずに「データ列DS」と記す場合がある。
図2の例にいて、データ列DSのデータ長Mは「8」であり、2つの連続するデータ列DSにおけるデータ重複数Nは「2」である。データ処理装置1の処理部14は、
図2に示すように、時系列データから1つのデータ列DSを取得する度にFFT演算を行う。
【0065】
図3は、第1の実施形態に係る回転速度計測装置において、
図2に示す時系列データ(M=8,N=2)を記憶領域に書き込む動作の第1の例を図解した図である。
図3の例において、記憶領域のサイズ(割り当てられたアドレスの個数)は「16」である。
図3における「R1」,「R2」,…は、それぞれデータD(1),D(2),…の書き込み先の単位アドレス範囲を示す。以下の説明では、個々の単位アドレス範囲(R1,R2,…)を区別せずに「単位アドレス範囲R」と記す場合がある。
【0066】
初期状態において、第1変数W1には、記憶領域の先頭アドレスAhが設定される。時系列データの新たなデータDが取得される度に、第1変数W1が示すアドレスには取得されたデータDが書き込まれ、データDの書き込み後に第1変数W1のアドレスがインクリメントされる。アドレス(Ah+7)にデータD(8)が書き込まれたとき、単位アドレス範囲R1(Ah~Ah+7)へのデータ列DS1(D(1)~D(8))の書き込みが完了する。このとき、変数Abは単位アドレス範囲R1の先頭のアドレスAhを示しており、単位アドレス範囲R1は変数Abにより特定される。データ列DS1の書き込みが完了すると、変数Ab(アドレスAh)により特定される単位アドレス範囲R1からデータ列DS1が読み出されて、FFT演算が行われる。
【0067】
データ列DSに続く次のデータ列DS2の単位アドレス範囲R2(Ah+6~Ah+13)は、
図3に示すように単位アドレス範囲R1と重なっている。また単位アドレス範囲R2は、記憶領域の末尾のアドレス(Ah+15)に最も近い末尾側単位アドレス範囲である。単位アドレス範囲R2のアドレス(Ah+12)にデータD(12)が書き込まれたとき、第1変数W1はアドレス(Ah+12)を示す。このアドレス(Ah+12)は、第1境界アドレスAt1である。すなわち、データ長Mが「8」、データ重複数Nが「2」、記憶領域のサイズが「16=2×(M-N)+4」である場合、第1境界アドレスAt1は先頭アドレスAhから{2×(M-N)+1}番目のアドレスであり、アドレス(Ah+12)と一致する。第1変数W1が示すアドレスが第1境界アドレスAt1である場合、第2変数W2には先頭アドレスAhが設定される。
【0068】
データD(12)に続いて取得されたデータD(13)は、第1変数W1が示すアドレス(Ah+12)と、第2変数W2が示す先頭アドレスAhとにそれぞれ書き込まれる。この書き込み後、第1変数W1及び第2変数W2のインクリメントが行われると、第2変数W2はアドレス(Ah+1)を示し、第1変数W1はアドレス(Ah+13)を示す。ここで、第1変数W1が示すアドレス(Ah+13)は、第2境界アドレスAt2である。すなわち、データ長Mが「8」、データ重複数Nが「2」、記憶領域のサイズが「16=2×(M-N)+4」である場合、第2境界アドレスAt2は先頭アドレスAhから{2×(M-N)+N}番目のアドレスであり、アドレス(Ah+13)と一致する。
【0069】
第1変数W1が示すアドレス(Ah+13)は、第1境界アドレスAt1から第2境界アドレスAt2までのアドレス範囲に含まれるため、データD(13)に続いて取得されたデータD(14)は、第1変数W1が示すアドレス(Ah+13)と、第2変数W2が示すアドレス(Ah+1)とにそれぞれ書き込まれる。これにより、単位アドレス範囲R2へのデータ列DS2の書き込みが完了する。このとき、変数Abは単位アドレス範囲R2の先頭のアドレス(Ah+6)を示しているため、変数Abにより特定される単位アドレス範囲R2からデータ列DS2が読み出されて、FFT演算が行われる。
【0070】
データD(14)の書き込み後、第1変数W1及び第2変数W2のインクリメントが行われると、第2変数W2はアドレス(Ah+2)を示し、第1変数W1はアドレス(Ah+14)を示す。ここで、第1変数W1が示すアドレス(Ah+14)は第2境界アドレスAt2を超えるため、第1変数W1には第2変数W2のアドレス(Ah+2)が設定される。これにより、
図3に示すように、データD(14)に続くデータD(15),D(16),…はアドレス(Ah+2),(Ah+3),…に書き込まれる。単位アドレス範囲R3は、単位アドレス範囲R2に対して先頭アドレスAh側にシフトし、単位アドレス範囲R2より後のアドレス(Ah+14,Ah+15)にはデータDの書き込みが行われない。
【0071】
図4は、本実施形態に係る回転速度計測装置において、
図2に示す時系列データ(M=8,N=2)を記憶領域に書き込む動作の第2の例を図解した図である。
図4の例において、記憶領域のサイズは「27」であり、
図3の例にくらべて大きくなっている。データ長Mが「8」、データ重複数Nが「2」、記憶領域のサイズが「27=4×(M-N)+3」の場合、
図4に示すように、第1境界アドレスAt1はアドレス(Ah+24)であり、第2境界アドレスAt2はアドレス(Ah+25)である。
【0072】
図4の例では、4つの単位アドレス範囲(R1~R4)が記憶領域の先頭側から末尾側に向かって連続的に割り当てられる。先頭側から4番目の単位アドレス範囲R4は、末尾側単位アドレス範囲となる。第1境界アドレスAt1及び第2境界アドレスAt2は、末尾側単位アドレス範囲である単位アドレス範囲R4に含まれる。第1変数W1がアドレス(Ah+24)を示す場合、アドレス(Ah+24)は第1境界アドレスであるため、第2変数W2には先頭アドレスAhが設定される。そして、第1変数W1が示すアドレスが、第1境界アドレスAt1から第2境界アドレスAt2までのアドレス範囲(Ah+24~Ah+25)に含まれる場合、第1変数W1及び第2変数W2が示すアドレスにそれぞれデータDが書き込まれる。第1変数W1が示すアドレスが第2境界アドレスAt2(アドレス(Ah+25))より大きくなると、第1変数W1には第2変数W2のアドレス(Ah+2)が設定される。これにより、
図4に示すように、単位アドレス範囲R5は先頭アドレスAh側にシフトし、単位アドレス範囲R4より後のアドレス(Ah+26)にはデータDの書き込みが行われない。
【0073】
図5は、本実施形態に係る回転計測装置の処理の一例を説明するためのフローチャートであり、回転体の回転速度をリアルタイムに測定する場合の処理を示す。
【0074】
処理部14は、回転速度の計測を開始する前の初期状態において、初期設定を行う(ST100)。処理部14は、初期設定において、記憶領域のサイズを{k×(M-N)+N}以上{(k+1)×(M-N)+N}未満のサイズを設定し(kは2以上の自然数)、第1変数W1を記憶領域の先頭アドレスAhに設定する。また処理部14は、記憶領域へのデータDの書き込み回数を示す変数Btをゼロに設定し、単位アドレス範囲Rの先頭のアドレスを示す変数Abを「Ah-(M-N)」に設定する。
【0075】
更に処理部14は、第1境界アドレスAt1をアドレス{Ah+k×(M-N)}に設定し、第2境界アドレスAt2をアドレス{Ah+k×(M-N)+(N-1)}に設定する。第1境界アドレスAt1は、先頭アドレスAhから数えて{k×(M-N)+1}番目のアドレスであり、第2境界アドレスAt2は、先頭アドレスAhから数えて{k×(M-N)+N}番目のアドレスである。
【0076】
処理部14は、撮像装置2の撮像データに基づいて1つのデータDを取得すると(ST105)、第1変数W1が示すアドレスにデータDを書き込む(ST110)。また処理部14は、第1変数W1が第1境界アドレスAt1を示すか確認し(ST115)、第1変数W1が第1境界アドレスAt1を示す場合は(ST115のYes)、第2変数W2に先頭アドレスAhを設定する(ST120)。更に処理部14は、第1変数W1と第2変数W2とを比較し(ST125)、両者のアドレスが不一致の場合(ST125のNo)、第2変数W2が示すアドレスにデータDを書き込む(ST130)。
【0077】
記憶領域にデータDを書き込んだ後、処理部14は、第1変数W1及び第2変数W2をそれぞれインクリメントするとともに、データDの書き込み回数を示す変数Btをインクリメントする(ST135)。
【0078】
処理部14は、インクリメント後の第1変数W1が第2境界アドレスAt2を示すか確認し(ST140)、第1変数W1が示すアドレスが第2境界アドレスAt2と一致した場合(ST140のYes)、第1変数W1が示すアドレスを第2変数W2が示すアドレスに設定する(ST145)。この場合、処理部14は、単位アドレス範囲Rの先頭のアドレスを示す変数Abを、初期設定(ST100)と同じ「Ah-(M-N)」に設定する。
【0079】
次いで処理部14は、変数Btがデータ長M以上か確認する(ST150)。変数Btがデータ長Mに達していない場合(ST150のNo)、処理部14はステップST105に戻り、ステップST105以降の処理を繰り返す。変数Btがデータ長M以上の場合(ST150のYes)、処理部14は、次のステップST155に移行する。
【0080】
処理部14は、ステップST155において、変数Btとデータ重複数Nとの差(Bt-N)がデータ長Mとデータ重複数Nとの差(M-N)で割り切れるか確認する。差(Bt-N)が差(M-N)で割り切れない場合(ST155のNo)、処理部14はステップST105に戻り、ステップST105以降の処理を繰り返す。差(Bt-N)が差(M-N)で割り切れる場合(ST155のYes)、処理部14は、直近のデータDの書き込み(ST110)によってデータ列DSの書き込みが完了したことを検出し、次のステップST160に移行する。
【0081】
処理部14は、ステップST160において、単位アドレス範囲Rの先頭のアドレスを示す変数Abに「M-N」を加算する。単位アドレス範囲Rは「M-N」ずつ記憶領域の末尾側へシフトするため、「M-N」を加算した変数Abは、ステップST155において書き込み完了が検出されたデータ列DSの単位アドレス範囲Rの先頭を示す。
【0082】
次いで処理部14は、変数Abにより特定された単位アドレス範囲Rのデータ列DSに基づいて、FFT演算を行う。また処理部14は、FFT演算により得られた時系列データの周波数成分に基づいて、回転体の回転速度を算出する(ST165)。処理部14は、算出した回転速度の情報を、表示部12の画面などに出力する(ST170)。その後、処理部14はステップST105に戻り、ステップST105以降の処理を繰り返す。
【0083】
以上説明したように、本実施形態に係る回転速度計測装置によれば、第1データ列(例えば
図4のデータ列DS4)の書き込み先となる第1単位アドレス範囲より後のアドレスの個数(残存アドレス数)が(M-N)個未満の場合、第1単位アドレス範囲より後の記憶領域には、第2データ列(例えば
図4のデータ列DS5)の書き込み先となる第2単位アドレス範囲の(M-N)個の第2アドレスを確保することができない。この場合、記憶領域において第1単位アドレス範囲より前のN個の連続したアドレスが、第2単位アドレス範囲におけるN個の第1アドレスとされる(例えば
図4の単位アドレス範囲R5におけるアドレスAh及び(Ah+1))。これにより、第2単位アドレス範囲として、記憶領域の連続したM個のアドレスが確保される。また、第2単位アドレス範囲におけるN個の第1アドレスが第1単位アドレス範囲から外れているため、第2単位アドレス範囲のN個の第1アドレスにN個の新たなデータDが書き込まれても、第1単位アドレス範囲に既に書き込まれたデータDが当該新たなデータDによって上書きされることがない。従って、連続する第1データ列及び第2データ列においてN個のデータDを重複させつつ、第1データ列及び第2データ列をそれぞれ記憶領域の連続したアドレス範囲(単位アドレス範囲)に書き込むことができる。
【0084】
また、本実施形態に係る回転速度計測装置によれば、第1データ列(例えば
図4のデータ列DS1)の書き込み先となる第1単位アドレス範囲より後のアドレスの個数(残存アドレス数)が(M-N)個以上の場合、第1単位アドレス範囲より後の記憶領域には、第1データ列に続く次の第2データ列(例えば
図4のデータ列DS2)の書き込み先となる第2単位アドレス範囲の(M-N)個の第2アドレスを確保することができる。この場合、第2単位アドレス範囲における後半のN個のアドレスが、第2単位アドレス範囲におけるN個の第1アドレスとされ(例えば
図4の単位アドレス範囲R2におけるアドレス(Ah+6)及び(Ah+7))、第1単位アドレス範囲の後に続く(M-N)個の連続したアドレスが、第2単位アドレス範囲における(M-N)個の第2アドレスとされる(例えば
図4の単位アドレス範囲R2におけるアドレス(Ah+8)~(Ah+13))。これにより、第1単位アドレス範囲と第2単位アドレス範囲とが記憶領域において重なり合って確保されるため、記憶領域を効率的に使用できる。
【0085】
また、本実施形態に係る回転速度計測装置によれば、第1単位アドレス範囲(例えば
図4の単位アドレス範囲R4)より後のアドレスの個数(残存アドレス数)が(M-N)個未満の場合、記憶領域における先頭アドレスAhからN番目までのN個のアドレスが、第2単位アドレス範囲におけるN個の第1アドレスとされる(例えば
図4の単位アドレス範囲R5におけるアドレスAh及び(Ah+1))。これにより、第2単位アドレス範囲におけるN個の第1アドレスの範囲が、第1単位アドレス範囲に対して最大限に離れるため、第1単位アドレス範囲への書き込みが完了した第1データ列が別のデータDによって上書きされるまでの時間を長くすることができる。例えば
図4の場合、単位アドレス範囲R5のアドレス(Ah+1)にデータD(26)が書き込まれたとき、単位アドレス範囲R4におけるデータ列DS4の書き込みが完了する。データ列DS4の書き込みが完了した後、アドレス(Ah+2)~(Ah+17)に16個のデータD(27)~D(42)が書き込まれるまでの間、単位アドレス範囲R4のデータ列DS4は新たなデータDで上書きされない。これにより、書き込みが完了したデータ列が記憶領域において上書きされずに保存される期間が長くなるため、FFTなどの演算の処理時間を確保し易くなる。
【0086】
また、本実施形態に係る回転速度計測装置によれば、取得途中の第1データ列(例えば
図4のデータ列DS4)の書き込み先である第1単位アドレス範囲より後のアドレスの個数(残存アドレス数)が(M-N)個未満の場合であって、かつ、第1単位アドレス範囲における後半のN個のアドレスを生成する場合に(例えば
図4の単位アドレス範囲R4におけるアドレス(Ah+24)及び(Ah+25))、第2単位アドレス範囲におけるN個の第1アドレスの生成も並行して行われる(例えば
図4の単位アドレス範囲R5におけるアドレスAh及び(Ah+1))。この場合、第1データ列における1つのデータDが取得される度に、第1単位アドレス範囲における後半のN個のアドレスから1つのアドレスが生成されるとともに、第2単位アドレス範囲におけるN個の第1アドレスから1つのアドレスが生成される。他方、第1単位アドレス範囲より後の残存アドレス数が(M-N)個以上の場合は、第1データ列における1つのデータDを取得する度に、当該1つのデータDに対応した1つのアドレスが生成される。これにより、同じデータDが異なるアドレスに並行して書き込まれる場合が限定されるため、記憶部13に対する書き込み動作の負荷を軽減できる。
【0087】
次に、本実施形態に係る回転速度計測装置の処理の変形例について、
図6及び
図7のフローチャートを参照して説明する。
【0088】
図6は、本実施形態に係る回転速度計測装置の処理の第1変形例を示す図である。
図6に示すフローチャートにおけるステップST100~ST160は、
図5に示すフローチャートと同じである。
図6に示す第1変形例では、
図5に示すフローチャートにおけるステップST165及びST170の処理(演算処理、出力処理)を、ステップST100~ST160の処理を実行する主スレッドとは別のスレッド(副スレッド)で並列に実行する。すなわち、処理部14は、ステップST160において変数Abを更新した後、副スレッドの処理を非同期に呼び出して実行する(ST175)。処理部14は、副スレッドにおいて、変数Abにより特定された単位アドレス範囲Rのデータ列DSに基づくFFT演算を行い、FFT演算により得られた時系列データの周波数成分に基づいて回転速度を算出する(ST180)。処理部14は、算出した回転速度の情報を、表示部12の画面などに出力する(ST185)。
【0089】
上述した第1変形例によれば、撮像データに基づく時系列データを取得して記憶領域の単位アドレス範囲Rにデータ列DSを書き込むスレッドと、単位アドレス範囲Rからデータ列DSを読み出してFFTなどの演算を行うスレッドとが並列に実行される。そのため、演算処理(FFTなど)の処理時間を確保し易くなる。また、演算処理(FFTなど)に比較的長い時間を要する場合でも、時系列データからデータ列DSを取得する周期を妨げることなくリアルタイムに演算処理の結果を得ることが可能となる。
【0090】
なお、
図6の例においてステップST180及びST185の処理を実行する副スレッドは、2以上であってもよい。これにより、複数の演算処理(FFTなど)を並列に実行できるため、演算処理(FFTなど)の処理時間を更に確保し易くなる。
【0091】
図7は、本実施形態に係る回転速度計測装置の処理の第2変形例を示す図である。
図6に示すフローチャートは、
図6に示すフローチャートにおけるステップST125をステップST125Aに置き換えたものであり、他のステップは
図6に示すフローチャートと同じである。
【0092】
図5及び
図6に示すフローチャートのステップST125では、第1変数W1が示すアドレスと第2変数W2が示すアドレスとが一致していない場合(ST125のNo)、第2変数W2が示すアドレスにデータDが書き込まれる(ST130)。第1変数W1が示すアドレスと第2変数W2が示すアドレスとが一致しない状態は、ステップST120において第2変数W2が先頭アドレスAhに設定されたときに始まり、ステップST145において第1変数W1のアドレスが第2変数W2のアドレスに設定されるまで継続する。そのため、この状態は、第1変数W1のアドレスが第1境界アドレスAt1以上第2境界アドレスAt2以下の状態と同じである。そこで、
図7のフローチャートに示す第2変形例では、ステップST125を置換したステップST125Aにおいて、第1変数W1のアドレスが第1境界アドレスAt1以上第2境界アドレスAt2以下であるか判定される。第1変数W1のアドレスが第1境界アドレスAt1以上第2境界アドレスAt2以下の場合(ST125AのYes)、第2変数W2が示すアドレスにデータDが書き込まれる。
【0093】
<第2の実施形態>
次に、本発明の第2の実施形態に係る回転速度計測装置について説明する。第2の実施形態に係る回転速度計測装置は、第1の実施形態に係る回転速度計測装置における処理部14の処理を変更したもので、全体の構成は第1の実施形態に係る回転速度計測装置と概ね同じである。以下では、処理部14におけるデータ処理を中心に説明する。
【0094】
処理部14は、回転速度の測定に関する処理として、第1の実施形態と同様に、検出範囲設定処理、時系列データ取得処理、アドレス生成処理、データ書き込み処理、書き込み完了検出処理、FFT演算処理、及び、回転速度算出処理を実行する。このうち、検出範囲設定処理、時系列データ取得処理、FFT演算処理、及び、回転速度算出処理については、第1の実施形態において既に説明したものと概ね同様であるため、説明を割愛する。
【0095】
(アドレス生成処理、データ書き込み処理)
処理部14は、それぞれ書き込み先のアドレスを示す2つの変数(第1変数W1、第2変数W2)を使用して、アドレス生成処理とデータ書き込み処理を行う。記憶領域のサイズ(アドレスの個数)を「L」とすると、処理部14は、この記憶領域のサイズLをデータ列DSのデータ長Mの2倍以上に設定する(L≧2×M)。また、第1変数W1が示すアドレスと第2変数W2が示すアドレスとの間隔を「G」とすると、処理部14は、この間隔Gをデータ長M以上かつ(L-M)以下に設定する(M≦G≦L-M)。
【0096】
まず初期状態において、処理部14は、上述したアドレスの間隔Gを「M≦G≦L-M」に設定する。処理部14は、時系列データ取得処理において1つのデータを取得する度に、取得した1つのデータを、第1変数W1が示すアドレスと第2変数W2が示すアドレスとに書き込み、この書き込みの後、第1変数W1が示すアドレスと第2変数W2が示すアドレスとをそれぞれインクリメントする。そして、第1変数W1が示すアドレスが記憶領域の最大のアドレスを超えた場合、第1変数W1が示すアドレスを記憶領域の先頭のアドレスに設定する。また、第2変数W2が示すアドレスが記憶領域の最大のアドレスを超えた場合も、第2変数W2が示すアドレスを記憶領域の先頭のアドレスに設定する。
【0097】
(書き込み完了検出処理)
処理部14は、上述したアドレス生成処理及びデータ書き込み処理の過程において、各データ列の単位アドレス範囲への書き込みが完了したことを検出する。例えば処理部14は、第1の実施形態と同様に、記憶領域へのデータの書き込み回数を計数した計数値に基づいて、各データ列の書き込みが完了したことを検出する。
【0098】
また処理部14は、1つのデータ列の書き込みが完了したことを検出した場合、第1変数W1が示すアドレスと第2変数W2が示すアドレスとに基づいて、当該1つのデータ列が書き込まれた単位アドレス範囲を特定する。
【0099】
上述したアドレス生成処理及びデータ書き込み処理によって、記憶領域には、第1変数W1が示すアドレスと第2変数W2が示すアドレスの2か所に同一のデータが格納される。そのため、データ列の書き込み完了が検出されたときの第1変数W1及び第2変数W2に基づいて、同一のデータ列が書き込まれた記憶領域の2つのアドレス範囲をそれぞれ特定することが可能である。また、この2つのアドレス範囲における先頭のアドレス同士若しくは末尾のアドレス同士を比較することにより、全てのアドレスが連続している(記憶領域の末尾と先頭を含んでいない)単位アドレス範囲を特定することが可能である。すなわち、2つのアドレス範囲のうち、先頭のアドレスが記憶領域の先頭に近いアドレス範囲は、全てのアドレスが連続している。また、2つのアドレス範囲のうち、末尾のアドレスが記憶領域の末尾に近いアドレス範囲は、全てのアドレスが連続している。従って、1つのデータ列の書き込みが完了したときの第1変数W1及び第2変数W2に基づいて(例えば第1変数W1及び第2変数W2の大小関係を比較することにより)、全てのアドレスが連続している単位アドレス範囲を特定することが可能である。
【0100】
図8は、第2の実施形態に係る回転計測装置において、
図2に示す時系列データ(M=8,N=2)を記憶領域に書き込む動作の一例を図解した図である。
図8の例において、記憶領域のサイズ(割り当てられたアドレスの個数)は「16」である。
【0101】
初期状態において、第1変数W1には記憶領域の先頭アドレスAhが設定され、第2変数W2にはアドレス(Ah+8)が設定される。第1変数W1が示すアドレスと第2変数W2が示すアドレスとの間隔Gは「8」である。時系列データの新たなデータDが取得される度に、第1変数W1が示すアドレス及び第2変数W2が示すアドレスにはそれぞれデータDが書き込まれ、データDの書き込み後に、第1変数W1及び第2変数W2のアドレスがインクリメントされる。
【0102】
データD(8)が書き込まれたとき、アドレスAh~(Ah+7)の範囲とアドレス(Ah+8)~(Ah+15)の範囲には、それぞれデータ列DS1が書き込まれる。第1変数W1は、一方のアドレス範囲(Ah+8~Ah+15)における先頭のアドレス(Ah+8)を示し、第2変数W2は、他方のアドレス範囲(Ah~Ah+7)における先頭のアドレスAhを示す。
また、データD(14)が書き込まれたとき、アドレス(Ah+6)~(Ah+13)の範囲とアドレス(Ah+14),(Ah+15),Ah~(Ah+5)の範囲には、それぞれデータ列DS2が書き込まれる。第1変数W1は、一方のアドレス範囲(Ah+14,Ah+15,Ah~Ah+5)における先頭のアドレス(Ah+14)を示し、第2変数W2は、他方のアドレス範囲(Ah+6~Ah+13)における先頭のアドレス(Ah+6)を示す。
このように、第1変数W1及び第2変数W2は、同一のデータDが書き込まれた2つのアドレス範囲の先頭のアドレスを示す。従って、1つのデータ列DSの書き込みが完了した場合、第1変数W1が示すアドレスと第2変数W2が示すアドレスとのうち、いずれか小さいほうのアドレスを、当該1つのデータ列DSが書き込まれた単位アドレス範囲の先頭のアドレスとして特定することができる。
【0103】
図9は、第2の実施形態に係る回転計測装置の処理の一例を説明するためのフローチャートであり、回転体の回転速度をリアルタイムに測定する場合の処理を示す。
【0104】
処理部14は、回転速度の計測を開始する前の初期状態において、初期設定を行う(ST200)。処理部14は、初期設定において、記憶領域のサイズLをデータ長Mの2倍以上に設定し(L≧2×M)、第1変数W1を記憶領域の先頭アドレスAhに設定し、第2変数W2をアドレス(Ah+M)に設定する。第1変数W1が示すアドレスと第2変数W2が示すアドレスとの間隔Gは「M」である。また処理部14は、記憶領域へのデータDの書き込み回数を示す変数Btをゼロに設定する。
【0105】
処理部14は、撮像装置2の撮像データに基づいて1つのデータDを取得すると(ST205)、第1変数W1が示すアドレス及び第2変数W2が示すアドレスにそれぞれデータDを書き込む(ST210)。記憶領域にデータDを書き込んだ後、処理部14は、第1変数W1及び第2変数W2をそれぞれインクリメントするとともに、データDの書き込み回数を示す変数Btをインクリメントする(ST215)。
【0106】
処理部14は、インクリメント後の第1変数W1が記憶領域から逸脱したアドレス(Ah+L)を示す場合(ST220のYes)、第1変数W1を記憶領域の先頭アドレスAhに設定する(ST225)。また処理部14は、インクリメント後の第2変数W2が記憶領域から逸脱したアドレス(Ah+L)を示す場合(ST230のYes)、第2変数W2を記憶領域の先頭アドレスAhに設定する(ST235)。
【0107】
次いで処理部14は、変数Btがデータ長M以上か確認する(ST240)。変数Btがデータ長Mに達していない場合(ST240のNo)、処理部14はステップST205に戻り、ステップST205以降の処理を繰り返す。変数Btがデータ長M以上の場合(ST240のYes)、処理部14は、次のステップST245に移行する。
【0108】
処理部14は、ステップST245において、変数Btとデータ重複数Nとの差(Bt-N)がデータ長Mとデータ重複数Nとの差(M-N)で割り切れるか確認する。差(Bt-N)が差(M-N)で割り切れない場合(ST245のNo)、処理部14はステップST205に戻り、ステップST205以降の処理を繰り返す。差(Bt-N)が差(M-N)で割り切れる場合(ST245のYes)、処理部14は、直近のデータDの書き込み(ST210)によってデータ列DSの書き込みが完了したことを検出し、次のステップST250に移行する。
【0109】
処理部14は、ステップST250において、第1変数W1が示すアドレスと第2変数W2が示すアドレスのいずれか小さい方を、変数Abに設定する。変数Abは、書き込みが完了したデータ列DSの単位アドレス範囲Rにおける先頭のアドレスを示す。
【0110】
処理部14は、変数Abにより特定された単位アドレス範囲Rのデータ列DSに基づいて、FFT演算を行う。また処理部14は、FFT演算により得られた時系列データの周波数成分に基づいて、回転体の回転速度を算出する(ST255)。処理部14は、算出した回転速度の情報を、表示部12の画面などに出力する(ST260)。その後、処理部14はステップST205に戻り、ステップST205以降の処理を繰り返す。
【0111】
以上説明したように、第2の実施形態に係る回転速度計測装置によれば、第1データ列(例えば
図8のデータ列DS2)の書き込み先となる第1単位アドレス範囲より後のアドレスの個数(残存アドレス数)が(M-N)個未満の場合、第1単位アドレス範囲より後の記憶領域には、第2データ列(例えば
図8のデータ列DS3)の書き込み先となる第2単位アドレス範囲の(M-N)個の第2アドレスを確保することができない。この場合、記憶領域において第1単位アドレス範囲より前のN個の連続したアドレスが、第2単位アドレス範囲におけるN個の第1アドレスとされる(例えば
図8の単位アドレス範囲R3におけるアドレス(Ah+4)及び(Ah+5))。これにより、第2単位アドレス範囲として、記憶領域の連続したM個のアドレスが確保される。また、第2単位アドレス範囲におけるN個の第1アドレスが第1単位アドレス範囲から外れているため、第2単位アドレス範囲のN個の第1アドレスにN個の新たなデータDが書き込まれても、第1単位アドレス範囲に既に書き込まれたデータDが当該新たなデータDによって上書きされることがない。従って、連続する第1データ列及び第2データ列においてN個のデータDを重複させつつ、第1データ列及び第2データ列をそれぞれ記憶領域の連続したアドレス範囲(単位アドレス範囲)に書き込むことができる。
【0112】
以上、本発明の幾つかの実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、種々のバリエーションを含んでいる。
【0113】
例えば、上述した実施形態の説明では回転速度計測装置の例を挙げたが、本発明はこの例に限定されない。すなわち本発明は、時系列データをリアルタイムに処理する様々なデータ処理装置や、データ処理装置を備えた計測装置などの各種の装置に広く適用可能である。
【0114】
また、上述した実施形態の説明では、時系列データから取得したデータ列に基づいてFFT演算を行う例を挙げたが、FFTに限定されない様々な演算処理(行列演算、統計処理など)を行ってもよい。
【符号の説明】
【0115】
1…データ処理装置、11…入力部、12…表示部、13…記憶部、14…処理部、15…プログラム、2…撮像装置、5…プロペラ、51…羽根、DS1~DS5…データ列、D(1)~D(32)…データ、R1~R5…単位アドレス範囲、W1…第1変数、W2…第2変数、Ab,Bt…変数、Ah…先頭アドレス、At1…第1境界アドレス、At2…第2境界アドレス、M…データ長、N…データ重複数