JP3995348B2 - Robot system - Google Patents

Robot system Download PDF

Info

Publication number
JP3995348B2
JP3995348B2 JP25014198A JP25014198A JP3995348B2 JP 3995348 B2 JP3995348 B2 JP 3995348B2 JP 25014198 A JP25014198 A JP 25014198A JP 25014198 A JP25014198 A JP 25014198A JP 3995348 B2 JP3995348 B2 JP 3995348B2
Authority
JP
Japan
Prior art keywords
routine
action
command
module
motion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP25014198A
Other languages
Japanese (ja)
Other versions
JP2000153479A (en
Inventor
祐一朗 市岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Elemex Corp
Original Assignee
Ricoh Elemex Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Elemex Corp filed Critical Ricoh Elemex Corp
Priority to JP25014198A priority Critical patent/JP3995348B2/en
Publication of JP2000153479A publication Critical patent/JP2000153479A/en
Application granted granted Critical
Publication of JP3995348B2 publication Critical patent/JP3995348B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Control By Computers (AREA)
  • Numerical Control (AREA)
  • Manipulator (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はロボットシステムに関する。
【0002】
【従来の技術】
人間の動きを模写するロボット等、各種多関節ロボットに所定の動作を行わせる場合、その動作をプログラミングするために、従来はロボットを駆動する各アクチュエータの駆動量を、動作の時系列に従って個別に設定する方法がとられている。この場合、あるロボットの動作において、複数のロボット部位の動きが同時にあるいは連係して起こる場合、それらロボット部位毎にアクチュエータの駆動量を指定しなければならない。例えば、「歩く」という動作を例にとれば、これには両足の動きの他に、腕の振りや肩の上下といった動作が付随しており、それら各部の動作のプログラムが個別に組み立てられる。そして、「1歩前に進み出て礼をし、そのまま下がってもとの場所に帰る」というような、より複雑な上位動作をプログラミングする場合は、その上位動作を、「1歩前に進み出る」、「礼をする」、「1歩下がる」という下位動作に分解してプログラミング作業が行われる。
【0003】
上記従来の方法は、ロボット部位毎に多数のアクチュエータの駆動量やその作動順序をいちいち設定しなければならないので、プログラミング作業に時間がかかり、複雑な上位動作のプログラムを効率よく作成するのに適しているとは言い難い。また、上位動作の内容を変更したい場合には、各アクチュエータの駆動量レベルでプログラムないしデータを書き換えなければならず、その作業に時間がかかる。すなわち、ロボットの動作内容の変更がそれほど容易でないため、ロボットの各種動作への融通性に欠ける難点がある。
【0004】
そこで、これを解決するために、特開平8−314524号公報には、次のような階層型制御プログラムを用いる制御方式が提案されている。この制御プログラムにおいては、複数のロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として下位動作データを形成し、その下位動作データを複数統合してロボットの基本動作を規定する中位動作ルーチンを構築する。また、それら各中位動作ルーチンに中位動作コマンドを対応させ、その中位動作コマンドの組み合わせにより上位動作プログラムを規定する。そして、その上位動作プログラムを前記中位動作コマンドの単位で読み出しつつ、その読み出された各中位動作コマンドに対応する中位動作ルーチンの組み合わせに基づいて、各アクチュエータの駆動を制御する。
【0005】
【発明が解決しようとする課題】
ところで、上記方式においては、ロボットの基本動作を規定する中位動作プログラムの種類を増やしたい場合、新たに追加したい基本動作の中位動作プログラムを、その都度下位動作データの単位に遡って作成しなければならない。この中位動作プログラムの作成作業は、直感的には把握しにくい下位動作データレベルでしか行うことができないから、専門的な知識とプログラミング作業への高度の熟練とを要し、一般のユーザには甚だ扱いにくい内容となる。従って、中位動作コマンドの使用により簡単なプログラミングが実現されている点についてはよいが、上記事情により、専門家以外の者は予め用意された中位動作コマンド(基本動作)の枠を一歩も超えることができず、融通性に乏しい欠点がある。
【0006】
また、別の例を挙げれば、ロボットの動作を所望のものにより近付けるために、ある中位動作コマンドが指定する基本動作において、特定の部位の動作のみを別の動作に変更したい、あるいは該部位の動作を行わせないようにしたい、さらには新たな部位動作を追加したい、といった要望が生ずることがある。このような
要望に応ずるためには、当然のことながら対応する中位動作ルーチンの書換えが必要となる。しかしながら、上記公報の技術においては、上位動作プログラムの書換えとして許されているのは、中位動作コマンド単位の組替え、追加、削除のみであり、結局のところわずかな動作変更でも新たな中位動作ルーチンの作成が必要となって非常に面倒である。
【0007】
本発明の課題は、新たな基本動作の追加や、既存の基本動作の部分的な変更に対応するための、中位動作ルーチンの作成あるいは書換え等を簡単に行うことができ、ひいては直感的かつ柔軟性に富む動作プログラミングを可能としたロボットシステムを提供することにある。
【0008】
【課題を解決するための手段及び作用・効果】
上記課題を解決するために本発明のロボットシステムは、
上位のロボット動作をいくつかの基本動作の組み合わせとして把握し、基本動作に必要な各ロボット部位(以下、単に部位ともいう)の動作を規定する部位動作プログラムモジュール(以下、部位動作モジュールという)が、そのロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として形成され、その部位動作モジュールを複数組み合わせることにより基本動作を規定する中位動作ルーチンが形成され、その中位動作ルーチンの組み合わせにより上位のロボット動作を規定する上位動作プログラムが階層型プログラムとして記述されており、
必要な部位毎の部位動作モジュールの部位特定情報と部位動作モジュールを特定するための動作特定情報との双方又は一方を複数組み合わせることにより記述された、基本動作を規定する前記中位動作ルーチンの中で予め定められた標準的な基本動作(以下、標準動作という)を規定する標準動作ルーチンを複数記憶した標準動作ルーチン記憶部と、
複数の中位動作ルーチンを記憶するとともに、それら中位動作ルーチンの少なくとも一部のものを、複数の標準動作ルーチンのうちの所定のものを選択する標準動作ルーチン選択コマンドと、その選択された標準動作ルーチンに対し、特定の部位動作モジュールの削除、入替え、及び新たな部位動作モジュールの追加の少なくともいずれかを指示する動作変更コマンドとを含む標準変更型中位動作ルーチンとして記憶している中位動作ルーチン記憶部と、
各中位動作ルーチンと対応付けられた中位動作コマンドを用い、これら中位動作コマンドの組み合わせにより規定される上位動作プログラムを記憶する上位動作プログラム記憶部と、
その上位動作プログラム記憶部に記憶された上位動作プログラムを、中位動作コマンドの単位で読み出すプログラム読出手段と、
その読み出された中位動作コマンドに対応する中位動作ルーチンが標準変更型中位動作ルーチンであった場合には、それに含まれる標準動作ルーチン選択コマンドが指示する標準動作ルーチンと、同じく動作変更コマンドが指示する変更内容とに基づき、当該標準変更型中位動作ルーチンを実行すべき部位動作モジュールの組み合わせの形に展開するプログラム展開手段と、
読み出された各中位動作コマンドに対応する中位動作ルーチンの組み合わせに基づいて、アクチュエータの駆動を制御するアクチュエータ動作制御部とを含むことを特徴とする。
【0009】
まず、このロボットシステムにおいては、中位動作ルーチンを、ロボット部位毎の動作を規定するルーチン、すなわち部位動作モジュールの寄せ集めとして構成する。また、予め定められた標準動作を規定する標準動作ルーチンを、部位動作モジュールの部位特定情報と部位動作モジュールを特定するための動作特定情報との双方又は一方を複数組み合わせることにより用意しておく。そして、適当な標準動作ルーチンを選択して、これに対し、特定の部位動作モジュールの削除、入替え、及び新たな部位動作モジュールの追加の少なくともいずれかを行うことにより、上記中位動作ルーチンを作成する。このように作成される中位動作ルーチンを標準変更型中位動作ルーチンと呼び、そのプログラムの記述単位は、所望の標準動作ルーチンを選択するための標準動作ルーチン選択コマンドと、部位動作モジュールの削除、入替え、及び新たな部位動作モジュールの追加の少なくともいずれかを指示する動作変更コマンドである。
【0010】
このようなプログラミング方式の採用により、次のような効果を享受できる。すなわち、中位動作プログラムの種類を増やしたい場合は、例えば増やしたい基本動作に最も近い標準動作のルーチンを選択し、これに動作変更したい部位別に部位動作モジュールの削除、入替え、あるいは新たな部位動作モジュールの追加を行うのみで新しい中位動作ルーチンが作成でき、従来のようにこれを下位動作データの単位に遡って作成する必要がなくなる。その結果、新たな中位動作プログラムの作成作業が直感的に把握しやすくなるので、専門的な知識とプログラミング作業への高度の熟練とを有さない一般のユーザでも、簡単に扱うことができるようになり、またプログラミングの幅も拡げることができる。また、中位動作ルーチンが部位別の動作モジュール単位で構成されているから、特定の部位の動作のみを別の動作に変更したい、あるいは該部位の動作を行わせないようにしたい、さらには新たな部位動作を追加したい、といった要望にも、部位動作モジュールの入替え、削除、追加により簡単に対応できる。
【0011】
上記ロボットシステムにおいては、ロボットを、複数のロボット部位のうちの少なくとも一部のものが、複数の骨格単位とそれら骨格単位の間に配置されたアクチュエータとを有する骨格を備えるものとして構成できる。この場合、複数の部位動作モジュールのうち、少なくとも一部のものを、下記の要件を備えた駆動データ作成装置、すなわち、
ロボット動作に対応するモデルの動作を経時的に記録した一連のモデル画像と、骨格の画像を表示する画像表示手段と、
その表示手段において骨格画像を、モデル画像に対して位置合わせする骨格位置決め手段と、
時間軸上において互いに前後するモデル画像に対しそれぞれ位置合わせされた骨格画像の変位に基づいて、駆動データを算出するデータ演算手段とを含む駆動データ作成装置により、動作のコマ送り単位で作成された駆動データを、ロボットの部位別に編集することにより作成された教示動作ルーチン部分とすることができる。
【0012】
この方式によれば、例えば、ある基本動作を人間のモデルに実際に行わせてこれをコマ単位の一連の画像として記録し、それら各画像にロボットの骨格画像をそれぞれ位置合わせすることによって、経時的に変化するモデル動作の特定の時刻毎に、骨格画像のモデル画像に対する位置決めが行われ、隣り合う画像間での骨格の変位に基づいて駆動データが演算される。いわば、モデルの動きを直接ロボットに教示するイメージにより、直感的な駆動データ生成が可能となるのである。このようにすれば、その中位動作に含まれる各部位毎の下位動作データを一括して得ることができ、中位動作コマンドを付与して記憶部に保存すればそのまま中位動作ルーチンとしての使用が可能となる。そして、その駆動データを作成するための作業は、画像表示手段の画面上でモデル画像に骨格画像を位置合わせする操作が中心となるので内容が理解しやすく、また、ロボットの部位毎にアクチュエータの駆動量をいちいち設定する必要がなくなるので、上位動作プログラム作成に必要な多量の駆動データを合理的かつ簡便に得ることができる。
【0013】
この場合、下位動作データを部位別に編集することで部位動作モジュールを教示動作ルーチン部分として簡単に作成することができる。そして、この方式を本発明に適用することにより、次の利点が生ずる。すなわち、モデルによる動作教示は、基本動作の種類が変わればモデルが新たに動作を行ってこれをビデオ撮影し、データ作成を行う形とすることもできるが、類似した基本動作で特定部位の動作のみが若干異なるもののデータを作成する場合は、その都度モデル動作の撮影及びデータ作成(すなわち中位動作ルーチンの作成)を繰り返すのはいささか非能率である。そこで、いくつかの基本動作についてデータ作成が終わっていれば、特定の基本動作のある部位の動作を変更する際に、別の基本動作のデータから適当な部位動作モジュールを探し出し、これを変更に係る基本動作(すなわち、これを標準動作とみることもできる)の部位のモジュールと置き換えることにより、簡単にその基本動作のデータすなわち中位動作ルーチンを得ることが可能となる。
【0014】
上記ロボットシステムには、複数の部位動作モジュールを記憶する部位動作モジュール記憶手段と、標準変更型中位動作ルーチンを部位動作モジュールに展開するための中位動作ルーチン展開メモリ領域が形成された展開記憶手段とを設けることができる。この場合、プログラム展開手段は、動作変更コマンドが、特定の部位動作モジュールの削除を指示するものであった場合には、その指示された部位動作モジュールを削除しつつ、また入替えを指示するものであった場合にはその指示された部位動作モジュールを指定された部位動作モジュールと入れ替えつつ、さらに新たな部位動作モジュールの追加を指示するものであった場合には、その部位動作モジュールを追加しつつ、指定された標準動作ルーチンを構成する部位動作モジュールを部位動作モジュール記憶手段から読み出して、中位動作ルーチン展開メモリ領域にロードするものとすることができる。上記構成では、例えば、必要な部位動作モジュールのみを中位動作ルーチン展開メモリ領域にロードする形となるから、展開処理をスムーズかつ迅速に行うことができ、例えば中位動作ルーチンのデータ量が非常に多い場合でもロボット制御の速度を高めることができる。
【0015】
この場合、部位動作モジュール記憶手段には、複数の部位動作モジュールを、部位を特定するための部位特定情報(例えば部位名)及び動作内容を特定するための動作特定情報(例えばモジュール名)と対応付けた形で記憶しておくことができる。また、動作変更コマンドは、動作変更に係る部位を特定するための部位特定情報と、変更後の動作内容を規定する部位動作モジュールを特定するための動作特定情報とを含むものとすることができる。これにより、標準動作ルーチンに対する入替え、削除あるいは追加に係る部位動作モジュールの指定を、部位の種類あるいは動作内容により簡単に特定でき、ひいては動作変更コマンドを用いた標準変更型中位動作ルーチンのプログラミングがより簡単になる。
【0016】
プログラム展開手段は、動作変更コマンド中の部位特定情報により特定される部位が、標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれかと同一であった場合に、その部位に係る部位動作モジュールを、動作特定情報により特定される部位動作モジュールと入れ替えるものとすることができる。例えば、基本動作の設定においては、同一部位に対する2種以上の動作がその基本動作中に含まれないようにしておくことが、動作把握を容易にする上で都合がよい。この場合、上記のような処理方式とすることにより、部位の種別を特定するのみで、標準動作ルーチンにおいて対応する部位動作モジュールの入替えが自動的に行われるので、標準変更型中位動作ルーチンの作成が一層簡単となる。
【0017】
また、プログラム展開手段は、動作変更コマンド中の部位特定情報により特定される部位が、標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれとも異なる場合に、動作特定情報が特定する部位動作モジュールを標準動作ルーチンに追加するものとすることができる。他方、プログラム展開手段は、動作変更コマンド中の部位特定情報により特定される部位が、標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれかと同一であった場合に、その部位に係る部位動作モジュールを削除するものとすることもできる。いずれの場合も、プログラミングに際しては、部位の種別特定のみで部位動作モジュールの追加あるいは削除を指示することができるので、標準変更型中位動作ルーチンの作成が一層簡単となる。
【0018】
なお、標準動作ルーチンは、中位動作ルーチン記憶部に記憶されている中位動作ルーチンとはファイル上区別して、これを専用の標準動作ルーチン記憶部に記憶しておいてもよいし、特に他の中位動作ルーチンとのファイル上の区別は行わず、同じ中位動作ルーチン記憶部に記憶しておいてもよい。後者の場合は、中位動作ルーチン記憶部が標準動作ルーチン記憶部を兼ねる形となる。いずれの場合も、標準動作ルーチンは、動作変更コマンドによる変更を加えない形で中位動作ルーチンとして使用することが可能である。なお、標準動作ルーチンと中位動作ルーチンとをファイル上区別しない場合は、動作変更コマンドと対をなす標準動作ルーチン指定コマンドにより、どの中位動作ルーチンを標準動作ルーチンとして用いるかを指定するようにすればよい。
【0019】
次に、中位動作ルーチン記憶部に記憶されている複数の中位動作ルーチンのうち一部のものを、別の複数の中位動作ルーチン同士の組み合わせ、又は1ないし複数の別の中位動作ルーチンと1ないし複数の部位動作モジュールとの組み合わせとして、各々中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方を指定するための動作指定コマンドを用いて記述された複合型中位動作ルーチンとすることができる。この場合、プログラム展開手段は、読み出された中位動作コマンドに対応する中位動作ルーチンが複合型中位動作ルーチンであった場合には、それに含まれる動作指定コマンドの内容を解析して、当該複合型中位動作ルーチンを実行すべき部位動作モジュールの組み合わせの形に展開するものとして構成することができる。
【0020】
上記のような複合型中位動作ルーチンを用いることにより、いくつかの基本動作を組み合わせ、あるいは基本動作と部位動作との組み合わせにより、より大きな単位の基本動作を指定することが簡単にできるようになる。例えば頻繁に使用するひとまとまりの基本動作部位動作との双方又は一方を、動作指定コマンドを用いて記述した複合型中位動作ルーチンとして予め定義しておけば、上位動作プログラムの大幅な簡略化を図ることができる。この場合も、動作指定コマンドのうち部位動作を指定するための部位動作コマンドは、部位を特定するための部位特定情報と、動作内容を規定する部位動作モジュールを特定するための動作特定情報とを含むものとすることができる。
【0021】
上記複合型中位動作ルーチンは、組み合わされるべき中位動作ルーチン部位動作モジュールとの双方又は一方に係る、中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方が、時系列的な重なりを生じないよう逐次的に実行される重ね合わせ型中位動作ルーチンとして構築することができる。これは、ひとまとまりの基本動作部位動作との双方又は一方を指定された順序で逐次的に行わせたい場合に便利である。
他方、複合型中位動作ルーチンは、組み合わされるべき中位動作ルーチン部位動作モジュールとの双方又は一方に係る、中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方が、時系列的に少なくとも部分的な重なりを生じた状態で実行される組合わせ型中位動作ルーチンとして構築することができる。これは、ひとまとまりの基本動作部位動作との双方又は一方を同時的に行わせたい場合に便利であり、複雑な連係動作も簡単にプログラミングすることができる。
【0022】
標準変更型中位動作ルーチン複合型中位動作ルーチンとの双方又は一方においては、対応する中位動作ルーチンに基づく基本動作又は部位動作モジュールに基づく部位動作の動作条件を規定する動作条件規定コマンドを含ませておくことができる。また、部位動作モジュールのみを含む通常の中位動作ルーチンに対しても、部位動作の動作条件を規定する動作条件規定コマンドを含ませておくことができる。この場合、アクチュエータ動作制御部は、動作条件規定コマンドが規定する動作条件に従い、基本動作又は部位動作に係るアクチュエータの駆動を制御するものとすることができる。
【0023】
すなわち、前記した特開平8−314524号公報のロボットシステムにおいては、中位動作ルーチンの新規作成や内容変更には専門的な知識と熟練が必要であり、一般のユーザには扱いにくいことは既に述べたが、とりわけ互いに異なる動作が連係した複合動作となる場合等において、タイミング等の動作条件設定が特に面倒である。この場合、プログラミングに時間がかかるばかりでなく、プログラムの見通しや全体把握が困難になるため、所期のロボット動作を思い通りに実現しにくくなるといった問題も生ずる。
【0024】
そこで、上記のように、部位動作あるいは基本動作の単位でロボット動作を把握し、動作条件規定コマンドにより各部位動作あるいは基本動作毎に条件規定を行うようにすれば、ロボットに複雑な動作を行わせる場合でも、プログラム作成あるいは変更が極めて簡単となる。また、プログラムの見通しや全体把握も容易になるから、所期のロボット動作を思い通りに実現することができる。
【0025】
例えば、動作条件規定コマンドは、基本動作又は部位動作の動作開始タイミングを規定する動作開始タイミング規定コマンドを含むものとすることができる。例えば、複数の部位動作を同時連係的に組み合わせる場合、動作開始タイミング規定コマンドにより動作毎の開始タイミングを規定することで、ある部位の動作を他の部位よりも遅れて開始させたり、あるいはある動作が終了した後に特定部位の動作を開始させたり、さらには特定部位同士の動作を同時に開始させたりといった複雑な動作指定を簡単に行うことが可能となる。
【0026】
この場合、動作開始タイミング規定コマンドは、予め定められた時刻原点からの経過時間に基づいて動作開始タイミングを与えるものとすることができる。この場合は、例えばタイマー計測等による時間把握により動作タイミングを簡単に規定することができる。他方、前記教示動作ルーチン部分により規定されるある部位の動作を基準として用い、動作開始タイミング規定コマンドを、その部位動作の開始時刻、終了時刻又は特定のコマ位置通過時刻のいずれかに基づいて動作開始タイミングを与えるものとしておけば、特定部位の動作を基準にタイミングを設定したい場合に便利である。
【0027】
なお、動作開始タイミング規定コマンドが特に与えられていないない場合に、対応する基本動作又は部位動作の動作開始タイミングを予め定められたデフォルト開始時刻に設定する動作開始タイミング設定手段を設けておくことができる。例えば前記した組合わせ型中位動作ルーチン等において、デフォルト開始時刻(例えばプログラム実行開始)において、いくつかの部位の動作を同時にスタートさせたい場合、上記のような手段を設けておくことで、特にそれら部位へのタイミング指定を行わなくとも所期の動作が実行されるので、プログラムを簡略化することが可能となる。
【0028】
次に、前記した駆動データ作成装置により教示動作ルーチン部分を作成する場合、例えば、モデル画像に位置合わせされた骨格画像からは駆動データの演算が困難あるいは不可能なロボット部位が存在する場合がある(例えば手首、指、眼、口等の動き、ランプの点灯など)。そして、標準変更型中位動作ルーチン及び複合型中位動作ルーチンに、上記のような要因により、駆動データ作成装置による教示動作ルーチン部分の作成がなされないロボット部位(非教示部位)の部位動作モジュールが含まれる場合は、その部位動作モジュールに対応する非教示部位の位置決め命令ルーチン部分をプログラム中に組み込んでおくことができる。また、その位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データを生成する非教示部位駆動データ生成手段を設けることができる。
【0029】
上記構成では、駆動データ作成装置によるデータ作成の不能な非教示部位の動作を組み込む場合に、位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データが、プログラム実行中に自動生成されることとなる。これにより、各種非教示部位に対する駆動データを予め用意する必要がなくなり、また非教示部位の部位動作の組込みも非常に簡単になるので、プログラミングの手間を省くことができる。この場合、位置決め命令ルーチン部分は、対応する非教示部位の移動開始位置、移動終了位置及び移動速度の少なくともいずれかを指定する位置決め情報を含むものとすることができる。例えば、非教示部位が、眼の回転や口の開閉あるいは舌の出し入れのように、ロボットの特定部位に対して予め定められた2位置間でのみ移動するような場合、あるいは単純な回転移動しか行わない場合等においては、このような簡略な位置決め情報により駆動データの生成を問題なく行わせることができる。
【0030】
上位動作プログラムは、中位動作コマンドと部位動作コマンドとを混在させた形で記述できるようにしておけば、部位動作単位でのよりきめ細かいプログラミングが可能となる。この場合、プログラム読出手段は、その部位動作コマンドを中位動作コマンドと等価なものとして認識し、これに対応する部位動作モジュールを読み出すものとしておけばよい。
【0031】
また、上位動作プログラムは、中位動作コマンドを含む動作命令文が、その実行順を反映した所定の配列により記述された動作ルーチンと、変更型中位動作ルーチン及び複合型中位動作ルーチンの少なくともいずれかの内容を規定する定義ルーチンとを含む形式を採用することができる。変更型中位動作ルーチンあるいは複合型中位動作ルーチンを、定義ルーチンの形で上位動作プログラムの中に組み込めるようにしておくことで、これら形式の中位動作ルーチンを上位動作プログラムの枠内で作成できるようになり、プログラミングがより簡単でわかりやすくなる。この場合、プログラム展開手段による標準変更型中位動作ルーチンあるいは複合型中位動作ルーチンの展開処理は、それら中位動作ルーチンに含まれるべき部位動作モジュールの読出しに先立って、定義ルーチンの内容に従い実行されるようにしておく。
【0032】
【発明の実施の形態】
以下、本発明の一実施例を図面を用いて説明する。
図1は、本発明の一実施例たるロボットシステム200の全体構成を示しており、ロボット201、ロボット制御部202、駆動データ作成装置1を備えており、これらがそれぞれ通信インターフェース203、152を介して通信回線150により互いに接続されている。
【0033】
ロボット制御部202は、CPU204とこれに接続されるRAM205、ROM206、ハードディスク装置等で構成される記憶装置207、キーボード等の入力装置208、表示制御部210等を備える。そして、表示制御部210にはCRT等の表示装置211が接続され、また、CPU204には通信インターフェース203が接続される。
【0034】
なお、記憶装置207は、標準動作ルーチン記憶部、中位動作ルーチン記憶部、、部位動作モジュール記憶手段として機能する。また、CPU204は、プログラム読出手段、プログラム展開手段、非教示部位駆動データ生成手段として機能する。さらに、RAM205はCPU204のワークエリア及び展開記憶手段として機能する。
【0035】
ロボット201は、例えば人間の動きを模写するロボットとして構成され、図2に示すように、骨格単位20〜30が関節機構31〜37で互いに接続される骨格19を備える。そして、この骨格は、例えば下記のようなロボット部位(以下、部位A、B、C・・・等という)に区分されている。
・頭部(20):眼部20aと口部20cを備える。図3に示すように、口部20cは、図示しないアクチュエータにより開閉駆動可能とされている。さらに、口部20cの内部には、舌部20dが図示しないアクチュエータにより出入り可能に設けられている。また、図4に示すように、眼部20aは図示しないアクチュエータにより左右に回転駆動可能に設けられている。また、この眼部20aを覆ったり開いたりする瞼部20eが、図示しないアクチュエータにより駆動可能に設けられている。さらに、図1に示すスピーカ192(音声出力部)も内蔵されていおり、CPU204からの指令により、音声合成部191により合成された声等の音声を出力できるようになっている。なお、本明細書では、音声出力部も部位の一つとみなし、それによる音声出力も動作の一つとみなす。
・胴体:肩21、背骨22、腰骨23を含む。
・左右の腕部:それぞれ上腕骨24、下腕骨25、手部29を備える。また、手部29の各指は、それぞれ独立に曲げ伸ばし駆動可能とされ、例えばジャンケンの「グー」、「チョキ」、「パー」など、各種の手形状を作ることができるようになっている。
・左右の脚部:それぞれ上肢骨26、下肢骨27、足部30を備える。
【0036】
そして、図1に示すようにロボット201には、上記各部位(図面では、A、B、C等で簡略に表記している)のそれぞれに対応して算出・駆動制御部(算出・駆動制御手段)212が設けられ、ロボット制御部202のCPU204にそれぞれ接続されている。そして、これら算出・駆動制御部212に対し、各部位に含まれるアクチュエータ213が接続されている。なお、図2の各関節機構31〜37に設けられるアクチュエータの種類(パルスモータ、サーボモータ、ピストンシリンダ等)と軸の本数、軸の回転の自由度、及び軸の回転ないしピストンのスライドの範囲等は各骨格単位毎に個別に設定されている。
【0037】
次に、図5に示すように、ロボット制御部202(図1)の記憶装置207には、上位動作プログラム記憶部300、中位動作ルーチン記憶部302、部位動作モジュール記憶部304、中位動作コマンド解析プログラム記憶部306、非教示部位駆動データ生成プログラム記憶部308、システムプログラム記憶部312が形成されており、それぞれ対応するプログラムないしルーチン(あるいはデータ)を記憶している。
【0038】
各プログラムの作用は以下の通りである。
(1)上位動作プログラム:予め用意された中位動作コマンドから適当なものを選んで配列することにより、所望の上位動作を記述する。例えばロボット201に「右を向いて4歩歩き、回れ右して1歩半踏み出し、空手チョップのポーズをとる」という一連の上位動作を行わせたい場合には、これを「右を向く」、「右脚部半歩」、「左脚部1歩」等、いくつかの基本動作の組み合わせとして把握する。そして、該上位動作プログラムでは、その上位動作を構成する基本動作をそれぞれ規定する中位動作コマンドを含んだ動作命令文300aが、その実行順を反映した所定の順序、例えばその実行順に配列される。本実施例では、動作命令文に含まれる中位動作コマンドは、基本動作の定義名を含んだ形で記述される。
【0039】
(2)中位動作ルーチン:対応する基本動作に必要な各ロボット部位の動作を規定する部位動作プログラムモジュール(部位動作モジュール)のモジュール名(動作特定情報)PM11,PM12‥‥の組み合わせとして、基本動作の定義名1,2,3,‥‥と対応付けた形で記憶されている。
(3)部位動作モジュール:図6に示すように、図1のロボット201の部位A、B、C・・・に含まれるアクチュエータの駆動データ群を含んで構成されており、部位名(部位特定情報)1,2,‥‥、及びモジュール名(動作特定情報)PM11,PM12‥‥と対応付けた形で記憶されている。なお、各駆動データは、各アクチュエータにより駆動される骨格単位の両端の各時間毎の変位データを含むものとされるが、骨格単位間の角度データとすることもできる。他方、駆動データは、各アクチュエータの各時間毎の駆動量とすることもできる。
【0040】
(4)中位動作コマンド解析プログラム:中位動作コマンドの単位で上位動作プログラムを読み出し、対応する中位動作ルーチンを順次起動させる。
(5)システムプログラム:CPU204上における上位動作プログラムの作動環境、及び上位動作プログラムの書換えないし新規作成のための環境を与える。具体的には、表示装置211(図1)にプログラム作成画面を開き、入力装置208を用いて上位動作コマンドを図18に示すような形式(後述)で入力し、その入力内容に上位動作プログラム名を付与して、記憶装置207の上位動作プログラム記憶部300に記憶させる。また、記憶された上位動作プログラムをプログラム作成画面に表示させ、入力装置208からの入力に基づいて上位動作コマンドの追加、削除、挿入等を行い、プログラムの修正・編集を実行する。他方、後述する標準変更型中位動作ルーチンあるいは複合型中位動作ルーチンの部位動作モジュールへの展開処理も、このシステムプログラムが行う。なお、これらタイプの中位動作ルーチンは定義ルーチン300bの形で、上位動作プログラム内に組み込まれた形で上位動作プログラム記憶部300内に記憶される。すなわち、該記憶部300の一部も、中位動作ルーチン記憶部として機能している。
(6)非教示部位駆動データ生成プログラム:後述する。
【0041】
一方、図7に示すように、RAM205には、上位動作プログラム格納部205a、中位動作コマンド解析プログラム格納部205b、中位動作ルーチン格納部(I)205c、中位動作ルーチン格納部(II)205d等が形成され、それぞれ記憶装置207から読み出された対応するプログラム、データ等を格納するようになっている。なお、格納部205c,205dには、実行に係る中位動作ルーチンに含まれる各部位動作モジュールがロードされる(標準変更型中位動作ルーチンあるいは複合型中位動作ルーチンについては、中位動作ルーチン展開メモリ領域205gにて部位動作モジュールの形に展開された後、ロードされる)なお、中位動作ルーチン格納部が(I)と(II)の2つ(3つ以上でもよい)設けられているのは、次に実行する中位動作ルーチンを予め読み込んで蓄積しておくことにより、ロボット201が次の動作に移る際の、記憶装置207からのデータ読込みに基づく応答の遅れを低減するためである。
【0042】
また、算出・駆動制御部212は、図8に示すように、それぞれCPU214、RAM215、ROM216等を備え、ROM216には駆動量算出プログラム216aが格納されている。そして、算出・駆動制御部212は中位動作ルーチンの実行に伴い、ロボット制御部202側から受信した駆動データDA1、DA2、・・・等に基づいて、CPU214に接続された各アクチュエータ213(図1)の駆動量を時系列順に算出し、その算出結果に基づいて各アクチュエータ213を駆動する。その算出方法については後述する。
【0043】
図9は、駆動データ作成装置1の構成例を示すブロック図である。駆動データ作成装置1は、駆動データ演算手段を構成するCPU2、ROM3、RAM4を含む装置制御部5を備え、これに画像取込制御部6、表示制御部7、入力装置インターフェース8、装置全体の制御を司る制御プログラムを格納したプログラム記憶装置9、駆動データ記憶装置10、動画データ記憶装置11が接続されている。そして、入力装置インターフェース8にはクリックボタン12a(入力部)を備えた骨格位置決め手段として、マウス12、キーボード13が接続されている。表示制御部7には画像表示手段としてのCRT14が接続されている。一方、画像取込制御部6は、ビデオ再生装置(VTR)15が接続されるとともに、VRAM16とデータ転送用プロセッサ17とを備え、VRAM16に格納された画像表示データが、バス18を介して表示制御部7に直接転送可能とされている。
【0044】
次に、図2に示すロボット201の骨格19を形成する骨格単位のうち、いくつかのものは組を形成し、その組に含まれる各骨格単位同士の相対的な位置関係には予め定められた拘束条件が設定される。例えば、両脚部を構成する骨格単位を例にとれば、図10に示すようにその下肢骨27は、上肢骨26に沿う直線と腰骨23に直角な直線とが作る平面P内のみを動くという拘束条件が設定されている(なお、図10においては、関節機構35及び36(図2)は描いていない)。従って、上肢骨26の上端位置と下肢骨27の下端位置とを指定すれば、両者の結合点(膝に相当する部分)の位置は、上記拘束条件に従って自動的に定まることとなる。
【0045】
次に、本実施例のロボットシステム1の作動について詳しく説明する。
図1の入力装置208等により上位動作プログラム名を指定してこれを起動させると、中位動作コマンド解析プログラムが起動し、図11のフローチャートに示すように、M1において上位動作プログラムの最初の中位動作コマンドが読み込まれ、M2で対応する中位動作ルーチンがRAM205の中位動作ルーチン格納部(I)205cに格納される。次に、その格納された中位動作ルーチンに対し信号を発してこれを起動させる(M3)。また、その中位動作ルーチンの実行中に、M4で次の中位動作コマンドを読み込み、M5で対応する中位動作ルーチンをRAM205の空いている中位動作ルーチン格納部(この場合、格納部(II))に格納する。さらに、M6において起動・実行中の中位動作ルーチン(格納部(I)側)から中位側処理完了信号が送信されてきていれば、格納部(II)205dに格納された中位動作ルーチンに起動信号を送信する(M7)。そして、M8において次の中位動作コマンドが存在すればM4へ返り、次のコマンドを読み込んで対応する中位動作ルーチンを空いている格納部(この場合、格納部(I))に格納し、以下同様の処理を繰り返すことにより、上位動作プログラムが中位動作コマンド単位で実行されてゆく。なお、次の中位動作コマンドが存在しないか、終了コマンドである場合には処理を終了する(M9)。
【0046】
次に、中位動作ルーチン側での処理であるが、図12のフローチャートに示すように、上位動作プログラム側から起動信号を受けることにより、各部位のアクチュエータの駆動データを読み込み(B1、B2)、アクチュエータの各時間毎の変位データとして記述された駆動データを、各部位の算出・駆動制御部212へ時系列順に送信する(B3)。そして、算出・駆動制御部212側では、駆動量算出プログラム216a(図8)に基づいて、その変位データに基づいて各アクチュエータの駆動量を算出し、その算出結果に基づいてそれらアクチュエータを駆動する。
【0047】
駆動量の算出方法としては、一例として、以下のような原理に基づく方法を採用することができる。
まず、図2に示した骨格19において、各骨格単位の両端位置に例えば図13(W1)のようにインデックスを付与する。
・頭部20:H、f1。
・肩21:A1、H及びH、A2。
・背骨22:G及びH。ここで、Gは各骨格単位の変位からアクチュエータの駆動量を算出する際の基準位置として使用される。
・腰骨23:L1及びL2。GがL1とL2を結ぶ線分の中点に位置付けられている。
・上腕骨24、下腕骨25:A1、Ae1、Ah1及びA2、Ae2、Ah2。・上肢骨26、下肢骨27:L1、Lk1、Lf1及びL2、Lk2、Lf2。
そして、変位データは、各骨格単位の両端の変位として算出される。
【0048】
例えば図13の、左側の脚部に対しては、図14(a)に模式的に示すように、点Gの位置が不変で、ある時刻T1におけるL1、Lk1の位置が次の時刻T2におけるL1’、Lk1’に移った場合、線分GL1及び線分L1Lk1に回転移動を施し、(b)に示すように、線分GL1を線分GL1’に重ね合わせる。そして、回転移動後の各点の空間座標から、時刻T1の線分L1Lk1と、時刻T2の線分L1’Lk1’とのなす角度θを算出することにより、両骨格単位(すなわち、上腕部26及び下脚部27)の間に配置されたアクチュエータの各軸の回転角度を求めることができる。このような骨格単位の回転移動と第二骨格単位の回転角度を求める処理を、骨格の末端へ向かう方向に順次施してゆけば、各関節機構に含まれるアクチュエータの駆動量が順次算出されることとなる。なお、以上の説明では、アクチュエータはモータで構成されており、第一及び第二の骨格単位同士はそのモータ軸の回転により、相対的な回転運動のみを行うものとしたが、ピストンロッド等をアクチュエータとした場合は、そのピストンの伸縮により骨格単位間で相対的な並進運動が行われる場合もある。そのような場合は、第二骨格単位の回転角度の他、並進移動距離も算出するようにする。
【0049】
このようにしてアクチュエータの駆動量が算出され、その中位動作ルーチンの駆動データに基づくアクチュエータの一連の駆動が終了すると、駆動量算出プログラム216aからは下位側処理完了信号が中位動作ルーチン側へ送信される。中位動作ルーチン側では、図12のB4でこれを受け、中位側処理完了信号を上位動作プログラムへ送信する(B5)。なお、アクチュエータの駆動量そのものを駆動データとして送信する場合には、算出・駆動制御部側での上記算出処理は不要となる。
【0050】
図15は、上述の流れに基づくロボット201の上位動作の具体的な実行例を示している。すなわち、「4歩歩く」という上位動作は、図16及び図17に示すように、「右脚部半歩」(定義名「WALK2」)、「左脚部1歩」(定義名「WALK3」)、「右脚部1歩」(定義名「WALK4」)、「左脚部半歩」(定義名「WALK5」)の4つの基本動作を含み、その上位動作プログラムは、各基本動作の中位動作コマンド(それぞれ対応する上記定義名を含む)を用いた動作命令文を用いて組まれることとなる。そして、例えば最初の「右脚部半歩」の基本動作を構成する部位動作は、右脚部及び左腕部の各部位に対するそれぞれ「半歩踏出し」及び「前降り」であり、対応する部位動作モジュールに含まれる関連アクチュエータの駆動データを時系列順に算出・駆動制御部212へ送信する(送信制御は前述のシステムプログラムが行う)。算出・駆動制御部212では送信されてきた駆動データに基づいて駆動量を算出し、対応するアクチュエータを駆動して、次の中位動作コマンド内容である「左脚部1歩」の実行へ移る。
【0051】
以下、具体的なプログラム例を参照してさらに詳しく説明する。図18は「右を向いて4歩歩き、礼をした後回れ右して1歩半踏み出し、空手チョップのポーズをとる」という上位動作を行わせるためのプログラム例である。プログラムは、前記した通り、動作命令ルーチンと定義ルーチンとから成り立っている。
【0052】
本実施例では、動作命令ルーチンは、1又は複数の動作命令文を実行順に配列したものであり、ある動作命令文において、それが定義済基本動作の中位動作ルーチンであることを示すコマンドは「motion」コマンドであり、
motion <do:=”定義名”>
により、該定義名で示された中位動作ルーチンの実行を命令する中位動作コマンドが規定される。そして、このような中位動作コマンドによる動作命令文が実行順に配列される(なお、各文には行番号を付与していないが、行番号を付与して実行順を指定してもよい)。なお、各中位動作コマンド内の定義名が、どのような基本動作の定義名であるかについて、各文の末尾に括弧書きにて示している。
【0053】
ここで、中位動作ルーチンのうち、組合わせ型中位動作ルーチンあるいは標準変更型中位動作ルーチンについては対応する形式の定義名を採用することにより、本実施例においては、定義名の先頭に特定の文字情報、例えば「@」を付与することにより、他の形式の中位動作ルーチンと区別するようにしている。そして、このような定義名の中位動作ルーチンについては、その中位動作ルーチンの内容を規定するための定義ルーチンがプログラム中に書き込まれる(書き込まれていなければエラーと判断するようにしておく)。なお、基本動作の定義名は、所定の表示形式(本実施例では、コーテーション(””)で定義名を囲む形式)にて、それが基本動作の定義名であることを識別するようにしている。
【0054】
本実施例では、「右脚部を半歩前に出しながら空手チョップする」という基本動作(定義名”@KARATE”)が、「右脚部半歩前」という単純歩行の基本動作(定義名”WALK2”)を標準動作とする標準変更型中位動作ルーチンとして組まれている。図19は、その定義ルーチンの一例を示している。まず、定義ルーチンの先頭にある
「joint motion to @KARATE」
は、中位動作ルーチンの種別と定義名を規定するための文であり、「jointmotion to」は標準変更型中位動作ルーチン(組合わせ型中位動作ルーチンの場合も同じ)であることを示している。次いで、2行目の
「base <do:=”WALK2”>」
は、”WALK2”の定義名を有する中位動作ルーチンを標準動作ルーチンとして選択することを命令する文である。
【0055】
次いで、3行目の
item RIGHTARM <do:=CHOP>
は、ロボットの右腕部に空手チョップを行わせる部位動作を指示するための動作命令文である。「item ○○○」は部位特定情報であり、「部位として○○○を指定せよ」との意味をもつ。そして、「item RIGHTARM」により、空手チョップを行う右腕部が動作部位として指定される。また、「<do:=CHOP>」は動作特定情報であり、「モジュール名「CHOP」で指定される部位動作を行え」との意味である。なお、部位動作のモジュール名は、本実施例では、コーテーションを付与しないことで、中位動作ルーチンの定義名と区別できるようにしている。なお、最終行の「END」は、定義ルーチンの終了を示す。
【0056】
さて、このような定義ルーチンを含んだ上位動作プログラムを実行するときのシステムプログラムの処理の流れは、以下の通りとなる。まず、図18のプログラムを図5の記憶装置207の記憶部300から読み出して、図7のRAM205の格納部205aにロードする。プログラムは、行(すなわち中位動作コマンド)の単位で読み出され、これが通常の中位動作コマンド(定義名の先頭に「@」が付与されていないもの)である場合には、対応する中位動作ルーチンを図5の中位動作ルーチン記憶部302から読み出す。そして、これに含まれるモジュール名を参照して、対応する部位動作モジュールを図6の部位動作モジュール記憶部304から読み出し、RAM205の中位動作ルーチン格納部(I)205cにロードする。ロードされた中位動作ルーチンは、これに含まれる各部位動作モジュールのアクチュエータの駆動データが、対応する部位の算出・駆動制御部212(図1)へ送信され、各部位のアクチュエータを駆動させて基本動作が実行される。なお、この実行処理間に、同様の処理が次のプログラム行について実行され、その中位動作ルーチンが中位動作ルーチン格納部(II)205d(図7)にロードされる。
【0057】
ここで、中位動作コマンドが、標準変更型中位動作ルーチンを指定するもの(すなわち、定義名の先頭に「@」が付与されているもの)であった場合には、対応する定義ルーチンを読み込み、以下の展開処理に移る。まず、「base <do:=”WALK2”>」では、「base」コマンドの認識により、これに続く定義名(この場合”WALK2”)に対応する中位動作ルーチンを標準動作ルーチンとして読み出し、これを図7の中位動作ルーチン展開メモリ領域205gに格納する。次いで、item RIGHTARM <do:=CHOP>では、その部位特定情報(item RIGHTARM)を認識することにより、標準動作ルーチン中にこれと同じ部位の動作が存在するかどうか確認する。もし存在していれば、動作特定情報(<do:=CHOP>)により特定される部位動作モジュールを、展開メモリ領域205g内に格納されている標準動作ルーチン中の対応する部位のモジュールと置き換える。この場合、”WALK2”は、「右脚部半歩」の歩行動作であり、右腕の振りの動作が部位動作として含まれているから、これが空手チョップの右腕動作と置き換えられるわけである。
【0058】
なお、上記定義ルーチンの例には現われていないが、図20に示す動作命令文を用いいることにより、次のような処理が行われるようになっている。まず、特定の定義名として「FAULT」(すなわち、<do:=FAULT>)を記述しておくと、展開メモリ領域205g内の標準動作ルーチンからは、対応する部位のモジュールが削除される処理がなされる(すなわち、その部位の動作が禁止される)。また、標準動作ルーチン内に存在しない部位の動作を指定した場合は、対応する部位動作モジュールが標準動作ルーチンに追加される。図に示した動作命令文では、
item RIGHTWRIST <do:=turn>
となっているが、これは右手首部(RIGHTWRIST)をねじる(turn)部位動作を示すものである。
【0059】
また、部位動作の置換えないし追加を指定する動作命令文では、部位動作モジュールのモジュール名による動作指定の他、中位動作ルーチンを援用した動作指定も可能となっている。この場合、定義名により中位動作ルーチンを指定し、部位名により部位を指定する。これにより、その中位動作ルーチンの、指定された部位のモジュールが、展開メモリ領域205g内の標準動作ルーチンに対し置き換えないし追加されることとなる。図に示した動作命令文では、
item RIGHTARM <do:=”WALK3”>
となっているが、これは「左脚部一歩前」という基本動作の、右腕の振り動作のみを組み込むことを示すものである。
【0060】
このようにして、定義ルーチン内の動作命令文の実行が全て終了すると、展開メモリ領域205g内には、モジュールの入替え、追加及び削除処理が終了した状態の標準動作ルーチン、すなわち展開済の標準変更型中位動作ルーチンが格納された形となっている。なお、モジュールの入替え等の展開処理は、モジュール名のみを用いて行えば、図6の記憶部304からその都度モジュールを読み出す必要がなくなるので高速処理が可能となる。この場合は、展開処理が終了後に、展開メモリ領域205g内のモジュール名を参照して、対応するモジュールを記憶部304から読み出し、これを中位動作ルーチン格納部205cあるいは205dに格納するようにする。
【0061】
ところで、図18のプログラムが示す上位動作では、右を向いた後、4歩歩く形となっているが、この4歩歩くルーチン部分を、以下に説明する重ね合わせ型中位動作ルーチンとして統合することも可能である。その例を図21に示している。このプログラムと図18のプログラムとの違いは、図18の「4歩歩く」動作を記述する部分に相当する2〜5行の動作命令文群が、1つの命令文
motion <do:=”@@××××1”>
で置き換えられており、さらにその定義名”@@××××1”に対応する定義ルーチンが追加されている点にある。すなわち、「4歩歩く」という動作を、時系列的に重なりを生じない4つの歩行動作を重ね合わせた重ね合わせ型中位動作ルーチン(定義名”@@××××1”)として組まれている。なお、本実施例では、定義名の先頭に特定の文字情報、例えば「@@」を付与することにより、重ね合わせ型のルーチンを他の形式の中位動作ルーチンと区別するようにしている。
【0062】
図22は、その定義ルーチンの一例を示している。まず、定義ルーチンの先頭にある
「pileup motion to @@××××1」
は、中位動作ルーチンの種別と定義名を規定するための文であり、「pileup motion to」は重ね合わせ型中位動作ルーチンであることを示している。以降は、重ね合わせを行いたい基本動作の命令文を実行順に配列し、最終行に「end」を付与することにより、定義ルーチンを閉じる。なお、本実施例では、特定の基本動作列を繰返し実行させるためのコマンドが用意されている。本実施例では、「repeat while ○」‥‥「end」がこれに相当し、これらの間に挟まれた動作列を「○」回繰り返すことを意味する。図22では、「左脚部1歩」と「右脚部1歩」とを交互に行う動作を2回繰り返すことにより、都合4歩連続歩行する内容を記述するプログラムとなっている。
【0063】
次に、組合わせ型中位動作ルーチンのプログラム例と、その処理の流れについて説明する。組合わせ型中位動作ルーチンは、組み合わされるべき中位動作ルーチン及び/又は部位動作モジュールに係る基本動作及び/又は部位動作が、時系列的に少なくとも部分的な重なりを生じた状態で実行される上位の中位動作をいう。一例を図23を用いて説明する。ここでは、ロボットのジャンケン動作を例にとる。
【0064】
例えば、「ジャンケンポン」と発声しながら、パーを出すという動作を考えてみる。これは次のような部位動作に分解して考えることができる。まず、(1)のように、右手を「グー」の状態にして右腕を振り上げ、その振上げの途中で「ジャン」と発音する。なお、発音に合わせて口を短時間開いて閉じる動作(以下、口パクパク動作という)を1回行う。次いで、(2)では、振り上げた右腕を静止させて「ケン」と発音する。(3)では、その右腕を振り下ろしながら、右手は途中まで「グー」の状態を維持し、さらに(4)で、右手を「パー」状態としながら「ポン」と発音しつつ、右腕の振下ろしを完了させる。なお、この例では(5)で、腕の振下ろし完了後に、ロボットが口を開いて舌をペロリと出す動作が付け加えてある。
【0065】
上記動作においては、右腕、右手、口、舌及び音声の5つの部位が、しかるべきタイミングで連係動作を行う形となっている。その動作タイミングの例が図24である。図中の矢印は動作継続期間を表す。この例では、右腕の振上げ、静止、振下ろしをそれぞれ1秒で実行するようになっており、デフォルトで口は閉、右手はグーとなっている。また、右腕の振上げ動作は、大げさなロボットの身振りを示すために、腰の前後移動や肩の上下動あるいは頭の動き等の部位動作を伴う基本動作に組み込まれており、後述する駆動データ作成装置によりデータ作成された例えば10コマ(コマ送り速度:0.1秒/コマ)の教示動作である。なお、その中位動作ルーチンの定義名は”RLIFTUP”である。他方、右腕の振下ろしも同様に基本動作に組み込まれており、その中位動作ルーチンの定義名は”RSHAKEDN”である。そして、右腕振上げサイクルの中間にて「ジャン」の発声を、右腕静止サイクルの中間にて「ケン」の発声をそれぞれ行い、右腕振下ろし時には、その7コマ目から右手を「パー」に移行させ、同時に「ポン」の発声を行う。そして、右腕の振下ろしが完了すると同時に舌をペロリと出す。
【0066】
図25は、上記のような動作を規定する組合わせ型中位動作ルーチンの定義ルーチンの一例である。まず、定義ルーチンの先頭にあるのは、標準変更型中位動作ルーチンと同様の「joint motion to @JANKEN」である。以降の(a)〜(l)は、組み合せるべき部位動作あるいは基本動作を指定する動作命令文群であり、それぞれ、図24のタイミングチャートの(a)〜(l)の各動作を命令するものである。このうち(a)〜(e)は、図23の(1)の動作過程に、(f)、(g)は(2)の動作過程に、(h)は(3)の動作過程に、(i)〜(k)は4の動作過程に、(l)は(5)の動作過程にそれぞれ対応している。
【0067】
組合わせ型中位動作ルーチンにおいては、例えばその中位動作ルーチンの実行開始時刻が時刻原点として設定され、後述のコマンドにより特に実行開始タイミング指定がなされない限り、その時刻原点をデフォルト開始時刻として、各部位動作あるいは組み込まれた基本動作が一斉同時にスタートする(なお、時刻計測は、図1のタイマー190が行う)。すなわち、(a)〜(c)は、開始タイミングの指定がないので、ルーチンの実行開始とともに、右腕の振上げ動作((a))、右手の「グー」動作((b))、及び口の閉動作が同時に実行スタートとなる。なお、「RIGHTFINGER」は右手(の指)、「MOUTH」は口の各部位を表す部位指定情報であり、<do:=31>は「グー」を作るための指曲げを、<do:=close>は口閉じをそれぞれ指定する動作指定情報である。
【0068】
次の(d)は、「ジャン」の発声を指示する動作命令文である。本実施例では、声に対応する部位名すなわち「VOICE」を指定し、それに続く<do:=”◇◇◇◇”>の◇◇◇◇に、発声内容を直接文字(あるいは文字コード)にて書き込むことにより発声内容が指定される。そして、それに続く<from:=○○○>は、動作条件規定コマンドの一つであり、動作の開始タイミングを指定する動作開始タイミング規定コマンドである。<from:=timer △△>は、「時刻原点からタイマーの計測単位(本実施例では0.1秒)の△△倍だけ経過した後に動作を開始せよ」との意味である。すなわち、(d)全体の意味は、「時刻原点から(すなわち、右腕の振上げ開始から)0.5秒経過後に、「ジャン」と発声せよ」となる。
【0069】
また、(e)では、部位として口が選択され、<do:=parrot> により口パクパクの動作が指定される。その動作開始タイミングは、<from:=timer 5>となっているから、上記「ジャン」の発声タイミングと同じである。さらに、<till:(条件名)>は、動作の終了条件を規定するコマンドであり、例えば <till:=repeat △> は、その部位動作が△回繰り返されれば動作終了させることを意味する。例えば、<till:=repeat 1> により、口パクパクが1回のみ行われることになる。なお、<till:=repeat △>が省略された場合には、自動的にデフォルト繰返し回数(例えば1回)が指定されるようにしてもよい。こうして、上記(a)〜(e)の動作命令文により、図24のタイミングチャートの(a)〜(e)の動作が組合せて実行され、図23の(1)の動作が実現されることがわかる。
【0070】
次に、腕の振下ろし時の動作について説明する。まず、右腕の振下ろしが開始されるのは時刻原点から2秒経過後であり、対応する(h)の動作命令文において、<from:=timer 20>によりその開始タイミングが与えられる。図24に示す通り、腕の振下ろし開始から終了までは時間で表せば1秒であり、コマ送り数で表せば10コマである。そして、その7コマ目(時刻原点からの時間でいえば2.7秒目)において、右手の「グー」動作、「グー」の発声動作、及び口パクパク動作が一斉に開始する。
【0071】
これに対応するのは、図25の(i)〜(k)の3つの動作命令文である。ここでは、動作開始タイミングを右腕の動作のコマ送り数にて規定している。各動作命令文に書き込まれている動作開始タイミング規定コマンドの、<from:=item(部位名)[△]>の形式は、「item(部位名)にて指定された部位動作の△コマ目に動作を開始せよ」という内容を指示するものである。従って、<from:=item RIGHTARM[7]>により、右腕の振下ろし開始から7コマ目に各動作の開始時刻が設定される。
【0072】
最後は舌を出す動作であるが、図25にて対応する動作命令文は(l)である。
上述のような駆動データは駆動データ作成装置1により作成することができる。item TONGUSは舌を部位名として指定するものであり、<do:=out>は「出す」動作を指定するものである。そして、その動作開始タイミング規定コマンド<from:=item RIGHTARM[back]>は、前記した<from:=item RIGHTARM[7]>と同様に、右腕の部位動作をタイミング設定の基準部位として指定しているが、[back]は、「その部位(右腕)の動作が完了するとともに動作開始せよ」を意味している。従って、右腕の振下ろしが完了するとともに、ロボットは舌を出す動作を行うこととなる。
【0073】
上記のようなロボットの駆動データは、主要部分が図9の駆動データ作成装置1により教示作成され、各部位動作モジュールもそれに基づく教示動作ルーチン部分として作成される。以下、駆動データ作成装置1の作動の流れをフローチャートを用いて説明する。図26は処理全体の大まかな流れを示すものであって、まずS1100の入力処理では、モデル画像に対する骨格画像の重ね合わせ処理を行い、駆動データを作成(換言すれば、ロボット201への動作の教示)する。この処理は、基本動作の単位で行われる。ここで、入力に先立ってその基本動作を人間のモデルに行わせ、そのモデル画像38(図16、図17)を所定のコマ時間間隔でビデオカメラにより動画撮影しておく。そして、図9のVTR15により再生されたその動画が、画像取込制御部6を介して動画データとして取り込まれ、動画データ記憶装置11に記憶されている。ここで、動画データ記憶装置11に記憶されている動画データは、図35に示すように、モデルが比較的複雑な動きを行っている場合には、そのコマ80の間隔が密になるように、逆に動きが比較的単調な場合にはコマ80の間隔が粗となるように、その動画のコマが、動画データ取り込み時あるいは取り込み後のデータ編集時に適宜間引かれる。
【0074】
図27は、S1100の入力処理の詳細を示すフローチャートであって、まず駆動データの演算が不要な部位の設定を行なった後(S1101)、図13に示すようなウィンドウW1及びW2をそれぞれ表示する(S1102、S1103)。このうち、一方のウィンドウW1にはモデル画像38が表示され、他方のウィンドウW2には骨格画像39が表示される。なお、骨格画像39は、図2に示すロボット骨格19を簡略化した線図として表示される。
【0075】
図27に戻って、S1104において、ビデオカメラにモデルを正対させて撮影したモデル画像38(図13)に、骨格画像39の寸法を合わせ込む処理を行う。その処理の詳細を図28及び図29に示す。すなわち、図13において、正対ポーズのモデル画像38をウィンドウW1に、骨格画像39をウィンドウW2に表示し(C101〜103)、各骨格単位の長さをモデル画像の対応部位に合わせ込む(C104)。ここで骨格画像39の各骨格単位に対しては、予め標準寸法が設定されている。その合わせ込みの処理であるが、図29に示すように、まず基準点Gの位置を合わせ込み(C201)、続いてその基準点Gから次第に遠ざかるように、各骨格単位の端点を順次合わせ込んでゆく。
【0076】
ここで、モデル画像38に対し、骨格画像39の端点を合わせ込むための入力方法であるが、図13に示すように、ウィンドウW2上には各端点が目印点として表示され、また、ウィンドウW1上にはマウス12(図9)の移動に伴い画面上を移動するポインタ40が表示される。目印点の合わせ込みは、G点から始まって次第に骨格の末端へ向かう方向に、予め設定された順序で行われるようになっており、ウィンドウW2に表示された骨格画像39上において、次に合わせ込みを行うべき端点が点滅してこれを知らせるようになっている。そして、ウィンドウW1上のモデル画像38上の指定するべき位置にポインタ40を合わせ、マウス12のクリックボタンを操作することにより、ウィンドウW2上で点滅表示された端点の、モデル画像38上での重ね位置が確定され、それとすでに確定されている端点の位置に基づいて、各骨格単位の長さが順次計算されてゆく(C202〜C209)。また、長さが定められた骨格単位は、ウィンドウW1のモデル画像38に対し順次重ね描画されてゆく。
【0077】
ここで、正対ポーズにおけるモデル画像38はほぼ左右対称であることから、上腕骨24と下腕骨25、ならびに上肢骨26と下肢骨27(図2)の各端点は、左右いずれか一方のものが位置決めされれば、他方のものも自動的に位置決めされるように処理が行われる。また、頭部20の寸法(H及びf1間の距離、図13)は、頭部20以外の骨格単位の標準寸法と算出された寸法とを比較し、その寸法比率と頭部20の標準寸法とに基づいて定められる(C210)。なお、ウィンドウW1に予め設定された標準寸法の骨格画像を、モデル画像38とともに表示し、そのウィンドウW1上で骨格画像の各骨格単位の端点をモデル画像38に合わせ込む処理を行ってもよい。この場合、ウィンドウW2は省略することも可能である。次に、図28に戻り、算出された骨格単位の寸法に合わせて、正対ポーズの骨格画像39をウィンドウW1に再描画した後(C105)、図27のS1105に進む。ここで、正対ポーズに対応する骨格画像39に対しては、各アクチュエータの駆動位置が基準データとして予め設定されており、その設定内容がプログラム記憶装置9内に作成された基準データ記憶部に格納されている。
【0078】
続いて、S1105〜S1109において、骨格画像39の位置合わせを行う動画のコマ番号を指定することにより、そのコマのモデル画像のデータが取り込まれ、骨格画像の位置合わせ処理(骨格画像入力)に移る。図30及び図31は、その位置合わせ処理(S1109)の内容の詳細を示すフローチャートである。すなわち、図30のC301〜C305に示すように、取り込んだコマのモデル画像38に対し、G点から始めて次第に遠ざかる方向に、骨格画像39の各端点の位置をモデル画像38に対し合わせ込んでゆく。その入力例を図36に示しているが、手順は前述の寸法合わせ処理の場合とほぼ同様であり、ウィンドウW2上で点滅表示される端点のウィンドウW1での合わせ位置をマウス12で指定しながら、モデル画像38に対する位置合わせ入力を行ってゆく。この場合も、ウィンドウW1上のモデル画像38に対し、位置合わせの終わった部分から順に骨格画像39が重ね描画されてゆく。ここで、左右の脚部及び腕部については、前述の寸法合わせ処理とは異なり、個々に入力処理が行われることとなる。なお、S1101(図27)において設定された教示不要部位については、位置合わせ入力がスキップされる。
【0079】
図31は、両脚部に相当する部位の位置合わせ処理の流れを一例として示しており、右脚部及び左脚部のそれぞれについて、上肢骨26の上端点L1(L2)の位置合わせを行った後、下肢骨27の下端点Lf1(Lf2)の位置合わせが行われるようになっている(C401〜C403)。ここで、図10に示す拘束条件により、L1(L2)及びLf1(Lf2)が指定されれば、膝に相当するLk1(Lk2)の位置は自動的に定まるので入力は行われない。このようにして、各端点の画面上の座標が算出され、その画面座標と、予め記憶されている各骨格単位の標準体寸法データに基づいて実際の空間における端点の3次元座標が算出される。
【0080】
次に、図27に戻ってS1110に進み、上記位置合わせ処理では駆動データの生成が困難ないし不可能な骨格単位ないし部位に対し、それらの空間位置の補助入力処理を、マウス12ないしキーボード13を使用することにより行う。この入力処理は、上記位置合わせ処理とは別のウィンドウを開き、そのウィンドウ上に該当する骨格単位ないし部位の画像を表示して、位置設定のために予め用意された各種処理コマンド(例えば骨格単位の平行移動、あるいは回転など)を、マウス12あるいはキーボード13からの入力により選択・実行しながら、骨格単位や部位毎に個別に入力を行ってゆく。
【0081】
以上で、1つのコマに対する入力処理が終了するが、次のコマの処理に移る場合はコマ番号を更新し、直前のコマの骨格画像39及びモデル画像38を描画しなおすとともに(S1111〜S1113)、S1107に返って処理を繰り返す。一方、コマへの入力作業を終了する場合は(S1114〜S1116)、ウィンドウW1とW2を閉じて図26のS1200に進む。
【0082】
ここで、上述のようにして得られた各端点の変位データが、そのまま駆動データとして使用される場合にはS1300に進むが、その変位データから各アクチュエータの駆動量の算出まで行う場合には、S1200の処理、すなわち上記入力により得られた、各コマ毎の骨格単位の端点の空間位置座標に基づいて、骨格単位を駆動するアクチュエータの駆動量を算出する処理が挿入される。すなわち、図32に示すように、隣り合う2枚のコマの番号を指定して、その各骨格単位の端点の空間位置座標を読み込み、その空間位置座標に基づいて各骨格単位間に設けられたアクチュエータの駆動量が算出される(C501〜C503)。その算出処理の内容は、前述の駆動量算出プログラム216aにより各アクチュエータの駆動量を算出する処理とほぼ同様であるので詳しい説明は省略する。なお、最初のコマの骨格画像が正対ポーズのものでない場合は、予め記憶されているアクチュエータの基準位置をもとに、その最初のコマに対する各アクチュエータの駆動位置を算出しておけばよい。
【0083】
次に、図26のS1300に進み、入力が終わった各コマに対しロボット動作の実時間軸上の時間を設定する。その処理の詳細を図33のフローチャートに示す。すなわち、時間設定用のウィンドウを開いて骨格画像データをコマ番号順に読み出し、ウィンドウ内に骨格画像を順次表示しながら時間入力を行ってゆく(C601〜C605)。そして、C6051において、直前のコマとの時間間隔から各アクチュエータの駆動速度を算出し、C606において、その時間間隔で全てのアクチュエータが駆動完了できるかどうかを判定する。完了できるようであれば、C607でその入力された時間及びアクチュエータ駆動速度を格納し、C608でコマ番号をインクリメントしてC603に戻り、処理を繰り返す。また、駆動完了できないようであればC605に戻って時間入力をやり直す。そして、時間の入力処理が終わるとC612でウィンドウを閉じて図26のS1400に進む。
【0084】
S1400では、最終的に得られた駆動データを駆動データ記憶装置10に記憶・保存する。その処理の流れは図34に示す通りであって、まず、C701で中位動作コマンド名を入力する。そして、駆動データはその部位別に分割され(C702)、下位動作データのサブファイル、すなわち部位動作モジュールが形成される(C702)。そして、それら部位動作モジュールが、入力された中位動作コマンド名で統合されて、中位動作ルーチンとして記憶装置10に保存される(C703)。なお、各部位動作モジュールは、互いに異なる中位動作ルーチン間での交換や差替えが可能とされている。
【0085】
以上のようにして各部位の部位動作モジュールは、駆動データ作成装置1により教示作成されるが、モデル画像に位置合わせされた骨格画像からは駆動データの演算が困難あるいは不可能なロボット部位、すなわち非教示部位が存在する。一例としては、手首、指、眼、口、舌等である。この場合は、上記動作プログラムにおいて、そのような非教示部位の位置決め命令ルーチン部分を、例えば定義ルーチンの一角をなすものとして組み込むことができる。本実施例では、
set (部位名) <設定因子:=設定条件値>
という形式にて位置決め命令ルーチン部分を記述するようになっている。
【0086】
具体的には、対応する非教示部位の移動開始位置、移動終了位置及び移動速度を設定因子として選び、数値入力するかあるいは予め用意された候補値から選択する等により、所期の設定条件値を設定する。これを受けて図5の記憶部308に記憶されている非教示部位駆動データ生成プログラムに基づき、図1のCPU204は、対応する部位のアクチュエータの駆動データを算出する。例えば、アクチュエータがサーボモータやステッピングモータである場合には、移動開始位置及び移動終了位置の値を受けてモータの回転開始位置と回転終了位置を算出し、移動速度の値を受けてモータの回転数を算出する。以下、本実施例のロボットにて使用れる非教示部位とその動作種別、及び位置決め命令ルーチン部分の形式等について、いくつかの例を示す。
【0087】
部位名:右眼(左眼)(部位指定情報:RIGHTEYE(LEFTEYE))。アクチュエータ:モータにより左右に回転駆動される。
書式:RIGHTEYE<do:=実行コマンド><till:=条件式>
LEFTEYE<do:=実行コマンド><till:=条件式>

Figure 0003995348
動作終了条件句:実行コマンドがgoggleの時、眼の往復回数指示が可能。
(例:RIGHTEYE<do:=goggle><till:=repeat△>)
位置決め命令:set EYE<speed:=(速度指定情報)><right:=(右眼差し位置座標)><left:=(左眼差し位置座標)>(部位名は、例えば左右眼共通であるが、左右別々に設定するようにしてもよい)
Figure 0003995348
・「右眼差し」は位置決め命令のrightで設定される位置まで移動
・「左眼差し」は位置決め命令leftで設定される位置まで移動
・「キョロキョロ」は位置決め命令のrightとleftで設定される座標間を、往復回数指定(<till:=repeat n>)。往復回数が指定されていない時は一往復のみとなる。そして最終の眼の位置は左設定位置で停止する。
なお眼は最初右側へ動かす。
【0088】
部位名:右瞼(左瞼)(部位指定情報:RIGHTEYELID(LEFTEYELID)
アクチュエータ:モータにより上下に駆動される。
書式:RIGHTEYELID<do:=実行コマンド><till:=条件式>
LEFTEYELID<do:=実行コマンド><till:=条件式>
Figure 0003995348
動作終了条件句 実行コマンドがblinkの時、瞬き回数指示が可能。(例:RIGHTEYELID<do:=blink><till:=repeat n>)
位置決め命令 set EYELID<open:=(時間設定情報)>
(左右瞼共通)
Figure 0003995348
【0089】
部位名:口(部位指定情報:MOUTH)
アクチュエータ:モータにより開閉駆動される。
書式:MOUTH<do:=実行コマンド><till:=条件式>
Figure 0003995348
動作終了条件句 実行コマンドがparrotの時、回数指示が可能。(例:MOUTH<do:=parrot><till:=repeat n>)
位置決め命令 set MOUTH<open:=(時間設定情報)><close:=(時間設定情報)>
Figure 0003995348
【0090】
部位名:舌(部位指定情報:TONGUS)
アクチュエータ:モータにより出入れ駆動される。
書式:TONGUS<do:=実行コマンド><till:=条件式>
Figure 0003995348
動作終了条件句 実行コマンドがlickの時、回数指示が可能。(例:TONGUS<do:=lick><till:=repeat n>)
位置決め命令 set TONGUS<out:=(時間設定情報)><in:=(時間設定情報)>
Figure 0003995348
【0091】
部位名:手(部位指定情報:RIGHTFINGER(LEFTFINGER))
アクチュエータ:シリンダにより、各指が独立に曲げ伸ばし駆動される。
Figure 0003995348
実行コマンド 指パターン指示(0〜32のいずれかを選択することにより、各種指曲げ状態を設定する。例えば、0:パー/1:親指曲/2:人差指曲/4:中指曲/8:薬指曲/16:小指曲/31:グー)
位置決め命令 なし
【図面の簡単な説明】
【図1】本発明のロボットシステムの全体構成を示すブロック図。
【図2】ロボット骨格の模式図。
【図3】ロボット頭部に設けられた口及び舌の動作説明図。
【図4】同じく眼及び瞼の動作説明図。
【図5】ロボット制御部の記憶装置の内容を示す説明図。
【図6】その部位動作モジュール記憶部の内容を示す説明図。
【図7】ロボット制御部のRAMの内容を示す説明図。
【図8】算出・駆動制御部の構成を示すブロック図。
【図9】駆動データ作成装置の一構成例を示すブロック図。
【図10】 脚部骨格に対する拘束条件の説明図。
【図11】上位動作プログラムによる処理の流れを示すフローチャート。
【図12】中位動作ルーチンの処理の流れを示すフローチャート。
【図13】正対モデルに対する骨格画像の寸法合わせ処理の説明図。
【図14】アクチュエータの駆動量を算出する方法の説明図。
【図15】ロボットの動作の流れをプログラム階層と対応付けて説明する図。
【図16】歩行に関する基本動作の例を示す説明図。
【図17】図16に続く説明図。
【図18】上位動作プログラムの記述例を示す説明図。
【図19】その標準変更型中位動作ルーチンの定義ルーチンの一例を示す説明図。
【図20】部位動作モジュールの削除、追加を行う場合の動作命令文の記述例を示す説明図。
【図21】重ね合わせ型中位動作ルーチンを用いた上位動作プログラムの記述例を示す説明図。
【図22】その重ね合わせ型中位動作ルーチンの定義ルーチンの記述例を示す説明図。
【図23】組合わせ型中位動作ルーチンの適用に好適なロボット動作例を示す説明図。
【図24】図23の動作のタイミングチャートの一例を示す図。
【図25】それに使用する組合わせ型中位動作ルーチンの定義ルーチンの記述例を示す説明図。
【図26】駆動データ作成装置の全体の処理の流れを示すフローチャート。
【図27】その入力処理のフローチャート。
【図28】その入力処理において、骨格単位長さを定める処理の流れを示すフローチャート。
【図29】各骨格単位の長さをモデル画像の対応部位に合わせ込む処理の流れを示すフローチャート。
【図30】同じく、各骨格単位の端点の位置合わせ処理の流れを示すフローチャート。
【図31】同じく、骨格の端点の座標を算出する処理の流れを示すフローチャート。
【図32】同じく、駆動データ算出の流れを示すフローチャート。
【図33】同じく、時間入力処理の流れを示すフローチャート。
【図34】同じく、駆動データ保存処理の流れを示すフローチャート。
【図35】コマの時間軸上における配列の一例を示す模式図。
【図36】骨格画像のモデル画像に対する位置合わせ処理の説明図
【符号の説明】
1 駆動データ作成装置
5 装置制御部(駆動データ演算手段)
200 ロボットシステム
201 ロボット
202 ロボット制御部
204 CPU(プログラム読出手段、プログラム展開手段、非教示部位駆動データ生成手段)
205 RAM
205a 上位動作プログラム格納部
205b 中位動作コマンド解析プログラム格納部
205c 中位動作ルーチン格納部(I)
205d 中位動作ルーチン格納部(II)
205g 中位動作ルーチン展開メモリ領域
207 記憶装置
212 算出・駆動制御部
213 アクチュエータ
300 上位動作プログラム記憶部
302 中位動作ルーチン記憶部
304 部位動作モジュール記憶部
306 中位動作コマンド解析プログラム記憶部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a robot system.
[0002]
[Prior art]
When programming various articulated robots, such as robots that replicate human movements, in order to program the movement, conventionally, the drive amount of each actuator that drives the robot is individually set according to the time series of the operation. The method of setting is taken. In this case, in the operation of a certain robot, when movements of a plurality of robot parts occur simultaneously or in combination, the driving amount of the actuator must be designated for each robot part. For example, taking the action of “walking” as an example, in addition to the movements of both feet, the movements of the arms and the movement of the shoulders are accompanied, and the programs of the operations of these parts are individually assembled. Then, when programming a more complicated high-order operation such as “go forward one step, thank you and go back to the original place”, the high-order operation “go forward one step” , Programming work is performed by breaking it down into subordinate actions of “thank you” and “go down one step”.
[0003]
The above-mentioned conventional method has to set the driving amount and operation sequence of a large number of actuators for each robot part, so it takes time for programming work and is suitable for efficiently creating complicated programs for higher-level operations. It's hard to say. Further, when it is desired to change the contents of the upper operation, it is necessary to rewrite the program or data at the drive amount level of each actuator, which takes time. That is, since it is not so easy to change the operation content of the robot, there is a difficulty in lacking flexibility in various operations of the robot.
[0004]
In order to solve this problem, Japanese Patent Laid-Open No. 8-314524 proposes a control method using the following hierarchical control program. In this control program, a middle-order operation routine that forms lower-order motion data in units of drive data related to driving of actuators provided in a plurality of robot parts, and integrates a plurality of lower-order motion data to define the basic motion of the robot. Build up. Further, a middle-level operation command is associated with each of these middle-level operation routines, and a higher-level operation program is defined by a combination of the middle-level operation commands. Then, while driving the higher-order operation program in units of the middle-order operation commands, the drive of each actuator is controlled based on the combination of the middle-order operation routines corresponding to the read middle-order operation commands.
[0005]
[Problems to be solved by the invention]
By the way, in the above method, if you want to increase the types of intermediate motion programs that define the basic motion of the robot, create a middle motion program for the basic motion that you want to add newly, going back to the unit of the lower motion data each time. There must be. This intermediate operation program creation work can only be performed at a lower operation data level that is difficult to grasp intuitively, so it requires specialized knowledge and a high degree of skill in programming work. The content is difficult to handle. Therefore, it is good that simple programming is realized by using intermediate operation commands. However, due to the above circumstances, a person other than an expert can take a frame of the intermediate operation commands (basic operations) prepared in advance. There is a disadvantage that it cannot be exceeded and is not flexible.
[0006]
As another example, in order to bring the robot motion closer to the desired one, in the basic motion specified by a certain intermediate motion command, only the motion of a specific part is to be changed to another motion, or the part In some cases, there is a desire to prevent the movement of the user from being performed or to add a new part movement. like this
In order to meet the demand, of course, the corresponding intermediate operation routine must be rewritten. However, in the technique of the above publication, only the reassignment, addition, and deletion of the middle operation command unit are permitted as the rewriting of the upper operation program. As a result, a new intermediate operation can be performed even with a slight operation change. It is very troublesome to create a routine.
[0007]
The problem of the present invention is that it is possible to easily create or rewrite a middle-level operation routine to cope with the addition of a new basic operation or a partial change of an existing basic operation. The object is to provide a robot system capable of flexible motion programming.
[0008]
[Means for solving the problems and actions / effects]
  In order to solve the above problems, the robot system of the present invention
  There is a part motion program module (hereinafter referred to as a part motion module) that grasps the upper robot motion as a combination of several basic actions and regulates the motion of each robot part (hereinafter also referred to simply as a part) required for the basic motion. , Formed in units of drive data related to the driving of the actuator provided in the robot part, a middle operation routine that defines basic operation is formed by combining a plurality of the part operation modules, the combination of the middle operation routine High-order motion program that defines high-order robot motionIs the floorAs a layered programWriteIs described,
  Site action module for each required siteAnd site identification informationTo identify the part motion moduleActionSpecific informationAnd one or bothIs described by combining multipleIn the intermediate operation routine that defines the basic operation,A standard operation routine storage unit that stores a plurality of standard operation routines that define predetermined standard basic operations (hereinafter referred to as standard operations);
  A standard operation routine selection command for storing a plurality of intermediate operation routines and selecting at least a part of the intermediate operation routines from a plurality of standard operation routines and the selected standard An intermediate stored as a standard change type intermediate operation routine including an operation change command for instructing at least one of deletion and replacement of a specific part operation module and addition of a new part operation module. An operation routine storage unit;
  A high-order operation program storage unit that stores a high-order operation program defined by a combination of these middle-level operation commands using a middle-level operation command associated with each middle-level operation routine;
  Program reading means for reading the upper operation program stored in the upper operation program storage unit in units of intermediate operation commands;
  If the intermediate operation routine corresponding to the read intermediate operation command is a standard change type intermediate operation routine, the operation is changed in the same manner as the standard operation routine instructed by the standard operation routine selection command included therein. A program development means for developing the standard change type intermediate operation routine into a combination of part operation modules to be executed based on the change contents designated by the command;
  And an actuator operation control unit that controls driving of the actuator based on a combination of intermediate operation routines corresponding to each read intermediate operation command.
[0009]
  First, in this robot system, the intermediate operation routine is configured as a routine that defines the operation for each robot part, that is, a collection of part action modules. In addition, a standard operation routine that defines a predetermined standard operation is changed to a part operation module.And site identification informationBody movement moduleAction to identifySpecific informationAnd one or bothPrepare by combining multiple. Then, an appropriate standard operation routine is selected, and the intermediate operation routine is created by deleting or replacing a specific region operation module and / or adding a new region operation module. To do. The intermediate operation routine created in this way is called a standard change type intermediate operation routine, and the program description unit is a standard operation routine selection command for selecting a desired standard operation routine, and deletion of a part operation module. , An operation change command for instructing at least one of replacement, addition of a new part operation module.
[0010]
By adopting such a programming method, the following effects can be enjoyed. In other words, if you want to increase the types of intermediate motion programs, for example, select the standard motion routine that is closest to the basic motion you want to increase, and delete or replace the region motion module for each region you want to change the operation, or create a new region motion A new middle-level operation routine can be created simply by adding a module, and it is not necessary to create this routine retroactively to the unit of lower-level operation data. As a result, it is easy to intuitively understand the creation of new intermediate operation programs, so even ordinary users who do not have specialized knowledge and advanced skills in programming can easily handle them. And the range of programming can be expanded. In addition, since the middle-level operation routine is configured in units of operation modules for each part, it is desired to change only the operation of a specific part to another operation, or to prevent the part from being operated. It is possible to easily respond to a request such as adding a part action module by replacing, deleting, or adding a part action module.
[0011]
In the above robot system, the robot can be configured such that at least a part of the plurality of robot parts includes a skeleton having a plurality of skeleton units and actuators arranged between the skeleton units. In this case, at least a part of the plurality of part motion modules is a drive data creation device having the following requirements, that is,
A series of model images in which the motion of the model corresponding to the robot motion is recorded over time, and image display means for displaying a skeleton image;
Skeleton positioning means for aligning the skeleton image with the model image in the display means;
Created in units of frame-by-frame motion by a drive data creation device including data calculation means for calculating drive data based on displacements of the skeleton images respectively aligned with the model images that are aligned with each other on the time axis. The driving data can be a teaching operation routine part created by editing each part of the robot.
[0012]
According to this method, for example, a human model is actually performed on a human model, and this is recorded as a series of images in frame units. The skeleton image is positioned with respect to the model image at each specific time of the model operation that changes with time, and drive data is calculated based on the skeleton displacement between adjacent images. In other words, intuitive driving data can be generated by an image that directly teaches the movement of the model to the robot. In this way, it is possible to collectively obtain lower-order motion data for each part included in the middle-level motion, and if a middle-level motion command is given and saved in the storage unit, the middle-level motion routine is used as it is. Can be used. The operation for creating the drive data is centered on the operation of aligning the skeleton image with the model image on the screen of the image display means, so that the content is easy to understand. Since it is not necessary to set the drive amount one by one, a large amount of drive data necessary for creating the upper operation program can be obtained reasonably and simply.
[0013]
In this case, the region motion module can be easily created as the teaching motion routine portion by editing the lower motion data for each region. The following advantages are obtained by applying this method to the present invention. In other words, the motion teaching by the model can be configured such that if the type of basic motion changes, the model performs a new motion, video-shoots this, and creates data, but the motion of a specific part with a similar basic motion However, it is somewhat inefficient to repeat the shooting of the model operation and the data generation (that is, the generation of the middle-level operation routine) each time when only data slightly different is generated. So, if you have created data for some basic actions, when you change the action of a part with a specific basic action, find the appropriate part action module from the data of another basic action, and change this By substituting the module of the part of the basic operation (that is, this can be regarded as the standard operation), it is possible to easily obtain the basic operation data, that is, the intermediate operation routine.
[0014]
In the robot system, a part motion module storage means for storing a plurality of part motion modules, and a development memory in which a middle motion routine development memory area for deploying a standard change type middle motion routine to a part motion module is formed. Means. In this case, when the motion change command instructs the deletion of a specific part motion module, the program expansion means instructs the replacement while deleting the designated part motion module. If there is an instruction to add a new part action module while replacing the designated part action module with the designated part action module, add the part action module. The part action module constituting the designated standard action routine can be read from the part action module storage means and loaded into the intermediate action routine expansion memory area. In the above configuration, for example, only the necessary part action module is loaded into the middle-level action routine development memory area, so that the development process can be performed smoothly and quickly. Even when there are many cases, the robot control speed can be increased.
[0015]
In this case, the part action module storage means corresponds to a plurality of part action modules with part specifying information (for example, part name) for specifying the part and action specifying information (for example, module name) for specifying the action content. You can memorize it in the form you put it on. Further, the action change command may include part specifying information for specifying a part related to the action change and action specifying information for specifying a part action module that defines the action content after the change. As a result, it is possible to easily specify the part action module related to replacement, deletion, or addition to the standard action routine according to the kind of the part or the action content, and hence the standard change type intermediate action routine using the action change command can be programmed. It becomes easier.
[0016]
When the part specified by the part specifying information in the action change command is the same as one of the parts corresponding to each part action module in the standard action routine, the program development means Can be replaced with the part action module specified by the action specifying information. For example, in setting the basic operation, it is convenient to make it easy to grasp the operation so that two or more types of operations for the same part are not included in the basic operation. In this case, by using the processing method as described above, the replacement of the corresponding part action module is automatically performed in the standard action routine only by specifying the part type. Creation is even easier.
[0017]
In addition, the program development means may identify the part action specified by the action specifying information when the part specified by the part specifying information in the action change command is different from any of the parts corresponding to each part action module in the standard action routine. Modules may be added to the standard operating routine. On the other hand, when the part specified by the part specifying information in the action change command is the same as any part corresponding to each part action module in the standard action routine, the program development means The operation module may be deleted. In either case, in programming, it is possible to instruct addition or deletion of a part action module only by specifying a part type, so that it becomes easier to create a standard change type intermediate action routine.
[0018]
The standard operation routine may be distinguished from the intermediate operation routine stored in the intermediate operation routine storage unit on the file and stored in the dedicated standard operation routine storage unit. The file may be stored in the same intermediate operation routine storage unit without being distinguished from the intermediate operation routine on the file. In the latter case, the intermediate operation routine storage unit also serves as the standard operation routine storage unit. In either case, the standard operation routine can be used as the intermediate operation routine without being changed by the operation change command. If the standard operation routine and the intermediate operation routine are not distinguished on the file, the standard operation routine specification command that is paired with the operation change command is used to specify which intermediate operation routine is used as the standard operation routine. do it.
[0019]
  Next, some of the plurality of intermediate operation routines stored in the intermediate operation routine storage unit are combined with another plurality of intermediate operation routines, or,As a combination of one or more other intermediate motion routines and one or more site motion modules,In the intermediate operation routineCorresponding basic operationCorresponding to the part movement moduleBody movementAnd one or bothIt can be a composite type intermediate operation routine described by using an operation specifying command for specifying. In this case, when the intermediate operation routine corresponding to the read intermediate operation command is a composite intermediate operation routine, the program expansion means analyzes the content of the operation designation command included therein, The complex intermediate operation routine can be configured to be developed into a combination of part operation modules to be executed.
[0020]
  By using the composite type intermediate operation routine as described above, it is possible to easily specify a basic operation in a larger unit by combining several basic operations or by combining basic operations and part operations. Become. For example, a group of basic operations that are frequently usedWhenBody movementAnd one or bothTheDescribed using an action specification commandIf it is defined in advance as a composite-type intermediate operation routine, the upper operation program can be greatly simplified. Also in this case, the part action command for specifying the part action among the action specifying commands includes the part specifying information for specifying the part and the action specifying information for specifying the part action module that defines the action content. Can be included.
[0021]
  The above composite type intermediate operation routine is the intermediate operation routine to be combined.WhenBody movement moduleAnd one or bothPertaining toCorresponds to the intermediate operation routinebasic actionCorresponding to the part movement moduleBody movementAnd one or bothAre executed sequentially so as not to cause time-series overlap,It can be constructed as a superposition type intermediate operation routine. This is a basic operationWhenBody movementAnd one or bothThis is convenient when you want to perform the operations sequentially in the specified order.
On the other hand, a composite type intermediate operation routine is an intermediate operation routine to be combined.WhenBody movement moduleAnd one or bothPertaining toCorresponds to the intermediate operation routinebasic actionCorresponding to the part movement moduleBody movementAnd one or bothIs executed with at least partial overlap in time series,It can be constructed as a combination type intermediate operation routine. This is a basic operationWhenBody movementAnd one or bothThis is convenient when it is desired to perform the simultaneous operation, and a complicated linkage operation can be easily programmed.
[0022]
  Standard modified intermediate operation routineWhenCombined type intermediate operation routineAnd one or bothIn the corresponding medium operating routineToBasic operation based on orBased on part motion moduleAn operation condition defining command for defining the operation condition of the part motion can be included. In addition, an operation condition defining command for defining the operation condition of the part movement can be included in the normal middle movement routine including only the part movement module. In this case, the actuator operation control unit can control driving of the actuator related to the basic operation or the part operation in accordance with the operation condition defined by the operation condition defining command.
[0023]
That is, in the robot system disclosed in Japanese Patent Laid-Open No. 8-314524, special knowledge and skill are required for newly creating and changing the contents of the middle-level operation routine, and it is already difficult for general users to handle. As described above, setting of operation conditions such as timing is particularly troublesome, especially in the case of a composite operation in which different operations are linked. In this case, not only does the programming take time, but also the problem that it becomes difficult to realize the desired robot operation as expected because it becomes difficult to see the program and grasp the whole.
[0024]
Therefore, as described above, if the robot motion is grasped by the unit motion or basic motion unit, and the condition is defined for each part motion or basic motion by the motion condition defining command, the robot performs a complex motion. Even if it is used, program creation or modification is extremely easy. In addition, since the prospects and overall grasp of the program become easy, the desired robot operation can be realized as desired.
[0025]
For example, the operation condition defining command may include an operation start timing defining command that defines the operation start timing of the basic motion or the part motion. For example, when combining multiple part movements simultaneously, the start timing for each action is specified by the action start timing specification command, so that the action of a part is started later than the other part, or a certain action It is possible to easily perform complicated operation designation such as starting the operation of the specific part after the completion of the operation, or starting the operation of the specific parts at the same time.
[0026]
In this case, the operation start timing defining command can give the operation start timing based on an elapsed time from a predetermined time origin. In this case, for example, the operation timing can be easily defined by grasping the time by timer measurement or the like. On the other hand, using the motion of a certain part defined by the teaching motion routine part as a reference, the motion start timing defining command is operated based on either the start time, end time or specific frame position passing time of the part motion. If the start timing is given, it is convenient when it is desired to set the timing based on the operation of a specific part.
[0027]
It is to be noted that an operation start timing setting means for setting the operation start timing of the corresponding basic operation or part operation to a predetermined default start time when no operation start timing defining command is particularly given may be provided. it can. For example, in the above-described combination type intermediate operation routine or the like, when it is desired to start the operation of several parts at the same time at the default start time (for example, the start of program execution), by providing the above means, Since the intended operation is executed without specifying the timings for these parts, the program can be simplified.
[0028]
Next, when the teaching operation routine part is created by the drive data creation apparatus described above, for example, there may be a robot part where it is difficult or impossible to calculate the drive data from the skeleton image aligned with the model image. (For example, movement of wrists, fingers, eyes, mouth, etc., lighting of lamps, etc.). Then, in the standard change type intermediate operation routine and the composite type intermediate operation routine, the part operation module of the robot part (non-teaching part) in which the teaching operation routine part is not created by the drive data creation device due to the above factors Is included, the positioning instruction routine portion for the non-teaching portion corresponding to the portion motion module can be incorporated in the program. Further, it is possible to provide non-teaching part drive data generating means for generating drive data for the actuator of the corresponding non-teaching part based on the contents of the positioning command routine part.
[0029]
In the above configuration, when incorporating the operation of the non-teaching part where data cannot be created by the drive data creation device, the driving data of the actuator of the corresponding non-teaching part is displayed during the program execution based on the contents of the positioning command routine part. It will be automatically generated. This eliminates the need to prepare drive data for various non-teaching parts in advance and also makes it easy to incorporate the part movements of the non-teaching parts, so that the programming effort can be saved. In this case, the positioning command routine portion can include positioning information for designating at least one of the movement start position, movement end position, and movement speed of the corresponding non-teaching part. For example, when a non-teaching part moves only between two predetermined positions with respect to a specific part of the robot, such as rotation of the eyes, opening / closing of the mouth, and insertion / removal of the tongue, or only simple rotational movement In the case where it is not performed, the drive data can be generated without any problem by such simple positioning information.
[0030]
If the high-order motion program can be described in a mixed form of the middle-order motion command and the part motion command, finer programming in the part motion unit becomes possible. In this case, the program reading unit may recognize the part movement command as equivalent to the middle-order movement command and read the corresponding part movement module.
[0031]
The higher-level operation program includes an operation routine in which an operation command statement including a middle-level operation command is described in a predetermined array reflecting its execution order, at least a modified middle-level operation routine and a composite-type middle-level operation routine. A format including a definition routine that specifies any content can be adopted. By creating a modified intermediate operation routine or a composite intermediate operation routine in the upper operation program in the form of a definition routine, these types of intermediate operation routines can be created within the framework of the upper operation program. It becomes possible, and programming becomes simpler and easier to understand. In this case, the standard modification type intermediate operation routine or the composite type intermediate operation routine is expanded by the program expansion means in accordance with the contents of the definition routine prior to reading the part operation module to be included in the intermediate operation routine. To be done.
[0032]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
FIG. 1 shows an overall configuration of a robot system 200 according to an embodiment of the present invention, which includes a robot 201, a robot control unit 202, and a drive data creation device 1, which are connected via communication interfaces 203 and 152, respectively. The communication lines 150 are connected to each other.
[0033]
The robot control unit 202 includes a CPU 204, a RAM 205 and a ROM 206 connected thereto, a storage device 207 including a hard disk device, an input device 208 such as a keyboard, a display control unit 210, and the like. A display device 211 such as a CRT is connected to the display control unit 210, and a communication interface 203 is connected to the CPU 204.
[0034]
The storage device 207 functions as a standard operation routine storage unit, a middle operation routine storage unit, and a part operation module storage unit. The CPU 204 functions as a program reading unit, a program development unit, and a non-teaching part drive data generation unit. Further, the RAM 205 functions as a work area and development storage means for the CPU 204.
[0035]
The robot 201 is configured, for example, as a robot that replicates human movements, and includes a skeleton 19 in which skeleton units 20 to 30 are connected to each other by joint mechanisms 31 to 37, as shown in FIG. The skeleton is divided into, for example, the following robot parts (hereinafter referred to as parts A, B, C...).
-Head (20): provided with an eye 20a and a mouth 20c. As shown in FIG. 3, the opening 20c can be opened and closed by an actuator (not shown). Further, a tongue portion 20d is provided inside the mouth portion 20c so as to be able to enter and exit by an actuator (not shown). Further, as shown in FIG. 4, the eye 20a is provided so as to be rotationally driven left and right by an actuator (not shown). Further, a collar part 20e that covers or opens the eye part 20a is provided so as to be driven by an actuator (not shown). Further, a speaker 192 (speech output unit) shown in FIG. 1 is also built in, and a voice such as a voice synthesized by the speech synthesizer 191 can be output by a command from the CPU 204. Note that in this specification, the audio output unit is also regarded as one of the parts, and the sound output by that is also regarded as one of the operations.
-Torso: including shoulder 21, spine 22, and hip bone 23.
Left and right arm parts: each has a humerus 24, a humerus 25, and a hand part 29. In addition, each finger of the hand portion 29 can be independently driven to bend and stretch, and for example, various hand shapes such as “goo”, “choki”, “par” of janken can be made. .
-Left and right leg portions: each includes an upper limb bone 26, a lower limb bone 27, and a foot portion 30.
[0036]
As shown in FIG. 1, the robot 201 includes a calculation / drive control unit (calculation / drive control) corresponding to each of the above parts (in the drawing, simply indicated by A, B, C, etc.). Means) 212 is provided and is connected to the CPU 204 of the robot controller 202. The calculation / drive control unit 212 is connected to an actuator 213 included in each part. The types of actuators (pulse motor, servo motor, piston cylinder, etc.) and the number of shafts, the degree of freedom of shaft rotation, and the range of shaft rotation or piston slide provided in each joint mechanism 31 to 37 in FIG. Etc. are set individually for each skeleton unit.
[0037]
Next, as shown in FIG. 5, the storage device 207 of the robot control unit 202 (FIG. 1) includes a higher-order operation program storage unit 300, a middle-order operation routine storage unit 302, a site action module storage unit 304, and a middle-order operation. A command analysis program storage unit 306, a non-teaching part drive data generation program storage unit 308, and a system program storage unit 312 are formed, and each stores a corresponding program or routine (or data).
[0038]
The operation of each program is as follows.
(1) Higher-order operation program: A desired higher-order operation is described by selecting and arranging appropriate ones from intermediate operation commands prepared in advance. For example, if you want the robot 201 to perform a series of high-order actions such as "turn right and walk four steps, turn right and step one and a half steps, and pose karate chops" This is understood as a combination of several basic actions such as “right leg half step” and “left leg one step”. In the higher-order operation program, operation instruction statements 300a including intermediate operation commands that respectively define basic operations constituting the higher-order operation are arranged in a predetermined order reflecting the execution order, for example, the execution order. . In this embodiment, the intermediate operation command included in the operation command statement is described in a form including the definition name of the basic operation.
[0039]
(2) Intermediate operation routine: Basic as a combination of module names (motion specifying information) PM11, PM12,... Of the site motion program module (site motion module) that defines the motion of each robot site required for the corresponding basic motion. Stored in association with the action definition names 1, 2, 3,.
(3) Part motion module: As shown in FIG. 6, it is configured to include a group of actuator drive data included in parts A, B, C... Of the robot 201 in FIG. Information) 1, 2,... And module names (operation specifying information) PM11, PM12,. Each drive data includes displacement data for each time at both ends of the skeleton unit driven by each actuator, but may be angle data between the skeleton units. On the other hand, the drive data can be a drive amount of each actuator for each time.
[0040]
(4) Intermediate operation command analysis program: The upper operation program is read in units of intermediate operation commands, and corresponding intermediate operation routines are sequentially started.
(5) System program: Provides an operating environment for the upper operation program on the CPU 204 and an environment for rewriting or newly creating the upper operation program. Specifically, a program creation screen is opened on the display device 211 (FIG. 1), and a higher-level operation command is input using the input device 208 in a format (described later) as shown in FIG. A name is assigned and stored in the higher-order operation program storage unit 300 of the storage device 207. The stored upper operation program is displayed on the program creation screen, and the upper operation command is added, deleted, inserted, etc. based on the input from the input device 208, and the program is corrected / edited. On the other hand, the system program also performs a process of expanding a standard change type intermediate operation routine or a composite type intermediate operation routine, which will be described later, into a part operation module. These types of intermediate operation routines are stored in the upper operation program storage unit 300 in the form of a definition routine 300b and incorporated in the upper operation program. That is, a part of the storage unit 300 also functions as a middle-level operation routine storage unit.
(6) Non-teached part drive data generation program: will be described later.
[0041]
On the other hand, as shown in FIG. 7, the RAM 205 has an upper operation program storage unit 205a, a middle operation command analysis program storage unit 205b, a middle operation routine storage unit (I) 205c, and a middle operation routine storage unit (II). 205d and the like are formed, and corresponding programs and data read from the storage device 207 are stored. The storage unit 205c, 205d is loaded with each part operation module included in the intermediate operation routine related to execution (for the standard change type intermediate operation routine or the composite type intermediate operation routine, the intermediate operation routine). (It is loaded after being expanded in the form of a part action module in the development memory area 205g). Note that two (I) and (II) intermediate action routine storage sections (three or more may be provided) are provided. The reason for this is to reduce the delay in response based on reading data from the storage device 207 when the robot 201 moves to the next operation by reading and accumulating the intermediate operation routine to be executed next. It is.
[0042]
Further, as shown in FIG. 8, the calculation / drive control unit 212 includes a CPU 214, a RAM 215, a ROM 216, and the like, and a drive amount calculation program 216a is stored in the ROM 216. Then, the calculation / drive control unit 212 executes each of the actuators 213 connected to the CPU 214 based on the drive data DA1, DA2,... The driving amount of 1) is calculated in time series, and each actuator 213 is driven based on the calculation result. The calculation method will be described later.
[0043]
FIG. 9 is a block diagram illustrating a configuration example of the drive data creation device 1. The drive data creation device 1 includes a device control unit 5 including a CPU 2, a ROM 3, and a RAM 4 that constitute drive data calculation means, and includes an image capture control unit 6, a display control unit 7, an input device interface 8, and the entire device. A program storage device 9, a drive data storage device 10, and a moving image data storage device 11 storing a control program for controlling the control are connected. The input device interface 8 is connected with a mouse 12 and a keyboard 13 as a skeleton positioning means having a click button 12a (input unit). A CRT 14 as an image display means is connected to the display control unit 7. On the other hand, the image capture control unit 6 is connected to a video playback device (VTR) 15 and includes a VRAM 16 and a data transfer processor 17, and the image display data stored in the VRAM 16 is displayed via the bus 18. Direct transfer to the control unit 7 is possible.
[0044]
Next, some of the skeleton units forming the skeleton 19 of the robot 201 shown in FIG. 2 form a set, and the relative positional relationship between the skeleton units included in the set is predetermined. The restricted conditions are set. For example, taking a skeleton unit constituting both legs as an example, the lower limb bone 27 moves only in a plane P formed by a straight line along the upper limb bone 26 and a straight line perpendicular to the hip bone 23 as shown in FIG. Restriction conditions are set (in FIG. 10, the joint mechanisms 35 and 36 (FIG. 2) are not drawn). Therefore, if the upper end position of the upper limb bone 26 and the lower end position of the lower limb bone 27 are designated, the position of the coupling point between them (the portion corresponding to the knee) is automatically determined according to the constraint conditions.
[0045]
Next, the operation of the robot system 1 of this embodiment will be described in detail.
When the high-order operation program name is designated and started by the input device 208 or the like in FIG. 1, the middle-level operation command analysis program is started, and as shown in the flowchart of FIG. The intermediate operation command is read, and the corresponding intermediate operation routine is stored in the intermediate operation routine storage unit (I) 205c of the RAM 205 in M2. Next, a signal is issued to the stored intermediate operation routine to activate it (M3). During the execution of the intermediate operation routine, the next intermediate operation command is read by M4, and the corresponding intermediate operation routine is read by M5 in the intermediate operation routine storage section (in this case, the storage section ( II)). Further, if a middle-level process completion signal is transmitted from the middle-level operation routine (storage unit (I) side) that is being activated / executed in M6, the middle-level operation routine stored in the storage unit (II) 205d. An activation signal is transmitted to (M7). If the next intermediate operation command is present in M8, the process returns to M4, the next command is read and the corresponding intermediate operation routine is stored in an empty storage unit (in this case, the storage unit (I)), Thereafter, by repeating the same processing, the higher-order operation program is executed in units of intermediate operation commands. If the next middle operation command does not exist or is an end command, the process ends (M9).
[0046]
Next, as shown in the flowchart of FIG. 12, the middle operation routine side reads the drive data of the actuators at each part by receiving the activation signal from the higher operation program side (B1, B2). Then, drive data described as displacement data for each time of the actuator is transmitted to the calculation / drive control unit 212 of each part in chronological order (B3). Then, the calculation / drive control unit 212 side calculates the drive amount of each actuator based on the displacement data based on the drive amount calculation program 216a (FIG. 8), and drives these actuators based on the calculation result. .
[0047]
As an example of the driving amount calculation method, a method based on the following principle can be employed.
First, in the skeleton 19 shown in FIG. 2, for example, indexes are given to both end positions of each skeleton unit as shown in FIG. 13 (W1).
-Head 20: H, f1.
-Shoulder 21: A1, H and H, A2.
-Spine 22: G and H. Here, G is used as a reference position when the driving amount of the actuator is calculated from the displacement of each skeleton unit.
-Hip bone 23: L1 and L2. G is positioned at the midpoint of the line segment connecting L1 and L2.
The humerus 24 and the humerus 25: A1, Ae1, Ah1 and A2, Ae2, Ah2. Upper limb bone 26, lower limb bone 27: L1, Lk1, Lf1 and L2, Lk2, Lf2.
The displacement data is calculated as the displacement of both ends of each skeleton unit.
[0048]
For example, for the left leg in FIG. 13, as shown schematically in FIG. 14 (a), the position of the point G is unchanged, and the positions of L1 and Lk1 at a certain time T1 are at the next time T2. When moving to L1 ′ and Lk1 ′, the line segment GL1 and the line segment L1Lk1 are rotated, and the line segment GL1 is superimposed on the line segment GL1 ′ as shown in FIG. Then, by calculating the angle θ between the line segment L1Lk1 at time T1 and the line segment L1′Lk1 ′ at time T2 from the spatial coordinates of each point after the rotational movement, both skeletal units (that is, the upper arm portion 26). And the rotation angle of each axis of the actuator disposed between the lower leg portions 27). If the processing for obtaining the rotational movement of the skeleton unit and the rotation angle of the second skeleton unit is sequentially performed in the direction toward the end of the skeleton, the driving amount of the actuator included in each joint mechanism is sequentially calculated. It becomes. In the above description, the actuator is composed of a motor, and the first and second skeleton units perform only relative rotational motion by rotation of the motor shaft. In the case of an actuator, relative translational movement may be performed between the skeleton units due to expansion and contraction of the piston. In such a case, the translational movement distance is calculated in addition to the rotation angle of the second skeleton unit.
[0049]
When the driving amount of the actuator is calculated in this way and a series of driving of the actuator based on the driving data of the intermediate operation routine is completed, the lower-level processing completion signal is sent from the driving amount calculation program 216a to the intermediate operation routine side. Sent. The middle operation routine side receives this in B4 of FIG. 12, and transmits a middle processing completion signal to the upper operation program (B5). When the actuator drive amount itself is transmitted as drive data, the above calculation process on the calculation / drive control unit side is not necessary.
[0050]
FIG. 15 shows a specific execution example of the upper level operation of the robot 201 based on the above flow. That is, as shown in FIG. 16 and FIG. 17, the high-order operation of “walking 4 steps” is “right leg half step” (definition name “WALK2”), “left leg 1 step” (definition name “WALK3”). ), “One step on the right leg” (definition name “WALK4”), and “half step on the left leg” (definition name “WALK5”). It is assembled by using an operation command statement using a position operation command (including the corresponding definition name). Then, for example, the part movements constituting the basic action of the first “right leg half step” are “half stepping” and “front descending” with respect to each part of the right leg part and the left arm part, respectively. The drive data of the related actuator included in the operation module is transmitted to the calculation / drive control unit 212 in time series order (transmission control is performed by the above-described system program). The calculation / drive control unit 212 calculates the drive amount based on the transmitted drive data, drives the corresponding actuator, and proceeds to the execution of “the left leg 1 step” which is the content of the next middle operation command. .
[0051]
This will be described in more detail below with reference to specific program examples. FIG. 18 shows an example of a program for performing a high-order operation such as “turning to the right for 4 steps, turning around after giving thanks, taking a step and a half, and posing for karate chop”. As described above, the program includes an operation instruction routine and a definition routine.
[0052]
In this embodiment, the operation instruction routine is an arrangement of one or more operation instruction statements in the order of execution. In a certain operation instruction statement, a command indicating that it is a middle operation routine of a defined basic operation is "Motion" command,
motion <do: = “definition name”>
The intermediate operation command for instructing the execution of the intermediate operation routine indicated by the definition name is defined. Then, the operation command statements by such middle operation commands are arranged in the order of execution (note that each sentence is not given a line number, but the execution order may be specified by giving a line number) . Note that the definition name of the basic action that is defined in each intermediate action command is indicated in parentheses at the end of each sentence.
[0053]
Here, among the intermediate operation routines, the combination type intermediate operation routine or the standard change type intermediate operation routine adopts the definition name of the corresponding format, and in this embodiment, at the head of the definition name. Specific character information, for example, “@” is given to distinguish it from other types of intermediate operation routines. For such a middle-level operation routine with a definition name, a definition routine for defining the contents of the middle-level operation routine is written in the program (if not written, it is determined that an error has occurred). . The definition name of the basic action is identified in a predetermined display format (in this embodiment, the definition name is enclosed in quotations ("")) to identify that it is the definition name of the basic action. Yes.
[0054]
In this embodiment, the basic action (definition name “@KARATE”) of “performing karate chopping while taking out the right leg half step forward” is the basic action (definition name) of “right half leg before step”. "WALK2") is set as a standard change type intermediate operation routine with standard operation. FIG. 19 shows an example of the definition routine. First, at the top of the definition routine
"Joint motion to @KARATE"
Is a statement for specifying the type and definition name of the intermediate operation routine, and “jointmotion to” indicates that it is a standard modified intermediate operation routine (the same is true for the combined intermediate operation routine) ing. Then the second line
“Base <do: =“ WALK2 ”>”
Is a statement instructing to select a middle-level operation routine having the definition name “WALK2” as a standard operation routine.
[0055]
Then on the third line
item RIGHTTARM <do: = CHOP>
Is an action command statement for instructing a part action to cause the right arm of the robot to perform a karate chop. “Item OO” is part specifying information and has a meaning of “specify XXX as a part”. Then, the right arm part for performing the karate chop is designated as the motion part by “item RHITARM”. Further, “<do: = CHOP>” is action specifying information, which means “can perform a part action specified by a module name“ CHOP ””. In this embodiment, the module name of the part action is distinguished from the definition name of the intermediate action routine by not providing a quotation. Note that “END” in the last line indicates the end of the definition routine.
[0056]
Now, the flow of processing of the system program when executing a higher-level operation program including such a definition routine is as follows. First, the program of FIG. 18 is read from the storage unit 300 of the storage device 207 of FIG. 5 and loaded into the storage unit 205a of the RAM 205 of FIG. The program is read in units of lines (that is, intermediate operation commands), and if this is a normal intermediate operation command (without “@” added to the beginning of the definition name), the corresponding intermediate The unit operation routine is read from the middle operation routine storage unit 302 in FIG. Then, referring to the module name included therein, the corresponding part action module is read from the part action module storage unit 304 in FIG. 6 and loaded into the intermediate action routine storage unit (I) 205c of the RAM 205. In the loaded intermediate operation routine, the drive data of the actuator of each part operation module included therein is transmitted to the calculation / drive control unit 212 (FIG. 1) of the corresponding part to drive the actuator of each part. Basic operations are performed. During this execution process, similar processing is executed for the next program line, and the intermediate operation routine is loaded into the intermediate operation routine storage unit (II) 205d (FIG. 7).
[0057]
Here, if the intermediate operation command is one that specifies a standard modified intermediate operation routine (that is, one that has “@” added to the beginning of the definition name), the corresponding definition routine is Read and move to the following expansion process. First, “base <do: =“ WALK2 ”>” reads the intermediate operation routine corresponding to the definition name (in this case “WALK2”) as the standard operation routine by recognizing the “base” command, Is stored in the middle-level operation routine expansion memory area 205g of FIG. Next, in item RIIGHTTARM <do: = CHOP>, it is confirmed whether or not there is an operation of the same part in the standard operation routine by recognizing the part specifying information (item RHIGHTARM). If it exists, the part action module specified by the action specifying information (<do: = CHOP>) is replaced with the module of the corresponding part in the standard action routine stored in the development memory area 205g. In this case, “WALK2” is the “right leg half-walk” walking motion, and the motion of the right arm is included as the region motion, which is replaced with the right arm motion of the karate chop.
[0058]
Although not shown in the above example of the definition routine, the following processing is performed by using the operation command statement shown in FIG. First, if “FAULT” (that is, <do: = FAULT>) is described as a specific definition name, a process of deleting a module of the corresponding part from the standard operation routine in the expanded memory area 205g is performed. (I.e., the operation of the part is prohibited). In addition, when an operation of a part that does not exist in the standard operation routine is designated, a corresponding part operation module is added to the standard operation routine. In the operation statement shown in the figure,
item RIGHTWLIST <do: = turn>
This shows the part movement of the right wrist (RIGHTWLIST).
[0059]
In addition, in an operation command statement for specifying replacement or addition of a part motion, it is possible to specify an action using a middle-level operation routine in addition to an operation designation by a module name of a part motion module. In this case, the intermediate operation routine is designated by the definition name, and the part is designated by the part name. As a result, the module of the designated part of the intermediate operation routine is replaced or added to the standard operation routine in the development memory area 205g. In the operation statement shown in the figure,
item RIGHTTARM <do: = “WALK3”>
However, this indicates that only the swinging motion of the right arm of the basic motion “one step before the left leg” is incorporated.
[0060]
In this way, when the execution of all the operation statements in the definition routine is completed, the standard operation routine in which the module replacement, addition and deletion processes have been completed in the expanded memory area 205g, that is, the expanded standard change It is a form that stores the middle-level operation routine. If the expansion process such as module replacement is performed using only the module name, it is not necessary to read the module from the storage unit 304 in FIG. In this case, after the expansion process is completed, the module name in the expansion memory area 205g is referred to read the corresponding module from the storage unit 304 and store it in the intermediate operation routine storage unit 205c or 205d. .
[0061]
By the way, in the high-order operation shown by the program in FIG. 18, the user walks 4 steps after turning to the right. The routine portion that walks 4 steps is integrated as a superposition type intermediate operation routine described below. It is also possible. An example thereof is shown in FIG. The difference between this program and the program of FIG. 18 is that an operation command statement group of 2 to 5 lines corresponding to the portion describing the “walk four steps” operation of FIG.
motion <do: = ”@@ ×××× 1”>
And a definition routine corresponding to the definition name “@@ xxxx × 1” is added. In other words, the action of “walking four steps” is assembled as a superposition-type intermediate action routine (definition name “@@ xxx × 1”) in which four walking actions that do not overlap in time series are superimposed. ing. In this embodiment, specific character information such as “@@” is added to the head of the definition name to distinguish the superposition type routine from other types of intermediate operation routines.
[0062]
FIG. 22 shows an example of the definition routine. First, at the top of the definition routine
“Pileup motion to @@ ×××× 1”
Is a sentence for specifying the type and definition name of the middle-level operation routine, and “pileup motion to” indicates that it is a superposition type middle-level operation routine. Thereafter, the instruction statements of the basic operations to be superimposed are arranged in the order of execution, and “end” is added to the last line to close the definition routine. In this embodiment, a command for repeatedly executing a specific basic operation sequence is prepared. In this embodiment, “repeat while ○”... “End” corresponds to this, and means that an operation sequence sandwiched between them is repeated “O” times. In FIG. 22, the program describes the contents of walking for four consecutive steps by repeating the operation of alternately performing “one step on the left leg” and “one step on the right leg” twice.
[0063]
Next, a description will be given of a program example of the combination-type intermediate operation routine and the flow of the processing. The combination type intermediate operation routine is executed in a state in which the basic operation and / or the region operation related to the intermediate operation routine and / or the region operation module to be combined with each other occurs at least partially in time series. High-order middle movement. An example will be described with reference to FIG. Here, the robot junken operation is taken as an example.
[0064]
For example, consider the action of putting out a par while uttering "Jan Kempon". This can be considered by breaking it down into the following part movements. First, as shown in (1), with the right hand in the “goo” state, the right arm is raised, and “Jean” is pronounced during the raising. In addition, an operation of opening and closing the mouth for a short time (hereinafter referred to as a mouth-to-mouth operation) is performed once according to the pronunciation. Next, in (2), the right arm raised up is stopped and pronounced “ken”. In (3), while swinging down the right arm, the right hand keeps the state of “goo” halfway, and in (4), while the right hand is in the “par” state and pronounced “pon”, Complete the lowering. In this example, in (5), after the arm swing is completed, an operation of the robot opening its mouth and sticking out its tongue is added.
[0065]
In the above operation, the right arm, the right hand, the mouth, the tongue, and the voice are in a form of performing linked operations at appropriate timing. An example of the operation timing is shown in FIG. The arrow in the figure represents the operation duration. In this example, the right arm swings up, stops, and swings down in one second each, with the mouth closed and the right hand goo by default. In addition, the swinging motion of the right arm is incorporated in basic motions that include part motions such as the back and forth movement of the hips, the vertical movement of the shoulders, and the movement of the head in order to show the gesture of an exaggerated robot. The teaching operation is, for example, 10 frames (frame feed speed: 0.1 second / frame) created by the creating device. The definition name of the intermediate operation routine is “RLIFUPUP”. On the other hand, the swing-down of the right arm is also incorporated in the basic operation, and the definition name of the intermediate operation routine is “RSHAKEDN”. Then, “Jan” is uttered in the middle of the right arm swing cycle, and “Ken” is uttered in the middle of the right arm stationary cycle. When the right arm is swung down, the right hand moves to “Par” from the seventh frame. At the same time, utter “Pong”. Then, as soon as the swinging of the right arm is completed, the tongue is pushed out.
[0066]
FIG. 25 is an example of a definition routine of a combination-type intermediate operation routine that defines the operation as described above. First, at the top of the definition routine is “join motion to @JANKEN”, which is the same as the standard change type intermediate operation routine. Subsequent (a) to (l) are operation command statement groups for designating a part operation or basic operation to be combined, and command each operation (a) to (l) in the timing chart of FIG. Is. Among these, (a) to (e) are in the operation process of (1) in FIG. 23, (f) and (g) are in the operation process of (2), (h) is in the operation process of (3), (I) to (k) correspond to the operation process 4, and (l) corresponds to the operation process (5).
[0067]
In the combination type intermediate operation routine, for example, the execution start time of the intermediate operation routine is set as the time origin, and unless the execution start timing is specified by a command described later, the time origin is set as the default start time, Each part operation or the incorporated basic operation starts simultaneously (time measurement is performed by the timer 190 in FIG. 1). That is, in (a) to (c), since the start timing is not specified, the right arm swinging motion ((a)), the right hand “goo” motion ((b)), and mouth At the same time, the closing operation of is started. Note that “RIGHTFINGER” is the right hand (finger), “MOUTH” is part designation information representing each part of the mouth, <do: = 31> is finger bending for making “Goo”, <do: = “close>” is operation designation information for designating each mouth closing.
[0068]
Next, (d) is an operation command statement that instructs the utterance of “Jean”. In this embodiment, the name of the part corresponding to the voice, that is, “VOICE” is specified, followed by <do: = ”◇◇◇◇”> ◇◇◇◇, and the utterance content directly into characters (or character codes). The content of the utterance is specified by writing. The following <from: = XXX> is one of the operation condition defining commands, and is an operation start timing defining command for designating the operation start timing. <From: = timer ΔΔ> means “start operation after ΔΔ times the timer measurement unit (0.1 second in this embodiment) from the time origin”. That is, (d) the whole meaning is “speak“ Jan ”after 0.5 seconds from the time origin (that is, from the start of swinging of the right arm)”.
[0069]
In (e), the mouth is selected as a part, and the action of the mouth is specified by <do: = parrot>. Since the operation start timing is <from: = timer 5>, it is the same as the utterance timing of “Jan”. Furthermore, <til: (condition name)> is a command that defines the condition for ending the operation. For example, <til: = repeat Δ> means that the operation is ended if the part operation is repeated Δ times. For example, by <til: = repeat 1>, the mouth pack is performed only once. If <til: = repeat Δ> is omitted, a default number of repetitions (for example, 1 time) may be automatically specified. In this way, the operations (a) to (e) in the timing chart of FIG. 24 are executed in combination with the operation command statements (a) to (e), and the operation (1) of FIG. 23 is realized. I understand.
[0070]
Next, the operation when the arm is lowered will be described. First, the swing-down of the right arm is started after 2 seconds from the time origin, and the start timing is given by <from: = timer 20> in the corresponding operation command statement of (h). As shown in FIG. 24, the time from the start to the end of arm swing is 1 second in terms of time, and 10 frames in terms of the frame feed number. Then, in the seventh frame (2.7 seconds in terms of time from the time origin), the right-hand “goo” operation, “goo” utterance operation, and mouth-packing operation start simultaneously.
[0071]
Corresponding to these are the three operation command statements (i) to (k) in FIG. Here, the operation start timing is defined by the frame advance number of the right arm operation. The format of <from: = item (part name) [△]> of the action start timing specification command written in each action command statement is “△ frame of the part action specified by item (part name)”. To start the operation ". Therefore, the start time of each operation is set at the seventh frame from the start of swinging down of the right arm by <from: = item RIGHTTARM [7]>.
[0072]
The last is the action of sticking out the tongue, but the corresponding action command sentence in FIG. 25 is (l).
The drive data as described above can be created by the drive data creation device 1. item TONGUS designates the tongue as a part name, and <do: = out> designates an “out” operation. Then, the operation start timing defining command <from: = item RIHTTARM [back]> specifies the part movement of the right arm as a reference part for timing setting, similar to the above-described <from: = item RIHTTARM [7]>. However, [back] means “start the operation when the operation of the part (right arm) is completed”. Therefore, when the lowering of the right arm is completed, the robot performs an operation of sticking out the tongue.
[0073]
The main part of the robot drive data as described above is taught and created by the drive data creation device 1 of FIG. 9, and each part motion module is also created as a teaching motion routine part based thereon. Hereinafter, the operation flow of the drive data creation device 1 will be described with reference to flowcharts. FIG. 26 shows a rough flow of the entire process. First, in the input process of S1100, a skeleton image is superimposed on the model image to generate drive data (in other words, the operation of the robot 201). Teach). This process is performed in units of basic operations. Here, prior to the input, the basic operation is performed on the human model, and the model image 38 (FIGS. 16 and 17) is shot with a video camera at predetermined frame intervals. Then, the moving image reproduced by the VTR 15 of FIG. 9 is captured as moving image data via the image capturing control unit 6 and stored in the moving image data storage device 11. Here, as shown in FIG. 35, the moving image data stored in the moving image data storage device 11 is arranged so that the intervals of the frames 80 are close when the model moves relatively complicatedly. On the contrary, when the motion is relatively monotonous, the frame of the moving image is appropriately thinned out when capturing the moving image data or editing the data after the capturing so that the interval between the frames 80 becomes coarse.
[0074]
FIG. 27 is a flowchart showing the details of the input process in S1100. First, after setting a part that does not require calculation of drive data (S1101), windows W1 and W2 as shown in FIG. 13 are displayed, respectively. (S1102, S1103). Among these, the model image 38 is displayed in one window W1, and the skeleton image 39 is displayed in the other window W2. The skeleton image 39 is displayed as a simplified diagram of the robot skeleton 19 shown in FIG.
[0075]
Returning to FIG. 27, in S1104, processing is performed to match the dimensions of the skeleton image 39 with the model image 38 (FIG. 13) captured with the model facing the video camera. Details of the processing are shown in FIGS. That is, in FIG. 13, the model image 38 in the face-to-face pose is displayed in the window W1 and the skeleton image 39 is displayed in the window W2 (C101 to 103), and the length of each skeleton unit is matched with the corresponding part of the model image (C104). ). Here, standard dimensions are set in advance for each skeleton unit of the skeleton image 39. 29. As shown in FIG. 29, first, the position of the reference point G is aligned (C201), and then the end points of each skeleton unit are sequentially aligned so as to gradually move away from the reference point G. Go out.
[0076]
Here, the input method is to match the end points of the skeleton image 39 to the model image 38. As shown in FIG. 13, each end point is displayed as a mark point on the window W2, and the window W1. A pointer 40 that moves on the screen as the mouse 12 (FIG. 9) moves is displayed above. The alignment of the mark points is performed in a preset order in the direction starting from the G point and gradually toward the end of the skeleton. Next, the alignment is performed on the skeleton image 39 displayed in the window W2. The end point that should be included is blinking to notify this. Then, the pointer 40 is moved to the position to be specified on the model image 38 on the window W1 and the click button of the mouse 12 is operated, so that the end points blinked on the window W2 are superimposed on the model image 38. The position is determined, and the length of each skeletal unit is sequentially calculated based on the position of the end point already determined (C202 to C209). Further, the skeletal unit having a predetermined length is sequentially drawn on the model image 38 of the window W1.
[0077]
Here, since the model image 38 in the facing pose is substantially bilaterally symmetric, each of the end points of the humerus 24 and the lower humerus 25 and the upper limb bone 26 and the lower limb bone 27 (FIG. 2) is either left or right If is positioned, processing is performed so that the other is automatically positioned. In addition, the dimension of the head 20 (distance between H and f1, FIG. 13) compares the standard dimension of the skeleton unit other than the head 20 with the calculated dimension, and the ratio of the dimensions and the standard dimension of the head 20 (C210). Alternatively, a process may be performed in which a skeleton image having a standard size set in advance in the window W1 is displayed together with the model image 38, and the end points of each skeleton unit of the skeleton image are aligned with the model image 38 on the window W1. In this case, the window W2 can be omitted. Next, returning to FIG. 28, the skeleton image 39 of the facing pose is redrawn in the window W1 in accordance with the calculated size of the skeleton unit (C105), and the process proceeds to S1105 in FIG. Here, for the skeleton image 39 corresponding to the facing pose, the driving position of each actuator is set in advance as reference data, and the setting content is stored in the reference data storage unit created in the program storage device 9. Stored.
[0078]
Subsequently, in S1105 to S1109, by specifying the frame number of the moving image for aligning the skeleton image 39, the model image data of the frame is captured, and the process proceeds to the skeleton image alignment process (skeleton image input). . 30 and 31 are flowcharts showing details of the contents of the alignment processing (S1109). That is, as indicated by C301 to C305 in FIG. 30, the position of each end point of the skeleton image 39 is aligned with the model image 38 in the direction starting from the point G and gradually moving away from the captured frame model image 38. . An example of the input is shown in FIG. 36, but the procedure is almost the same as in the case of the dimension adjustment process described above, while the alignment position in the window W1 of the end point blinking displayed on the window W2 is designated with the mouse 12. Then, alignment input for the model image 38 is performed. Also in this case, the skeleton image 39 is drawn over the model image 38 on the window W1 in order from the portion where the alignment is completed. Here, the left and right leg portions and arm portions are individually subjected to input processing, unlike the above-described dimension matching processing. Note that the alignment input is skipped for the teaching unnecessary portion set in S1101 (FIG. 27).
[0079]
FIG. 31 shows an example of the flow of the alignment process of the parts corresponding to both legs, and the alignment of the upper end point L1 (L2) of the upper limb bone 26 is performed for each of the right leg and the left leg. Thereafter, the lower end point Lf1 (Lf2) of the lower limb bone 27 is aligned (C401 to C403). Here, if L1 (L2) and Lf1 (Lf2) are specified according to the constraint condition shown in FIG. 10, the position of Lk1 (Lk2) corresponding to the knee is automatically determined, and no input is performed. In this way, the coordinates on the screen of each end point are calculated, and the three-dimensional coordinates of the end points in the actual space are calculated based on the screen coordinates and the standard body size data of each skeleton unit stored in advance. .
[0080]
Next, returning to FIG. 27 and proceeding to S1110, auxiliary input processing of those spatial positions is performed on the skeleton units or parts for which it is difficult or impossible to generate drive data by the alignment processing, and the mouse 12 or keyboard 13 is used. Do by using. In this input process, a window different from the alignment process is opened, an image of the corresponding skeleton unit or region is displayed on the window, and various processing commands (for example, skeleton unit) prepared in advance for position setting are displayed. Are input individually for each skeletal unit or region, while selecting and executing the translation, rotation, etc.) by input from the mouse 12 or the keyboard 13.
[0081]
This completes the input process for one frame, but when the process proceeds to the next frame, the frame number is updated, and the skeleton image 39 and model image 38 of the immediately preceding frame are redrawn (S1111 to S1113). , Return to S1107 and repeat the process. On the other hand, when the input operation to the frame is finished (S1114 to S1116), the windows W1 and W2 are closed, and the process proceeds to S1200 in FIG.
[0082]
Here, when the displacement data of each end point obtained as described above is used as drive data as it is, the process proceeds to S1300. However, when the displacement data is used to calculate the drive amount of each actuator, The process of S1200, that is, the process of calculating the drive amount of the actuator that drives the skeleton unit is inserted based on the spatial position coordinates of the end points of the skeleton unit for each frame obtained by the above input. That is, as shown in FIG. 32, the number of two adjacent frames is designated, and the spatial position coordinates of the end points of each skeleton unit are read, and provided between the skeleton units based on the spatial position coordinates. The driving amount of the actuator is calculated (C501 to C503). The content of the calculation process is almost the same as the process of calculating the drive amount of each actuator by the drive amount calculation program 216a described above, and detailed description thereof is omitted. If the skeleton image of the first frame is not a facing pose, the driving position of each actuator relative to the first frame may be calculated based on the actuator reference position stored in advance.
[0083]
Next, the process proceeds to S1300 in FIG. 26, and the time on the real time axis of the robot operation is set for each frame for which input has been completed. Details of the processing are shown in the flowchart of FIG. That is, the time setting window is opened, the skeleton image data is read in the frame number order, and the time is input while the skeleton images are sequentially displayed in the window (C601 to C605). In C6051, the drive speed of each actuator is calculated from the time interval with the immediately preceding frame, and in C606, it is determined whether or not all actuators can be driven at that time interval. If it can be completed, the input time and actuator drive speed are stored in C607, the frame number is incremented in C608, the process returns to C603, and the process is repeated. If the driving cannot be completed, the process returns to C605 and the time is input again. When the time input process ends, the window is closed in C612 and the process proceeds to S1400 in FIG.
[0084]
In S1400, the finally obtained drive data is stored / saved in the drive data storage device 10. The processing flow is as shown in FIG. 34. First, a middle-level operation command name is input in C701. Then, the drive data is divided according to the part (C702), and a sub-file of lower-order motion data, that is, a part motion module is formed (C702). Then, these part motion modules are integrated with the inputted middle motion command name and stored in the storage device 10 as a middle motion routine (C703). Each part operation module can be exchanged or replaced between different middle operation routines.
[0085]
As described above, the part motion module of each part is taught and created by the drive data creation device 1, but the robot part that is difficult or impossible to calculate drive data from the skeleton image aligned with the model image, that is, There is a non-teaching site. Examples are the wrist, fingers, eyes, mouth, tongue, and the like. In this case, in the operation program, such a non-teaching part positioning instruction routine part can be incorporated as one part of a definition routine, for example. In this example,
set (part name) <setting factor: = setting condition value>
The positioning command routine part is described in the format.
[0086]
Specifically, by selecting the movement start position, movement end position, and movement speed of the corresponding non-teaching part as setting factors and entering numerical values or selecting from preset candidate values, the desired setting condition value Set. In response to this, based on the non-teaching part drive data generation program stored in the storage unit 308 of FIG. 5, the CPU 204 of FIG. For example, when the actuator is a servo motor or a stepping motor, the rotation start position and the rotation end position of the motor are calculated based on the values of the movement start position and the movement end position, and the motor rotation is received based on the movement speed value. Calculate the number. Hereinafter, some examples of the non-teaching part used in the robot of this embodiment, its operation type, the format of the positioning command routine part, and the like will be shown.
[0087]
Part name: right eye (left eye) (part designation information: RIGHTEYE (LEFTEYE)). Actuator: Driven to the left and right by a motor.
Format: RIGHTEYE <do: = execution command> <til: = conditional expression>
LEFTEYE <do: = execution command> <til: = conditional expression>
Figure 0003995348
Operation end condition phrase: When the execution command is goggles, it is possible to specify the number of eye reciprocations.
(Example: RIGHTEYE <do: = goggle> <til: = repeatΔ>)
Positioning command: set EYE <speed: = (speed designation information)> <right: = (right eye position coordinate)> <left: = (left eye position coordinate)> (A part name is common to the left and right eyes, for example. (It may be set separately for left and right)
Figure 0003995348
・ "Right eye" moves to the position set by positioning command "right"
・ "Left eye" moves to the position set by positioning command left
“Kyoro Kyoro” designates the number of round trips between coordinates set by right and left of the positioning command (<til: = repeat n>). When the number of round trips is not specified, only one round trip is possible. Then, the final eye position stops at the left set position.
First, move your eyes to the right.
[0088]
Site name: starboard (left side) (site designation information: RIGHTEYELID (LEFTEYELID)
Actuator: Driven up and down by a motor.
Format: RIGHTEYELID <do: = execution command> <til: = conditional expression>
LEFTEYELID <do: = execution command> <til: = conditional expression>
Figure 0003995348
Operation end condition phrase When the execution command is blink, the number of blinks can be specified. (Example: RIGHTEYELID <do: = blink> <til: = repeat n>)
Positioning command set EYELID <open: = (time setting information)>
(Common to both left and right side)
Figure 0003995348
[0089]
Part name: mouth (part designation information: MOUTH)
Actuator: Driven by a motor.
Format: MOUTH <do: = execution command> <til: = conditional expression>
Figure 0003995348
Operation end condition phrase When the execution command is parrot, the number of times can be specified. (Example: MOUTH <do: = parrot> <til: = repeat n>)
Positioning command set MOUTH <open: = (time setting information)> <close: = (time setting information)>
Figure 0003995348
[0090]
Part name: tongue (part specifying information: TONGUS)
Actuator: Driven in and out by a motor.
Format: TONGUS <do: = execution command> <til: = conditional expression>
Figure 0003995348
Operation end condition phrase When the execution command is “lick”, the number of operations can be specified. (Example: TONGUS <do: = lick> <til: = repeat n>)
Positioning command set TONGUS <out: = (time setting information)> <in: = (time setting information)>
Figure 0003995348
[0091]
Part name: hand (part specifying information: RIGHTFINGER (LEFTFINGER))
Actuator: Each finger is independently bent and stretched by a cylinder.
Figure 0003995348
Execution command Finger pattern instruction (By selecting any of 0 to 32, various finger bending states are set. For example, 0: par / 1: thumb song / 2: index finger song / 4: middle finger song / 8: ring finger (Song / 16: Pinkie / 31: Goo)
Positioning command None
[Brief description of the drawings]
FIG. 1 is a block diagram showing the overall configuration of a robot system according to the present invention.
FIG. 2 is a schematic diagram of a robot skeleton.
FIG. 3 is a diagram illustrating the operation of the mouth and tongue provided on the robot head.
FIG. 4 is an explanatory diagram of eye and eyelid movements.
FIG. 5 is an explanatory diagram showing the contents of a storage device of a robot control unit.
FIG. 6 is an explanatory diagram showing the contents of the part motion module storage unit.
FIG. 7 is an explanatory diagram showing the contents of a RAM of the robot control unit.
FIG. 8 is a block diagram showing a configuration of a calculation / drive control unit.
FIG. 9 is a block diagram showing a configuration example of a drive data creation device.
FIG. 10 is an explanatory diagram of a constraint condition for a leg skeleton.
FIG. 11 is a flowchart showing a flow of processing by a higher-level operation program.
FIG. 12 is a flowchart showing the flow of processing of a middle-level operation routine.
FIG. 13 is an explanatory diagram of a skeleton image size matching process for a directly facing model.
FIG. 14 is an explanatory diagram of a method for calculating the drive amount of an actuator.
FIG. 15 is a diagram for explaining a flow of robot operation in association with a program hierarchy;
FIG. 16 is an explanatory diagram showing an example of basic motion related to walking.
FIG. 17 is an explanatory diagram following FIG. 16;
FIG. 18 is an explanatory diagram showing a description example of a higher-level operation program.
FIG. 19 is an explanatory diagram showing an example of a definition routine of the standard change type intermediate operation routine.
FIG. 20 is an explanatory diagram showing a description example of an operation command statement when deleting or adding a part operation module.
FIG. 21 is an explanatory diagram showing a description example of a higher-level operation program using a superposition type intermediate operation routine.
FIG. 22 is an explanatory diagram showing a description example of a definition routine of the superposition type intermediate operation routine.
FIG. 23 is an explanatory diagram showing a robot operation example suitable for application of the combination type middle operation routine.
24 is a diagram showing an example of a timing chart of the operation of FIG.
FIG. 25 is an explanatory diagram showing a description example of a definition routine of a combination-type intermediate operation routine used for it.
FIG. 26 is a flowchart showing the overall processing flow of the drive data creation device.
FIG. 27 is a flowchart of the input process.
FIG. 28 is a flowchart showing a flow of processing for determining a skeleton unit length in the input processing.
FIG. 29 is a flowchart showing the flow of processing for matching the length of each skeleton unit to the corresponding part of the model image.
FIG. 30 is a flowchart showing the end point alignment processing flow of each skeleton unit.
FIG. 31 is a flowchart showing the flow of processing for calculating the coordinates of the end points of a skeleton.
FIG. 32 is a flowchart showing the flow of driving data calculation in the same manner.
FIG. 33 is a flowchart showing the flow of time input processing in the same manner.
FIG. 34 is a flowchart showing the flow of drive data storage processing.
FIG. 35 is a schematic diagram illustrating an example of an arrangement of frames on a time axis.
FIG. 36 is an explanatory diagram of a positioning process for a model image of a skeleton image.
[Explanation of symbols]
1 Drive data creation device
5 Device controller (drive data calculation means)
200 Robot system
201 Robot
202 Robot controller
204 CPU (program reading means, program expanding means, non-teaching part drive data generating means)
205 RAM
205a Host operation program storage unit
205b Middle operation command analysis program storage unit
205c Middle operation routine storage section (I)
205d Middle operation routine storage section (II)
205g Intermediate operation routine expansion memory area
207 storage device
212 Calculation / drive control unit
213 Actuator
300 Host operation program storage unit
302 Middle operation routine storage unit
304 Site action module storage unit
306 Middle operation command analysis program storage unit

Claims (20)

上位のロボット動作をいくつかの基本動作の組み合わせとして把握し、前記基本動作に必要な各ロボット部位(以下、単に部位ともいう)の動作を規定する部位動作プログラムモジュール(以下、部位動作モジュールという)が、そのロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として形成され、その部位動作モジュールを複数組み合わせることにより前記基本動作を規定する中位動作ルーチンが形成され、その中位動作ルーチンの組み合わせにより前記上位のロボット動作を規定する上位動作プログラムが階層型プログラムとして記述されており、
必要な部位毎の部位動作モジュールの部位特定情報と部位動作モジュールを特定するための動作特定情報との双方又は一方を複数組み合わせることにより記述された、基本動作を規定する前記中位動作ルーチンの中で予め定められた標準的な基本動作(以下、標準動作という)を規定する標準動作ルーチンを複数記憶した標準動作ルーチン記憶部と、
複数の中位動作ルーチンを記憶するとともに、それら中位動作ルーチンの少なくとも一部のものを、前記複数の標準動作ルーチンのうちの所定のものを選択する標準動作ルーチン選択コマンドと、その選択された標準動作ルーチンに対し、特定の部位動作モジュールの削除、入替え、及び新たな部位動作モジュールの追加の少なくともいずれかを指示する動作変更コマンドとを含む標準変更型中位動作ルーチンとして記憶している中位動作ルーチン記憶部と、
各中位動作ルーチンと対応付けられた中位動作コマンドを用い、これら中位動作コマンドの組み合わせにより規定される上位動作プログラムを記憶する上位動作プログラム記憶部と、
その上位動作プログラム記憶部に記憶された前記上位動作プログラムを、前記中位動作コマンドの単位で読み出すプログラム読出手段と、
その読み出された中位動作コマンドに対応する中位動作ルーチンが前記標準変更型中位動作ルーチンであった場合には、それに含まれる標準動作ルーチン選択コマンドが指示する標準動作ルーチンと、同じく動作変更コマンドが指示する変更内容とに基づき、当該標準変更型中位動作ルーチンを実行すべき部位動作モジュールの組み合わせの形に展開するプログラム展開手段と、
読み出された各中位動作コマンドに対応する中位動作ルーチンの組み合わせに基づいて、前記アクチュエータの駆動を制御するアクチュエータ動作制御部とを含むことを特徴とするロボットシステム。
A part action program module (hereinafter referred to as a part action module) that grasps the upper robot action as a combination of several basic actions and defines the action of each robot part (hereinafter also referred to simply as part) necessary for the basic action. but the drive data related to the driving of the actuators provided in the robot portion is formed as a unit, median operation routine is formed to define the basic operation by combining a plurality of the site operation module, its middle position operation routine upper operating program by a combination of defining the robot operation of the upper are describe as a tiered program,
It is written by combining a plurality of both or one of the behavior specification information for specifying a region identification information and region operating modules of the site operation modules for each site of need in the middle operation routine for defining the basic operation A standard operation routine storage unit that stores a plurality of standard operation routines that prescribe standard basic operations (hereinafter referred to as standard operations) determined in advance,
A plurality of intermediate operation routines are stored, and at least some of the intermediate operation routines are selected as standard operation routine selection commands for selecting a predetermined one of the plurality of standard operation routines, and the selected The standard operation routine is stored as a standard change type intermediate operation routine including an operation change command for instructing at least one of deletion and replacement of a specific part operation module and addition of a new part operation module. Position operation routine storage unit,
A high-order operation program storage unit that stores a high-order operation program defined by a combination of these middle-level operation commands using a middle-level operation command associated with each middle-level operation routine;
Program reading means for reading out the upper operation program stored in the upper operation program storage unit in units of the intermediate operation command;
When the intermediate operation routine corresponding to the read intermediate operation command is the standard change type intermediate operation routine, the same operation as the standard operation routine instructed by the standard operation routine selection command included therein is performed. A program expansion means for expanding the standard change type intermediate operation routine into a combination of part operation modules to be executed based on the change contents instructed by the change command;
A robot system comprising: an actuator operation control unit that controls driving of the actuator based on a combination of intermediate operation routines corresponding to each read intermediate operation command.
前記複数のロボット部位のうちの少なくとも一部のものが、複数の骨格単位とそれら骨格単位の間に配置された前記アクチュエータとを有する骨格を備えるものとされるとともに、
前記複数の部位動作モジュールのうち、少なくとも一部のものは、下記の要件を備えた駆動データ作成装置、すなわち、
ロボット動作に対応するモデルの動作を経時的に記録した一連のモデル画像と、前記骨格の画像(以下、骨格画像という)を表示する画像表示手段と、
その表示手段において前記骨格画像を、前記モデル画像に対して位置合わせする骨格位置決め手段と、
時間軸上において互いに前後するモデル画像に対しそれぞれ位置合わせされた前記骨格画像の変位に基づいて、前記駆動データを算出するデータ演算手段とを含む駆動データ作成装置により、動作のコマ送り単位で作成された駆動データを、ロボットの部位別に編集することにより作成された教示動作ルーチン部分である請求項1記載のロボットシステム。
At least a part of the plurality of robot parts includes a skeleton having a plurality of skeleton units and the actuator arranged between the skeleton units,
At least a part of the plurality of part motion modules is a drive data creation device having the following requirements, that is,
A series of model images in which movements of models corresponding to robot movements are recorded over time, and image display means for displaying images of the skeletons (hereinafter referred to as skeleton images);
Skeleton positioning means for aligning the skeleton image with the model image in the display means;
Created in units of frame-by-frame movement by a drive data creation device including data calculation means for calculating the drive data based on displacements of the skeleton images respectively aligned with the model images that are aligned with each other on the time axis. The robot system according to claim 1, wherein the robot operation system is a teaching operation routine portion created by editing the drive data for each part of the robot.
複数の部位動作モジュールを記憶する部位動作モジュール記憶手段と、
前記標準変更型中位動作ルーチンを前記部位動作モジュールに展開するための中位動作ルーチン展開メモリ領域が形成された展開記憶手段とを備え、
前記プログラム展開手段は、前記動作変更コマンドが、特定の部位動作モジュールの削除を指示するものであった場合には、その指示された部位動作モジュールを削除しつつ、また入替えを指示するものであった場合にはその指示された部位動作モジュールを指定された部位動作モジュールと入れ替えつつ、さらに新たな部位動作モジュールの追加を指示するものであった場合には、その部位動作モジュールを追加しつつ、指定された前記標準動作ルーチンを構成する部位動作モジュールを前記部位動作モジュール記憶手段から読み出して、前記中位動作ルーチン展開メモリ領域にロードするものである請求項1又は2に記載のロボットシステム。
Site action module storage means for storing a plurality of site action modules;
An expansion storage means in which a medium operation routine expansion memory area for expanding the standard change type intermediate operation routine to the part operation module is formed;
When the action change command is for instructing deletion of a specific part action module, the program development means is for instructing replacement while deleting the instructed part action module. In the case of instructing the addition of a new part action module while replacing the designated part action module with the designated part action module, adding the part action module, 3. The robot system according to claim 1, wherein a part motion module constituting the designated standard motion routine is read from the part motion module storage unit and loaded into the intermediate motion routine expansion memory area. 4.
前記部位動作モジュール記憶手段には、前記複数の部位動作モジュールが、部位を特定するための部位特定情報及び動作内容を特定するための動作特定情報と対応付けた形で記憶されており、
前記動作変更コマンドは、動作変更に係る部位を特定するための部位特定情報と、変更後の動作内容を規定する部位動作モジュールを特定するための動作特定情報とを含むものである請求項3記載のロボットシステム。
In the part action module storage means, the plurality of part action modules are stored in association with part specifying information for specifying parts and action specifying information for specifying action contents,
4. The robot according to claim 3, wherein the motion change command includes part specifying information for specifying a part related to the action change and action specifying information for specifying a part action module that defines the action content after the change. system.
前記プログラム展開手段は、前記動作変更コマンド中の部位特定情報により特定される部位が、前記標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれかと同一であった場合に、その部位に係る部位動作モジュールを、前記動作特定情報により特定される部位動作モジュールと入れ替えるものである請求項4記載のロボットシステム。  The program expanding means relates to a part when the part specified by the part specifying information in the action change command is the same as any part corresponding to each part action module in the standard action routine. The robot system according to claim 4, wherein the part motion module is replaced with a part motion module specified by the action specifying information. 前記プログラム展開手段は、前記動作変更コマンド中の部位特定情報により特定される部位が、前記標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれかと同一であった場合に、その部位に係る部位動作モジュールを削除するものである請求項記載のロボットシステム。The program expanding means relates to a part when the part specified by the part specifying information in the action change command is the same as any part corresponding to each part action module in the standard action routine. 5. The robot system according to claim 4 , wherein the part motion module is deleted. 前記プログラム展開手段は、前記動作変更コマンド中の部位特定情報により特定される部位が、前記標準動作ルーチン中の各部位動作モジュールに対応する部位のいずれとも異なる場合に、前記動作特定情報が特定する部位動作モジュールを前記標準動作ルーチンに追加するものである請求項4ないし6のいずれかに記載のロボットシステム。The program development means specifies the action specifying information when a part specified by the part specifying information in the action change command is different from any of the parts corresponding to each part action module in the standard action routine. The robot system according to claim 4 , wherein a part motion module is added to the standard motion routine. 前記中位動作ルーチン記憶部に記憶されている複数の中位動作ルーチンのうち一部のものが、別の複数の中位動作ルーチン同士の組み合わせ、又は1ないし複数の別の中位動作ルーチンと1ないし複数の部位動作モジュールとの組み合わせとして、各々中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方を指定するための動作指定コマンドを用いて記述された複合型中位動作ルーチンとされており、
前記プログラム展開手段は、読み出された中位動作コマンドに対応する中位動作ルーチンが前記複合型中位動作ルーチンであった場合には、それに含まれる動作指定コマンドの内容を解析して、当該複合型中位動作ルーチンを実行すべき部位動作モジュールの組み合わせの形に展開するものである請求項1ないし7のいずれかに記載のロボットシステム。
The combination of each other, a plurality of other intermediate operation routine that of some of the plurality of intermediate operating routines stored in the median operation routine storage unit, or one or more other intermediate operation routine And one or a plurality of part action modules are described using an action designation command for designating either or both of the basic action corresponding to the middle action routine and the part action corresponding to the part action module. It is considered as a combined type intermediate operation routine,
When the intermediate operation routine corresponding to the read intermediate operation command is the composite intermediate operation routine, the program expansion means analyzes the content of the operation designation command included therein, and The robot system according to any one of claims 1 to 7, wherein the complex intermediate operation routine is expanded into a combination of part operation modules to be executed.
前記動作指定コマンドのうち部位動作を指定するための部位動作コマンドは、部位を特定するための部位特定情報と、動作内容を規定する部位動作モジュールを特定するための動作特定情報とを含むものである請求項8記載のロボットシステム。  The part action command for specifying the part action among the action designation commands includes part specifying information for specifying the part and action specifying information for specifying the part action module that defines the action content. Item 9. The robot system according to Item 8. 前記複合型中位動作ルーチンは、組み合わされるべき中位動作ルーチン部位動作モジュールとの双方又は一方に係る、中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方が、時系列的な重なりを生じないよう逐次的に実行される重ね合わせ型中位動作ルーチンとして構築される請求項8又は9に記載のロボットシステム。The composite median operation routine, according to one or both of the middle operating routines and site operation modules to be combined, both the site operation corresponding to the basic operation and site operation module corresponding to the median operation routine or Meanwhile There robotic system of claim 8 or 9, chronological overlap is performed sequentially so as not to cause, it is constructed as a superposition type median operation routine. 前記複合型中位動作ルーチンは、組み合わされるべき中位動作ルーチン部位動作モジュールとの双方又は一方に係る、中位動作ルーチンに対応する基本動作と部位動作モジュールに対応する部位動作との双方又は一方が、時系列的に少なくとも部分的な重なりを生じた状態で実行される組合わせ型中位動作ルーチンとして構築される請求項8又は9に記載のロボットシステム。The composite median operation routine, according to one or both of the middle operating routines and site operation modules to be combined, both the site operation corresponding to the basic operation and site operation module corresponding to the median operation routine or Meanwhile but chronologically robotic system of claim 8 or 9 is executed in the state caused at least partial overlap, it is constructed as a combinatorial-type intermediate operation routine. 前記標準変更型中位動作ルーチン前記複合型中位動作ルーチンとの双方又は一方においては、対応する中位動作ルーチンに基づく基本動作又は部位動作モジュールに基づく部位動作の動作条件を規定する動作条件規定コマンドが含まれており、
前記アクチュエータ動作制御部は、前記動作条件規定コマンドが規定する動作条件に従い、前記基本動作又は部位動作に係るアクチュエータの駆動を制御するものである請求項1ないし11のいずれかに記載のロボットシステム。
Operation wherein the one or both of the standard change type medium operating routine and the composite median operation routine, to define the corresponding operating conditions of the site operation based on the basic operation or site operating modules is based on median operation routine Contains conditional commands,
The robot system according to any one of claims 1 to 11, wherein the actuator operation control unit controls driving of the actuator related to the basic operation or the part operation in accordance with an operation condition defined by the operation condition defining command.
前記動作条件規定コマンドは、基本動作又は部位動作の動作開始タイミングを規定する動作開始タイミング規定コマンドを含む請求項12記載のロボットシステム。  The robot system according to claim 12, wherein the operation condition defining command includes an operation start timing defining command for defining an operation start timing of a basic motion or a part motion. 前記動作開始タイミング規定コマンドは、予め定められた時刻原点からの経過時間に基づいて前記動作開始タイミングを与えるものである請求項13記載のロボットシステム。  14. The robot system according to claim 13, wherein the operation start timing defining command gives the operation start timing based on an elapsed time from a predetermined time origin. 前記動作開始タイミング規定コマンドは、前記教示動作ルーチン部分により規定されるある部位の動作を基準として用いたときの、その部位動作の開始時刻、終了時刻又は特定のコマ位置通過時刻のいずれかに基づいて前記動作開始タイミングを与えるものである請求項12ないし14のいずれかに記載のロボットシステム。  The motion start timing defining command is based on either the start time, end time or specific frame position passing time of the part motion when the motion of a part defined by the teaching motion routine part is used as a reference. The robot system according to claim 12, wherein the operation start timing is given. 前記動作開始タイミング規定コマンドが特に与えられていないない場合に、対応する基本動作又は部位動作の動作開始タイミングを予め定められたデフォルト開始時刻に設定する動作開始タイミング設定手段が設けられている請求項13ないし15のいずれかに記載のロボットシステム。  The operation start timing setting means is provided for setting the operation start timing of the corresponding basic operation or part operation to a predetermined default start time when the operation start timing defining command is not particularly given. The robot system according to any one of 13 to 15. 前記標準変更型中位動作ルーチン及び前記複合型中位動作ルーチンには、前記駆動データ作成装置による教示動作ルーチン部分の作成がなされないロボット部位(以下、非教示部位と称する)の部位動作モジュールが含まれる場合に、その部位動作モジュールに対応する非教示部位の位置決め命令ルーチン部分が組み込まれており、
その位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データを生成する非教示部位駆動データ生成手段が設けられている請求項2ないし16のいずれかに記載のロボットシステム。
In the standard change type intermediate operation routine and the composite type intermediate operation routine, there is a part operation module of a robot part (hereinafter referred to as a non-teaching part) where a teaching operation routine part is not created by the drive data creation device. If included, the non-teaching part positioning command routine part corresponding to the part action module is incorporated,
The robot system according to any one of claims 2 to 16, further comprising non-teaching part drive data generating means for generating drive data of an actuator of a corresponding non-teaching part based on the contents of the positioning command routine part.
前記位置決め命令ルーチン部分は、対応する非教示部位の移動開始位置、移動終了位置及び移動速度の少なくともいずれかを指定する位置決め情報が含まれている請求項17記載のロボットシステム。  The robot system according to claim 17, wherein the positioning command routine part includes positioning information for designating at least one of a movement start position, a movement end position, and a movement speed of a corresponding non-teaching part. 前記上位動作プログラムは、前記中位動作コマンドと前記部位動作コマンドとを混在させた形で記述することが許されており、
前記プログラム読出手段は、その部位動作コマンドを前記中位動作コマンドと等価なものとして認識し、これに対応する部位動作モジュールを読み出すものとされる請求項1ないし18のいずれかに記載のロボットシステム。
The upper operation program is allowed to be described in a mixed form of the middle operation command and the part operation command,
The robot system according to any one of claims 1 to 18, wherein the program reading unit recognizes the part motion command as equivalent to the intermediate motion command and reads the part motion module corresponding thereto. .
前記上位動作プログラムは、前記中位動作コマンドを含む動作命令文が、その実行順を反映した所定の配列に従い記述された動作ルーチンと、前記変更型中位動作ルーチン及び前記複合型中位動作ルーチンの少なくともいずれかの内容を規定する定義ルーチンとを含み、
前記プログラム展開手段による前記変更型中位動作ルーチンあるいは前記複合型中位動作ルーチンの展開処理は、それら中位動作ルーチンに含まれるべき部位動作モジュールの読出しに先立って、前記定義ルーチンの内容に従い実行される請求項1ないし19のいずれかに記載のロボットシステム。
The high-order operation program includes an operation routine in which operation instruction statements including the intermediate operation command are described according to a predetermined arrangement reflecting the execution order, the modified intermediate operation routine, and the composite intermediate operation routine. A definition routine that defines at least one of the contents of
The expansion processing of the modified intermediate operation routine or the composite intermediate operation routine by the program expansion means is executed according to the contents of the definition routine prior to reading of the part operation module to be included in the intermediate operation routine. The robot system according to any one of claims 1 to 19, wherein:
JP25014198A 1998-09-03 1998-09-03 Robot system Expired - Fee Related JP3995348B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25014198A JP3995348B2 (en) 1998-09-03 1998-09-03 Robot system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25014198A JP3995348B2 (en) 1998-09-03 1998-09-03 Robot system

Publications (2)

Publication Number Publication Date
JP2000153479A JP2000153479A (en) 2000-06-06
JP3995348B2 true JP3995348B2 (en) 2007-10-24

Family

ID=17203438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25014198A Expired - Fee Related JP3995348B2 (en) 1998-09-03 1998-09-03 Robot system

Country Status (1)

Country Link
JP (1) JP3995348B2 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002283259A (en) * 2001-03-27 2002-10-03 Sony Corp Operation teaching device and operation teaching method for robot device and storage medium
KR20010088723A (en) * 2001-08-25 2001-09-28 장희남 Apparatus and Method for controlling ROBOT
JP2005031158A (en) * 2003-07-07 2005-02-03 Univ Waseda Method and device for modeling elastic body shape, and method and device for acoustical simulation using the same method for modeling
KR101277275B1 (en) * 2009-12-09 2013-06-20 한국전자통신연구원 Task implementation method based on behavior in robot system
JP6555665B2 (en) * 2016-07-28 2019-08-07 日本電信電話株式会社 Communication apparatus and method
CN116214528B (en) * 2023-05-10 2023-10-03 深圳市安信达存储技术有限公司 Storage control method and control system for humanoid robot

Also Published As

Publication number Publication date
JP2000153479A (en) 2000-06-06

Similar Documents

Publication Publication Date Title
US5990878A (en) Sign language editing apparatus
Kalra et al. Simulation of facial muscle actions based on rational free form deformations
JP4039595B2 (en) Robot system
KR20020056949A (en) Authoring system and authoring method, and storage medium
KR20030007713A (en) Action teaching apparatus and action teaching method for robot system, and storage medium
JP2008254074A (en) Motion editing device, and its program
JP6424050B2 (en) Articulated skeleton model processing apparatus and program
JP3995348B2 (en) Robot system
WO1997001803A1 (en) Installation and method for controlling a movable apparatus
Shapiro et al. Interactive motion correction and object manipulation
Morimoto et al. Surgeon design interface for patient-specific concentric tube robots
CN106527729A (en) Non-contact type input method and device
Nakaoka et al. Creating facial motions of Cybernetic Human HRP-4C
Riley et al. Coaching: An approach to efficiently and intuitively create humanoid robot behaviors
Lebourque et al. High level specification and control of communication gestures: the GESSYCA system
JP3668289B2 (en) Robot motion teaching system
Nunnari et al. Animating azee descriptions using off-the-shelf ik solvers
JP2000155606A (en) Operation control system
JP2002133444A (en) Image information generation device
JP2998663B2 (en) Animation creation equipment
Mao et al. A sketch-based gesture interface for rough 3D stick figure animation
Ma et al. CU Animate tools for enabling conversations with animated characters
JPH10302085A (en) Operation recording system for cg model
JPH02216588A (en) Interactive script animation generating method
JPH08314524A (en) Control method for robot and robot system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070309

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070724

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070731

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110810

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120810

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees