(57)【特許請求の範囲】
【請求項１】
ロボットの動作を制御する動作制御装置であって、
流れている音楽のＭＩＤＩ情報を取得するデータ取得部（１０２）と、
取得したＭＩＤＩ情報に含まれるティックと、タイムベースと、拍子記号と、に基づいて、現在流れている小節及び拍を算出する算出処理を実行し、現在流れている小節及び拍が、前記ロボットに特定の動作をさせるタイミングであるか否かを判断する判断処理を実行する動作演算部（１０３）と、
前記動作演算部の判断処理結果に基づいて動作指示を出力する動作出力部（１０４）と、を備える動作制御装置。
【請求項２】
請求項１記載の動作制御装置であって、
前記ＭＩＤＩ情報には、前記ロボットに動作を開始させることを示す動作開始情報が含まれており、
前記動作演算部は、前記動作開始情報を確認した後に前記判断処理を実行する、動作制御装置。
【請求項３】
請求項２記載の動作制御装置であって、
前記ＭＩＤＩ情報には、前記ロボットに動作を終了させることを示す動作終了情報が含まれており、
前記動作演算部は、前記動作終了情報を確認した後に前記判断処理を停止する、動作制御装置。
【請求項４】
請求項１から３いずれか１項記載の動作制御装置であって、
更に、小節及び拍と、前記ロボットの動作とを関連付けた動作情報を格納する動作情報格納部（１０５）を備え、
前記動作演算部は、前記動作情報に基づいて前記判断処理を実行する、動作制御装置。
【請求項５】
請求項４記載の動作制御装置であって、
前記動作情報には、前記ロボットの動作として前記ロボットを構成する軸の回転角度が含まれており、
前記動作出力部は、前記回転角度を含む動作指示を出力する、動作制御装置。
【請求項６】
請求項４記載の動作制御装置であって、
前記動作演算部は、前記ＭＩＤＩ情報に含まれるテンポに基づいて前記ロボットが行う動作の速度を算出し、この算出した速度に基づいて動作のタイミングを判断する、動作制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作を制御する動作制御装置に関する。
【背景技術】
【０００２】
ロボットとしては、従来人が行っていた作業を代替することを主目的とするものや、人が行うには負荷が大きすぎる作業を行うことを主目的とするものが知られている。これらに対して、音楽に基づいて動作のバリエーションをつけるものが、下記特許文献１のように提案されている。下記特許文献１に記載の音響再生ロボットは、駆動機構と、バッファー処理部と、音響解析部と、駆動機構制御部と、を備えている。バッファー処理部は、音響データ列を順次蓄積する部分である。音響解析部は、バッファー処理部に蓄積されている音響データ列から音響に関する特徴量を抽出する部分である。駆動機構制御部は、音響解析部で抽出された特徴量に基づいて駆動機構を制御する部分である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２００８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来の技術では、音響データ列を順次蓄積するサンプリングを実行する必要があることに加え、そのサンプリングした音響データ列から特徴量を抽出する処理も必要となっていた。このような構成では、例えば音楽のテンポが変わるのに同調させてロボットの動きを変化させたい場合に、処理が追従できないものと考えられる。
【０００５】
本発明はこのような課題に鑑みてなされたものであり、その目的は、ロボットの動作を制御する動作制御装置であって、音楽のテンポが変わった場合でも音楽に対する動作の追従性を保つことができる動作制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係る動作制御装置は、ロボットの動作を制御する動作制御装置であって、流れている音楽のＭＩＤＩ情報を取得するデータ取得部（１０２）と、取得したＭＩＤＩ情報に含まれるティックと、タイムベースと、拍子記号と、に基づいて、現在流れている小節及び拍を算出する算出処理を実行し、現在流れている小節及び拍が、前記ロボットに特定の動作をさせるタイミングであるか否かを判断する判断処理を実行する動作演算部（１０３）と、前記動作演算部の判断処理結果に基づいて動作指示を出力する動作出力部（１０４）と、を備える。
【０００７】
本発明によれば、ＭＩＤＩ情報に含まれるティックと、ＭＩＤＩ情報に同じく含まれるか別途設定されるタイムベースと、ＭＩＤＩ情報に同じく含まれるか別途設定される拍子記号と、に基づいて、ロボットに特定の動作をさせるタイミングを判断するので、流れている音楽を分析することなくロボットに音楽に合わせた動作をさせることができる。ＭＩＤＩ情報のテンポが変化すると小節及び拍のタイミングも変化し、その変化に追従させてロボットの動作をコントロールすることができる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」に記載の発明が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本発明によれば、ロボットの動作を制御する動作制御装置であって、音楽のテンポが変わった場合でも音楽に対する動作の追従性を保つことができる動作制御装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施形態に係る動作制御装置の機能的な構成を示すブロック図である。
【図２】図２は、図１に示される動作制御装置の処理を説明するためのフローチャートである。
【図３】図３は、図１に示される動作制御装置の処理を説明するためのフローチャートである。
【図４】図４は、図１に示される動作制御装置の処理を説明するためのフローチャートである。
【図５】図５は、制御対象となるロボットの一例を説明するための図である。
【図６】図６は、図５に示されるロボットの動作を規定する情報の一例を説明するための図である。
【図７】図７は、図１に示される動作制御装置の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
本実施形態に係る動作制御装置は、ロボットの動作を制御するものであって、ハードウェアとしては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）といった演算装置、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といった記憶装置、入出力インターフェイス、通信装置といったものを有するコンピュータシステムである。
【００１３】
図１に示される動作制御装置１０は、機能的な構成要素として、設定受付部１０１と、データ取得部１０２と、動作演算部１０３と、動作出力部１０４と、動作情報格納部１０５と、を備えている。
【００１４】
設定受付部１０１は、拍子記号を含む設定情報を受け付ける部分である。拍子記号とは、１小節に入る音符の数を特定する記号である。拍子記号は、分母と分子から構成されている。拍子記号の分母は、１拍になる音符の種類を示している。拍子記号の分子は、１小節に入る音符の数を示している。例えば、４分の４拍子を示す拍子記号であれば、１拍になる音符が４分音符であり、１小節が４分音符４つ分の長さであることを示している。設定受付部１０１は、拍子記号を含む設定情報を動作演算部１０３に出力する。
【００１５】
データ取得部１０２は、音響データとしてＭＩＤＩ情報を取得する部分である。データ取得部１０２は、流れている音楽のＭＩＤＩ情報を取得する。データ取得部１０２は、取得したＭＩＤＩ情報を動作演算部１０３に出力する。ＭＩＤＩとは、Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅの略である。ＭＩＤＩ情報とは、ＭＩＤＩ規格に沿った音楽データである。ＭＩＤＩ規格では、データの１つ１つを「イベント」と呼称している。「イベント」には、「ノートオン」「ノートオフ」「ピッチベンド」「コントロールチェンジ」「プログラムチェンジ」といった情報が含まれる。
【００１６】
ＭＩＤＩ情報における時間の最小単位は、「ティック」と呼称されている。１ティックがどれくらいの時間長さかは、「タイムベース」及び「テンポ」によって特定される。タイムベースは、「分解能」とも呼称される。タイムベースは、４分音符が何ティックかを設定する情報となっている。例えば、タイムベースが１２０であれば、４分音符が１２０ティックになるので、８分音符が６０ティック、全音符は４８０ティックとなる。
【００１７】
テンポは、１分間における拍数で示される。従って、１ティックの時間（秒）は、６０（秒）／テンポ／タイムベースによって算出することができる。例えば、テンポが１２０で、タイムベースが４８０だとすると、１ティックは１／９６０秒となる。
【００１８】
動作演算部１０３は、取得したＭＩＤＩ情報に含まれるティックと、タイムベースと、拍子記号と、に基づいて、現在流れている小節及び拍を算出する算出処理を実行し、現在流れている小節及び拍が、ロボットに特定の動作をさせるタイミングであるか否かを判断する判断処理を実行する部分である。ＭＩＤＩ情報は、データ取得部１０２から出力される。ティック及びタイムベースはＭＩＤＩ情報に含まるものであって、その意味は上記した通りである。尚、拍子記号もＭＩＤＩ情報に含まれているので、設定受付部１０１が必ずしも拍子記号を受け取らなくてもよい。
【００１９】
現在の小節をＭｅａｓｕｒｅ、現在のティックをＣｕｒｒｅｎｔ＿ｔｉｃｋ、タイムベースをＲｅｓｏｌｕｔｉｏｎ、拍子記号の分母である音価をＰｈｏｎｅｔｉｃ＿ｖａｌｕｅ、拍子記号の分子である拍数をＢｅａｔｓ、現在の拍をＢｅａｔ とすると、現在の小節及び拍は次の２式によって求められる。
【数１】
0006616231.tif 000002
【数２】
0006616231.tif 000003
【００２０】
動作演算部１０３は、このように現在流れている小節及び拍を算出する。動作演算部１０３は更に、動作情報格納部１０５に格納されている情報に基づいて、現在の小節及び拍がロボットに特定の動作をさせるタイミングであるか否かを判断する。動作演算部１０３は、判断処理の結果を動作出力部１０４に出力する。動作情報格納部１０５には、小節及び拍とロボット姿勢の対応情報が格納されている。
【００２１】
動作出力部１０４は、動作演算部１０３の判断処理結果に基づいて動作指示を出力する部分である。動作出力部１０４は、動作指示を制御対象としてのロボットに出力する。動作制御装置１０が制御対象としてのロボットと一体的に設けられている場合は、ロボットの動作機構部に対して動作指示を出力する。
【００２２】
続いて、図２を参照しながら、動作制御装置１０の処理について説明する。ステップＳ１０１では、設定受付部１０１が拍子記号を設定する。ＭＩＤＩ情報に含まれる拍子記号を用いる場合は、データ取得部１０２又は動作演算部１０３が拍子記号を設定する。
【００２３】
ステップＳ１０１に続くステップＳ１０２では、データ取得部１０２がＭＩＤＩ情報の読み込みを開始する。ステップＳ１０２に続くステップＳ１０３では、動作演算部１０３がタイムベースの設定を行う。
【００２４】
ステップＳ１０３に続くステップＳ１０４では、動作演算部１０３が、現在のティックから現在の小節及び拍を算出する。算出方法は上記した通りである。ステップＳ１０４に続くステップＳ１０５では、動作演算部１０３が、算出した小節及び拍と動作情報格納部１０５に格納されているマップとを比較参照する。
【００２５】
ステップＳ１０５に続くステップＳ１０６では、動作演算部１０３が、現在の小節及び拍がロボット姿勢を変化させる小節及び拍であるか否かを判断する。具体的には、動作情報格納部１０５に格納されているマップにおいて、ロボットが動作するタイミングとして特定されている小節及び拍と現在の小節及び拍とが合致するか否かを判断する。現在の小節及び拍がロボット姿勢を変化させる小節及び拍であればステップＳ１０７の処理に進み、現在の小節及び拍がロボット姿勢を変化させる小節及び拍でなければステップＳ１０４の処理に戻る。
【００２６】
ステップＳ１０７では、動作出力部１０４がロボットに対して動作指示を出力する。ステップＳ１０７に続くステップＳ１０７では、動作演算部１０３が、ＭＩＤＩ情報が終了したか否かを判断する。具体的には、データ取得部１０２から出力されるＭＩＤＩ情報が停止したか否かで判断する。ＭＩＤＩ情報が終了していれば処理を終了し、ＭＩＤＩ情報が終了していなければステップＳ１０４の処理に戻る。
【００２７】
図２を参照しながら説明した例では、ＭＩＤＩ情報が入力されると処理を開始し、ＭＩＤＩ情報が終了すると処理を終了するものであった。ＭＩＤＩ規格では様々な情報を含めるフォーマットが規定されているので、これを利用してロボットの操作開始・終了をコントロールすることができる。図３を参照しながら、この例について説明する。
【００２８】
ステップＳ２０１，Ｓ２０２，Ｓ２０３は、ステップＳ１０１，Ｓ１０２，Ｓ１０３と同様の処理であるのでその説明を省略する。
【００２９】
ステップＳ２０３に続くステップＳ２０４では、動作演算部１０３が、ＭＩＤＩ情報にロボット動作開始信号が含まれているか否かを判断する。ロボット動作開始信号は、ＭＩＤＩ情報の例えばコントロールチェンジの空き系統に割り当てることができる。例えば、コントロールチェンジのスイッチ系統として割り当てられている、６４番から９５番のいずれかに割り当てることができる。例えば、値が１の場合はロボット操作を開始し、値が２の場合はロボット操作を停止させるように設定する。ＭＩＤＩ情報にロボット動作開始信号が含まれていればステップＳ２０５の処理に進み、ＭＩＤＩ情報にロボット動作開始信号が含まれていなければステップＳ２０４の処理を繰り返す。
【００３０】
ステップＳ２０５では、動作演算部１０３が、現在のティックから現在の小節及び拍を算出する。算出方法は上記した通りである。ステップＳ２０５に続くステップＳ２０６では、動作演算部１０３が、算出した小節及び拍と動作情報格納部１０５に格納されているマップとを比較参照する。
【００３１】
ステップＳ２０６に続くステップＳ２０７では、動作演算部１０３が、現在の小節及び拍がロボット姿勢を変化させる小節及び拍であるか否かを判断する。具体的には、動作情報格納部１０５に格納されているマップにおいて、ロボットが動作するタイミングとして特定されている小節及び拍と現在の小節及び拍とが合致するか否かを判断する。現在の小節及び拍がロボット姿勢を変化させる小節及び拍であればステップＳ２０８の処理に進み、現在の小節及び拍がロボット姿勢を変化させる小節及び拍でなければステップＳ２０５の処理に戻る。
【００３２】
ステップＳ２０８では、動作出力部１０４がロボットに対して動作指示を出力する。ステップＳ２０８に続くステップＳ２０９では、動作演算部１０３が、ＭＩＤＩ情報にロボット動作終了信号が含まれているか否かを判断する。ＭＩＤＩ情報にロボット動作終了信号が含まれていれば処理を終了し、ＭＩＤＩ情報にロボット動作終了信号が含まれていなければステップＳ２０５の処理に戻る。
【００３３】
続いて、制御対象が６軸ロボットの場合の例について、図４を参照しながら説明する。  ステップＳ３０１，Ｓ３０２，Ｓ３０３，Ｓ３０４，Ｓ３０５は、ステップＳ２０１，Ｓ２０２，Ｓ２０３，Ｓ２０４，Ｓ２０５と同様の処理であるのでその説明を省略する。
【００３４】
ステップＳ３０５に続くステップＳ３０６では、動作演算部１０３が、算出した小節及び拍と動作情報格納部１０５に格納されているマップとを比較参照する。本例では、図５に示されるような６軸ロボットを制御対象とする。６軸ロボットは、Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５，Ｊ６の６軸周りに可動するように構成されている。
【００３５】
動作情報格納部１０５に格納されているマップの一例を図６に示す。図６に示される例では、４分の４拍子の小節と拍に対する６軸ロボットの関節角を示している。図６に示される１拍は４分音符のタイミングであり、０．５拍は８分音符のタイミングである。従って、小節は整数である必要があるけれども、拍は小数点以下が設定されていてもよい。
【００３６】
ステップＳ３０６に続くステップＳ３０７では、動作演算部１０３が、現在の小節及び拍がロボット姿勢を変化させる小節及び拍であるか否かを判断する。具体的には、動作情報格納部１０５に格納されているマップにおいて、ロボットが動作するタイミングとして特定されている小節及び拍と現在の小節及び拍とが合致するか否かを判断する。例えば、図６に示した例では、１小節目の３．５拍目の時に、Ｊ１からＪ６の関節角をそれぞれ２０ｄｅｇに移動させる。現在の小節及び拍がロボット姿勢を変化させる小節及び拍であればステップＳ３０８の処理に進み、現在の小節及び拍がロボット姿勢を変化させる小節及び拍でなければステップＳ３０５の処理に戻る。
【００３７】
ステップＳ３０８では、動作出力部１０４がロボットに対して動作指示を出力する。ステップＳ３０８に続くステップＳ３０９では、動作演算部１０３が、ＭＩＤＩ情報にロボット動作終了信号が含まれているか否かを判断する。ＭＩＤＩ情報にロボット動作終了信号が含まれていれば処理を終了し、ＭＩＤＩ情報にロボット動作終了信号が含まれていなければステップＳ３０５の処理に戻る。
【００３８】
続いて、ロボットを動かす際に動きのスピードを考慮して円滑に動作させる例について、図７を参照しながら説明する。ステップＳ４０１〜Ｓ４０７は、ステップＳ３０１〜Ｓ３０７と同様の処理であるので説明を省略する。
【００３９】
ステップＳ４０８では、動作演算部１０３が、現在のテンポから関節角を移動する時間を算出する。具体的には、ロボットの移動時間をＭｏｔｉｏｎ＿ｔｉｍｅ、次の関節角が変化する小節をＮｅｘｔ＿ｍｅａｓｕｒｅ、現在の小節をＣｕｒｒｅｎｔ＿ｍｅａｓｕｒｅ、拍子記号の分子である拍数をＢｅａｔｓ、次の関節角が変化する拍をＮｅｘｔ＿ｂｅａｔ、現在の拍をＣｕｒｒｅｎｔ＿ｂｅａｔ、テンポをＴｅｍｐｏ、拍子記号の分母である音価をＰｈｏｎｅｔｉｃ＿ｖａｌｕｅとすると、ロボットの移動時間は次の式によって求められる。
【数３】
0006616231.tif 000004
このようにＭＩＤＩ情報に含まれるテンポを用いてロボットの移動時間を求めることで、テンポの変化に追従した動きを実現することができる。
【００４０】
ステップＳ４０８に続くステップＳ４０９では、移動時間を考慮し、動作出力部１０４がロボットに対して動作指示を出力する。ステップＳ４０９に続くステップＳ４１０では、動作演算部１０３が、ＭＩＤＩ情報にロボット動作終了信号が含まれているか否かを判断する。ＭＩＤＩ情報にロボット動作終了信号が含まれていれば処理を終了し、ＭＩＤＩ情報にロボット動作終了信号が含まれていなければステップＳ４０５の処理に戻る。
【００４１】
上記したように本実施形態に係る動作制御装置１０は、流れている音楽のＭＩＤＩ情報を取得するデータ取得部１０２と、取得したＭＩＤＩ情報に含まれるティックと、タイムベースと、拍子記号と、に基づいて、現在流れている小節及び拍を算出する算出処理を実行し、現在流れている小節及び拍が、ロボットに特定の動作をさせるタイミングであるか否かを判断する判断処理を実行する動作演算部１０３と、動作演算部１０３の判断処理結果に基づいて動作指示を出力する動作出力部１０４と、を備える。
【００４２】
本実施形態によれば、ＭＩＤＩ情報に含まれるティックと、ＭＩＤＩ情報に同じく含まれるか別途設定されるタイムベースと、ＭＩＤＩ情報に同じく含まれるか別途設定される拍子記号と、に基づいて、ロボットに特定の動作をさせるタイミングを判断するので、流れている音楽を分析することなくロボットに音楽に合わせた動作をさせることができる。ＭＩＤＩ情報のテンポが変化すると小節及び拍のタイミングも変化し、その変化に追従させてロボットの動作をコントロールすることができる。ＭＩＤＩ情報である演奏データを途中で停止すれば、ティックも送られてこなくなるので、ロボットの動作を停止させることができる。ＭＩＤＩ情報である演奏データのテンポを変更すると、送られてくるティックの速度が変わるため、小節及び拍のタイミングも変化し、ロボットの動きをテンポの変化に即して変えることができる。小節及び拍でロボットの姿勢を決めるため、タイミングを取りやすく音楽に合わせた動きとしやすい。
【００４３】
また本実施形態では、ＭＩＤＩ情報には、ロボットに動作を開始させることを示す動作開始情報が含まれており、動作演算部１０３は、動作開始情報を確認した後に判断処理を実行することもできる。また本実施形態では、ＭＩＤＩ情報には、ロボットに動作を終了させることを示す動作終了情報が含まれており、動作演算部１０３は、動作終了情報を確認した後に判断処理を停止することもできる。音楽の開始・停止に依存せずにロボットの動きの開始・停止を制御できるので、より多彩な動きを実現することができる。
【００４４】
また本実施形態では、更に、小節及び拍と、ロボットの動作とを関連付けた動作情報を格納する動作情報格納部１０５を備えている。動作演算部１０３は、動作情報に基づいて前記判断処理を実行することができる。また本実施形態では、動作情報には、ロボットの動作としてロボットを構成する軸の回転角度が含まれており、動作出力部１０４は、回転角度を含む動作指示を出力することができる。
また本実施形態では、動作演算部１０３は、ＭＩＤＩ情報に含まれるテンポに基づいてロボットが行う動作の速度を算出し、この算出した速度に基づいて動作のタイミングを判断することができる。
【００４５】
尚、小節及び拍を対応するロボットの姿勢については、上記したものに限られない。例えば、移動ロボットの場合、モータといった移動手段の出力や移動方向をマップ化してもよい。また、マップではなく、ロボットが自律的に判断した姿勢を、拍のタイミングで切り替えてもよい。
【００４６】
以上、具体例を参照しつつ本発明の実施の形態について説明した。しかし、本発明はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００４７】
１０：動作制御装置
１０２：データ取得部
１０３：動作演算部
１０４：動作出力部
１０５：動作情報格納部
【図１】
0006616231.tif 000005
【図２】
0006616231.tif 000006
【図３】
0006616231.tif 000007
【図４】
0006616231.tif 000008
【図５】
0006616231.tif 000009
【図６】
0006616231.tif 000010
【図７】
0006616231.tif 000011