(57)【特許請求の範囲】
【請求項１】
ロボットは関節機構とその関節機構で互いに接続された骨格単位で構成するロボットの骨格によって人型を表しており、
教示すべきこの人型ロボットの動作に対応するモデルとなる人の動作を経時的に記録した一連のモデル画像と前記ロボットの骨格を線図として表示する画像（以下、骨格画像という）とを合わせ込んで表示する画像表示手段を設け、
その画像表示手段において、人型ロボットの骨格画像の関節機構や骨格単位を、前記モデルとなる人の動作を経時的に記録したモデル画像の内の特定の時刻の画像に対して重ね合わせて位置合わせする骨格位置決め手段と、
この経時的に記録した一連のモデル画像の内の特定の時刻の画像間による時間軸上において、その互いに前後するモデル画像に対し、前記骨格位置決め手段によって、前記骨格画像がそれぞれ位置合わせされた画像を作り、その骨格画像の変位に基づいて、前記人型ロボットの骨格単位の変位データ、関節機構を介した骨格単位の間の回転角度データ又は人型ロボットの骨格単位を駆動するアクチュエータ駆動量データのいずれかを、前記ロボットの教示データとして演算する教示データ演算手段と、
を含み、経時的に記録した一連のモデルとなる人の動きをロボットの教示データとしてデータ化することを特徴とするロボットの動作教示システム。
【請求項２】
前記モデル画像の時間軸上の間隔は、教示すべき前記ロボット動作に応じて変化するものとされる請求項１記載の動作教示システム。
【請求項３】
前記人型ロボットの骨格の一部のものに対しては、前記教示データ演算手段により、前記時間軸上において互いに前後するモデル画像に対しそれぞれ入力された前記骨格画像の変位に基づいて前記骨格単位の教示データが算定されるとともに、
その教示データが算定されないロボットの骨格単位、及び前記ロボット骨格における関節機構や骨格単位によって表される人の各部の名前がつけられたロボット部位に対応して補助入力手段が設けられ、その補助入力手段により、それらロボットの骨格ないしロボットの部位の教示データが個別に入力されている請求項１又は２に記載の動作教示システム。
【請求項４】
前記人型ロボットの骨格は関節機構によって結合された複数の骨格単位で構成されており、それら骨格単位はその関節機構に設けられたアクチュエータにより駆動されるものとされ、さらに、
前記モデルに対して予め基準姿勢が設定され、
前記教示データ演算手段は、
その基準姿勢のモデル画像に位置合わせされた前記骨格画像に対する、前記各アクチュエータの基準位置を含む基準データを記憶する基準データ記憶手段を備え、その基準データに基づいて、各時刻における前記各骨格単位の変位データを算出するものとされる請求項１ないし３のいずれかに記載の動作教示システム。
【請求項５】
前記モデル画像に対する前記骨格画像の位置合わせのための入力は、前記各骨格単位上の両端部に予め定められた目印点の、前記表示手段の表示画面上における位置を指定することにより行われる請求項４記載の動作教示システム。
【請求項６】
複数の前記骨格単位が組を形成し、その組に含まれる各骨格単位同士の相対的な位置関係に予め定められた拘束条件が設定され、当該組に属する骨格単位の各目印点のうち、その一部のものについて前記モデル画像に対する合わせ位置の指定を行うことにより、残余の目印点の合わせ位置は、前記拘束条件に基づいて定められるものとされている請求項５記載の動作教示システム。
【請求項７】
前記骨格位置決め手段はマウス、トラックボール等のポインティングデバイスを備え、前記表示手段は、その表示画面上に前記モデル画像及び前記骨格画像とともに、前記ポインティングデバイスの操作に伴い該画面上を移動するポインタを表示するものとされ、前記骨格画像を前記モデル画像に対し位置合わせする際には、前記目印点のうち位置合わせするべきものを選択し、前記モデル画像上に設定されるその合わせ位置に前記ポインタを合わせ、前記ポインティングデバイスに付随する入力部を操作して前記目印点の合わせ位置を指定することにより、その位置合わせ後の目印点に対応する位置に、前記骨格単位が位置合わせされる請求項５又は６に記載の動作教示システム。
【請求項８】
前記ロボットの骨格の任意の１つの骨格単位（以下、第一骨格単位という）と、その第一骨格単位にアクチュエータを介して結合された第二骨格単位とに対し、前記教示データ演算手段は、前記時間軸上で互いに前後する骨格画像の少なくとも一方のものに対し、その前記第一骨格単位と前記第二骨格単位とに、回転移動又は並進移動の少なくとも一方を施して、両骨格画像の第一骨格単位同士を互いに重ね合わせるとともに、その重ね合わされた状態で、前記両骨格画像間における前記第二骨格単位の変位を算出し、その算出結果に基づいて、前記アクチュエータの駆動量を算出するものとされる請求項４ないし７のいずれかに記載の動作教示システム。
【請求項９】
前記教示データ演算手段は、前記画像表示手段に２次元的に表示された前記骨格単位の画像と、既知の寸法を有する標準体の画像とに基づいて、該骨格単位の３次元的な位置を算出するものとされる請求項４ないし８のいずれかに記載の動作教示システム。
【請求項１０】
前記教示データ演算手段により演算された教示データを記憶する教示データ記憶手段と、その記憶された教示データを、前記ロボットの動作の種類、及び前記ロボットの部位毎に設定された編集項目別に編集する教示データ編集手段を含む請求項１ないし９のいずれかに記載の動作教示システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はロボットの動作教示システムに関する。
【０００２】
【従来の技術】
従来、ロボットに動作を教示する方法としては、例えばロボットの各部位について、その部位の動作の開始位置に原点設定を行い、次にその動作の終了位置までその部位をマニュアル駆動させるか、あるいは手でその部位を終了位置まで動かして、対応するアクチュエータの作動範囲（変位）を求め、これを教示データとして取り込む方法が用いられている。
【０００３】
【発明が解決しようとする課題】
上述の方法においては、１つの動作を教示するために、ロボットの各部位毎に個々のアクチュエータの変位を定めなければならず、教示のための工程数が多くなり、多大な時間と労力を要する問題がある。また、教示データとして考慮されるのは各アクチュエータの変位のみであり、各部位の空間的な位置や動きを直接決定することはできない。そのため、所望の動きを達成するための各部位の空間位置の移り変わりは、各アクチュエータの変位を変えながら試行錯誤的に決定する他はなく、例えば人間のしぐさ等、微妙で複雑な動作を模写する場合等においては、ロボットの動作が不自然でぎこちないものになりやすい欠点があった。
【０００４】
本発明の課題は、教示作業が単純で理解しやすく、しかも能率的に行うことができ、また教示内容に基づいて実現されるロボットの動作が微妙で複雑なものであっても、これを滑らかに行わせることができるロボットの動作教示システムを提供することにある。
【０００５】
【課題を解決するための手段】
上述の課題を解決するために、本発明の動作教示システムは下記の要件を含み、経時的に記録した一連のモデルとなる人の動きからロボットの教示データをデータ化することを特徴とする。
（１）画像表示手段：教示すべきこの人型ロボットの動作に対応するモデルとなる人の動作を経時的に記録した一連のモデル画像と前記ロボットの骨格を線図として表示する画像（以下、骨格画像という）とを合わせ込んで表示する。
（２）骨格位置決め手段：その画像表示手段上において、人型ロボットの骨格画像の関節機構や骨格単位を、前記モデルとなる人の動作を経時的に記録したモデル画像の内の特定の時刻の画像に対して重ね合わせて位置合わせするものとして構成することができる。
（３）教示データ演算手段：この経時的に記録した一連のモデル画像の内の特定の時刻の画像間による時間軸上において、その互いに前後するモデル画像に対し、前記骨格位置決め手段によって、前記骨格画像がそれぞれ位置合わせされた画像を作り、その骨格画像の変位に基づいて、前記人型ロボットの骨格単位の変位データ、関節機構を介した骨格単位の間の回転角度データ又は人型ロボットの骨格単位を駆動するアクチュエータ駆動量データのいずれかを、ロボットの教示データとして演算する。
【０００６】
例えば、教示するべき動作をモデルに実際に行わせてこれを一連の画像として記録し、それら各画像にロボットの骨格画像をそれぞれ位置合わせすることによって、経時的に変化するモデル動作の特定の時刻毎に、骨格画像のモデル画像に対する位置決めが行われ、互いに前後する画像、例えば隣り合う画像間での骨格の変位に基づいてロボットの教示データが演算される。従って、モデル画像を適当な時間間隔でサンプリングすることにより、従来の手法に比べてモデルの動きをより忠実にデータ化することができ、ひいてはそのデータに基づいてロボットに自然で滑らかな動作を行わせることができる。そして、教示のための作業内容は、画像表示手段の画面上でモデル画像に骨格画像を位置合わせする操作が中心となるので理解しやすく、しかもロボットの部位毎にアクチュエータの駆動量を求める必要がなくなるので、教示工数を大幅に削減することができる。
【０００７】
例えば人間の動作を模写するロボットに対しては、教示されるべき動作を人間のモデルに行わせ、それをビデオカメラ等の撮影手段により動画として記録し、その動画を画像表示手段にコマ送り再生しながら、その動画のコマ毎に骨格画像の位置合わせ操作を行えばよい。ここで、記録されたモデル画像の寸法は、選定したモデルの寸法（あるいは体形）によって変化する場合があるが、この場合は、骨格画像の各骨格単位の長さを、表示手段に表示されるモデル画像の寸法に合わせて伸縮可能とすることができる。
【０００８】
ここで、モデル画像の時間間隔は、教示すべきロボット動作に応じて変化させることができる。例えば、ビデオ画像をコマ送り再生する場合、それら画像のコマは一定の時間間隔で撮影されたものとなるが、比較的単純なモデル動作を教示する場合には、一定枚数のコマを間引くことによって、隣接するモデル画像の時間間隔を大きくすることができる。これにより、教示に必要な画像の枚数が減少して教示作業を効率化することができる。また演算に必要なデータ量が減少するので、ロボット作動時のハードウェアの負担が軽減され、動作の応答性を高めることができる。
【０００９】
次に、人型ロボットの骨格の一部のものに対しては、教示データ演算手段により、時間軸上において互いに前後するモデル画像に対しそれぞれ入力された骨格画像の変位に基づいて前記骨格単位の教示データを算出する一方、その教示データが算定されないロボットの骨格単位、及びロボット骨格における関節機構や骨格単位によって表される人の各部の名前がつけられたロボット部位に対応して、補助入力手段を設けておくことができる。そして、その補助入力手段により、それらロボットの骨格ないしロボットの部位に対しては、その補助入力手段から教示データが個別に入力されることとなる。例えば、モデル画像に位置合わせされた骨格画像からは教示データの生成が困難あるいは不可能なロボット部位（例えば手首、指、目、口等の動き、ランプの点灯など）については、補助入力手段から直接教示データを入力することができ、これによりロボット細部に対するきめ細かい動作の教示が可能となる。
【００１０】
ロボットの骨格は、具体的には、関節機構によって結合された複数の骨格単位を含み、それら骨格単位はそれら関節機構に設けられたアクチュエータにより駆動されるように構成することができる。この場合、モデルに対して予め基準姿勢を設定しておき、また、教示データ演算手段に、その基準姿勢のモデル画像に対し位置合わせされた骨格画像に対する各アクチュエータの基準位置を含む基準データを記憶する、基準データ記憶手段を設けることができる。そして教示データ演算手段は、その基準データに基づいて、各時刻における各骨格単位の空間変位を算出し、その変位に基づいて各アクチュエータの駆動量を算出する。
【００１１】
次に、モデル画像に対する骨格画像の合わせ位置の入力は、それら各骨格単位上の両端部に予め定められた目印点の、表示手段の表示画面上における位置を指定することにより行うことができる。そのためのより具体的な装置構成として、例えば下記のようなものを例示できる。すなわち、骨格位置決め手段にマウス、トラックボール等のポインティングデバイスを設け、表示手段には、その表示画面上にモデル画像及び骨格画像とともに、そのポインティングデバイスの操作に伴い画面上を移動するポインタを表示させる。そして、骨格画像をモデル画像に対し位置合わせする際には、目印点のうちの位置合わせするべきものを選択し、モデル画像上に設定されるその合わせ位置にポインタを合わせ、ポインティングデバイスに付随する入力部を操作して該目印点の合わせ位置を指定することにより、その位置合わせ後の目印点に対応する位置に、骨格単位が位置合わせされる。このようにすれば、モデル画像に対する骨格画像の位置合わせ操作を、より直接的で理解しやすいものとすることができる。
【００１２】
また、複数の骨格単位が組を形成し、その組に含まれる各骨格単位同士の相対的な位置関係に予め定められた拘束条件を設定することができる。そして、その組に属する骨格単位の目印点のうち、その一部のものについてモデル画像に対する合わせ位置の指定を行うことにより、残余の目印点の合わせ位置が、その拘束条件に基づいて定められるように構成することができる。このようにすることで、位置合わせ操作が単純化されて作業時間を短くすることができるほか、ロボット部位に対し構造上あり得ない位置が指定されるといった不都合を未然に防ぐ効果も得られる。
【００１３】
ここで、骨格単位に対し、モデル画像に対する位置合わせの順序を予め決めておき、その順序に従って位置合わせの操作を行うようにすることができる。この場合、ある骨格単位の位置合わせ操作が終了した場合には、次に操作を行うべき骨格単位の目印点の色を変えたり点滅させるなど、他の目印点とその表示状態を異ならせるように構成することができる。
【００１４】
次に、骨格単位の変位から、骨格単位を駆動するアクチュエータの駆動量を算出する機構であるが、具体的には次のようなものを採用することができる。すなわち、ロボットの骨格の任意の１つの骨格単位（以下、第一骨格単位という）と、その第一骨格単位にアクチュエータを介して結合された第二骨格単位とに対し、教示データ演算手段が、時間軸上で互いに前後する骨格画像の少なくとも一方のものに対し、その第一骨格単位と第二骨格単位とに、回転移動又は並進移動の少なくとも一方を施して、両骨格画像の第一骨格単位同士を互いに重ね合わせる。そして、その重ね合わされた状態で、両骨格画像間における第二骨格単位の変位を算出し、その算出結果に基づいて各アクチュエータの駆動量が算出される。
【００１５】
教示データ演算手段は、画像表示手段に２次元的に表示された骨格単位の画像と、既知の寸法を有する標準体の画像とに基づいて、骨格単位の三次元的な位置を算出するものとして構成することができる。
【００１６】
上述の動作教示システムには、教示データ演算手段に基づいて演算・生成された教示データを記憶する教示データ記憶手段と、その記憶された教示データを編集する教示データ編集手段を設けることができる。編集手段を用いることにより、生成された教示データの修正や追加あるいは削除を容易に行うことができる。また、教示データを、ロボットの動作の種類、及びロボットの部位毎に設定された編集項目別に編集可能なものとしておけば、ロボットに複雑な一連の動作を行わせる場合でも、動作別あるいは部位別に編集されたロボットの教示データを随時組み合せることにより、その教示データを比較的簡単に作成することができる
。
【００１７】
【実施例】
以下、本発明の一実施例を図面を用いて説明する。
図１は、本発明の動作教示システムの構成例を示すブロック図である。動作教示システム１は、教示データ演算手段を構成するＣＰＵ２、ＲＯＭ３、ＲＡＭ４を含むシステム制御部５を備え、これに画像取込制御部６、表示制御部７、入力装置インターフェース８、プログラム記憶装置９、教示データ記憶装置１０、動画データ記憶装置１１が接続されている。そして、入力装置インターフェース８には骨格位置決め手段として、クリックボタン１２ａ（入力部）を備えたマウス１２、キーボード１３が接続されている。
【００１８】
表示制御部７には画像表示手段としてのＣＲＴ１４が接続されている。一方、画像取込制御部６は、ビデオ再生装置（ＶＴＲ）１５が接続されるとともに、ＶＲＡＭ１６とデータ転送用プロセッサ１７とを備え、ＶＲＡＭ１６に格納された画像表示データが、バス１８を介して表示制御部７に直接転送可能とされている。
【００１９】
また、ＣＰＵ２には通信インターフェース１５２及び１５３と通信回線１５０を介して、ロボット動作の試演を行うためのグラフィックシュミレータ（以下、単にシュミレータという）１５１が接続されている。シュミレータ１５１は、図２に示すように、ＣＰＵ１５４と、これに接続されたＲＯＭ１５５、ＲＡＭ１５６、ＶＲＡＭ１５７、表示制御部１５８、及び入力装置インターフェース１６０を備え、表示制御部１５８にはロボット動作の試演動画を表示するＣＲＴ１５９等の表示装置が、また入力装置インターフェース１６０にはキーボード１６１等の入力部が接続されている。また、教示システム１と通信するための通信インターフェース１５３がＣＰＵ１５４に接続されている。
【００２０】
次に、動作教示の対象となるロボットは、例えば人間の動きを模写するロボットとして構成することができる。このロボットは、例えば図３に示すような骨格１９を有し、関節機構３１〜３７で互いに接続される下記の骨格単位を備えている。
・頭部２０：それぞれ駆動可能な目部２０ａと口部２０ｃを備え、目部２０ａには明滅可能なランプ２０ｂが配置される。口部２０ｃは開閉駆動可能とされている。
・肩２１、背骨２２、腰骨２３：これらは、互いに結合されて胴体部を形成している。
・左右の腕部：それぞれ上腕骨２４、下腕骨２５、手首２９を備える。
・左右の脚部：それぞれ上肢骨２６、下肢骨２７、足首３０を備える。
なお、各関節機構３１〜３７に設けられるアクチュエータの種類（パルスモータ、サーボモータ、ピストンシリンダ等）と軸の本数、軸の回転の自由度、及び軸の回転ないしピストンのスライドの範囲等は各骨格単位毎に個別に設定されている。
【００２１】
上記骨格単位のうち、いくつかのものは組を形成し、その組に含まれる各骨格単位同士の相対的な位置関係には予め定められた拘束条件が設定される。例えば、両脚部を構成する骨格単位を例にとれば、図４に示すようにその下肢骨２７は、上肢骨２６に沿う直線と腰骨２３に直角な直線とが作る平面Ｐ内のみを動くという拘束条件が設定されている（なお、図４においては、関節機構３５及び３６（図３）は描いていない）。従って、上肢骨２６の上端位置と下肢骨２７の下端位置とを指定すれば、両者の結合点（膝に相当する部分）の位置は、上記拘束条件に従って自動的に定まることとなる。このような拘束条件は、プログラム記憶装置９の拘束条件記憶部１１０（図５）に記憶され、教示データの算出に随時使用される。
【００２２】
次に、プログラム記憶装置９には、図５に示す各プログラムが格納されるとともに、必要に応じてＣＰＵ２により読み出され、ＲＡＭ４の所定のエリアに書き込まれて使用される。
(1)動画取込みプログラム９０：ＶＴＲ１５で再生されたモデル動作の画像を、画像取込制御部６を介して動画データとして取り込み、光磁気ディスク装置等で構成された動画データ記憶装置１１に記憶させる。
(2)モデル画像表示プログラム９１：動画データ記憶装置１１に記憶された動画データに基づいて、指定されたコマのモデル画像をＣＲＴ１４に表示させる。
(3)骨格画像表示プログラム９２：ロボット骨格１９（図３）に対応する骨格画像の画像データを作成し、図１９に示すように、そのデータに基づく骨格画像３８をモデル画像３９とともにＣＲＴ１４に表示させる。
【００２３】
(4)骨格画像位置合わせプログラム９４：マウス１２を使用して、ＣＲＴ１４に表示された骨格画像３８を、モデル画像３９に対し重ね合わせてこれを位置合わせする。ここで、ＣＲＴ１４の画面上においてモデル画像３９の画面上の寸法に骨格画像３８の寸法を合わせ込む処理も本プログラムによって行われる。
(5)変位計算プログラム９６：ＣＲＴ１４に２次元的に表示された各骨格単位の画像から、それら骨格単位の実際の空間における３次元的な位置を計算し、それに基づいて時間的に相前後する２つの画像間における各骨格単位の変位を算出する。その算出処理は、各骨格単位毎に用意された寸法既知の標準体を所定の方向から撮影して得られたその標準体画像の寸法と、対応する骨格単位の画面上における寸法とを比較することにより実行される。なお標準体の寸法データは、プログラム記憶装置の標準体寸法データ記憶部１１２に格納されている。
(6)アクチュエータ駆動量計算プログラム９８：上記骨格単位の変位に対応する各アクチュエータの駆動量を算出し、上記変位データとともに教示データ記憶装置１０に記憶させる。
【００２４】
(7)動作時間設定プログラム１００：使用する動画のコマに、ロボット動作の実時間軸上の時間を設定するとともに、隣接するコマの時間間隔から各アクチュエータの駆動速度を算出し、これを教示データの一部として教示データ記憶装置１０に記憶させる。
(8)補助入力プログラム１０２：予め指定された骨格単位ないしロボット部位に対する教示データの補助入力処理を、マウス１２ないしキーボード１３を使用することにより行う。このような補助入力処理は、骨格画像３８とモデル画像との位置合わせ処理による教示データの生成が比較的困難な骨格単位ないし部位に対し適用され、例えば図３に示す頭部２０の目部２０ａや口部２０ｂの動き、目部２０ａに配置されたランプ２０ｂの明滅等がこれに該当する。一方、いくつかの骨格単位については、特定の動作モードに対してのみ位置合わせ処理による教示データの生成が困難なこともありうるが、そのような場合も、上記方法による教示データの入力が可能である。この方法は、例えば、頭部２０ａの前後傾、左右傾、回転等、あるいは関節機構３３（肘に相当）に対する上腕骨２４と下腕骨２５の長手方向軸線周りの回転、手首２９の回転、指の曲げ状態等に対し適用可能である。なお、このような入力処理は、本実施例では、骨格画像３８のモデル画像３９に対する位置合わせ処理を行う画面（図１９）とは別画面（あるいは別ウィンドウ）を開いて行うようになっている。
【００２５】
(9)コマ修正プログラム１０４：指定されたコマにおいて、骨格画像の位置合わせ処理により入力された教示データの変更修正（例えば骨格単位の位置変更等）を行う。なお、前述の拘束条件で結ばれた骨格単位のいずれかの位置を変更した場合、その拘束条件が破れないように他の骨格単位の位置も自動修正する。
(10)コマ削除・追加プログラム１０５：指定されたコマのデータを削除し、また、指定されたコマ位置の次に新規教示データ入力を行うコマの追加・挿入を行う。(11)逐次表示プログラム１０６：各コマの骨格画像を時系列順に、一定の時間間隔で逐次画面に表示する。これにより、骨格画像の大まかな動きの変化を確認することができ、実際のロボット動作の簡易シュミレート手段として利用することができる。
(12)骨格位置固定設定プログラム１０７：骨格画像３８の位置合わせ処理時に、予め指定した骨格単位の位置を固定化する設定を行う。すなわち、教示するべき動作において、特定の骨格単位がほとんど動かないことがわかっている場合には、その骨格単位に対し位置固定の設定を行うことにより、骨格画像３８の位置合わせ処理を簡略化することができる。
【００２６】
(13)教示データファイル編集プログラム１０８（教示データ編集手段）：教示データを、ロボットの動作の種類やロボットの部位等、予め設定された編集項目別にファイル分割し、ファイル名を付与して教示データ記憶装置１０に記憶・保存する。
(14)シュミレータ起動プログラム１０９：指定されたロボット動作の教示データをグラフィックシュミレータ１５１に転送し、シュミレータ１５１側におけるロボット動作の試演（シュミレーション）処理の起動を促す。
【００２７】
以下、動作教示システム１における処理の流れをフローチャートを用いて説明する。
図６は処理全体の大まかな流れを示すものであって、次の各処理のいずれかを選択するようになっている。なお、選択時にはＣＲＴ１４に所定の選択画面がウィンドウ表示され、そこに表示された選択項目をマウス１２を用いて選択することにより、個々の処理ウィンドウが開くようになっている。
(1)教示入力（S1000からS1100に向かう処理）：モデル画像に対する骨格画像の重ね合わせ処理を行い、教示データを作成する。
(2)教示修正（S2000からS2100に向かう処理）：作成された教示データの修正を行う。
(3)教示試演（S3000からS3100に向かう処理）：グラフィックシュミレータ１５１を使用して、ロボット動作の試演を行う。
(4)終了指示（S4000から終了へ向かう処理）：処理終了の指示を行う。
【００２８】
教示入力が選択された場合はS1100において教示入力処理を行う。ここで、教示入力に先立って、教示する動作を人間のモデルに行わせ、そのモデル画像３８が例えば図１６に示すように、所定のコマ時間間隔でビデオカメラにより動画撮影される。そして、図１のＶＴＲ１５により再生されたその動画が、画像取込制御部６を介して動画データとして取り込まれ、動画データ記憶装置１１に記憶される。ここで、動画データ記憶装置１１に記憶されている動画データは、図１７に示すように、モデルが比較的複雑な動きを行っている場合には、そのコマ８０の間隔が密になるように、逆に動きが比較的単調な場合にはコマ８０の間隔が粗となるように、その動画のコマが、動画データ取り込み時あるいは取り込み後のデータ編集時に適宜間引かれる。
【００２９】
図７は、S1100の教示入力処理の詳細を示すフローチャートであって、教示不要な部位（例えば、教示するべき動作を通じてほとんどその動作に関与しない骨格単位や部位）の設定を行なった後（S1101）、図１８に示すような、ウィンドウW1及びW2をそれぞれ表示する（S1102、S1103）。このうち、一方のウィンドウW1にはモデル画像３９が表示され、他方のウィンドウW2には骨格画像３８が表示される。なお、骨格画像３８は、図３に示すロボット骨格１９を簡略化した線図として表示される。なお、ロボット骨格１９の各骨格単位の両端位置は、図１８の骨格画像３８上で下記のようにインデックスが付与されている。
・頭部２０：Ｈ、ｆ1。
・肩２１：Ａ1、Ｈ及びＨ、Ａ2。
・背骨２２：Ｇ及びＨ。ここで、Ｇは各骨格単位の変位からアクチュエータの駆動量を算出する際の基準位置として採用される。
・腰骨２３：Ｌ1及びＬ2 。ＧがＬ1とＬ2を結ぶ線分の中点に位置付けられている。
・上腕骨２４、下腕骨２５：Ａ1、Ａｅ1、Ａｈ1及びＡ2、Ａｅ2、Ａｈ2。
・上肢骨２６、下肢骨２７：Ｌ1、Ｌｋ1、Ｌｆ1及びＬ2、Ｌｋ2、Ｌｆ2。
【００３０】
図７に戻って、S1104において、ビデオカメラにモデルを正対させて撮影したモデル画像３８（図１８）に、骨格画像３９の寸法を合わせ込む処理を行う。その処理の詳細を図８及び図９に示す。すなわち、正対ポーズのモデル画像３８をウィンドウＷ1に骨格画像３９をウィンドウＷ2に表示し（C101〜103）、各骨格単位の長さをモデル画像の対応部位に合わせ込む（C104）。ここで骨格画像３９の各骨格単位に対しては、予め標準寸法が設定されている。その合わせ込みの処理であるが、図９に示すように、まず基準点Ｇの位置を合わせ込み（C201）、続いてその基準点Ｇから次第に遠ざかるように、各骨格単位の端点を順次合わせ込んでゆく。
【００３１】
ここで、モデル画像３８に対し、骨格画像３９の端点を合わせ込むための入力方法であるが、図１８に示すように、ウィンドウW2上には各端点が目印点として表示され、また、ウィンドウＷ1上にはマウス１２の移動に伴い画面上を移動するポインタ４０が表示される。目印点の合わせ込みは、Ｇ点から始まって次第に骨格の末端へ向かう方向に、予め設定された順序で行われるようになっており、ウィンドウＷ2に表示された骨格画像３８上において、次に合わせ込みを行うべき端点が点滅してこれを知らせるようになっている。そして、ウィンドウＷ1上のモデル画像３８上の指定するべき位置にポインタ４０を合わせ、マウス１２のクリックボタンを操作することにより、ウィンドウＷ2上で点滅表示された端点の、モデル画像３８上での重ね位置が確定され、それとすでに確定されている端点の位置に基づいて、各骨格単位の長さが順次計算されてゆく（C202〜C210）。また、長さが定められた骨格単位は、ウィンドウＷ1のモデル画像３８に対し順次重ね描画されてゆく。
【００３２】
ここで、正対ポーズにおけるモデル画像３８はほぼ左右対称であることから、上腕骨２４と下腕骨２５、ならびに上肢骨２６と下肢骨２７（図３）の各端点は、左右いずれか一方のものが位置決めされれば、他方のものも自動的に位置決めされるように処理が行われる。また、頭部２０を表すＨ及びＦ1間の距離は、頭部２０以外の骨格単位についてその算出された寸法と標準寸法とを比較し、その比率と頭部２０の標準寸法とに基づいて定められる（C210）。なお、ウィンドウＷ1に予め設定された標準寸法の骨格画像を、モデル画像３８とともに表示し、そのウィンドウＷ1上で骨格画像の各骨格単位の端点をモデル画像３８に合わせ込む処理を行ってもよい。この場合、ウィンドウＷ2は省略することも可能である。次に、図８に戻り、算出された骨格単位の寸法に合わせて、正対ポーズの骨格画像３８をウィンドウＷ1に再描画した後（C105）、図７のS1105に進む。ここで、正対ポーズに対応する骨格画像３８に対しては、各アクチュエータの駆動位置が基準データとして予め設定されており、その設定内容がプログラム記憶装置９の基準データ記憶部１１３に格納されている。
【００３３】
続いて、S1105〜S1109において、骨格画像３８の位置合わせを行う動画のコマ番号を指定することにより、そのコマのモデル画像のデータが取り込まれ、骨格画像の位置合わせ処理（骨格画像入力）に移る。図１０〜図１２は、その位置合わせ処理（S1109）の内容の詳細を示すフローチャートである。すなわち、図１０のC301〜C305に示すように、取り込んだコマのモデル画像３９に対し、Ｇ点から始めて次第に遠ざかる方向に、骨格画像３８の各端点の位置をモデル画像３９に対し合わせ込んでゆく。その入力例を図１９に示しているが、手順は前述の寸法合わせ処理の場合とほぼ同様であり、ウィンドウＷ2上で点滅表示される端点のウィンドウＷ1での合わせ位置をマウス１２で指定しながら、モデル画像３９に対する位置合わせ入力を行ってゆく。この場合も、ウィンドウＷ1上のモデル画像３９に対し、位置合わせの終わった部分から順に骨格画像３８が重ね描画されてゆく。ここで、左右の脚部及び腕部については、前述の寸法合わせ処理とは異なり、個々に入力処理が行われることとなる。なお、S1101（図７）において設定された教示不要部位については、位置合わせ入力がスキップされる。
【００３４】
図１１は、一例として、両脚部に相当する部位の位置合わせ処理の流れを示しており、右脚部及び左脚部のそれぞれについて、上肢骨２６の上端点Ｌ1（Ｌ2）の位置合わせを行った後、下肢骨２７の下端点Ｌｆ1（Ｌｆ2）の位置合わせが行われるようになっている（C410〜C403）。ここで、図４に示す拘束条件により、Ｌ1（Ｌ2）及びＬｆ1（Ｌｆ2）が指定されれば、膝に相当するＬｋ1（Ｌｋ2）の位置は自動的に定まるので入力は行われない。このようにして、各端点の画面上の座標が算出され、その画面座標と各骨格単位の標準体寸法データ１１２（図５）に基づいて実際の空間における端点の３次元座標が算出される。
【００３５】
次に、図７に戻ってS1110に進み、上記位置合わせ処理では教示データの生成が困難なないし不可能な骨格単位ないし部位に対し、それらの空間位置の補助入力処理を、マウス１２ないしキーボード１３を使用することにより行う。この入力処理は、上記位置合わせ処理とは別のウィンドウを開き、そのウィンドウ上に該当する骨格単位ないし部位の画像を表示して、位置設定のために予め用意された各種処理コマンド（例えば骨格単位の平行移動、あるいは回転など）を、マウス１２あるいはキーボード１３からの入力により選択・実行しながら、骨格単位や部位毎に個別に入力を行ってゆく。
【００３６】
以上で、１つのコマに対する教示入力処理が終了するが、次のコマの処理に移る場合はコマ番号を更新し、直前のコマの骨格画像３８及びモデル画像３９を描画しなおすとともに（S1111〜S1113）、S1107に返って処理を繰り返す。一方、コマへの入力作業を終了する場合は（S1114〜S1116）、ウィンドウＷ1とＷ2を閉じて図６のS1200に進む。
【００３７】
S1200では、上記教示入力により得られた、各コマ毎の骨格単位の端点の空間位置座標に基づいて、骨格単位を駆動するアクチュエータの駆動量を駆動データとして算出する処理が行われる。すなわち、図１２に示すように、隣り合う２枚のコマの番号を指定して、その各骨格単位の端点の空間位置座標を読み込み、その空間位置座標に基づいて各骨格単位間に設けられたアクチュエータの駆動量が算出される（C501〜C503）。
【００３８】
その算出方法を図２０に模式的に示している。例えば、図２０（ａ）示すように、点Ｇを固定として、先順のコマＮpにおけるＬ1、Ｌｋ1の位置が後順のコマＮsにおいて、Ｌ1’、Ｌｋ1’に移った場合、（ｂ）に示すように、Ｇ−Ｌ1−Ｌｋ1の角度を固定するとともに、線分ＧＬ1及び線分Ｌ1Ｌｋ1（それぞれ請求項でいう第一骨格単位及び第二骨格単位）に回転移動を施し、線分ＧＬ1を線分ＧＬ1’に重ね合わせる。そして、回転移動後の各点の空間座標から、コマＮp側の線分Ｌ1Ｌｋ1と、コマＮs側の線分Ｌ1’Ｌｋ1’とのなす角度θを算出することにより、両骨格単位の間に配置されたアクチュエータの各軸の回転角度を求めることができる。このような骨格単位の回転移動（場合によっては並進移動）と第二骨格単位の回転角度を求める処理を、Ｇ点から骨格の末端へ向かう方向に順次施してゆけば、各関節機構に含まれるアクチュエータの駆動量が順次算出されることとなる。
【００３９】
ここで、最初のコマの骨格画像が正対ポーズのものでない場合は、基準データ記憶部１１３（図５）に格納されたアクチュエータの基準位置をもとに、その最初のコマに対する各アクチュエータの駆動位置を算出しておけばよい。なお、以上の説明では、アクチュエータはモータで構成されており、第一及び第二の骨格単位同士はそのモータ軸の回転により、相対的な回転運動のみを行うものとしたが、ピストンロッド等をアクチュエータとした場合は、そのピストンの伸縮により骨格単位間で相対的な並進運動が行われる場合もある。そのような場合は、第二骨格単位の回転角度の他、並進移動距離も算出するようにする。なお、このようなアクチュエータの駆動量の算出は、必ずしも教示の段階で行う必要はなく、例えば骨格単位の端点の変位データのみを教示の段階で算出しておくようにしてもよい。そして、それを用いた駆動量の計算は、ロボット駆動時にその動作の進行に合わせて逐次行い、結果を順次ロボットのアクチュエータ駆動制御部に与えるようにすることができる。また、変位データの算出は、互いに隣接するモデル画像を用いて行なう態様の他、ある基準時刻における共通のモデル画像と各時刻におけるモデル画像とを使用して算出するようにしてもよい。
【００４０】
次に、図６のS1300に進み、入力が終わった各コマに対しロボット動作の実時間軸上の時間を設定する。その処理の詳細を図１３のフローチャートに示す。すなわち、時間設定用のウィンドウを開いて骨格画像データをコマ番号順に読み出し、ウィンドウ内に骨格画像を順次表示しながら時間入力を行ってゆく（C601〜C605）。そして、C6051において、直前のコマとの時間間隔から各アクチュエータの駆動速度を算出し、C606において、その時間間隔で全てのアクチュエータが駆動完了できるかどうかを判定する。完了できるようであれば、C607でその入力された時間及びアクチュエータ駆動速度を格納し、C608でコマ番号をインクリメントしてC603に戻り、処理を繰り返す。また、駆動完了できないようであればC605に戻って時間入力をやり直す。そして、時間の入力処理が終わるとC612でウィンドウを閉じて図６のS1400に進む。
【００４１】
S1400では、最終的に得られた教示データを教示データ記憶装置１０に記憶・保存する。その処理の流れは図１４に示す通りであって、データ全体のファイル名を、そのデータの動作名で入力し、次に予め定められたロボット部位の分類（例えば拘束条件で結ばれる骨格単位の組、独立した骨格単位、骨格単位以外の部位など）に従い、部位毎のサブファイル名を入力する（C701、C702）。これを受けて、教示データはその部位別のサブファイルに分割され、それぞれ入力されたサブファイル名が付与されるとともに（C703）、入力された動作名で指定される記憶装置１０のディレクトリに保存される（C704）。これら各部位毎のサブファイルは、実際にロボットの駆動に使用する際には必要なものがファイル結合されて、ロボット作動のプログラムに組み込まれることとなる。一方、異なる動作のデータのサブファイルでも、そのデータ形式を統一しておけば、サブファイルを適当に選んで組合せたり、ある動作のサブファイルを別の動作のサブファイルに転用したりすること等が可能となる。
【００４２】
次に、このようにして作成された教示データの修正を行いたい場合には、図６のS2000以下の処理が実行される。まず、S2100で動作名入力により教示データのファイルを指定し、S2200でそのデータが読み込まれる。そして、S2300でその修正処理が行われるが、その処理の詳細は図１５に示されている。まず、修正入力用ウィンドウ（図１９等に示す教示入力用のウィンドウと同型式）を開き（C801、C802）、先順のコマのものから順に骨格画像データが読み込まれて、ウィンドウに骨格画像が描かれる（C803、C804）。そして、コマの修正、コマの削除、コマの追加、コマの逐次表示等、修正のために用意された処理メニューから、所望の項目を選択して、その項目に対応する処理を行うこととなる。
【００４３】
すなわち、コマ修正を選択した場合は、表示されたコマの骨格画像の修正（例えば、骨格単位の重ね位置の変更など）が行われる（C808、C809）。また、コマ削除を選択した場合は表示されたコマの削除が行われ（C810、C811）、コマの追加が選択された場合は、表示されたコマの次に新規のコマを挿入し、教示入力時と同様の操作・処理により骨格画像のモデル画像への重ね入力等が行われ（C812、C813 ）。さらに、コマの逐次表示が選択された場合には、各コマの骨格画像を時系列順に、一定の時間間隔で逐次ウィンドウに表示する処理が行われる（C814、C815）。そして、処理が終了すれば、C817でコマ番号を更新してC805に返り、処理を繰り返す。また、処理が終わればC818でウィンドウを閉じて図６のS2400に進む。S2400では、修正、追加、削除されたコマの前後で、教示データの再計算・更新を行い、S2500でこれを保存して処理を終了する。
【００４４】
次に、作成した教示データに基づいて、グラフィックシュミレータ１５１により、実際のロボットの動きを試演することができる。この場合は、S3000以下の処理となるが、まずS3100で試演させたい動作名を入力すると、S3200でその動作の試演処理が開始される。その処理の概略であるが、まずその動作名で保存されている教示データを読み出して、これを試演開始命令信号とともにグラフィックシュミレータ１５１側へ転送する。グラフィックシュミレータ１５１はこれを受けて、ＲＯＭ１５５（図２）に格納されたロボット画像データ生成プログラム１５５ａによりロボットの画像を合成し、受信した教示データに基づいてシュミレートプログラム１５５ｂにより、ＣＲＴ１５９にロボット動作試演の動画を表示する。なお、キーボード１６１からの入力により、試演動画を早送りあるいはスロー再生したり、あるいは特定の部位の動きを拡大表示するなど、画像のコントロールを行うようにすることができる。なお、グラフィックシュミレータ１５は省略してもよい。
【図面の簡単な説明】
【図１】本発明の教示システムの一構成例を示すブロック図。
【図２】グラフィックシュミレータの構成を示すブロック図。
【図３】ロボット骨格の模式図。
【図４】骨格の脚部に対する拘束条件の説明図。
【図５】プログラム記憶装置の内容を示す説明図。
【図６】教示システムの全体の処理の流れを示すフローチャート。
【図７】教示入力処理のフローチャート。
【図８】教示入力処理において、骨格単位長さを定める処理の流れを示すフローチャート。
【図９】同じく、各骨格単位の端点の位置合わせ処理の流れを示すフローチャート。
【図１０】同じく、骨格の端点の座標を算出する処理の流れを示すフローチャート。
【図１１】同じく、脚部を作る骨格単位の端点の座標を算出する処理の流れを示すフローチャート。
【図１２】同じく、教示データ算出の流れを示すフローチャート。
【図１３】同じく、時間入力処理の流れを示すフローチャート。
【図１４】同じく、教示データ保存処理の流れを示すフローチャート。
【図１５】教示修正処理の流れを示すフローチャート。
【図１６】動画のコマの模式図。
【図１７】コマの時間軸上における配列の一例を示す模式図。
【図１８】正対モデルに対する骨格画像の寸法合わせ処理の説明図。
【図１９】モデル画像に対する骨格画像の位置合わせ処理の説明図
【図２０】アクチュエータの駆動量を算出する方法の説明図。
【符号の説明】
１  動作教示システム
５  システム制御部（教示データ演算手段）
６  画像取込制御部
７  表示制御部
９  プログラム記憶装置
１０  教示データ記憶装置
１２  マウス（骨格位置決め手段）
１４  ＣＲＴ（画像表示手段）
１９  ロボット骨格
３１〜３７  関節機構
３８  骨格画像
３９  モデル画像
４０  ポインタ
９０   動画取り込みプログラム
９１  モデル画像表示プログラム
９２  骨格画像表示プログラム
９４  骨格画像位置合わせプログラム
９６  変位計算プログラム
９８  アクチュエータ駆動量計算プログラム
１００  動作時間設定プログラム
１０２  補助入力プログラム
１０４  コマ修正プログラム
１０５  コマ削除・追加プログラム
１０６  逐次表示プログラム
１０８  骨格単位固定設定プログラム
１０９  教示データファイル編集プログラム
１１０  拘束条件記憶部
１１２  標準体寸法データ記憶部
【図１】
0003668289.tif 000002
【図２】
0003668289.tif 000003
【図３】
0003668289.tif 000004
【図４】
0003668289.tif 000005
【図５】
0003668289.tif 000006
【図６】
0003668289.tif 000007
【図７】
0003668289.tif 000008
【図８】
0003668289.tif 000009
【図９】
0003668289.tif 000010
【図１０】
0003668289.tif 000011
【図１１】
0003668289.tif 000012
【図１２】
0003668289.tif 000013
【図１３】
0003668289.tif 000014
【図１４】
0003668289.tif 000015
【図１５】
0003668289.tif 000016
【図１６】
0003668289.tif 000017
【図１７】
0003668289.tif 000018
【図１８】
0003668289.tif 000019
【図１９】
0003668289.tif 000020
【図２０】
0003668289.tif 000021