JP4039595B2 - Robot system - Google Patents
Robot system Download PDFInfo
- Publication number
- JP4039595B2 JP4039595B2 JP25014098A JP25014098A JP4039595B2 JP 4039595 B2 JP4039595 B2 JP 4039595B2 JP 25014098 A JP25014098 A JP 25014098A JP 25014098 A JP25014098 A JP 25014098A JP 4039595 B2 JP4039595 B2 JP 4039595B2
- Authority
- JP
- Japan
- Prior art keywords
- routine
- robot
- command
- program
- 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
Links
- 230000033001 locomotion Effects 0.000 claims description 128
- 230000009471 action Effects 0.000 claims description 63
- 238000004364 calculation method Methods 0.000 claims description 25
- 238000006073 displacement reaction Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 description 54
- 230000008569 process Effects 0.000 description 46
- 230000000875 corresponding effect Effects 0.000 description 43
- 238000012545 processing Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 27
- 210000002414 leg Anatomy 0.000 description 23
- 210000001508 eye Anatomy 0.000 description 20
- 210000000988 bone and bone Anatomy 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 210000003811 finger Anatomy 0.000 description 11
- 238000013500 data storage Methods 0.000 description 7
- 210000003128 head Anatomy 0.000 description 7
- 235000005156 Brassica carinata Nutrition 0.000 description 6
- 244000257790 Brassica carinata Species 0.000 description 6
- 210000002758 humerus Anatomy 0.000 description 6
- 210000003141 lower extremity Anatomy 0.000 description 6
- 210000001364 upper extremity Anatomy 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 241000287531 Psittacidae Species 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 210000000744 eyelid Anatomy 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 210000000707 wrist Anatomy 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000005452 bending Methods 0.000 description 2
- 230000004397 blinking Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 210000001981 hip bone Anatomy 0.000 description 2
- 210000003127 knee Anatomy 0.000 description 2
- 210000000214 mouth Anatomy 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 210000001624 hip Anatomy 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 210000002105 tongue Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Landscapes
- Manipulator (AREA)
- Control By Computers (AREA)
- Numerical Control (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はロボットシステムに関する。
【0002】
【従来の技術】
人間の動きを模写するロボット等、各種多関節ロボットに所定の動作を行わせる場合、その動作をプログラミングするために、従来はロボットを駆動する各アクチュエータの駆動量を、動作の時系列に従って個別に設定する方法がとられている。この場合、あるロボットの動作において、複数のロボット部位の動きが同時にあるいは連係して起こる場合、それらロボット部位毎にアクチュエータの駆動量を指定しなければならない。例えば、「歩く」という動作を例にとれば、これには両足の動きの他に、腕の振りや肩の上下といった動作が付随しており、それら各部の動作のプログラムが個別に組み立てられる。そして、「1歩前に進み出て礼をし、そのまま下がってもとの場所に帰る」というような、より複雑な上位動作をプログラミングする場合は、その上位動作を、「1歩前に進み出る」、「礼をする」、「1歩下がる」という下位動作に分解してプログラミング作業が行われる。
【0003】
上記従来の方法は、ロボット部位毎に多数のアクチュエータの駆動量やその作動順序をいちいち設定しなければならないので、プログラミング作業に時間がかかり、複雑な上位動作のプログラムを効率よく作成するのに適しているとは言い難い。また、上位動作の内容を変更したい場合には、各アクチュエータの駆動量レベルでプログラムないしデータを書き換えなければならず、その作業に時間がかかる。すなわち、ロボットの動作内容の変更がそれほど容易でないため、ロボットの各種動作への融通性に欠ける難点がある。
【0004】
そこで、これを解決するために、特開平8−314524号公報には、次のような階層型制御プログラムを用いる制御方式が提案されている。この制御プログラムにおいては、複数のロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として下位動作データを形成し、その下位動作データを複数統合してロボットの基本動作を規定する中位動作ルーチンを構築する。また、それら各中位動作ルーチンに中位動作コマンドを対応させ、その中位動作コマンドの組み合わせにより上位動作プログラムを規定する。そして、その上位動作プログラムを前記中位動作コマンドの単位で読み出しつつ、その読み出された各中位動作コマンドに対応する中位動作ルーチンの組み合わせに基づいて、各アクチュエータの駆動を制御する。
【0005】
【発明が解決しようとする課題】
ところで、上記方式においては、ロボットの基本動作を規定する中位動作ルーチンの種類を増やしたい場合、新たに追加したい基本動作の中位動作ルーチンを、その都度下位動作データの単位に遡って作成しなければならない。この中位動作ルーチンの作成作業は、直感的には把握しにくい下位動作データレベルでしか行うことができないから、専門的な知識とプログラミング作業への高度の熟練とを要し、一般のユーザには甚だ扱いにくい内容となる。とりわけ互いに異なる部位動作が連係した複合動作となる場合等において、タイミング等の動作条件設定が特に面倒である。この場合、プログラミングに時間がかかるばかりでなく、プログラムの見通しや全体把握も容易でないため、所期のロボット動作実現には一層の困難を伴う。従って、中位動作コマンドの使用により簡単なプログラミングが実現されている点についてはよいが、上記事情により、専門家以外の者は予め用意された中位動作コマンド(基本動作)の枠を一歩も超えることができず、融通性に乏しい欠点がある。
【0006】
本発明の課題は、ロボットに複数の部位動作が連係した複雑な動作を行わせる場合においてもプログラム作成あるいは変更が極めて簡単であり、ひいては所期のロボット動作を思い通りに実現することができるロボットシステムを提供することにある。
【0007】
【課題を解決するための手段及び作用・効果】
上記課題を解決するために本発明のロボットシステムは、
上位のロボット動作をいくつかの基本動作の組み合わせとして把握し、基本動作に必要な各ロボット部位(以下、単に部位ともいう)の動作を規定する部位動作プログラムモジュール(以下、部位動作モジュールという)が形成され、その部位動作モジュールを複数組み合わせることにより基本動作を規定する中位動作ルーチンが形成され、その中位動作ルーチンの組み合わせにより上位のロボット動作を規定する上位動作プログラムが階層型プログラムとして記述されており、
中位動作ルーチンは中位動作コマンドと対応付け、上位動作プログラムはその中位動作コマンドを用い、これら中位動作コマンドの組み合わせにより上位のロボット動作を規定し、
中位動作ルーチンを記憶する中位動作ルーチン記憶部と、
中位動作コマンドの組み合わせである上位動作プログラムを記憶する上位動作プログラム記憶部と、
その上位動作プログラム記憶部に記憶された上位動作プログラムを、中位動作コマンドの単位で読み出すプログラム読出手段と、を備え、
そのプログラム読出手段によって読み出された中位動作コマンドに対応する中位動作ルーチンの組み合わせに基づいて、
部位動作モジュールは、ロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として形成され、アクチュエータをその駆動データによって駆動を制御するためのアクチュエータ動作制御部と、対応するロボット部位の動作開始タイミングを規定する動作開始タイミング規定コマンドを含んだ動作条件規定コマンドとで構成され、アクチュエータ動作制御部は、その動作条件規定コマンドが規定する動作条件に従い、基本動作又は部位動作に係るアクチュエータの駆動を制御するとともに、
部位動作モジュールの動作条件規定コマンドに含まれる動作開始タイミング規定コマンドは、ロボット動作に対応するモデルの動作を経時的に記録した各コマの一連のモデル画像により規定される当該ロボット部位の動作を基準として用いたときの、当該ロボット部位の動作の開始時刻、終了時刻又は特定のコマ位置通過時刻のいずれかに基づいて動作開始タイミングを与えるものであることを特徴とする。
【0008】
このロボットシステムにおいては、中位動作ルーチンを、ロボット部位毎の動作を規定するルーチン、すなわち部位動作モジュールの寄せ集めとして構成し、さらに、動作条件規定コマンドにより各部位動作毎に条件規定を行うようにしている。この動作条件規定コマンドは、基本動作又は部位動作の動作開始タイミングを規定する動作開始タイミング規定コマンドを含むので、複数の部位動作を同時連係的に組み合わせる場合、動作開始タイミング規定コマンドにより動作毎の開始タイミングを規定することで、ある部位の動作を他の部位よりも遅れて開始させたり、あるいはある動作が終了した後に特定部位の動作を開始させたり、さらには特定部位同士の動作を同時に開始させたりといった複雑な動作指定を簡単に行うことが可能となる。
【0009】
その結果、中位動作ルーチンの作成作業が直感的に把握しやすくなるので、専門的な知識とプログラミング作業への高度の熟練とを有さない一般のユーザでも、簡単に扱うことができるようになり、またプログラミングの幅も拡げることができる。他方、中位動作ルーチンが部位別の動作モジュール単位で構成されているから、特定の部位の動作のみを別の動作に変更したい、あるいは該部位の動作を行わせないようにしたい、さらには新たな部位動作を追加したい、といった要望にも、部位動作モジュールの入替え、削除、追加により簡単に対応できる。いずれにせよ、ロボットに複数の部位動作が組み合わさった複雑な動作を行わせる場合でも、プログラム作成あるいは変更が極めて簡単となり、プログラムの見通しや全体把握も容易になるから、所期のロボット動作を思い通りに実現することができる。
【0010】
動作開始タイミング規定コマンドは、予め定められた時刻原点からの経過時間に基づいて動作開始タイミングを与えるものとすることができる。この場合は、例えばタイマー計測等による時間把握により動作タイミングを簡単に規定することができる。
【0011】
上記ロボットシステムにおいては、ロボットを、複数のロボット部位のうちの少なくとも一部のものが、複数の骨格単位とそれら骨格単位の間に配置されたアクチュエータとを有する骨格を備えるものとして構成できる。この場合、複数の部位動作モジュールのうち、少なくとも一部のものを、下記の要件を備えた駆動データ作成装置、すなわち、
ロボット動作に対応するモデルの動作を経時的に記録した一連のモデル画像と、骨格の画像を表示する画像表示手段と、
その表示手段において骨格画像を、モデル画像に対して位置合わせする骨格位置決め手段と、
時間軸上において互いに前後するモデル画像に対しそれぞれ位置合わせされた骨格画像の変位に基づいて、駆動データを算出するデータ演算手段とを含む駆動データ作成装置により、動作のコマ送り単位で作成された駆動データを、ロボットの部位別に編集することにより作成された教示動作ルーチン部分とすることができる。
【0012】
この方式によれば、例えば、ある基本動作を人間のモデルに実際に行わせてこれをコマ単位の一連の画像として記録し、それら各画像にロボットの骨格画像をそれぞれ位置合わせすることによって、経時的に変化するモデル動作の特定の時刻毎に、骨格画像のモデル画像に対する位置決めが行われ、隣り合う画像間での骨格の変位に基づいて駆動データが演算される。いわば、モデルの動きを直接ロボットに教示するイメージにより、直感的な駆動データ生成が可能となるのである。従って、その中位動作に含まれる各部位毎の下位動作データを一括して得ることができ、中位動作コマンドを付与して記憶部に保存すればそのまま中位動作ルーチンとしての使用が可能となる。そして、その駆動データを作成するための作業は、画像表示手段の画面上でモデル画像に骨格画像を位置合わせする操作が中心となるので内容が理解しやすく、また、ロボットの部位毎にアクチュエータの駆動量をいちいち設定する必要がなくなるので、上位動作プログラム作成に必要な多量の駆動データを合理的かつ簡便に得ることができる。
【0013】
この場合は、教示動作ルーチン部分により規定されるある部位の動作を基準として用い、動作開始タイミング規定コマンドを、その部位動作の開始時刻、終了時刻又は特定のコマ位置通過時刻のいずれかに基づいて動作開始タイミングを与えるものとすることができる。これは、特定部位の動作を基準にタイミングを設定したい場合に便利であり、特に部位間の連係動作タイミング設定が容易になるので、複雑な動作のプログラミングを一層簡単に行うことができる。
【0014】
次に、前記した駆動データ作成装置により教示動作ルーチン部分を作成する場合、例えば、モデル画像に位置合わせされた骨格画像からは駆動データの演算が困難あるいは不可能なロボット部位が存在する場合がある(例えば手首、指、眼、口等の動き、ランプの点灯など)。そして、中位動作ルーチンに、上記のような要因により、駆動データ作成装置による教示動作ルーチン部分の作成がなされないロボット部位(非教示部位)の部位動作モジュールが含まれる場合は、その部位動作モジュールに対応する非教示部位の位置決め命令ルーチン部分をプログラム中に組み込んでおくことができる。また、その位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データを生成する非教示部位駆動データ生成手段を設けることができる。
【0015】
上記構成では、駆動データ作成装置によるデータ作成の不能な非教示部位の動作を組み込む場合に、位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データが、プログラム実行中に自動生成されることとなる。これにより、各種非教示部位に対する駆動データを予め用意する必要がなくなり、また非教示部位の部位動作の組込みも非常に簡単になるので、プログラミングの手間を省くことができる。この場合、位置決め命令ルーチン部分は、対応する非教示部位の移動開始位置、移動終了位置及び移動速度の少なくともいずれかを指定する位置決め情報を含むものとすることができる。例えば、非教示部位が、眼の回転や口の開閉あるいは舌の出し入れのように、ロボットの特定部位に対して予め定められた2位置間でのみ移動するような場合、あるいは単純な回転移動しか行わない場合等においては、このような簡略な位置決め情報により駆動データの生成を問題なく行わせることができる。
【0016】
なお、動作開始タイミング規定コマンドが中位動作ルーチンを構成する部位動作モジュールの動作条件規定コマンドの中に与えられていない場合に、対応する基本動作又は部位動作の動作開始タイミングは中位動作ルーチンの実行開始時刻に設定することができる。例えば前記した組合わせ型中位動作ルーチン等において、デフォルト開始時刻(例えば中位動作ルーチンのプログラム実行開始)において、いくつかの部位の動作を同時にスタートさせたい場合、上記のような手段を設けておくことで、特にそれら部位へのタイミング指定を行わなくとも所期の動作が実行されるので、プログラムを簡略化することが可能となる。
【0017】
【発明の実施の形態】
以下、本発明の一実施例を図面を用いて説明する。
図1は、本発明の一実施例たるロボットシステム200の全体構成を示しており、ロボット201、ロボット制御部202、駆動データ作成装置1を備えており、これらがそれぞれ通信インターフェース203、152を介して通信回線150により互いに接続されている。
【0018】
ロボット制御部202は、CPU204とこれに接続されるRAM205、ROM206、ハードディスク装置等で構成される記憶装置207、キーボード等の入力装置208、表示制御部210等を備える。そして、表示制御部210にはCRT等の表示装置211が接続され、また、CPU204には通信インターフェース203が接続される。
【0019】
なお、記憶装置207は、標準動作ルーチン記憶部、中位動作ルーチン記憶部、、部位動作モジュール記憶手段として機能する。また、CPU204は、プログラム読出手段、プログラム展開手段、非教示部位駆動データ生成手段として機能する。さらに、RAM205はCPU204のワークエリア及び展開記憶手段として機能する。
【0020】
ロボット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を備える。
【0021】
そして、図1に示すようにロボット201には、上記各部位(図面では、A、B、C等で簡略に表記している)のそれぞれに対応して算出・駆動制御部(算出・駆動制御手段)212が設けられ、ロボット制御部202のCPU204にそれぞれ接続されている。そして、これら算出・駆動制御部212に対し、各部位に含まれるアクチュエータ213が接続されている。なお、図2の各関節機構31〜37に設けられるアクチュエータの種類(パルスモータ、サーボモータ、ピストンシリンダ等)と軸の本数、軸の回転の自由度、及び軸の回転ないしピストンのスライドの範囲等は各骨格単位毎に個別に設定されている。
【0022】
次に、図5に示すように、ロボット制御部202(図1)の記憶装置207には、上位動作プログラム記憶部300、中位動作ルーチン記憶部302、部位動作モジュール記憶部304、中位動作コマンド解析プログラム記憶部306、非教示部位駆動データ生成プログラム記憶部308、システムプログラム記憶部312が形成されており、それぞれ対応するプログラムないしルーチン(あるいはデータ)を記憶している。
【0023】
各プログラムの作用は以下の通りである。
(1)上位動作プログラム:予め用意された中位動作コマンドから適当なものを選んで配列することにより、所望の上位動作を記述する。例えばロボット201に「右を向いて4歩歩き、回れ右して1歩半踏み出し、空手チョップのポーズをとる」という一連の上位動作を行わせたい場合には、これを「右を向く」、「右脚部半歩」、「左脚部1歩」等、いくつかの基本動作の組み合わせとして把握する。そして、該上位動作プログラムでは、その上位動作を構成する基本動作をそれぞれ規定する中位動作コマンドを含んだ動作命令文300aが、その実行順を反映した所定の順序、例えばその実行順に配列される。本実施例では、動作命令文に含まれる中位動作コマンドは、基本動作の定義名を含んだ形で記述される。
【0024】
(2)中位動作ルーチン:対応する基本動作に必要な各ロボット部位の動作を規定する部位動作プログラムモジュール(部位動作モジュール)のモジュール名(動作特定情報)PM11,PM12‥‥の組み合わせとして、基本動作の定義名1,2,3,‥‥と対応付けた形で記憶されている。
(3)部位動作モジュール:図6に示すように、図1のロボット201の部位A、B、C・・・に含まれるアクチュエータの駆動データ群を含んで構成されており、部位名(部位特定情報)1,2,‥‥、及びモジュール名(動作特定情報)PM11,PM12‥‥と対応付けた形で記憶されている。なお、各駆動データは、各アクチュエータにより駆動される骨格単位の両端の各時間毎の変位データを含むものとされるが、骨格単位間の角度データとすることもできる。他方、駆動データは、各アクチュエータの各時間毎の駆動量とすることもできる。
【0025】
(4)中位動作コマンド解析プログラム:中位動作コマンドの単位で上位動作プログラムを読み出し、対応する中位動作ルーチンを順次起動させる。
(5)システムプログラム:CPU204上における上位動作プログラムの作動環境、及び上位動作プログラムの書換えないし新規作成のための環境を与える。具体的には、表示装置211(図1)にプログラム作成画面を開き、入力装置208を用いて上位動作コマンドを図18に示すような形式(後述)で入力し、その入力内容に上位動作プログラム名を付与して、記憶装置207の上位動作プログラム記憶部300に記憶させる。また、記憶された上位動作プログラムをプログラム作成画面に表示させ、入力装置208からの入力に基づいて上位動作コマンドの追加、削除、挿入等を行い、プログラムの修正・編集を実行する。他方、後述する標準変更型中位動作ルーチンあるいは複合型中位動作ルーチンの部位動作モジュールへの展開処理も、このシステムプログラムが行う。なお、これらタイプの中位動作ルーチンは定義ルーチン300bの形で、上位動作プログラム内に組み込まれた形で上位動作プログラム記憶部300内に記憶される。すなわち、該記憶部300の一部も、中位動作ルーチン記憶部として機能している。
(6)非教示部位駆動データ生成プログラム:後述する。
【0026】
一方、図7に示すように、RAM205には、上位動作プログラム格納部205a、中位動作コマンド解析プログラム格納部205b、中位動作ルーチン格納部(I)205c、中位動作ルーチン格納部(II)205d等が形成され、それぞれ記憶装置207から読み出された対応するプログラム、データ等を格納するようになっている。なお、格納部205c,205dには、実行に係る中位動作ルーチンに含まれる各部位動作モジュールがロードされる(標準変更型中位動作ルーチンあるいは複合型中位動作ルーチンについては、中位動作ルーチン展開メモリ領域205gにて部位動作モジュールの形に展開された後、ロードされる)。なお、中位動作ルーチン格納部が(I)と(II)の2つ(3つ以上でもよい)設けられているのは、次に実行する中位動作ルーチンを予め読み込んで蓄積しておくことにより、ロボット201が次の動作に移る際の、記憶装置207からのデータ読込みに基づく応答の遅れを低減するためである。
【0027】
また、算出・駆動制御部212は、図8に示すように、それぞれCPU214、RAM215、ROM216等を備え、ROM216には駆動量算出プログラム216aが格納されている。そして、算出・駆動制御部212は中位動作ルーチンの実行に伴い、ロボット制御部202側から受信した駆動データDA1、DA2、・・・等に基づいて、CPU214に接続された各アクチュエータ213(図1)の駆動量を時系列順に算出し、その算出結果に基づいて各アクチュエータ213を駆動する。その算出方法については後述する。
【0028】
図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に直接転送可能とされている。
【0029】
次に、図2に示すロボット201の骨格19を形成する骨格単位のうち、いくつかのものは組を形成し、その組に含まれる各骨格単位同士の相対的な位置関係には予め定められた拘束条件が設定される。例えば、両脚部を構成する骨格単位を例にとれば、図10に示すようにその下肢骨27は、上肢骨26に沿う直線と腰骨23に直角な直線とが作る平面P内のみを動くという拘束条件が設定されている(なお、図10においては、関節機構35及び36(図2)は描いていない)。従って、上肢骨26の上端位置と下肢骨27の下端位置とを指定すれば、両者の結合点(膝に相当する部分)の位置は、上記拘束条件に従って自動的に定まることとなる。
【0030】
次に、本実施例のロボットシステム1の作動について詳しく説明する。
図1の入力装置208等により上位動作プログラム名を指定してこれを起動させると、中位動作コマンド解析プログラムが起動し、図11のフローチャートに示すように、M1において上位動作プログラムの最初の中位動作コマンドが読み込まれ、M2で対応する中位動作ルーチンがRAM205の中位動作ルーチン格納部(I)205cに格納される。次に、その格納された中位動作ルーチンに対し信号を発してこれを起動させる(M3)。また、その中位動作ルーチンの実行中に、M4で次の中位動作コマンドを読み込み、M5で対応する中位動作ルーチンをRAM205の空いている中位動作ルーチン格納部(この場合、格納部(II))に格納する。さらに、M6において起動・実行中の中位動作ルーチン(格納部(I)側)から中位側処理完了信号が送信されてきていれば、格納部(II)205dに格納された中位動作ルーチンに起動信号を送信する(M7)。そして、M8において次の中位動作コマンドが存在すればM4へ返り、次のコマンドを読み込んで対応する中位動作ルーチンを空いている格納部(この場合、格納部(I))に格納し、以下同様の処理を繰り返すことにより、上位動作プログラムが中位動作コマンド単位で実行されてゆく。なお、次の中位動作コマンドが存在しないか、終了コマンドである場合には処理を終了する(M9)。
【0031】
次に、中位動作ルーチン側での処理であるが、図12のフローチャートに示すように、上位動作プログラム側から起動信号を受けることにより、各部位のアクチュエータの駆動データを読み込み(B1、B2)、アクチュエータの各時間毎の変位データとして記述された駆動データを、各部位の算出・駆動制御部212へ時系列順に送信する(B3)。そして、算出・駆動制御部212側では、駆動量算出プログラム216a(図8)に基づいて、その変位データに基づいて各アクチュエータの駆動量を算出し、その算出結果に基づいてそれらアクチュエータを駆動する。
【0032】
駆動量の算出方法としては、一例として、以下のような原理に基づく方法を採用することができる。
まず、図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。
そして、変位データは、各骨格単位の両端の変位として算出される。
【0033】
例えば図13の、左側の脚部に対しては、図14(a)に模式的に示すように、点Gの位置が不変で、ある時刻T1におけるL1、Lk1の位置が次の時刻T2におけるL1’、Lk1’に移った場合、線分GL1及び線分L1Lk1に回転移動を施し、(b)に示すように、線分GL1を線分GL1’に重ね合わせる。そして、回転移動後の各点の空間座標から、時刻T1の線分L1Lk1と、時刻T2の線分L1’Lk1’とのなす角度θを算出することにより、両骨格単位(すなわち、上腕部26及び下脚部27)の間に配置されたアクチュエータの各軸の回転角度を求めることができる。このような骨格単位の回転移動と第二骨格単位の回転角度を求める処理を、骨格の末端へ向かう方向に順次施してゆけば、各関節機構に含まれるアクチュエータの駆動量が順次算出されることとなる。なお、以上の説明では、アクチュエータはモータで構成されており、第一及び第二の骨格単位同士はそのモータ軸の回転により、相対的な回転運動のみを行うものとしたが、ピストンロッド等をアクチュエータとした場合は、そのピストンの伸縮により骨格単位間で相対的な並進運動が行われる場合もある。そのような場合は、第二骨格単位の回転角度の他、並進移動距離も算出するようにする。
【0034】
このようにしてアクチュエータの駆動量が算出され、その中位動作ルーチンの駆動データに基づくアクチュエータの一連の駆動が終了すると、駆動量算出プログラム216aからは下位側処理完了信号が中位動作ルーチン側へ送信される。中位動作ルーチン側では、図12のB4でこれを受け、中位側処理完了信号を上位動作プログラムへ送信する(B5)。なお、アクチュエータの駆動量そのものを駆動データとして送信する場合には、算出・駆動制御部側での上記算出処理は不要となる。
【0035】
図15は、上述の流れに基づくロボット201の上位動作の具体的な実行例を示している。すなわち、「4歩歩く」という上位動作は、図16及び図17に示すように、「右脚部半歩」(定義名「WALK2」)、「左脚部1歩」(定義名「WALK3」)、「右脚部1歩」(定義名「WALK4」)、「左脚部半歩」(定義名「WALK5」)の4つの基本動作を含み、その上位動作プログラムは、各基本動作の中位動作コマンド(それぞれ対応する上記定義名を含む)を用いた動作命令文を用いて組まれることとなる。そして、例えば最初の「右脚部半歩」の基本動作を構成する部位動作は、右脚部及び左腕部の各部位に対するそれぞれ「半歩踏出し」及び「前降り」であり、対応する部位動作モジュールに含まれる関連アクチュエータの駆動データを時系列順に算出・駆動制御部212へ送信する(送信制御は前述のシステムプログラムが行う)。算出・駆動制御部212では送信されてきた駆動データに基づいて駆動量を算出し、対応するアクチュエータを駆動して、次の中位動作コマンド内容である「左脚部1歩」の実行へ移る。
【0036】
以下、具体的なプログラム例を参照してさらに詳しく説明する。図18は「右を向いて4歩歩き、礼をした後、回れ右して1歩半踏み出し、空手チョップのポーズをとる」という上位動作を行わせるためのプログラム例である。プログラムは、前記した通り、動作命令ルーチンと定義ルーチンとから成り立っている。
【0037】
本実施例では、動作命令ルーチンは、1又は複数の動作命令文を実行順に配列したものであり、ある動作命令文において、それが定義済基本動作の中位動作ルーチンであることを示すコマンドは「motion」コマンドであり、
motion <do:=”定義名”>
により、該定義名で示された中位動作ルーチンの実行を命令する中位動作コマンドが規定される。そして、このような中位動作コマンドによる動作命令文が実行順に配列される(なお、各文には行番号を付与していないが、行番号を付与して実行順を指定してもよい)。なお、各中位動作コマンド内の定義名が、どのような基本動作の定義名であるかについて、各文の末尾に括弧書きにて示している。
【0038】
ここで、中位動作ルーチンのうち、組合わせ型中位動作ルーチンあるいは標準変更型中位動作ルーチンについては対応する形式の定義名を採用することにより、本実施例においては、定義名の先頭に特定の文字情報、例えば「@」を付与することにより、他の形式の中位動作ルーチンと区別するようにしている。そして、このような定義名の中位動作ルーチンについては、その中位動作ルーチンの内容を規定するための定義ルーチンがプログラム中に書き込まれる(書き込まれていなければエラーと判断するようにしておく)。なお、基本動作の定義名は、所定の表示形式(本実施例では、コーテーション(””)で定義名を囲む形式)にて、それが基本動作の定義名であることを識別するようにしている。
【0039】
本実施例では、「右脚部を半歩前に出しながら空手チョップする」という基本動作(定義名”@KARATE”)が、「右脚部半歩前」という単純歩行の基本動作(定義名”WALK2”)を標準動作とする標準変更型中位動作ルーチンとして組まれている。図19は、その定義ルーチンの一例を示している。まず、定義ルーチンの先頭にある
「joint motion to @KARATE」
は、中位動作ルーチンの種別と定義名を規定するための文であり、「jointmotion to」は標準変更型中位動作ルーチン(組合わせ型中位動作ルーチンの場合も同じ)であることを示している。次いで、2行目の
「base <do:=”WALK2”>」
は、”WALK2”の定義名を有する中位動作ルーチンを標準動作ルーチンとして選択することを命令する文である。
【0040】
次いで、3行目の
item RIGHTARM <do:=CHOP>
は、ロボットの右腕部に空手チョップを行わせる部位動作を指示するための動作命令文である。「item ○○○」は部位特定情報であり、「部位として○○○を指定せよ」との意味をもつ。そして、「item RIGHTARM」により、空手チョップを行う右腕部が動作部位として指定される。また、「<do:=CHOP>」は動作特定情報であり、「モジュール名「CHOP」で指定される部位動作を行え」との意味である。なお、部位動作のモジュール名は、本実施例では、コーテーションを付与しないことで、中位動作ルーチンの定義名と区別できるようにしている。なお、最終行の「END」は、定義ルーチンの終了を示す。
【0041】
さて、このような定義ルーチンを含んだ上位動作プログラムを実行するときのシステムプログラムの処理の流れは、以下の通りとなる。まず、図18のプログラムを図5の記憶装置207の記憶部300から読み出して、図7のRAM205の格納部205aにロードする。プログラムは、行(すなわち中位動作コマンド)の単位で読み出され、これが通常の中位動作コマンド(定義名の先頭に「@」が付与されていないもの)である場合には、対応する中位動作ルーチンを図5の中位動作ルーチン記憶部302から読み出す。そして、これに含まれるモジュール名を参照して、対応する部位動作モジュールを図6の部位動作モジュール記憶部304から読み出し、RAM205の中位動作ルーチン格納部(I)205cにロードする。ロードされた中位動作ルーチンは、これに含まれる各部位動作モジュールのアクチュエータの駆動データが、対応する部位の算出・駆動制御部212(図1)へ送信され、各部位のアクチュエータを駆動させて基本動作が実行される。なお、この実行処理間に、同様の処理が次のプログラム行について実行され、その中位動作ルーチンが中位動作ルーチン格納部(II)205d(図7)にロードされる。
【0042】
ここで、中位動作コマンドが、標準変更型中位動作ルーチンを指定するもの(すなわち、定義名の先頭に「@」が付与されているもの)であった場合には、対応する定義ルーチンを読み込み、以下の展開処理に移る。まず、「base <do:=”WALK2”>」では、「base」コマンドの認識により、これに続く定義名(この場合”WALK2”)に対応する中位動作ルーチンを標準動作ルーチンとして読み出し、これを図7の中位動作ルーチン展開メモリ領域205gに格納する。次いで、item RIGHTARM <do:=CHOP>では、その部位特定情報(item RIGHTARM)を認識することにより、標準動作ルーチン中にこれと同じ部位の動作が存在するかどうか確認する。もし存在していれば、動作特定情報(<do:=CHOP>)により特定される部位動作モジュールを、展開メモリ領域205g内に格納されている標準動作ルーチン中の対応する部位のモジュールと置き換える。この場合、”WALK2”は、「右脚部半歩」の歩行動作であり、右腕の振りの動作が部位動作として含まれているから、これが空手チョップの右腕動作と置き換えられるわけである。
【0043】
なお、上記定義ルーチンの例には現われていないが、図20に示す動作命令文を用いいることにより、次のような処理が行われるようになっている。まず、特定の定義名として「FAULT」(すなわち、<do:=FAULT>)を記述しておくと、展開メモリ領域205g内の標準動作ルーチンからは、対応する部位のモジュールが削除される処理がなされる(すなわち、その部位の動作が禁止される)。また、標準動作ルーチン内に存在しない部位の動作を指定した場合は、対応する部位動作モジュールが標準動作ルーチンに追加される。図に示した動作命令文では、
item RIGHTWRIST <do:=turn>
となっているが、これは右手首部(RIGHTWRIST)をねじる(turn)部位動作を示すものである。
【0044】
また、部位動作の置換えないし追加を指定する動作命令文では、部位動作モジュールのモジュール名による動作指定の他、中位動作ルーチンを援用した動作指定も可能となっている。この場合、定義名により中位動作ルーチンを指定し、部位名により部位を指定する。これにより、その中位動作ルーチンの、指定された部位のモジュールが、展開メモリ領域205g内の標準動作ルーチンに対し置き換えないし追加されることとなる。図に示した動作命令文では、
item RIGHTARM <do:=”WALK3”>
となっているが、これは「左脚部一歩前」という基本動作の、右腕の振り動作のみを組み込むことを示すものである。
【0045】
このようにして、定義ルーチン内の動作命令文の実行が全て終了すると、展開メモリ領域205g内には、モジュールの入替え、追加及び削除処理が終了した状態の標準動作ルーチン、すなわち展開済の標準変更型中位動作ルーチンが格納された形となっている。なお、モジュールの入替え等の展開処理は、モジュール名のみを用いて行えば、図6の記憶部304からその都度モジュールを読み出す必要がなくなるので高速処理が可能となる。この場合は、展開処理が終了後に、展開メモリ領域205g内のモジュール名を参照して、対応するモジュールを記憶部304から読み出し、これを中位動作ルーチン格納部205cあるいは205dに格納するようにする。
【0046】
ところで、図18のプログラムが示す上位動作では、右を向いた後、4歩歩く形となっているが、この4歩歩くルーチン部分を、以下に説明する重ね合わせ型中位動作ルーチンとして統合することも可能である。その例を図21に示している。このプログラムと図18のプログラムとの違いは、図18の「4歩歩く」動作を記述する部分に相当する2〜5行の動作命令文群が、1つの命令文
motion <do:=”@@××××1”>
で置き換えられており、さらにその定義名”@@××××1”に対応する定義ルーチンが追加されている点にある。すなわち、「4歩歩く」という動作を、時系列的に重なりを生じない4つの歩行動作を重ね合わせた重ね合わせ型中位動作ルーチン(定義名”@@××××1”)として組まれている。なお、本実施例では、定義名の先頭に特定の文字情報、例えば「@@」を付与することにより、重ね合わせ型のルーチンを他の形式の中位動作ルーチンと区別するようにしている。
【0047】
図22は、その定義ルーチンの一例を示している。まず、定義ルーチンの先頭にある
「pileup motion to @@××××1」
は、中位動作ルーチンの種別と定義名を規定するための文であり、「pileup motion to」は重ね合わせ型中位動作ルーチンであることを示している。以降は、重ね合わせを行いたい基本動作の命令文を実行順に配列し、最終行に「end」を付与することにより、定義ルーチンを閉じる。なお、本実施例では、特定の基本動作列を繰返し実行させるためのコマンドが用意されている。本実施例では、「repeat while ○」‥‥「end」がこれに相当し、これらの間に挟まれた動作列を「○」回繰り返すことを意味する。図22では、「左脚部1歩」と「右脚部1歩」とを交互に行う動作を2回繰り返すことにより、都合4歩連続歩行する内容を記述するプログラムとなっている。
【0048】
次に、組合わせ型中位動作ルーチンのプログラム例と、その処理の流れについて説明する。組合わせ型中位動作ルーチンは、組み合わされるべき中位動作ルーチン及び/又は部位動作モジュールに係る基本動作及び/又は部位動作が、時系列的に少なくとも部分的な重なりを生じた状態で実行される上位の中位動作をいう。一例を図23を用いて説明する。ここでは、ロボットのジャンケン動作を例にとる。
【0049】
例えば、「ジャンケンポン」と発声しながら、パーを出すという動作を考えてみる。これは次のような部位動作に分解して考えることができる。まず、(1)のように、右手を「グー」の状態にして右腕を振り上げ、その振上げの途中で「ジャン」と発音する。なお、発音に合わせて口を短時間開いて閉じる動作(以下、口パクパク動作という)を1回行う。次いで、(2)では、振り上げた右腕を静止させて「ケン」と発音する。(3)では、その右腕を振り下ろしながら、右手は途中まで「グー」の状態を維持し、さらに(4)で、右手を「パー」状態としながら「ポン」と発音しつつ、右腕の振下ろしを完了させる。なお、この例では(5)で、腕の振下ろし完了後に、ロボットが口を開いて舌をペロリと出す動作が付け加えてある。
【0050】
上記動作においては、右腕、右手、口、舌及び音声の5つの部位が、しかるべきタイミングで連係動作を行う形となっている。その動作タイミングの例が図24である。図中の矢印は動作継続期間を表す。この例では、右腕の振上げ、静止、振下ろしをそれぞれ1秒で実行するようになっており、デフォルトで口は閉、右手はグーとなっている。また、右腕の振上げ動作は、大げさなロボットの身振りを示すために、腰の前後移動や肩の上下動あるいは頭の動き等の部位動作を伴う基本動作に組み込まれており、後述する駆動データ作成装置によりデータ作成された例えば10コマ(コマ送り速度:0.1秒/コマ)の教示動作である。なお、その中位動作ルーチンの定義名は”RLIFTUP”である。他方、右腕の振下ろしも同様に基本動作に組み込まれており、その中位動作ルーチンの定義名は”RSHAKEDN”である。そして、右腕振上げサイクルの中間にて「ジャン」の発声を、右腕静止サイクルの中間にて「ケン」の発声をそれぞれ行い、右腕振下ろし時には、その7コマ目から右手を「パー」に移行させ、同時に「ポン」の発声を行う。そして、右腕の振下ろしが完了すると同時に舌をペロリと出す。
【0051】
図25は、上記のような動作を規定する組合わせ型中位動作ルーチンの定義ルーチンの一例である。まず、定義ルーチンの先頭にあるのは、標準変更型中位動作ルーチンと同様の「joint motion to @JANKEN」である。以降の(a)〜(l)は、組み合せるべき部位動作あるいは基本動作を指定する動作命令文群であり、それぞれ、図24のタイミングチャートの(a)〜(l)の各動作を命令するものである。このうち(a)〜(e)は、図23の(1)の動作過程に、(f)、(g)は(2)の動作過程に、(h)は(3)の動作過程に、(i)〜(k)は4の動作過程に、(l)は(5)の動作過程にそれぞれ対応している。
【0052】
組合わせ型中位動作ルーチンにおいては、例えばその中位動作ルーチンの実行開始時刻が時刻原点として設定され、後述のコマンドにより特に実行開始タイミング指定がなされない限り、その時刻原点をデフォルト開始時刻として、各部位動作あるいは組み込まれた基本動作が一斉同時にスタートする(なお、時刻計測は、図1のタイマー190が行う)。すなわち、(a)〜(c)は、開始タイミングの指定がないので、ルーチンの実行開始とともに、右腕の振上げ動作((a))、右手の「グー」動作((b))、及び口の閉動作が同時に実行スタートとなる。なお、「RIGHTFINGER」は右手(の指)、「MOUTH」は口の各部位を表す部位指定情報であり、<do:=31>は「グー」を作るための指曲げを、<do:=close>は口閉じをそれぞれ指定する動作指定情報である。
【0053】
次の(d)は、「ジャン」の発声を指示する動作命令文である。本実施例では、声に対応する部位名すなわち「VOICE」を指定し、それに続く<do:=”◇◇◇◇”>の◇◇◇◇に、発声内容を直接文字(あるいは文字コード)にて書き込むことにより発声内容が指定される。そして、それに続く<from:=○○○>は、動作条件規定コマンドの一つであり、動作の開始タイミングを指定する動作開始タイミング規定コマンドである。<from:=timer △△>は、「時刻原点からタイマーの計測単位(本実施例では0.1秒)の△△倍だけ経過した後に動作を開始せよ」との意味である。すなわち、(d)全体の意味は、「時刻原点から(すなわち、右腕の振上げ開始から)0.5秒経過後に、「ジャン」と発声せよ」となる。
【0054】
また、(e)では、部位として口が選択され、<do:=parrot> により口パクパクの動作が指定される。その動作開始タイミングは、<from:=timer 5>となっているから、上記「ジャン」の発声タイミングと同じである。さらに、<till:(条件名)>は、動作の終了条件を規定するコマンドであり、例えば <till:=repeat △> は、その部位動作が△回繰り返されれば動作終了させることを意味する。例えば、<till:=repeat 1> により、口パクパクが1回のみ行われることになる。なお、<till:=repeat △>が省略された場合には、自動的にデフォルト繰返し回数(例えば1回)が指定されるようにしてもよい。こうして、上記(a)〜(e)の動作命令文により、図24のタイミングチャートの(a)〜(e)の動作が組合せて実行され、図23の(1)の動作が実現されることがわかる。
【0055】
次に、腕の振下ろし時の動作について説明する。まず、右腕の振下ろしが開始されるのは時刻原点から2秒経過後であり、対応する(h)の動作命令文において、<from:=timer 20>によりその開始タイミングが与えられる。図24に示す通り、腕の振下ろし開始から終了までは時間で表せば1秒であり、コマ送り数で表せば10コマである。そして、その7コマ目(時刻原点からの時間でいえば2.7秒目)において、右手の「グー」動作、「グー」の発声動作、及び口パクパク動作が一斉に開始する。
【0056】
これに対応するのは、図25の(i)〜(k)の3つの動作命令文である。ここでは、動作開始タイミングを右腕の動作のコマ送り数にて規定している。各動作命令文に書き込まれている動作開始タイミング規定コマンドの、<from:=item(部位名)[△]>の形式は、「item(部位名)にて指定された部位動作の△コマ目に動作を開始せよ」という内容を指示するものである。従って、<from:=item RIGHTARM[7]>により、右腕の振下ろし開始から7コマ目に各動作の開始時刻が設定される。
【0057】
最後は舌を出す動作であるが、図25にて対応する動作命令文は(l)である。
上述のような駆動データは駆動データ作成装置1により作成することができる。item TONGUSは舌を部位名として指定するものであり、<do:=out>は「出す」動作を指定するものである。そして、その動作開始タイミング規定コマンド<from:=item RIGHTARM[back]>は、前記した<from:=item RIGHTARM[7]>と同様に、右腕の部位動作をタイミング設定の基準部位として指定しているが、[back]は、「その部位(右腕)の動作が完了するとともに動作開始せよ」を意味している。従って、右腕の振下ろしが完了するとともに、ロボットは舌を出す動作を行うこととなる。
【0058】
上記のようなロボットの駆動データは、主要部分が図9の駆動データ作成装置1により教示作成され、各部位動作モジュールもそれに基づく教示動作ルーチン部分として作成される。以下、駆動データ作成装置1の作動の流れをフローチャートを用いて説明する。図26は処理全体の大まかな流れを示すものであって、まずS1100の入力処理では、モデル画像に対する骨格画像の重ね合わせ処理を行い、駆動データを作成(換言すれば、ロボット201への動作の教示)する。この処理は、基本動作の単位で行われる。ここで、入力に先立ってその基本動作を人間のモデルに行わせ、そのモデル画像38(図16、図17)を所定のコマ時間間隔でビデオカメラにより動画撮影しておく。そして、図9のVTR15により再生されたその動画が、画像取込制御部6を介して動画データとして取り込まれ、動画データ記憶装置11に記憶されている。ここで、動画データ記憶装置11に記憶されている動画データは、図35に示すように、モデルが比較的複雑な動きを行っている場合には、そのコマ80の間隔が密になるように、逆に動きが比較的単調な場合にはコマ80の間隔が粗となるように、その動画のコマが、動画データ取り込み時あるいは取り込み後のデータ編集時に適宜間引かれる。
【0059】
図27は、S1100の入力処理の詳細を示すフローチャートであって、まず駆動データの演算が不要な部位の設定を行なった後(S1101)、図13に示すようなウィンドウW1及びW2をそれぞれ表示する(S1102、S1103)。このうち、一方のウィンドウW1にはモデル画像38が表示され、他方のウィンドウW2には骨格画像39が表示される。なお、骨格画像39は、図2に示すロボット骨格19を簡略化した線図として表示される。
【0060】
図27に戻って、S1104において、ビデオカメラにモデルを正対させて撮影したモデル画像38(図13)に、骨格画像39の寸法を合わせ込む処理を行う。その処理の詳細を図28及び図29に示す。すなわち、図13において、正対ポーズのモデル画像38をウィンドウW1に、骨格画像39をウィンドウW2に表示し(C101〜103)、各骨格単位の長さをモデル画像の対応部位に合わせ込む(C104)。ここで骨格画像39の各骨格単位に対しては、予め標準寸法が設定されている。その合わせ込みの処理であるが、図29に示すように、まず基準点Gの位置を合わせ込み(C201)、続いてその基準点Gから次第に遠ざかるように、各骨格単位の端点を順次合わせ込んでゆく。
【0061】
ここで、モデル画像38に対し、骨格画像39の端点を合わせ込むための入力方法であるが、図13に示すように、ウィンドウW2上には各端点が目印点として表示され、また、ウィンドウW1上にはマウス12(図9)の移動に伴い画面上を移動するポインタ40が表示される。目印点の合わせ込みは、G点から始まって次第に骨格の末端へ向かう方向に、予め設定された順序で行われるようになっており、ウィンドウW2に表示された骨格画像39上において、次に合わせ込みを行うべき端点が点滅してこれを知らせるようになっている。そして、ウィンドウW1上のモデル画像38上の指定するべき位置にポインタ40を合わせ、マウス12のクリックボタンを操作することにより、ウィンドウW2上で点滅表示された端点の、モデル画像38上での重ね位置が確定され、それとすでに確定されている端点の位置に基づいて、各骨格単位の長さが順次計算されてゆく(C202〜C209)。また、長さが定められた骨格単位は、ウィンドウW1のモデル画像38に対し順次重ね描画されてゆく。
【0062】
ここで、正対ポーズにおけるモデル画像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内に作成された基準データ記憶部に格納されている。
【0063】
続いて、S1105〜S1109において、骨格画像39の位置合わせを行う動画のコマ番号を指定することにより、そのコマのモデル画像のデータが取り込まれ、骨格画像の位置合わせ処理(骨格画像入力)に移る。図30及び図31は、その位置合わせ処理(S1109)の内容の詳細を示すフローチャートである。すなわち、図30のC301〜C305に示すように、取り込んだコマのモデル画像38に対し、G点から始めて次第に遠ざかる方向に、骨格画像39の各端点の位置をモデル画像38に対し合わせ込んでゆく。その入力例を図36に示しているが、手順は前述の寸法合わせ処理の場合とほぼ同様であり、ウィンドウW2上で点滅表示される端点のウィンドウW1での合わせ位置をマウス12で指定しながら、モデル画像38に対する位置合わせ入力を行ってゆく。この場合も、ウィンドウW1上のモデル画像38に対し、位置合わせの終わった部分から順に骨格画像39が重ね描画されてゆく。ここで、左右の脚部及び腕部については、前述の寸法合わせ処理とは異なり、個々に入力処理が行われることとなる。なお、S1101(図27)において設定された教示不要部位については、位置合わせ入力がスキップされる。
【0064】
図31は、両脚部に相当する部位の位置合わせ処理の流れを一例として示しており、右脚部及び左脚部のそれぞれについて、上肢骨26の上端点L1(L2)の位置合わせを行った後、下肢骨27の下端点Lf1(Lf2)の位置合わせが行われるようになっている(C401〜C403)。ここで、図10に示す拘束条件により、L1(L2)及びLf1(Lf2)が指定されれば、膝に相当するLk1(Lk2)の位置は自動的に定まるので入力は行われない。このようにして、各端点の画面上の座標が算出され、その画面座標と、予め記憶されている各骨格単位の標準体寸法データに基づいて実際の空間における端点の3次元座標が算出される。
【0065】
次に、図27に戻ってS1110に進み、上記位置合わせ処理では駆動データの生成が困難ないし不可能な骨格単位ないし部位に対し、それらの空間位置の補助入力処理を、マウス12ないしキーボード13を使用することにより行う。この入力処理は、上記位置合わせ処理とは別のウィンドウを開き、そのウィンドウ上に該当する骨格単位ないし部位の画像を表示して、位置設定のために予め用意された各種処理コマンド(例えば骨格単位の平行移動、あるいは回転など)を、マウス12あるいはキーボード13からの入力により選択・実行しながら、骨格単位や部位毎に個別に入力を行ってゆく。
【0066】
以上で、1つのコマに対する入力処理が終了するが、次のコマの処理に移る場合はコマ番号を更新し、直前のコマの骨格画像39及びモデル画像38を描画しなおすとともに(S1111〜S1113)、S1107に返って処理を繰り返す。一方、コマへの入力作業を終了する場合は(S1114〜S1116)、ウィンドウW1とW2を閉じて図26のS1200に進む。
【0067】
ここで、上述のようにして得られた各端点の変位データが、そのまま駆動データとして使用される場合にはS1300に進むが、その変位データから各アクチュエータの駆動量の算出まで行う場合には、S1200の処理、すなわち上記入力により得られた、各コマ毎の骨格単位の端点の空間位置座標に基づいて、骨格単位を駆動するアクチュエータの駆動量を算出する処理が挿入される。すなわち、図32に示すように、隣り合う2枚のコマの番号を指定して、その各骨格単位の端点の空間位置座標を読み込み、その空間位置座標に基づいて各骨格単位間に設けられたアクチュエータの駆動量が算出される(C501〜C503)。その算出処理の内容は、前述の駆動量算出プログラム216aにより各アクチュエータの駆動量を算出する処理とほぼ同様であるので詳しい説明は省略する。なお、最初のコマの骨格画像が正対ポーズのものでない場合は、予め記憶されているアクチュエータの基準位置をもとに、その最初のコマに対する各アクチュエータの駆動位置を算出しておけばよい。
【0068】
次に、図26のS1300に進み、入力が終わった各コマに対しロボット動作の実時間軸上の時間を設定する。その処理の詳細を図33のフローチャートに示す。すなわち、時間設定用のウィンドウを開いて骨格画像データをコマ番号順に読み出し、ウィンドウ内に骨格画像を順次表示しながら時間入力を行ってゆく(C601〜C605)。そして、C6051において、直前のコマとの時間間隔から各アクチュエータの駆動速度を算出し、C606において、その時間間隔で全てのアクチュエータが駆動完了できるかどうかを判定する。完了できるようであれば、C607でその入力された時間及びアクチュエータ駆動速度を格納し、C608でコマ番号をインクリメントしてC603に戻り、処理を繰り返す。また、駆動完了できないようであればC605に戻って時間入力をやり直す。そして、時間の入力処理が終わるとC612でウィンドウを閉じて図26のS1400に進む。
【0069】
S1400では、最終的に得られた駆動データを駆動データ記憶装置10に記憶・保存する。その処理の流れは図34に示す通りであって、まず、C701で中位動作コマンド名を入力する。そして、駆動データはその部位別に分割され(C702)、下位動作データのサブファイル、すなわち部位動作モジュールが形成される(C702)。そして、それら部位動作モジュールが、入力された中位動作コマンド名で統合されて、中位動作ルーチンとして記憶装置10に保存される(C703)。なお、各部位動作モジュールは、互いに異なる中位動作ルーチン間での交換や差替えが可能とされている。
【0070】
以上のようにして各部位の部位動作モジュールは、駆動データ作成装置1により教示作成されるが、モデル画像に位置合わせされた骨格画像からは駆動データの演算が困難あるいは不可能なロボット部位、すなわち非教示部位が存在する。一例としては、手首、指、眼、口、舌等である。この場合は、上記動作プログラムにおいて、そのような非教示部位の位置決め命令ルーチン部分を、例えば定義ルーチンの一角をなすものとして組み込むことができる。本実施例では、
set (部位名) <設定因子:=設定条件値>
という形式にて位置決め命令ルーチン部分を記述するようになっている。
【0071】
具体的には、対応する非教示部位の移動開始位置、移動終了位置及び移動速度を設定因子として選び、数値入力するかあるいは予め用意された候補値から選択する等により、所期の設定条件値を設定する。これを受けて図5の記憶部308に記憶されている非教示部位駆動データ生成プログラムに基づき、図1のCPU204は、対応する部位のアクチュエータの駆動データを算出する。例えば、アクチュエータがサーボモータやステッピングモータである場合には、移動開始位置及び移動終了位置の値を受けてモータの回転開始位置と回転終了位置を算出し、移動速度の値を受けてモータの回転数を算出する。以下、本実施例のロボットにて使用れる非教示部位とその動作種別、及び位置決め命令ルーチン部分の形式等について、いくつかの例を示す。
【0072】
部位名:右眼(左眼)(部位指定情報:RIGHTEYE(LEFTEYE))。アクチュエータ:モータにより左右に回転駆動される。
書式:RIGHTEYE<do:=実行コマンド><till:=条件式>
LEFTEYE<do:=実行コマンド><till:=条件式>
動作終了条件句:実行コマンドがgoggleの時、眼の往復回数指示が可能。(例:RIGHTEYE<do:=goggle><till:=repeat△>)
位置決め命令:set EYE<speed:=(速度指定情報)><right:=(右眼差し位置座標)><left:=(左眼差し位置座標)>(部位名は、例えば左右眼共通であるが、左右別々に設定するようにしてもよい)
speed :眼の移動スピードを指示
right :右眼差し位置を指示
left :左眼差し位置を指示
・「右眼差し」は位置決め命令のrightで設定される位置まで移動
・「左眼差し」は位置決め命令leftで設定される位置まで移動
・「キョロキョロ」は位置決め命令のrightとleftで設定される座標間を、往復回数指定(<till:=repeat n>)。往復回数が指定されていない時は一往復のみとなる。そして最終の眼の位置は左設定位置で停止する。
なお眼は最初右側へ動かす。
【0073】
部位名:右瞼(左瞼)(部位指定情報:RIGHTEYELID(LEFTEYELID)
アクチュエータ:モータにより上下に駆動される。
書式:RIGHTEYELID<do:=実行コマンド><till:=条件式>
LEFTEYELID<do:=実行コマンド><till:=条件式>
動作終了条件句 実行コマンドがblinkの時、瞬き回数指示が可能。(例:RIGHTEYELID<do:=blink><till:=repeat n>)
位置決め命令 set EYELID<open:=(時間設定情報)>(左右瞼共通)
open :瞼を開けている時間を指定
【0074】
部位名:口(部位指定情報:MOUTH)
アクチュエータ:モータにより開閉駆動される。
書式:MOUTH<do:=実行コマンド><till:=条件式>
動作終了条件句 実行コマンドがparrotの時、回数指示が可能。(例:MOUTH<do:=parrot><till:=repeat n>)
位置決め命令 set MOUTH<open:=(時間設定情報)><close:=(時間設定情報)>
open :口を開けている時間を指示
close :口を閉じている時間を指示
【0075】
部位名:舌(部位指定情報:TONGUS)
アクチュエータ:モータにより出入れ駆動される。
書式:TONGUS<do:=実行コマンド><till:=条件式>
動作終了条件句 実行コマンドがlickの時、回数指示が可能。
(例:TONGUS<do:=lick><till:=repeat n>)位置決め命令 set TONGUS<out:=(時間設定情報)><in:=(時間設定情報)>
out :舌を出している時間を指示
in :舌を入れている時間を指示
【0076】
部位名:手(部位指定情報:RIGHTFINGER(LEFTFINGER))
アクチュエータ:シリンダにより、各指が独立に曲げ伸ばし駆動される。
実行コマンド 指パターン指示(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 number of intermediate motion routines that define the basic motion of the robot, create the intermediate motion routine for the basic motion you want to add newly, going back to the unit of the lower motion data each time. There must be. This intermediate operation routine can be created only at the lower operation data level, which is difficult to grasp intuitively. Therefore, it requires specialized knowledge and a high degree of skill in programming, and is required for general users. The content is difficult to handle. In particular, setting of operation conditions such as timing is particularly troublesome in the case of a complex operation in which different part operations are linked. In this case, not only does programming take time, but the prospect of the program and overall grasping are not easy, so that it is more difficult to realize the intended robot operation. 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]
It is an object of the present invention to create a program or change a program easily even when a robot performs a complex operation in which a plurality of part operations are linked, and as a result, a robot system capable of realizing a desired robot operation as desired. Is to provide.
[0007]
[Means for solving the problems and actions / effects]
In order to solve the above problems, the robot system of the present invention
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.ShapeA high-order operation program that defines a high-order robot action by combining a plurality of the part-motion modules and that defines a basic action action that defines a basic action.Is the floorAs a layered programWriteIs described,
During ~Position operation routineIs the medium operation commandAnd mapThe upper operating program isUse intermediate operation commands and combine these intermediate operation commands.The upper robot movementRegulationAnd
A medium operation routine storage unit for storing a medium operation routine;
It is a combination of intermediate operation commandsAn upper operation program storage unit for storing the upper operation program;
Program reading means for reading the upper operation program stored in the upper operation program storage unit in units of intermediate operation commands;With,
By the program reading meansRead outInsideBased on the combination of the intermediate action routines corresponding to the order action commands,
The part operation module is formed in units of drive data related to driving of an actuator provided in the robot part.ActuatorBy its driving dataControl the driveforActuator operation controllerWhen,CorrespondingRobot partOperation condition specification command including operation start timing specification command that specifies the operation start timing ofAnd consists ofThe actuator operation control unitThatControls actuator drive related to basic motion or part motion according to the motion conditions defined by the motion condition definition command.With
The motion start timing regulation command included in the motion condition regulation command of the part motion module is based on the motion of the robot part defined by a series of model images of each frame in which the motion of the model corresponding to the robot motion is recorded over time. The operation start timing is given based on either the start time, end time or specific frame position passing time of the operation of the robot part when used asIt is characterized by that.
[0008]
In this robot system, the intermediate motion routine is configured as a routine for defining the operation for each robot part, that is, a collection of part action modules, and further, the condition is defined for each part action by the operation condition defining command. I have to. Since this operation condition defining command includes an operation start timing defining command for defining the operation start timing of the basic motion or the region motion, when combining a plurality of region motions in a simultaneous linkage, the operation start timing defining command is used to start each operation. By specifying the timing, the operation of a certain part is started later than the other part, or the operation of a specific part is started after a certain operation is completed, and further, the operation of specific parts is started simultaneously. It is possible to easily specify complicated operations such as
[0009]
As a result, it becomes easier to intuitively understand the creation of the intermediate operation routine, so that even general users who do not have specialized knowledge and advanced skills in programming work can easily handle it. In addition, the range of programming can be expanded. On the other hand, since the intermediate 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 action, or to prevent the part from being operated, or even newly 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. In any case, even when the robot performs complex motions that combine multiple part motions, it is extremely easy to create or change a program, and it is easy to see the program and understand the entire program. It can be realized as desired.
[0010]
The operation start timing defining command can give an 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.
[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. Therefore, it is possible to obtain the lower-order motion data for each part included in the middle-level motion in a lump, and if the middle-level motion command is assigned and stored in the storage unit, it can be used as it is as a middle-level motion routine. Become. 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 motion of a certain part defined by the teaching motion routine part is used as a reference, and the motion start timing defining command is based on either the start time, end time or specific frame position passage time of the part motion. Operation start timing can be given. This is convenient when it is desired to set the timing on the basis of the operation of a specific part. Particularly, since the linked operation timing setting between the parts becomes easy, it is possible to more easily program a complicated operation.
[0014]
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.). If the intermediate motion routine includes a part motion module of a robot part (non-teach part) where the teaching operation routine part is not created by the drive data creation device due to the above factors, the part motion module The non-teaching part positioning instruction routine corresponding to 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.
[0015]
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 / extraction 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.
[0016]
The operation start timing regulation command isIn the operation condition specification command of the part action module that constitutes the middle action routineIf it is not given to the action start timing of the corresponding basic action or part actionIs the middle-level routine executionSet to start timeRukoYou can. For example, in the combination type intermediate operation routine described above, the default start time (for example,Of the intermediate operation routineIf you want to start the operation of several parts at the same time in the program execution start), by providing the means as described above, the expected action can be executed without specifying the timing for those parts. Therefore, the program can be simplified.
[0017]
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
[0018]
The
[0019]
The
[0020]
The
-Head (20): provided with an
-Torso: including
Left and right arm parts: each has a
-Left and right leg portions: each includes an
[0021]
As shown in FIG. 1, the
[0022]
Next, as shown in FIG. 5, the
[0023]
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
[0024]
(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
(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
[0025]
(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
(6) Non-teached part drive data generation program: will be described later.
[0026]
On the other hand, as shown in FIG. 7, the
[0027]
Further, as shown in FIG. 8, the calculation /
[0028]
FIG. 9 is a block diagram illustrating a configuration example of the drive
[0029]
Next, some of the skeleton units forming the
[0030]
Next, the operation of the
When the high-order operation program name is designated and started by the
[0031]
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, the drive data described as displacement data for each time of the actuator is transmitted to the calculation /
[0032]
As an example of the driving amount calculation method, a method based on the following principle can be employed.
First, in the
-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
The displacement data is calculated as the displacement of both ends of each skeleton unit.
[0033]
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.
[0034]
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
[0035]
FIG. 15 shows a specific execution example of the upper level operation of the
[0036]
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 “turn right, walk four steps, thank you, turn right, step one and a half steps, and pose karate chop”. As described above, the program includes an operation instruction routine and a definition routine.
[0037]
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.
[0038]
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.
[0039]
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.
[0040]
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.
[0041]
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
[0042]
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.
[0043]
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).
[0044]
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.
[0045]
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
[0046]
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.
[0047]
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.
[0048]
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.
[0049]
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.
[0050]
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.
[0051]
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
[0052]
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
[0053]
The next (d) is an operation command statement for instructing 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 the right arm)”.
[0054]
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: =
[0055]
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: =
[0056]
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]>.
[0057]
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
[0058]
The main part of the robot drive data as described above is taught and created by the drive
[0059]
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
[0060]
Returning to FIG. 27, in S1104, processing is performed to match the dimensions of the
[0061]
Here, the input method is to match the end points of the
[0062]
Here, since the
[0063]
Subsequently, in S1105 to S1109, by specifying the frame number of the moving image for aligning the
[0064]
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
[0065]
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
[0066]
This completes the input process for one frame, but when the process proceeds to the next frame, the frame number is updated, and the
[0067]
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
[0068]
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.
[0069]
In S1400, the finally obtained drive data is stored / saved in the drive
[0070]
As described above, the part motion module of each part is taught and created by the drive
set (part name) <setting factor: = setting condition value>
The positioning command routine part is described in the format.
[0071]
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
[0072]
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>
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)
speed: indicates the speed of eye movement
right: indicates the right eye position
left: indicates the left eye position
・ "Right eye" moves to the position set by positioning command "right"
・ "Left eye" moves to the position set by positioning command left
“Kyo 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.
[0073]
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>
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 left and right eyelids)
open: Specify the time to open the casket
[0074]
Part name: mouth (part designation information: MOUTH)
Actuator: Driven by a motor.
Format: MOUTH <do: = execution command> <til: = conditional expression>
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)>
open: Indicates the time when the mouth is open
close: Indicates the time when the mouth is closed
[0075]
Part name: tongue (part specifying information: TONGUS)
Actuator: Driven in and out by a motor.
Format: TONGUS <do: = execution command> <til: = conditional expression>
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)>
out: Indicates the time when the tongue is sticking out
in: Indicates the time when the tongue is put
[0076]
Part name: hand (part specifying information: RIGHTFINGER (LEFTFINGER))
Actuator: Each finger is independently bent and stretched by a cylinder.
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 intermediate 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 (6)
前記中位動作ルーチンは中位動作コマンドと対応付け、前記上位動作プログラムはその中位動作コマンドの組み合わせにより前記上位のロボット動作を規定し、
前記中位動作ルーチンを記憶する中位動作ルーチン記憶部と、
前記中位動作コマンドの組み合わせである前記上位動作プログラムを記憶する上位動作プログラム記憶部と、
その上位動作プログラム記憶部に記憶された前記上位動作プログラムを、前記中位動作コマンドの単位で読み出すプログラム読出手段と、を備え、
そのプログラム読出手段によって読み出された中位動作コマンドに対応する前記中位動作ルーチンの組み合わせに基づいて、
前記部位動作モジュールは、前記ロボット部位に設けられたアクチュエータの駆動に関する駆動データを単位として形成され、前記アクチュエータをその駆動データによって駆動を制御するためのアクチュエータ動作制御部と、対応するロボット部位の動作開始タイミングを規定する動作開始タイミング規定コマンドを含んだ動作条件規定コマンドとで構成され、
前記アクチュエータ動作制御部は、その動作条件規定コマンドが規定する動作条件に従い、前記基本動作又は部位動作に係るアクチュエータの駆動を制御するとともに、
前記部位動作モジュールの前記動作条件規定コマンドに含まれる前記動作開始タイミング規定コマンドは、ロボット動作に対応するモデルの動作を経時的に記録した各コマの一連のモデル画像により規定される当該ロボット部位の動作を基準として用いたときの、当該ロボット部位の動作の開始時刻、終了時刻又は特定のコマ位置通過時刻のいずれかに基づいて前記動作開始タイミングを与えるものであることを特徴とするロボットシステム。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. There made form a median operation routine is formed to define the basic operation by combining a plurality of the site operation module, higher operating program which defines the robot operation of the upper by a combination of the middle position operation routine of that is floor It has been describe as a layer type program,
The intermediate operation routine is associated with the intermediate operation command , the upper operation program defines the upper robot operation by a combination of the intermediate operation commands ,
A middle level operation routine storage unit for storing the middle level operation routine;
An upper operation program storage unit for storing the upper operation program which is a combination of the intermediate operation commands ;
The upper operation program stored in the upper operation program storage unit, and a program reading means for reading a unit of said intermediate operation command,
Based on a combination of the median operation routine corresponding to the position operation command in read by the program readout means,
The part motion module is formed in units of drive data related to driving of an actuator provided in the robot part, and an actuator operation control unit for controlling the drive of the actuator according to the drive data, and the operation of the corresponding robot part It consists of an operation condition specification command including an operation start timing specification command that specifies the start timing,
The actuator operation control unit in accordance with the operating conditions prescribed by the operating conditions specified command controls the driving of the actuator according to the basic operation or site operation,
The motion start timing regulation command included in the motion condition regulation command of the part motion module is a command for the robot site defined by a series of model images of each frame in which the motion of the model corresponding to the robot motion is recorded over time. A robot system characterized in that the operation start timing is given based on either the start time, end time or specific frame position passage time of the operation of the robot part when using the operation as a reference .
前記複数の部位動作モジュールのうち、少なくとも一部のものは、ロボット動作に対応するモデルの動作を経時的に記録した一連のモデル画像に基づいて、ロボット動作のコマ送り単位で作成された駆動データを、ロボットの部位別に編集する駆動データ作成装置により作成された教示動作ルーチン部分が組み込まれており、
その駆動データ作成装置は、
前記モデル画像と、複数の骨格単位からなる骨格画像とを表示する画像表示手段と、
その画像表示手段において前記骨格画像を、前記モデル画像に対して位置合わせする骨格位置決め手段と、
時間軸上において互いに前後するモデル画像に対しそれぞれ位置合わせされた前記骨格画像の変位に基づいて、前記駆動データを算出するデータ演算手段と、
を含んでいる請求項1ないし3のいずれかに記載のロボットシステム。To at least one of said plurality of robot sites, it is intended to comprise the backbone with said actuator disposed between the backbone units and their backbone units of multiple,
Among the plurality of sites operating modules, at least part of what is based on a series of model images recorded over time the operation of the model corresponding to the robot operation, the drive created by the frame feed unit of the robot operation The teaching operation routine part created by the drive data creation device that edits the data for each part of the robot is incorporated,
The drive data creation device is
Image display means for displaying the model image and a skeleton image composed of a plurality of skeleton units;
Skeleton positioning means for aligning the skeleton image with the model image in the image display means;
Data calculation means for calculating the drive data based on the displacement of the skeleton image respectively aligned with the model images that are mutually before and after on the time axis;
The robot system according to claim 1 , comprising:
その位置決め命令ルーチン部分の内容に基づいて、対応する非教示部位のアクチュエータの駆動データを生成する非教示部位駆動データ生成手段が設けられている請求項4に記載のロボットシステム。When the intermediate motion routine includes a part motion module of a robot part (hereinafter referred to as a non-teaching part) for which the teaching operation routine part is not created by the drive data creation device, it corresponds to the part motion module. The non-teaching part positioning command routine part is incorporated,
5. The robot system according to claim 4 , further comprising 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.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP25014098A JP4039595B2 (en) | 1998-09-03 | 1998-09-03 | Robot system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP25014098A JP4039595B2 (en) | 1998-09-03 | 1998-09-03 | Robot system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000153478A JP2000153478A (en) | 2000-06-06 |
| JP4039595B2 true JP4039595B2 (en) | 2008-01-30 |
Family
ID=17203423
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP25014098A Expired - Fee Related JP4039595B2 (en) | 1998-09-03 | 1998-09-03 | Robot system |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4039595B2 (en) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4670136B2 (en) * | 2000-10-11 | 2011-04-13 | ソニー株式会社 | Authoring system, authoring method, and storage medium |
| JP2002144263A (en) * | 2000-11-09 | 2002-05-21 | Nippon Telegr & Teleph Corp <Ntt> | Robot operation teaching / reproduction apparatus and method, and recording medium storing robot operation teaching / reproduction program |
| JP2002283259A (en) | 2001-03-27 | 2002-10-03 | Sony Corp | Operation teaching device and operation teaching method for robot device, and storage medium |
| KR101277275B1 (en) * | 2009-12-09 | 2013-06-20 | 한국전자통신연구원 | Task implementation method based on behavior in robot system |
| JP6486678B2 (en) * | 2014-12-25 | 2019-03-20 | 株式会社キーエンス | Image processing apparatus, image processing system, image processing method, and computer program |
| KR102476169B1 (en) * | 2020-01-28 | 2022-12-08 | 가부시키가이샤 옵톤 | Control program generation device, control program generation method, program |
| TWI859399B (en) * | 2020-01-28 | 2024-10-21 | 日商歐普同股份有限公司 | Motion control device, motion control method, and program |
| KR102476170B1 (en) * | 2020-01-28 | 2022-12-08 | 가부시키가이샤 옵톤 | Control program generation device, control program generation method, program |
| JP6787616B1 (en) * | 2020-01-28 | 2020-11-18 | 株式会社オプトン | Control program generator, control program generation method, program |
-
1998
- 1998-09-03 JP JP25014098A patent/JP4039595B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2000153478A (en) | 2000-06-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5990878A (en) | Sign language editing apparatus | |
| US5594856A (en) | Computer user interface for step-driven character animation | |
| US6144385A (en) | Step-driven character animation derived from animation data without footstep information | |
| US6088042A (en) | Interactive motion data animation system | |
| JP4039595B2 (en) | Robot system | |
| KR102438488B1 (en) | 3d avatar creation apparatus and method based on 3d markerless motion capture | |
| AU700204B2 (en) | Installation and method for controlling a movable apparatus | |
| KR20170083091A (en) | Integrated user environments | |
| JP3995348B2 (en) | Robot system | |
| JP6424050B2 (en) | Articulated skeleton model processing apparatus and program | |
| Morimoto et al. | Surgeon design interface for patient-specific concentric tube robots | |
| Zeltzer | Representation of complex animated figures | |
| JP3668289B2 (en) | Robot motion teaching system | |
| JP2000155606A (en) | Operation control system | |
| US20250229433A1 (en) | Systems and methods to control an entertainment figure | |
| JP2998663B2 (en) | Animation creation equipment | |
| JP2820639B2 (en) | Robot control method and robot system | |
| JPH10340354A (en) | Action generator, action control method and storage medium stored with program for executing the same | |
| Magnenat-Thalmann et al. | Construction and Animation of a Synthetic Actress. | |
| Kalra et al. | 3d interactive free form deformations for facial expressions | |
| JP7756525B2 (en) | Motion creation device, motion creation method, and motion creation program | |
| Morawetz | A high-level approach to the animation of human secondary movement | |
| Gaffron | SkillBuilder--a motor program design tool for virtual actors | |
| Feng et al. | A Dynamic 3D Pronunciation Teaching Model Based on Pronunciation Attributes and Anatomy. | |
| US20240203017A1 (en) | Method for generating animated sentences for sign language translation |
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: 20070426 |
|
| 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: 20071101 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071102 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101116 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |