(57)【要約】【課題】モーションデータからロボットの動作データを作成する際に、関節の物理制限（関節の角度、角速度及び加速度）を考慮することで、ロボットが動作可能な動作データを作成することを可能にする。【解決手段】タスク設定部３２０は、モーションデータ及び関節角度データを所定の時間ごとに分割し、分割した時間ごとにロボットの制御する部位を選択する。また、選択した部位の関節の制限条件を記憶装置３６０から抽出する。タスク設定部３２０は、関節の制限条件にタスクを設定する。優先度付与部３３０は、選択された部位の優先度を決定すると共に、関節の制限条件のタスクにも優先度を付与する。動作データ作成部３４０は、優先度に従ってタスクを制御することにより動作データを作成する。【選択図】  図６
2008036761.tif 000002
【特許請求の範囲】
【請求項１】
人間の動作から人型ロボットの動作データを作成する動作データ作成装置であって、
オペレータの動作からモーションデータを取得するモーションデータ取得部と、
取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する第１タスク設定部と、
人型ロボットの所定の関節の角度、角速度及び角加速度を制限するタスクを設定する第２タスク設定部と、
設定されたタスクに対して、優先度に係る情報を付与する優先度付与部と、
付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する動作データ作成部と、
を有している動作データ作成装置。
【請求項２】
優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を設定することを特徴とする請求項１に記載の動作データ作成装置。
【請求項３】
立脚の位置と目標ＺＭＰ又は目標ＺＭＰを参照して決定される人型ロボットの重心軌道を入力する入力部と、入力された立脚の位置と目標ＺＭＰを参照して決定される人型ロボットの重心軌道、又は、入力された人型ロボットの重心軌道をタスクとして設定する第３タスク設定部と、をさらに有することを特徴とする請求項１に記載の動作データ作成装置。
【請求項４】
優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を設定し、第３タスク設定部で設定されたタスクに次に高い優先度を設定することを特徴とする請求項３に記載の動作データ作成装置。
【請求項５】
モーションデータ取得部は、モーションデータを取得する際にオペレータの２つの足裏のそれぞれに配置した複数の足裏接触センサの出力を併せて取得するものであり、
取得した足裏接触センサの出力から立脚を判定して目標ＺＭＰを算出する目標ＺＭＰ算出部と、立脚の位置と算出された目標ＺＭＰを参照して人型ロボットの重心軌道を決定する重心軌道決定部と、人型ロボットの重心軌道をタスクとして設定する第４タスク設定部と、をさらに有していることを特徴とする請求項１に記載の動作データ作成装置。
【請求項６】
目標ＺＭＰ算出部は、一方の足裏に配置した足裏接触センサが床面と接触する数と他方の足裏に配置した足裏接触センサが床面と接触する数とに基づいて、一方の足裏が立脚となるのか他方の足裏が立脚となるのかを判定することを特徴とする請求項５に記載の動作データ作成装置。
【請求項７】
優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を設定し、第４タスク設定部で設定されたタスクに次に高い優先度を設定することを特徴とする請求項５又は６に記載の動作データ作成装置。
【請求項８】
人間の動作から人型ロボットの動作データを作成する動作データ作成装置であって、
２つの足裏のそれぞれに複数の足裏接触センサが配置されたオペレータの動作からモーションデータを取得すると共に足裏接触センサの出力を併せて取得するモーションデータ取得部と、
取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する第５タスク設定部と、
取得した足裏接触センサの出力から立脚を判定して目標ＺＭＰを算出する目標ＺＭＰ算出部と、
立脚の位置と算出された目標ＺＭＰを参照して人型ロボットの重心軌道を決定する重心軌道決定部と、
人型ロボットの重心軌道をタスクとして設定する第６タスク設定部と、
設定されたタスクに対して、優先度に係る情報を付与する優先度付与部と、
付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する動作データ作成部と、
を有している動作データ作成装置。
【請求項９】
目標ＺＭＰ算出部は、一方の足裏に配置した足裏接触センサが床面と接触する数と他方の足裏に配置した足裏接触センサの床面と接触する数とを用いて、一方の足が立脚となるのか他方の足が立脚となるのかを判定することを特徴とする請求項８に記載の動作データ作成装置。
【請求項１０】
人間の動作から人型ロボットの動作データを作成する動作データ作成方法であって、
オペレータの動作からモーションデータを取得する工程と、
取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する工程と、
人型ロボットの所定の関節の角度、角速度及び角加速度を制限するタスクを設定する工程と、
設定されたタスクに対して、優先度に係る情報を付与する工程と、
付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する工程と、
を有している動作データ作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボットの動作データを作成する技術に関する。詳しくは、人間（オペレータ）の動作から取得したモーションデータを用いて人型ロボットが動作可能な動作データを作成する技術に関する。
【背景技術】
【０００２】
人間の動作から取得したモーションデータを用いて人型ロボットの動作データを作成する技術が知られている。この技術では、まず、人間（オペーレータ）の全身の各部位に取付けた測定点をカメラで捕捉し、捕捉した各部位の動きからモーションデータを作成する。モーションデータは、予め設定された人型ロボットの局所毎（部位毎）に分割される。次に、分割された局所的モーションデータを利用して、局所毎に動作データを作成する。そして、作成された局所毎の動作データを合成して、ロボット全体の動作データを作成する。特許文献１には、人間の動作から取得したモーションデータを用いて人型ロボットの動作データを作成する技術の一例が開示されている。
【０００３】
【特許文献１】特開２００２−３０１６７４号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した動作データ作成技術では、人間の動きからロボットの動作データを作成するため、人間が行うような運動を実現するための動作データを容易に作成することができる。しかしながら、人間（オペレータ）とロボットとでは、全身の重量バランスや関節の動作特性（関節の可動角度範囲、最大角速度、最大角加速度）が相違するため、上述した動作データ作成技術で作成された動作データをそのままロボットに適用しても、ロボットが教示された運動を実現できないことがある。特に、ロボットの動作データを作成する場合、ロボットの関節の動作特性（物理制限（関節の可動角度範囲、最大角速度、最大角加速度等））を満足させることが必須の条件となるが、人間の動きからロボットの動作データを作成する際に、関節の角度、角速度及び角加速度を考慮して動作データを作成する技術は確立されていない。
【０００５】
本発明は上述した事情を鑑みてなされたものであり、その目的は、人間の動作から人型ロボットの動作データを作成する際に、関節の物理制限（関節の可動角度範囲、最大角速度及び最大加速度）を考慮して動作データを作成する技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明の動作データ作成装置は、人間の動作から人型ロボットの動作データを作成する。この動作データ作成装置は、オペレータの動作からモーションデータを取得するモーションデータ取得部と、取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する第１タスク設定部と、人型ロボットの所定の関節の角度、角速度及び角加速度を制限するタスクを設定する第２タスク設定部と、設定されたタスクに対して、優先度に係る情報を付与する優先度付与部と、付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する動作データ作成部を有している。
ここで、本明細書において「タスク」とは、動作データを作成する際に制御したい対象を意味し、例えば、動作を制御する対象となっているロボットの部位に設定されるものと、関節の角度、角速度及び角加速度の制限条件を設定するものとがある。
また、「優先度」とは、動作データを作成する際に修正可能な優先順位を示すものである。
【０００７】
この動作データ作成装置では、実際の人間（オペレータ）の動作から取得されたモーションデータに基づいてロボットの動作データを作成する。動作データ作成装置は、取得されたモーションデータを用いて、人型ロボットの制御したい部位にタスクを設定する。また、制御対象となる所定の関節の角度、角速度及び角加速度を制限するタスクも設定する。設定されたタスクは、優先度付与部で優先度に係る情報が付与される。すなわち、変更不可のタスクには優先度が高く設定され、調整可能なタスクには優先度が低く設定される。動作データ作成装置は、付与された優先度に従ってタスクを制御することにより人型ロボットを動作させる動作データを作成する。優先度に従ってタスクを制御することにより、優先度の高いタスクを実現した上で、関節の冗長自由度が許容する限り優先度の低いタスクを実現するように動作データを作成する。この構成では、各部位と同様に関節の角度、角速度及び角加速度の制限にタスクを設定することで、関節の角度、角速度及び角加速度の制限を考慮しながら動作データを作成することができる。
【０００８】
優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を設定することが好ましい。
関節の角度、角速度及び角加速度の制限値（上限値）はロボットの構成で決まっており、変更することができない。したがって、第２タスク設定部で設定されたタスクに最も高い優先度を設定することで、関節の角度、角速度及び角加速度の制限値を超えないように動作データを作成することができる。
ここで、第２タスク設定部で設定されたタスクが複数ある場合、即ち、制限する関節が複数ある場合、いずれの関節も制限値を超えることはできないため、第２タスク設定部で設定されたタスクは、全てのタスクに最も高い優先度を付与する。
【０００９】
上述したロボットの動作データ作成装置は、立脚の位置と目標ＺＭＰ又は目標ＺＭＰを参照して決定される人型ロボットの重心軌道を入力する入力部と、入力された立脚の位置と目標ＺＭＰを参照して決定される人型ロボットの重心軌道、又は、入力された人型ロボットの重心軌道をタスクとして設定する第３タスク設定部と、をさらに有することが好ましい。
ロボットが安定して動作するためには、ＺＭＰ（Ｚｅｒｏ  Ｍｏｍｅｎｔ  Ｐｏｉｎｔ）が立脚の範囲内にあることが必須である（いわゆる、ＺＭＰ安定規範）。すなわち、ロボットの片脚が接地し、もう一方が遊脚である場合、接地している足裏面内にＺＭＰがなければならない。また、ロボットの両脚が接地している場合、接地している両脚の足裏面を結ぶ略多角形の辺上又は面内にＺＭＰがなければならない。逆にいうと、上述の条件を満たしていればロボットは転倒することなく安定して動作することができる。この構成では、立脚の位置と目標ＺＭＰ又は目標ＺＭＰを参照して決定される人型ロボットの重心軌道予め入力しておく。立脚の位置と目標ＺＭＰを参照して決定される人型ロボットの重心軌道、又は、入力された人型ロボットの重心軌道にタスクを設定する。これにより、動作データ作成部は、ロボットの重心軌道を、ロボットの各部位及び関節の角度、角速度及び角加速度の制限と同様に取り扱うことができる。そのため、動作データ作成装置は、ＺＭＰを満足させる重心軌道を描く動作データを作成することができ、ロボットが転倒することなく安定して動作（歩行）するように動作データを作成することができる。
【００１０】
上述の場合、優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を設定し、第３タスク設定部で設定されたタスクに次に高い優先度を設定することが好ましい。
上述したように、関節の角度、角速度及び角加速度の制限値はロボットの構成で決まっており、変更することができない。したがって、最も高い優先度を付与することが好適である。また、ＺＭＰはロボットが安定して動作するために必須の条件であるため、関節の動作制限の次に高い優先度を付与する。これにより、関節の角度、角速度及び角加速度の制限値を超えず、安定して動作することができる動作データを作成することができる。
【００１１】
なお、立脚の位置と目標ＺＭＰは、入力部からユーザによって直接入力するようにしてもよいが、人間（オペレータ）の動作からモーションデータを取得する際に併せて取得又は算出するようにしてもよい。すなわち、モーションデータ取得部は、モーションデータを取得する際にオペレータの２つの足裏のそれぞれに配置した複数の足裏接触センサの出力を併せて取得する。そして、動作データ作成装置は、取得した足裏接触センサの出力から立脚を判定して目標ＺＭＰを算出する目標ＺＭＰ算出部と、立脚の位置と算出された目標ＺＭＰを参照して人型ロボットの重心軌道を決定する重心軌道決定部と、人型ロボットの重心軌道をタスクとして設定する第４タスク設定部と、をさらに有している。
この構成では、オペレータの２つの足裏にセンサを複数配することで、オペレータの動作と同期した足裏の接触状態を取得することができる。これにより、足裏接触センサの出力からいずれの足が立脚となっているかを判定することができ、判定された立脚は、実際の人間の動作に基づくものとなる。したがって、より実際の人間の動作に近い動作データを作成することができる。
【００１２】
目標ＺＭＰ算出部は、一方の足裏に配置した足裏接触センサが床面と接触する数と他方の足裏に配置した足裏接触センサが床面と接触する数とに基づいて、一方の足裏が立脚となるのか他方の足裏が立脚となるのかを判定することが好ましい。
この構成では、足裏接触センサと床面との接触数が多い側の足裏を立脚とすることができる。これにより、容易に立脚を判定することができる。また、２つの足裏の足裏接触センサと床面との接触数が同じ場合は、両脚が立脚であると判定することもできる。
【００１３】
立脚の位置と目標ＺＭＰを人間（オペレータ）の動作から取得又は算出する場合は、優先度付与部は、第２タスク設定部で設定されたタスクに最も高い優先度を付与し、第４タスク設定部で設定されたタスクに次に高い優先度を付与することが好ましい。この構成をとることで、関節の角度、角速度及び角加速度の制限値を超えず、かつ、安定して動作することができる動作データを作成することができる。
【００１４】
本発明の他の動作データ作成装置は、人間の動作から人型ロボットの動作データを作成する動作データ作成装置であって、２つの足裏のそれぞれに複数の足裏接触センサが配置されたオペレータの動作からモーションデータを取得すると共に足裏接触センサの出力を併せて取得するモーションデータ取得部と、取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する第５タスク設定部と、取得した足裏接触センサの出力から立脚を判定して目標ＺＭＰを算出する目標ＺＭＰ算出部と、立脚の位置と算出された目標ＺＭＰを参照して人型ロボットの重心軌道を決定する重心軌道決定部と、人型ロボットの重心軌道をタスクとして設定する第６タスク設定部と、設定されたタスクに対して、優先度に係る情報を付与する優先度付与部と、付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する動作データ作成部と、を有している。
この動作データ作成装置では、オペレータの足裏に複数の足裏接触センサを配設することで、いずれの足が立脚であるかを容易に判定することができ、これによって、オペレータの動作と同期した立脚の位置を容易に取得することができ、また、目標ＺＭＰを容易に算出することができる。そして、取得されたモーションデータを用いて制御したいロボットの部位にタスクを設定するとともに、算出された目標ＺＭＰを参照して決定されたロボットの重心軌道をタスクとして設定することで、立脚位置と目標ＺＭＰを考慮した動作データ（転倒することなく安定して動作可能な動作データ）を作成することができる。
この場合も、一方の足裏に配置した足裏接触センサが床面と接触する数と他方の足裏に配置した足裏接触センサの床面と接触する数とを用いて、一方の足が立脚となるのか他方の足が立脚となるのかを判定することができる。
【００１５】
本発明は、さらに、オペレータのモーションデータから人型ロボットの関節の物理制限を考慮して動作できる動作データ作成方法を提供する。すなわち、本発明のロボット動作作成方法は、人間の動作から人型ロボットの動作データを作成する動作データ作成方法であって、オペレータの動作からモーションデータを取得する工程と、取得されたモーションデータを用いて人型ロボットの１又は複数の部位にタスクを設定する工程と、人型ロボットの所定の関節の角度、角速度及び角加速度を制限するタスクを設定する工程と、設定されたタスクに対して、優先度に係る情報を付与する工程と、付与された優先度に従って各タスクを制御することにより人型ロボットを動作させる動作データを作成する工程と、を有している。
この方法によっても、各関節の角度、角速度及び各加速度の制限を考慮したロボットの動作データを作成することができる。
【発明を実施するための最良の形態】
【００１６】
下記の実施例に記載の技術の主要な特徴について列記する。
（形態１）  モーションデータは、オペレータの動作をモーションキャプチャ装置を用いて取得する。
（形態２）  取得するモーションデータは、全身（即ち、全部位又は全関節）のモーションデータであってもよいし、一部だけであってもよい。
（形態３）  動作データ作成装置は、モーションデータ又は関節角度データを入力する入力部を有している。入力するモーションデータが一部だけの場合、モーションデータによって決定されない関節角度等については、利用者が入力部から直接入力することで設定する。
【実施例】
【００１７】
まず、本発明の動作データ作成装置によって動作データが作成されるロボットの一例について図面を参照して説明する。図１に示すように、ロボット１０は、左脚１２、右脚１４、胴体１５、左腕４１、右腕５１、頭部６０を備えている。図２は、それらの機械的接続状態を図示している。以下においては、説明の便宜上、図２に示すｘ、ｙ、ｚ軸の３軸からなる座標系を設定する。ｘ軸（ロール軸）は、ロボット１０の前後方向に延びている。ｙ軸（ピッチ軸）は、ロボット１０の左右方向に延びている。ｚ軸（ヨー軸）は、ロボット１０の上下方向に延びている。また、各関節にはその関節を駆動するアクチュエータが備えられており、以下の説明では関節とその関節を駆動する関節アクチュエータに同一の符号を用いている。例えば、左膝関節２２と記載することもあるし、左膝関節アクチュエータ２２と記載することもある。
【００１８】
左脚１２は、左股関節４０、左上腿２１、左膝関節２２、左下腿２３、左足首関節２４、左６軸力センサ２５、左足先２６を有している。左股関節４０は、腰４９と左上腿２１を接続しており、ｘ、ｙ、ｚ軸廻りの関節角度を変化させる。左膝関節２２は、左上腿２１と左下腿２３を接続しており、ｙ軸廻りの関節角度を変化させる。左足首関節２４は、左下腿２３と左６軸力センサ２５を接続しており、ｘ軸廻りと、ｙ軸廻りの関節角度を変化させる。したがって、左脚１２は、６自由度を有している。左足先２６は、左６軸力センサ２５に固定されている。左６軸力センサ２５は、左足首関節２４と左足先２６との間に作用する６つの軸力を検出する。具体的には、ｘ軸方向の力、ｙ軸方向の力、ｚ軸方向の力、ｘ軸廻りのモーメント、ｙ軸廻りのモーメント、ｚ軸廻りのモーメントを検出する。
右脚１４は、右股関節４８、右上腿３１、右膝関節３２、右下腿３３、右足首関節３４、右６軸力センサ３５、右足先３６を有している。右脚１４も６自由度である。右脚１４の構成は、左脚１２と同様であるため、これ以上の説明は省略する。
【００１９】
左腕４１は、左肩関節４６、左上腕４２、左肘関節４３、左前腕４４、左掌４５を有している。左肩関節４６は、肩４７と左上腕４２を接続している。左肩関節４６は、ｘ軸廻りと、ｙ軸廻りの関節角度を変化させる。左肘関節４３は、左上腕４２と左前腕４４を接続しており、ｙ軸廻りの関節角度を変化させる。左掌４５は、左前腕４４に取り付けられている。したがって、左腕４１は、３自由度を有している。
右腕５１は、右肩関節５６、右上腕５２、右肘関節５３、右前腕５４、右掌５５を有している。右腕５１も３自由度である。右腕５１の構成は、左腕４１と同様であるため、これ以上の説明は省略する。
頭部６０は、首関節６１を介して肩４７と接続されている。首関節６１は、ｙ軸廻りの関節角度と、ｚ軸廻りの関節角度を変化させる。したがって、首関節６１は２自由度を有している。
【００２０】
図３に左足先２６及び右足先３６の足裏の平面図を示す。左足先２６の足裏には、接触センサ２７がロボット１０の進行方向前側に所定の間隔を開けて２つ配されており、進行方向後側に１つ配されている。右足先３６の足裏にも、左足先２６と同様に接触センサ３７が３つ配されている。
【００２１】
次に、本発明の動作データ作成装置の一実施例について図面を参照して説明する。図４は動作データ作成装置１００の構成を示すブロック図である。動作データ作成装置１００は、モーションキャプチャ装置２００と、コンピュータ３００と、モニタ４００で構成される。モーションキャプチャ装置２００は、人間（オペーレータ）の各部位に取付けたマーカーの動きを検出し、検出したマーカーの動きからモーションデータを作成する。モーションキャプチャ装置２００は、作成したモーションデータをコンピュータ３００に入力する。コンピュータ３００は、入力されたモーションデータを処理し、ロボット１０を実際に動作させる動作データを作成する。コンピュータ３００は、作成した動作データに基づいて仮想ロボット（画像上のロボット）をモニタ４００に表示する。モニタ４００には、作成された動作データに基づいて動作するロボットが表示される。
【００２２】
図５に示すように、モーションキャプチャ装置２００は、モーションキャプチャシステム２１０と、演算装置２２０と、出力部２３０で構成されている。
モーションキャプチャシステム２１０は、複数のマーカー２１１と、マーカー２１１を検出するトラッカー２１２と、複数の足裏接触センサ２１３と、トラッカー２１２で検出されたマーカー２１１の動作及び足裏接触センサ２１３の出力信号を処理する処理装置２１５を備えている。マーカー２１１は、オペレータの動作を測定（キャプチャ）する部位に取付けられる。例えば、右腕の動作データを作成したい場合には、オペレータの右腕にマーカー２１１が取付けられる。オペレータはロボット１０に実行させたい動作を実演する。オペレータが動作を実演する間、マーカー２１１の位置がトラッカー２１２で検出される。トラッカー２１２は所定の周期でマーカー２１１の位置を検出し、トラッカー２１２で検出されたマーカー２１１の位置は処理装置２１５に入力される。
また、足裏接触センサ２１３はオペレータの両脚の足裏にそれぞれ取付けられる。具体的には、足裏接触センサ２１３は、ロボット１０の足裏に取付けられた接触センサ２７，３７と対応する位置に取付けられている。すなわち、オペレータの足裏の親指の位置、小指の位置及び踵の位置に足裏接触センサ２１３が取付けられている。足裏接触センサ２１３は、接触式のセンサであり、床面と接触するとＯＮとなり、床面から離れるとＯＦＦとなる。例えば、オペレータの足裏の親指と小指が床面に接触する一方で踵が床面から離れている状態では、親指と小指の位置に配した足裏接触センサ２１３がＯＮとなり、踵に配した足裏接触センサ２１３はＯＦＦとなる。したがって、オペレータの足裏の異なる複数の部位に足裏接触センサ２１３を配することで、オペレータの足裏のどの部分が床面と接触しているかを判断することができる。これによって、足裏接触センサ２１３の出力に基づいて、オペレータのいずれの足が立脚となっているかを判断することができる。特に、本実施例ではオペレータの足裏の親指、小指及び踵のそれぞれに足裏接触センサ２１３を配しているため、これらのセンサ２１３からの出力に基づいていずれの足が立脚となっているかを容易に判断することができる。
処理装置２１５は、トラッカー２１２からの検出信号（マーカー２１１の位置）に基づいて、マーカー２１１の位置を経時的に記述するモーションデータ（各時刻でのマーカー２１１の位置を表すデータ）を作成する。トラッカー２１２の検出信号からモーションデータを作成する処理は、従来のモーションキャプチャシステムと同様であるためこれ以上の説明は省略する。なお、モーションキャプチャシステム２１０は、汎用のものを用いることができ、例えば光学式のもの、磁気式のもの、加速度を測定するもの、関節角を測定するもの等を用いることができる。
演算装置２２０は、動作データ変換部２２２と足裏接触データ作成部２２４を備えている。動作データ変換部２２２は、ロボット１０の幾何構成に合わせて、処理装置２１５で作成されたモーションデータを対応する関節の関節角度データに変換する。モーションデータが経時的なデータであることから、モーションデータを変換した関節角度データも経時的なデータとなる。足裏接触データ作成部２２４は、足裏接触センサ２１３から入力される検出信号から、オペレータの各足裏の床面との接触状況を記述した足裏接触データを作成する。足裏接触データ作成部２２４による足裏接触データの作成は、トラッカー２１２による検出と同期して行われる。このため、足裏接触データは、モーションデータ（すなわち、関節角度データ）が取得された各時刻における足裏と床面との接触状況を表す経時的なデータとなっている。出力部２３０は、演算装置２２０で作成されたモーションデータ及び足裏接触データをコンピュータ３００に出力する。
【００２３】
図６に示すように、コンピュータ３００は、入力部３１０と、立脚判定部３１２と、ＺＭＰ算出部３１４と、重心軌道決定部３１６と、タスク設定部３２０と、優先度付与部３３０と、動作データ作成部３４０と、出力部３５０と、記憶装置３６０を備えている。これらの各構成は、コンピュータ３００が備えるハードウェアやソフトウェア等によって実現されている。
入力部３１０は、モーションキャプチャ装置２００で取得されたモーションデータがロボット全身の動作データを作成するのに不十分な場合（例えば、取得されたモーションデータがオペレータの身体の一部位に係るものである場合）に、不足する関節の関節角度データ（各時刻における関節の角度を記述する経時データ）をタスク設定部３２０に入力する。また、入力部３１０は、タスク設定部３２０で設定された複数のタスクの優先度を優先度付与部３３０に入力する。入力部３１０は、汎用のキーボードやマウス等で構成され、ユーザによって操作される。
立脚判定部３１２は、モーションキャプチャ装置２００の出力部２３０から出力された足裏接触データが入力される。立脚判定部３１２は、入力された足裏接触データから、各時刻における立脚が右足であるか左足であるかを判定する。通常、人間が歩行する際は、各足裏は踵から床面に接触して足裏全体が床面に接触し、その後、踵から爪先に向かって徐々に床面から離れる。そして、立脚となるのは、足裏の全体が床面に接触してから爪先が床面から離れるまでの間となる。既に説明したように、オペレータの足裏には、親指の位置と小指の位置と踵の位置に足裏接触センサ２１３が配されている。したがって、立脚となる足裏に配された足裏接触センサ２１３がＯＮ（床面と接触）となっている数は、遊脚となる足裏に配された足裏接触センサ２１３がＯＮ（床面と接触）となっている数より多くなる。立脚判定部３１２は、各足裏の足裏接触センサ２１３がＯＮとなっている数に基づいて立脚を判定する。なお、人間が両足で立脚している際は、各足裏が均等に床面と接触している。したがって、各足裏の足裏接触センサ２１３がＯＮとなっている数が同一となる場合は、立脚判定部３１２は両足が立脚であると判定する。
ＺＭＰ算出部３１４は、立脚判定部３１２で各時刻での立脚が判定されるため、各時刻におけるロボットの関節角度データ（モーションキャプチャ装置２００から出力された関節角度データ）を用いて目標ＺＭＰを算出する。立脚判定部３１２で得られた立脚情報とＺＭＰ算出部３１４で算出された目標ＺＭＰは重心軌道決定部３１６に入力される。重心軌道決定部３１６は、目標ＺＭＰを満足させるようにロボットの重心軌道を決定する。決定されたロボットの重心軌道は、重心軌道データとしてタスク設定部３２０に入力される。また、タスク設定部３２０には、モーションキャプチャ装置２００の出力部２３０から出力されたモーションデータ、関節角度データ及び入力部３１０で入力されたデータが入力される。
【００２４】
タスク設定部３２０は、図７に示すように、制御部位選択部３２１と、部位座標算出部３２３と、ヤコビ行列算出部３２５と、関節制限抽出部３２７と、第１タスク設定部３２９と、第２タスク設定部３２８で構成されている。タスク設定部３２０の処理手順を図８を参照して説明する。
モーションキャプチャ装置２００から出力されたモーションデータと関節角度データ、入力部３１０で入力されたデータ、及び重心軌道決定部３１６で決定されたロボットの重心軌道データが制御部位選択部３２１に入力される（ステップＳ２）。
ステップＳ２で入力されたデータは、各時刻におけるオペレータの状態を記述するデータ群である。そこで、制御部位選択部３２１は、入力されたデータ群を各時刻（所定の時間Δｔ）ごとにｎ個に分割する（ステップＳ４）。すなわち、ｔ１のときのオペレータの状態を表すデータ、ｔ２（＝ｔ１＋Δｔ）のときのオペレータの状態を表すデータ、・・・、ｔｎ（＝ｔｎ−１＋Δｔ）のときのオペレータの状態を表すデータに分割する。
次に、分割されたデータに基づいて、ｔ＝ｔｉからｔ＝ｔｉ＋１（ｉ＝１，２，・・・，ｎ−１）間に動作を制御する部位（例えば、右手先、右肘、頭部、腰等）を選択する（ステップＳ６）。この選択は、入力部３１０からユーザによって行われる。制御する部位を選択すると、制御部位選択部３２１は、Δｔ毎に分割し選択した部位の情報（関節角度データ等）を部位座標算出部３２３に入力する。
部位座標算出部３２３は、選択された部位について、ｔ＝ｔｉのときの当該部位の位置を表す座標及び当該部位の姿勢（当該部位の回転角）を表す座標Ｘ＝Ｘｉを算出する。すなわち、モーションキャプチャ装置２００から出力された関節角度データを用いて、当該部位の位置と姿勢とを算出する。そして、ｔ＝ｔｉ−１〜ｔｉにおけるＸの変化量ΔＸを算出する（ステップＳ８）。部位座標算出部３２３は、選択された全ての部位について座標Ｘ及び変化量ΔＸを算出するまでステップＳ８を繰り返す（ステップＳ１０）。
全ての部位について座標Ｘ及び変化量ΔＸが算出される（ステップＳ１０でＹｅｓ）と、部位座標算出部３２３は、算出結果をヤコビ行列算出部３２５に入力する。ヤコビ行列算出部３２５は、各部位の位置及び重心に対する姿勢を、ロボット基準座標から当該部位までの間に位置する関節の角度と各リンクの長さを用いて表現する（ステップＳ１２）。次に、ヤコビ行列算出部３２５は、各関節に単位速度を与えることにより、各部位のヤコビ行列Ｊを算出する（ステップＳ１４）。ヤコビ行列算出部３２５は、選択された全ての部位についてヤコビ行列を算出するまで、ステップＳ１２およびステップＳ１４を繰り返す（ステップＳ１６）。
ｔ＝ｔｉのときのデータ処理が終了すると（ステップＳ１６でＹｅｓ）、ｔ＝ｔ１からｔ＝ｔｎまでのデータ処理が終了するまで、ステップＳ６からステップＳ１６の処理を繰り返す（ステップＳ１８）。ｔ＝ｔｎまで処理が終了する（ステップＳ１８でＹｅｓ）と、ヤコビ行列算出部３２５は、算出結果を第１タスク設定部３２９に入力する。
【００２５】
ステップＳ２０に進むと、制御部位選択部３２１は、関節制限抽出部３２７に選択した部位の情報（選択した部位がいずれであるかの情報）を入力する。関節制限抽出部３２７は、選択された部位に関係する関節の物理制限（角度、角速度及び各加速度）を記憶装置３６０から抽出する（ステップＳ２０）。すなわち、ロボットを構成する各関節２２，２４，３２，３４等は可動角度範囲が制限されており、また、各関節２２，２４，３２，３４等を駆動するアクチュエータの運動性能にも限界がある。したがって、ロボットを構成する各関節２２，２４，３２，３４等の可動角度範囲、最大角速度及び最大角加速度は制限されており、記憶装置３６０は各関節の可動角度範囲、最大角速度及び最大角加速度を記憶している。ステップＳ２０では、選択された部位に関係する関節の物理制限（可動角度範囲、最大角速度及び最大角加速度）を記憶装置３６０から抽出する。関節制限抽出部３２７は、抽出した関節制限条件を第２タスク設定部３２８に入力する。
第１タスク設定部３２９は、ｔ＝ｔｉ（ｉ＝１，２，・・・，ｎ）毎に、選択された各部位の位置及び姿勢と各部位のヤコビ行列Ｊを部位タスクデータとして設定する（ステップＳ２２）。第２タスク設定部３２８は、ステップＳ２０で抽出した各関節の物理制限条件を関節タスクデータとして設定する（ステップＳ２４）。次に、第１タスク設定部３２９は部位タスクデータを、第２タスク設定部３２８は関節タスクデータをそれぞれ優先度付与部３３０に入力する（ステップＳ２６）。これによって、タスク設定部３２０の処理は終了となる。なお、上述したタスク設定部３２０の処理は、コンピュータ３００内のＣＰＵ（図示省略）に予めプログラミングすることで実行することができる。
【００２６】
優先度付与部３３０は、タスク設定部３２０から入力された部位タスクデータ及び関節タスクデータに優先度を付与する。部位タスクデータはｔ＝ｔｉ（ｉ＝１，２，・・・，ｎ）毎に設定されるため、優先度付与部３３０はｔ＝ｔｉ（ｉ＝１，２，・・・，ｎ）毎に（Δｔ毎）に優先度を付与していく。ここで、関節タスクデータは、関節の物理制限であり、変更することができない。そのため、関節タスクデータは優先度１（数字が小さいほうが優先度が高く、優先度１が最高）を付与する。関節タスクデータが複数存在する場合には、全ての関節タスクデータに優先度１を付与する。ロボットの重心軌道は、目標ＺＭＰを満足させるために必要であるため、即ち、ロボットを安定して動作させるのに必要であるため優先度２を付与する。次に、目標動作と関係しない部位（モーションキャプチャ装置２００により動作入力されていない部位や、動作がない部位）の部位タスクデータ、目標動作の部位タスクデータの順に優先度が付与される。優先度付与部３３０は、優先度を付与した関節タスクデータ及び部位タスクデータを動作データ作成部３４０に入力する。
なお、部位タスクデータの優先度は、部位の冗長度を考慮して決定される。例えば、ｔ＝ｔｉ〜ｔｉ＋１（ｉ＝１，２，・・・，ｎ−１）で、ロボット１０の右脚１４の動作にタスクが設定されその動作に必要な拘束次元数（関節の自由度）は４であるとする。右脚１４の自由度は６であるため、右脚１４の冗長度は２となる。必要な拘束次元数より自由度が高い場合、冗長度分だけ拘束条件を調整することができる。したがって、冗長度が高い部位には、優先度を低く設定することができる。
優先度の決定は、コンピュータ３００内のＣＰＵに予めプログラミングして実行することができる。あるいは、コンピュータ３００が関節の物理制限には自動的に優先度１を付与し、かつ、ロボットの重心軌道には自動的に優先度２を付与し、その他の優先度についてはユーザが入力部３１０から設定するようにしてもよい。
【００２７】
次に、動作データ作成部３４０が行う処理について説明する。動作データ作成部３４０には、上述したように優先度が付与された関節タスクデータ及び部位タスクデータが入力される。動作データ作成部３４０は、入力された関節タスクデータ及び部位タスクデータを用いて各関節の関節速度データを算出する。
部位タスクデータは、図９に示すように、優先度と各部位の位置及び姿勢を示す座標（図９のＸａ，Ｘａ＋１，・・・，Ｘａ＋ｂ）及び変化量（図９のΔＸａ，ΔＸａ＋１，・・・，ΔＸａ＋ｂ）と各部位に対応するヤコビ行列（図９のＪａ，Ｊａ＋１，・・・，Ｊａ＋ｂ）によって構成されている（以下、優先度、座標Ｘ、変化量ΔＸ及びヤコビ行列Ｊによって表される部位タスクデータを優先度付きタスクデータ５００という。）。優先度付きタスクデータ５００は、時刻ｔｉ毎に作成されている。したがって、優先度付きタスクデータ５００は、ｎ個作成されている。動作データ作成部３４０は、まず、各タスクデータの優先度を考慮し、数式１を用いて積算したヤコビ行列を求める。すなわち、各タスクデータ５００のヤコビ行列Ｊを数式１に代入することで、積算したヤコビ行列を算出する。
【００２８】
【数１】
2008036761.tif 000003
【００２９】
次に、優先度を考慮した各タスクデータの関節角速度を数式２を用いて算出する。すなわち、数式１で算出した積算したヤコビ行列とタスクデータ５００の各値を数式２に代入することで、そのタスクデータの関節角速度を算出する。
【００３０】
【数２】
2008036761.tif 000004
【００３１】
次に、数式２から算出した関節角速度を使用して、ロボット１０の全体を考慮した関節角速度を数式３を用いて算出する。
【００３２】
【数３】
2008036761.tif 000005
【００３３】
次に、動作データ作成部３４０は、算出された各関節の角速度を関節タスクデータと比較する。角速度が関節の制限値を超えている場合、算出された角速度を修正する。角速度は、ヤコビ行列Ｊの成分を変更することにより修正する。また、算出された角速度から角加速度を算出し、その算出した角加速度が関節タスクデータを超えていないかを確認する。超えている場合には、角速度の場合と同様に、ヤコビ行列の成分を変更して角加速度を修正する。
【００３４】
動作データ作成部３４０は、算出された角速度を統合する。これにより、ロボット１０の動作データが作成される。また、動作データ作成部３４０は、部位タスクデータだけではロボットが安定して動作可能な動作データが作成できない場合には、エラー情報をタスク設定部３２０に送信する。エラー情報を受け取ったタスク設定部３２０は、タスクが設定されていない部位に新たにタスクを設定する。新しい部位タスクデータは、優先度付与部３３０において優先度が付与され、動作データ作成部３４０に入力される。
【００３５】
次に、ロボット動作作成装置１０による動作データ作成手順について図１０を参照して説明する。図１０は、動作データ作成手順を示すフローチャートである。
まず、オペレータにマーカー２１１及び足裏接触センサ２１３を取付け、その後、オペレータはロボット１０に実行させたい動作（目標動作）を実演する（ステップＳ１０２）。オペレータが動作を実演する間、マーカー２１１の位置はトラッカー２１２で検出される。そして、トラッカー２１２からの検出信号が処理装置２１５に入力される（ステップＳ１０４）。処理装置２１５は、入力された信号に基づいて経時的に動作を記述したモーションデータを取得する（ステップＳ１０６）。また、足裏接触センサ２１３からの信号は、演算装置２２０の足裏接触データ作成部２２４に入力する（ステップＳ１０８）。足裏接触データ作成部２２４は、入力された信号から経時的に足裏の接触状況を記述した足裏接触データを作成する（ステップＳ１１０）。ステップＳ１０６で作成されたモーションデータは、演算装置２２０の動作データ変換部２２２に入力される。動作データ変換部２２２は、入力されたモーションデータに基づいて、ロボット１０の幾何構成に合わせた関節角度データを作成する（ステップＳ１１２）。上述した処理によって得られたモーションデータ、関節角度データ及び足裏接触データは、コンピュータ３００に入力される。
【００３６】
コンピュータ３００の立脚判定部３１２は、モーションキャプチャ装置２００から入力された足裏接触データに基づいてロボット１０の動作中の立脚を決定する（ステップＳ１１４）。決定された立脚情報はＺＭＰ算出部３１４に入力される。ＺＭＰ算出部３１４は、ロボット１０が安定する位置に目標ＺＭＰを算出する（ステップＳ１１６）。算出された目標ＺＭＰは、重心軌道決定部３１６に入力される。重心軌道決定部３１６は、算出された目標ＺＭＰを満足させるようにロボットの重心軌道を決定する。（ステップＳ１１７）重心軌道決定部３１６は、決定した重心軌道データをタスク設定部３２０に入力する。タスク設定部３２０は、図７に示す処理を行い、部位タスクデータ及び関節タスクデータを作成する（ステップＳ１１８）。タスク設定部３２０は、部位タスクデータ及び関節タスクデータを優先度付与部３３０に入力する。優先度付与部３３０は、入力された各データに優先度を付与する（ステップＳ１２０）。優先度付与部３３０は、優先度を付与したタスクデータを動作データ作成部３４０に入力する。動作データ作成部３４０は、まず、優先度付きタスク制御により各関節の動作データを作成する。次いで、動作データ作成部３４０は、各関節の動作を統合し、ロボット１０が実際に動作する動作データを作成する（ステップＳ１２２）。この際、動作データ作成部３４０は、安定してロボットが動作可能な動作データが作成できるかどうかを確認する（ステップＳ１２４）。安定して動作可能な動作データが作成できない場合（ステップＳ１２４でＮｏ）、ステップＳ１１８に戻り、新たな部位にタスクを設定する。動作データが作成できる場合（ステップＳ１２４でＹｅｓ）、動作データ作成部３４０は、作成した動作データをモニタ４００に出力する（ステップＳ１２６）。モニタ４００は、入力された動作データに基づいて、モニタ４００上で仮想ロボットを動作させる。オペレータは、モニタ４００上の仮想ロボットの動作を確認する（ステップＳ１２８）。仮想ロボットが意図する動作をしていない場合（ステップＳ１２８でＮＧ）、ユーザはコンピュータ３００に接続されたキーボード（図示省略）等で仮想ロボットの動きを修正する（ステップＳ１３０）。修正されたデータが入力されると、ステップＳ１１６に戻り、再度ステップＳ１１６からの動作データ作成処理が行われる。仮想ロボットが意図する動作をした場合（ステップＳ１２８でＯＫ）、動作データ作成処理を終了する。
【００３７】
本実施例の動作データ作成装置１００によると、関節の物理制限（角度、角速度及び角加速度）には高い優先度を付与することで、作成された動作データはロボットが動作可能なデータとなっている。また、ロボットの重心軌道にも高い優先度を付与することで、作成された動作データは、ロボットが安定して動作可能なデータとなっている。
モーションキャプチャ装置２００において、オペレータの足裏の複数箇所に足裏接触センサ２１３を配することで、オペレータの足裏の接触状態が容易に把握することができる。そのため、オペレータの立脚を容易に決定することができ、また、目標ＺＭＰを正確に算出することができる。
モーションデータ、関節角度データ等のタスク設定部３２０に入力される各データを時分割することで、より精密な動作データを作成することができる。
動作データを実行する仮想ロボットをモニタ４００上で確認することにより、動作データをリアルタイムで確認することができる。また、仮想ロボットの動作を修正することで、容易に動作を修正することができる。
動作データ作成部３４０は、必要に応じて、タスクが設定されていない部位にタスクを設定するよう、タスク設定部３２０に指示する。これにより、全体の動作を考慮して必要部位にタスクを設定することができる。また、利用者が必要に応じてタスク設定部位を指示するようにしてもよい。
【００３８】
以上、本発明のいくつかの具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
例えば、モーションデータ作成はモーションキャプチャ装置２００でなくてもよい。ロボットに直接ティーチングしたデータをコンピュータ３００に入力するようにしてもよい。また、ロボットの関節の角度等を直接数値で入力してもよい。
また、オペレータの足裏に足裏接触センサを配さなくてもよく、立脚の指定はユーザが直接入力してもよい。
さらに、ロボットの手先や足先等の位置のみを指定するタスクを設定し、ロボットの手先や足先が指定された位置を移動するように動作データを作成するようにしてもよい。この場合に複数の動作データが作成されたときは、各動作データによる仮想ロボットの動きをモニタで確認して選択すればよい。また、ロボットの手先や足先等の位置のみを指定するタスクを設定する場合は、モーションデータから直接タスクを設定することもできる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は、複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００３９】
【図１】ロボットの外観を示す模式図。
【図２】ロボットの機械的接続状態を示す模式図。
【図３】ロボットの足裏を示す模式図。
【図４】ロボット動作作成装置の構成を示す構成ブロック図。
【図５】モーションキャプチャ装置の構成を示す構成ブロック図。
【図６】コンピュータの構成を示す構成ブロック図。
【図７】タスク設定部の構成を示す構成ブロック図。
【図８】タスク設定部の処理を示すフローチャート。
【図９】優先度付きタスクデータを示す模式図。
【図１０】ロボット動作作成装置の動作作成手順を示すフローチャート。
【符号の説明】
【００４０】
１０：ロボット
１２：左脚
１４：右脚
１５：胴体
１６：左腕
１７：右腕
２６：左足先
３６：右足先
６０：頭部
１００：動作データ作成装置
２００：モーションキャプチャ装置
２１０：モーションキャプチャシステム
２２０：演算装置
２３０：出力部
３００：コンピュータ
３１０：入力部
３２０：タスク設定部
３３０：優先度付与部
３４０：動作データ作成部
３５０：出力部
３６０：記憶装置
４００：モニタ
【図１】
2008036761.tif 000006
【図２】
2008036761.tif 000007
【図３】
2008036761.tif 000008
【図４】
2008036761.tif 000009
【図５】
2008036761.tif 000010
【図６】
2008036761.tif 000011
【図７】
2008036761.tif 000012
【図８】
2008036761.tif 000013
【図９】
2008036761.tif 000014
【図１０】
2008036761.tif 000015