"制御コマンドによりロボットを制御するロボット制御装置であって、シナリオとサブシナリオとが対応付けられて登録されているデータベースと、入力装置から入力された命令を取得する命令取得部と、前記命令取得部が取得した命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成部と、を備え、前記制御コマンド生成部は、前記命令取得部が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とするロボット制御装置。前記制御コマンド生成部は、前記取得された命令に未取得の要素がある場合、前記ロボットが取得した要素を前記データベースの要素に登録し、前記登録された要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とする請求項1に記載のロボット制御装置。前記制御コマンド生成部は、前記サブシナリオに未取得の要素がない場合、前記データベースから前記要素を読み出し、前記データベースから読み出した要素を前記サブシナリオに組み込んで前記ロボットを制御するコマンドを生成することを特徴とする請求項1または請求項2に記載のロボット制御装置。前記制御コマンド生成部は、前記サブシナリオに前記要素を算出する命令がある場合、前記ロボットに前記要素を算出させる命令を前記データベースから読み出した前記サブシナリオから抽出して、該サブシナリオから抽出した命令により前記要素を算出することを特徴とする請求項1から請求項3のいずれか1項に記載のロボット制御装置。前記制御コマンド生成部は、前記命令取得部が取得した命令に対応する要素を含むサブシナリオを前記データベースから読み出し、読み出した要素を含むサブシナリオを編集するコマンド編集部と、前記コマンド編集部が編集した要素を含むサブシナリオを前記ロボットに対して仮想的に動作させ、前記ロボットの動作が適正か否かを判別するシミュレーター部と、を備え、前記制御コマンド生成部は、前記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を含むサブシナリオに基づき、前記ロボットを制御する制御コマンドを生成することを特徴とする請求項1から請求項4のいずれか1項に記載のロボット制御装置。前記シナリオは、前記命令と前記要素とルールベースの前記サブシナリオとから構成され、前記制御コマンド生成部は、前記サブシナリオに含まれている前記要素を探索して、前記取得された命令に対応する前記サブシナリオを読み出すことを特徴とする請求項1から請求項5のいずれか1項に記載のロボット制御装置。制御コマンドによりロボットを制御するロボット制御方法であって、シナリオとサブシナリオとが対応付けられて登録されているデータベースと、命令取得部が、入力装置から入力された命令を取得する命令取得工程と、制御コマンド生成部が、前記命令取得工程が取得した命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成工程と、を含み、前記制御コマンド生成工程は、前記命令取得工程が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とするロボット制御方法。制御コマンドによりロボット制御の処理をコンピューターに実行させるためのプログラムであり、入力装置から入力された命令を取得する命令取得手順と、前記命令取得手順が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を、データベースから読み出したサブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と、をコンピューターに実行させるためのプログラム。しかしながら、特許文献1に記載の発明では、ロボットに入力される命令は方向に関するものだけなので、方向以外の曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができず汎用性に欠ける。また、特許文献2に記載の発明では、データベースに蓄積されている用語と行動とを結合されて学習させる場合、人間がデータ群に用語を命名する必要がある。さらにデータベースに登録されている用語が文脈に依存し、また用語データと命令とが1対1に対応している。このため、用語データと命令とが関連付けられていない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができず汎用性に欠ける。本発明は、上記の問題点に鑑みてなされたものであって、曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置、ロボット制御方法、およびプログラムを提供することを目的としている。上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット制御装置であって、シナリオとサブシナリオとが対応付けられて登録されているデータベースと、入力装置から入力された命令を取得する命令取得部と、前記命令取得部が取得した命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成部と、を備え、前記制御コマンド生成部は、前記命令取得部が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴としている。本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボットを制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力する命令に要素の値を記述しなくても、ロボットに動作を行わせることができる効果がある。本発明のロボット制御装置において、前記制御コマンド生成部は、前記取得された命令に未取得の要素がある場合、前記ロボットが取得した要素を前記データベースの要素に登録し、前記登録された要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成するようにしてもよい。本発明によれば、コマンド生成部は、データベースから読み出したサブシナリオから読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマンド生成部は、ロボットが取得した要素をデータベースに登録して更新する。この更新された要素を用いて、制御コマンド生成部は、制御コマンドを生成する。この結果、入力された命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力する命令に要素の値を記述しなくても、ロボットに要素を取得させ、取得させた要素をデータベースに登録して更新できる効果がある。本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに未取得の要素がない場合、前記データベースから前記要素を読み出し、前記データベースから読み出した要素を前記サブシナリオに組み込んで前記ロボットを制御するコマンドを生成するようにしてもよい。本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成部がデータベースに登録されている要素を読み出し、読み出した要素を命令またはサブシナリオに組み込んでロボットを制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力する命令に要素の値を記述しなくても、ロボットに動作を行わせることができる効果がある。本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに前記要素を算出する命令がある場合、前記ロボットに前記要素を算出させる命令を前記データベースから読み出した前記サブシナリオから抽出して、該サブシナリオから抽出した命令により前記要素を算出するようにしてもよい。本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成部がデータベースに登録されている要素を読み出し、読み出した要素を用いて、未設定の要素を算出するようにした。この結果、入力された命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置を提供できる。本発明のロボット制御装置において、前記制御コマンド生成部は、前記命令取得部が取得した命令に対応する要素を含むサブシナリオを前記データベースから読み出し、読み出した要素を含むサブシナリオを編集するコマンド編集部と、前記コマンド編集部が編集した要素を含むサブシナリオを前記ロボットに対して仮想的に動作させ、前記ロボットの動作が適正か否かを判別するシミュレーター部と、を備え、前記制御コマンド生成部は、前記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を含むサブシナリオに基づき、前記ロボットを制御する制御コマンドを生成するようにしてもよい。本発明によれば、入力された命令に対応するサブシナリオを編集した場合、編集されたサブ命令群が適正に動作するか否かをシミュレーター部で確認する。そして、シミュレーター部の判別結果が適正の場合、編集されたサブシナリオに基づき、ロボットを制御する制御コマンドを生成するようにした。この結果、命令が曖昧であっても、命令を編集することができ、そして、編集した命令に基づくサブシナリオが適正に動作するか事前に確認することができる。本発明のロボット制御装置において、前記シナリオは、前記命令と前記要素とルールベースの前記サブシナリオとから構成され、前記制御コマンド生成部は、前記サブシナリオに含まれている前記要素を探索して、前記取得された命令に対応する前記サブシナリオを読み出すようにしてもよい。本発明によれば、データベースに登録されているシナリオがルールベースであり、このシナリオに入力された命令を含んでいるため、制御コマンド生成部は、曖昧な命令が入力された場合でも、ロボットを適正に動作させるためのシナリオを抽出できる。この結果、入力された命令が曖昧であっても、ロボットに適切な操作をさせるためのシナリオを用いて動作を行わせることができるので、汎用性のあるロボット制御装置を提供できる。上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット制御方法であって、シナリオとサブシナリオとが対応付けられて登録されているデータベースと、命令取得部が、入力装置から入力された命令を取得する命令取得工程と、制御コマンド生成部が、前記命令取得工程が取得した命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成工程と、を含み、前記制御コマンド生成工程は、前記命令取得工程が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴としている。上記目的を達成するため、本発明は、制御コマンドによりロボット制御の処理をコンピューターに実行させるためのプログラムであり、入力装置から入力された命令を取得する命令取得手順と、前記命令取得手順が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を、データベースから読み出したサブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と、をコンピューターに実行させる。本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボットを制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあるロボット制御方法、プログラムを提供できる。また、入力する命令に要素の値を記述しなくても、ロボットに動作を行わせることができる効果がある。以下、本発明の実施形態について図面を参照して詳細に説明する。なお、本発明は斯かる実施形態に限定されず、その技術思想の範囲内で種々の変更が可能である。また、以下の図面においては、各構成をわかりやすくするために、実際の構造と各構造における縮尺や数等が異なっている。[第1実施形態]図1は、本実施形態に係るロボット1の概略構成を示す斜視図である。図1に示すように、ロボット1は、1本のアーム2を備えている。アーム2は、固定部10、アーム部20、力センサー30、及びエンドエフェクターである指部40を備える。また、ロボット1は、制御装置100の制御により動作する。また、制御装置100には、撮像装置50、画像表示装置60、入力装置62が接続されている。ドライバー70a~70cは、ドライバー置台75にセットされている。ドライバー70a~70cは、ドライバービットの形状が異なる電動ドライバーまたはドライバーである。以下、ドライバー70a~70cを総称して、ドライバー70という。ねじ240は、ねじ自動供給機の取り出し部のレール230上に予め配置されている。なお、ねじ自動供給機は、公知の技術例えば、WO2003/106307参照により取り出し部のレール230上にねじ240を配置する。もしくは、予めレールにねじ240が配置されたマガジンを用いてもよい。また、図1に示すように、ロボット装置1は、例えば工場の組立製造ラインに設置されている。この組立製造ラインには、ロボット装置1及び撮像装置50と、組立中である同種複数のアセンブリ部品が並べ置かれたコンベヤー200とが設置されている。コンベヤー200は、水平な可動載置台210を有し、組立て中である同種複数のアセンブリ部品をその可動載置台210に配置して矢印A方向に搬送する。各アセンブリ部品は、基台251と、拡張ユニット256である。図2は、アセンブリ部品の概略構成を示す断面図である。図3は、アセンブリ後の概略構成を示す断面図である。図2aに示すように、基台251は、可動載置台210に載置された状態でx軸方向の水平面に平行となる面252と面253を有している。また、基台251には、その軸方向が基台251の面253に対して垂直となるねじ穴261が、y軸方向に貫通して設けられている。また、面253は、面252に対して段差を有して形成されている。図2bに示すように、拡張ユニット256は、可動載置台210に載置された状態でx軸方向の水平面に平行となる面257、面258及び面259を有している。また、拡張ユニット256には、その軸方向が拡張ユニット256の面258に対して垂直となるねじ穴262が、y軸方向に貫通して設けられている。また、面258は、面259に対して段差を有して形成されている。図3に示すように、基台251の面253は、拡張ユニット256の面258と接するようにアセンブリされる。また、基台251のねじ穴261と拡張ユニット256のねじ穴262は、アセンブリされた状態で、x軸方向の同じ位置に形成されている。この基台251のねじ穴261と拡張ユニット256のねじ穴262には、ねじ240がロボット1により取り付けられる。図1に戻って、固定部10は、例えば床、壁、天井、移動可能な台車の上などに固定される。固定部10は、内部に、制御装置100破線にて図示を備える。制御装置100は、アーム部20、指部40及び指部40が把持するドライバー70を制御する。制御装置100の詳細は後述する。なお、制御装置100は、固定部10の内部ではなく、固定部10の外部に設けるようにしてもよい。アーム部20は、第1フレーム21、第2フレーム22、第3フレーム23、第4フレーム24および第5フレーム25から構成されている。第1フレーム21は、回転屈折軸を介して、固定部10に回転可能または屈折可能に接続されている。第2フレーム22は、回転屈折軸を介して、第1フレーム21および第3フレーム23に接続されている。第3フレーム23は、回転屈折軸を介して、第2フレーム22および第4フレーム24に接続されている。第4フレーム24は、回転屈折軸を介して、第3フレーム23および第5フレーム25に接続されている。第5フレーム25の一方端には、回転屈折軸を介して、第4フレーム24に接続されている。アーム部20は、制御装置100の制御によって、各フレーム21~25が各回転屈折軸を中心に複合的に回転または屈折し、動く。アーム部20の第5フレーム25の他方端他には、エンドエフェクターである指部40が設けられている。指部40は、直接的に、対象物を把持する。なお、指部40は、例えば、複数のフレームを有し、対象物を把持できる構造である。アーム部20の第5フレーム25と指部40の間には、力センサー30が介挿されている。力センサー30は、指部40に加わる力の各空間成分力成分というとトルクの各空間成分トルク成分というを検出する。力センサー30は、検出した指部40に加わる力成分とトルク成分を含む情報を制御装置100に出力する。ここでは、対象物としてねじ211とドライバー70を例示して説明する。撮像装置50は、ロボット1と同様に、床に対して水平に設置されている。撮像装置50は、例えばCCDChargeCoupledDeviceカメラである。撮像装置50は、ドライバー70の係合部に吸着されたねじ240を撮影し、撮影したアナログ値の画像データを制御装置100に出力する。画像表示装置60は、制御装置100が出力するロボット1の制御状態を示す信号に基づき、ロボット1の制御状態を表示する。また、画像表示装置60は、入力装置62から入力されたロボット1に対する指示を、制御装置100を介して表示する。入力装置62は、使用者が入力したロボット1に対する指示を制御装置100に出力する。入力装置62は、例えば、キーボード、マウスである。また、画像表示装置60をタッチパネルにすることで、画像表示装置60が入力装置62を兼ねるようにしてもよい。制御装置100は、ロボット1のアーム2、指部40を、入力装置62から入力された命令に基づき、後述するデータベース103に登録されているシナリオ、及びライブラリを用いて制御する。また、制御装置100は、入力された命令に基づくシナリオに従って、アーム部20に取り付けられているエンコーダーが出力する回転角度および速度を示す情報、力センサー30が出力する指部40に加わる力成分とトルク成分を含む情報、および撮像装置50が出力する画像データを用いて、未設定のパラメーターの値を取得する指示をロボット1に出力する。また、制御装置100は、ロボット1が取得したパラメーターの値をシナリオに組み込んで、パラメーターを組み込んだシナリオに基づき、ロボット1を制御する。図4は、本実施形態に係るアーム部20と力センサー30の概念図である。図4に示すように、アーム2のアーム部20は、回転部82、83及び85と、屈折部81、84及び86とを有している。そして、アーム2のアーム部20は、指部40との間に力センサー30を有している。屈折部81は、固定部10と第1フレーム21との間に設けられている。回転部82は、第1フレーム21と第2フレーム22との間に設けられている。回転部83は、第2フレーム22と第3フレーム23との間に設けられている。屈折部84は、第3フレーム23と第4フレーム24との間に設けられている。回転部85は、第4フレーム24と第5フレーム25との間に設けられている。屈折部86は、第5フレーム25のうち第4フレーム24が設けられた他方に設けられている。図2に示すように、アーム部20は、6自由度を有する6軸アームである。すなわち、アーム部20の先端の指部40は、これらの各軸の回転部と屈折部の動作により、移動する。このように、アーム部20が6軸アームであるため、互いに独立な6つの変数で制御することが可能であり、例えば、位置x、y、zの3つの変数成分、姿勢を表す角度α、β、γの3つの成分変数に対応して制御することができる。また、図4に示すように、回転部82、83及び85と、屈折部81、84及び86は、各々エンコーダー91~96を備えている。例えば、回転部82が備えるエンコーダー92は、回転角度、速度を検出し、検出した回転角度および速度を示す情報を制御装置100に出力する。以下、エンコーダー91~96を、エンコーダー90という。エンコーダー90は、例えば光学式エンコーダーであり、アブソリュート絶対値エンコーダーまたはインクリメンタル相対値エンコーダーである。図5は、本実施形態に係る制御装置100のブロック図である。図5に示すように、制御装置100は、命令取得部101、シナリオエディター102、データベース103、シナリオプレーヤー104、シミュレーター105、画像処理部106、センサー出力取得部107、アーム制御部108、および、駆動部109を備えている。命令取得部101は、ロボット1の操作者が入力装置62から入力した命令Mを取得し、取得した命令Mをシナリオエディター102と画像表示装置60に出力する。シナリオエディター102は、命令取得部101が取得した命令に基づき、編集する必要があるか否かを判別する。編集する必要がないと判別された場合、シナリオエディター102は、読み出した命令シナリオをシナリオプレーヤー104と画像表示装置60に出力する。編集する必要があると判別された場合、シナリオエディター102は、命令取得部101が取得した命令に基づき、データベース103のシナリオ部120に登録されているシナリオを読み出す。シナリオエディター102は、読み出したシナリオを入力された命令に応じて編集し、編集したシナリオをシミュレーター105に出力する。また、シナリオエディター102は、シミュレーター105が出力するシミュレーションした結果が正しく実行できると判別された場合、編集したシナリオをシナリオ部120に登録し、さらにそのシナリオに基づく命令をシナリオプレーヤー104に出力する。また、シナリオエディター102は、シミュレーター105が出力するシミュレーションした結果が正しく実行できないと判別された場合、正しく実行ができるようになるまでシナリオの編集を繰り返す。なお、シナリオエディター102は、シナリオ部120から読み出したシナリオ、または編集後のシナリオをシナリオプレーヤー104に出力するようにしてもよい。データベース103は、シナリオ部120と、ライブラリ部121、及びパラメーター部122から構成されている。シナリオ部120とライブラリ部121とには、ロボット1を操作する上で必要な操作に関する後述するシナリオ登録されている。なお、シナリオとは、ロボット1の操作者が入力した抽象的な命令をより具体的にした命令の下層の命令ルールサブシナリオと、そのルールを実行するための命令条件サブシナリオで構成されている。また、条件とは、このルールを実行する上で必要な値を取得したり、値を計算するなどのルールの下層の命令である。また、シナリオ部120には、例えば、一時的に使用するシナリオが登録され、ライブラリ部121には、標準的なシナリオが登録されている。パラメーター部122には、ロボット1の操作に必要なパラメーターの値が登録されている。パラメーターの値とは、例えば、指部40に把持させる対象物の大きさや、対象物が置かれている場所の位置、対象物を組み付ける場所の位置などである。シナリオプレーヤー104は、シナリオエディター102が出力する命令に基づき、データベース103のシナリオ部120に登録されているシナリオを読み出す。また、シナリオプレーヤー104は、シナリオエディター102が出力する命令に基づき、命令に未設定のパラメーターが含まれているか否かを判別する。なお、パラメーターとは、例えば、指部40に把持させる部品の大きさ、部品が置かれている位置など、ロボット1を制御する上で必要な数値データなどである。命令に未設定のパラメーターの値が含まれていると判別された場合、シナリオプレーヤー104は、シナリオ部120から読み出したシナリオに基づき、アーム制御部108に未設定のパラメーターの値を取得して、取得したパラメーターの値をライブラリ部121に登録する指示を出力する。また、シナリオプレーヤー104は、取得されたパラメーターの値をシナリオに組み込む、パラメーターの値を組み込んだシナリオに基づく命令を生成する。シナリオプレーヤー104は、生成した命令をアーム制御部108に出力する。命令に未設定のパラメーターの値が含まれていないと判別された場合、シナリオプレーヤー104は、シナリオに含まれるパラメーターの値をライブラリ部121から読み出し、読み出したパラメーターの値をシナリオに組み込む、パラメーターの値を組み込んだシナリオに基づく命令を生成する。シナリオプレーヤー104は、生成した命令をアーム制御部108に出力する。シミュレーター105は、シナリオエディター102が出力する編集されたシナリオが、ロボット1で実行可能かシミュレーションを行う。シミュレーター105は、シナリオエディター102が出力する編集されたシナリオの実行時、データベース103に記憶されているパラメーターやシナリオを読み出して用いる。シミュレーター105は、シナリオエディター102が出力する編集されたシナリオをシミュレーションした結果をシナリオエディター102に出力する。画像処理部106は、アーム制御部108の制御信号に基づき、撮像装置50が出力する画像データを取得し、取得した画像データをデジタルデータに変換する。画像取得部101は、アーム制御部108が出力する指示に基づき、変換した画像データから対象物を公知の手法で抽出し、抽出した対象物の大きさ、位置などを公知の手法で算出する。画像処理部106は、算出した対象物の大きさ、位置などをアーム制御部108に出力する。センサー出力取得部107には、エンコーダー90が出力する回転角度および速度を示す情報と、力センサー30が出力する指部40に加わる力成分とトルク成分を含むセンサー出力情報を取得し、取得したセンサー出力情報をアーム制御部108に出力する。アーム制御部108には、シナリオプレーヤー104が出力する命令M、画像処理部106が出力する画像データ、センサー出力取得部107が出力するセンサー出力情報が入力される。アーム制御部108は、シナリオプレーヤー104が出力するロボット1を制御するコマンドに基づき、ロボット1を制御する制御信号を生成し、生成した制御信号を駆動部109に出力する。また、アーム制御部108は、シナリオプレーヤー104が出力する命令Mに基づき、センサー出力取得部107が出力するセンサー出力情報を用いて、ロボット1に未設定のパラメーターを取得させる。アーム制御部108は、取得したパラメーターをデータベース103のライブラリ部121に登録してデータベース103を更新する。また、アーム制御部108は、シナリオプレーヤー104が出力する命令Mに基づき、撮像された画像データから、対象物のパラメーターを抽出し、抽出した対象物の位置や大きさを算出する指示を出力する。駆動部109は、アーム制御部108が出力する駆動信号に応じて、ロボット1のアーム部20を駆動する。次に、制御装置100によるアーム制御の手順を、図6~図8を用いて説明する。図6は、本実施形態に係る制御装置100によるアーム制御のフローチャートである。ステップS1制御装置100のアーム制御部108は、入力装置62から指示が入力されたか否か片別する。入力装置62から命令Mが入力された場合ステップS1;Yes、ステップS2に進む。入力装置62から命令Mが入力されていない場合ステップS1;No、指示が入力されるまでステップS1を繰り返す。ステップS1終了後、ステップS2に進む。ステップS2次に、命令取得部101は、入力装置62が出力する命令Mを取得し、取得した命令Mをシナリオエディター102を介し、シナリオプレーヤー104と、アーム制御部108に出力する。命令取得部101は、命令Mを画像表示装置60に表示する。ステップS2終了後、ステップS3に進む。ステップS3次に、シナリオプレーヤー104は、命令取得部101が出力する命令Mについて、後述するように解析処理を行う。シナリオプレーヤー104は、解析結果に基づき、ロボット1への命令M、ルールR及び条件C’を生成する。また、シナリオエディター104は、生成したロボット1へのコマンドをアーム制御部108に出力する。ステップS3終了後、ステップS4に進む。なお、本実施形態では、入力装置62から入力された命令を、命令Mとする。また、命令Mに対応するシナリオ部120に登録されているシナリオの内、命令Mの下層の命令をルールRとする。また、ルールRの下層に設定されている命令を、条件Cをする。例えば、入力装置62から、命令Mとして≪ねじを掴む≫が入力された場合、シナリオ部120には、ルールR1指部をねじが置かれている位置Nの近くに移動する、ルールR2指部をねじの幅より大きく開く、ルールR3指部をねじの長さの中心まで下げる、ルールR4指部をねじの幅まで閉じる、ルールR5指部を高さNまで上げるが設定されている。また、例えば、ルールR1指部をねじの近くに移動するには、条件C1《ねじが置かれている位置Nを取得を送信》、条件C2《指部を位置Nに移動を送信》が設定されている。また、命令Mを記号≪≫で表し、ルールRを記号で表し、条件Cを記号《》で表している。また、命令MにルールRが記述されていず、ルールのみが設定されている場合もある。例えば、入力された命令Mが≪ねじを取付け位置Nに移動する≫の場合、ルールRは設定されていず、条件C1《取付け位置Nを計算》、条件C2《指部を取付け位置Nに移動を送信》が設定されている。また、本実施形態では、データベース103のライブラリ部121に登録されているシナリオは、ルールベースであり、例えば、複数のルールRが記述されていて、各ルールに条件が設定されている。そして、これらのルールの最後に、例えば≪Objを掴む≫が記述されている。このため、シナリオプレーヤー103は、命令取得部101が出力する命令M1≪ねじを掴む≫に対応するシナリオをデータベースから探索する場合、ルールの最後を参照することで命令に対応するシナリオを見つけることができる。ステップS4アーム制御部108は、シナリオエディター104が出力するロボット1へのコマンド、画像処理部106が出力する画像データ、センサー出力取得部107が出力する力成分とトルク成分を示す情報を用いて、アーム2を制御する。次に、解析処理の手順を、図7と図8を用いて説明する。図7は、本実施形態に係る解析処理のフローチャートである。図8は、本実施形態に係る命令解析の処理のフローチャートである。また、以下では、入力装置62から、1つの命令が入力された場合について説明する。ステップS101まず、シナリオプレーヤー104は、命令取得部101が出力する命令Mに含まれるパラメーターを抽出する。なお、パラメーターとは、命令Mに含まれている処理に値を必要とするものであり、例えば、ロボット1に把持させる部品や、部品が置かれている場所、部品の取付け位置などである。ステップS101終了後、ステップS102に進む。ステップS102次に、シナリオプレーヤー104は、抽出したパラメーターの数を検出する。ステップS102終了後、ステップS103に進む。ステップS103次に、シナリオプレーヤー104は、パラメーターをカウントする定数Pを1に設定する。ステップS103終了後、ステップS104に進む。ステップS104次に、シナリオプレーヤー104は、入力された命令Mにパラメーターがあるか否かを判別する。命令Mにパラメーターがある場合ステップS104;Yes、ステップS105に進む。命令Mにパラメーターがない場合ステップS104;No、ステップS108の命令M解釈の処理に進む。ステップS105命令Mにパラメーターがある場合ステップS104;Yes、シナリオプレーヤー104は、そのパラメーターの値がデータベース103のパラメーター部122にすでに登録されているか否かを判別する。パラメーターの値がパラメーター部122に登録されていない場合ステップS105;Yes、ステップS106に進む。パラメーターの値がライブラリ部121にすでに登録されている場合ステップS105;No、ステップS107に進む。ステップS106次に、シナリオプレーヤー104は、パラメーターの値がパラメーター部122に登録されていない場合ステップS105;Yes、パラメーターの値が必要な場合に記述されているシナリオパラメーター取得命令を、ライブラリ部121から読み出す。次に、シナリオプレーヤー104は、読み出したパラメーター取得命令のロボットを制御するコマンド以下、ロボット制御コマンドという、例えばSendScanObjをアーム制御部108に出力する。なお、パラメーターの値が必要な場合に記述されているシナリオパラメーター取得命令とは、例えば、入力された命令が≪ねじを掴む≫の場合、ねじの大きさねじ頭部の大きさ、ねじの長さ、ねじが置かれている場所の座標などを取得するための指示である。次に、アーム制御部108は、撮像装置50が取得した画像データやアーム2が有するエンコーダー90の出力に基づき、知の手法を用いてパラメーターの値を算出する。アーム制御部108は、算出した拡張ユニット256のパラメーターの値を、パラメーター部122に登録して、データベース103を更新する。ステップS106終了後、ステップS107に進む。ステップS107次に、シナリオプレーヤー104は、パラメーターのカウント用の定数Pに1を加算してステップS104に戻る。例えば、入力された命令が≪ねじを掴む≫の場合、パラメーターはねじの1つのみである。このため、ステップS104~S107の処理は、1回のみ行う。ステップS108次に、シナリオプレーヤー104は、命令Mにパラメーターがないと判別された場合ステップS104;No、または、ステップS103~S107の処理が終了した場合、命令M解釈の処理を行う。次に、命令M解釈の処理について、図8を用いて説明する。ステップS201次に、シナリオプレーヤー104は、取得された命令MにルールRが設定されているか否かを判別する。命令MにルールRが設定されていると判別された場合ステップS201;Yes、ステップS202に進む。命令MにルールRが設定されていないと判別された場合ステップS201;No、ステップS206に進む。例えば、入力された命令が≪ねじを掴む≫の場合、5つのルールR1~R5を有している。5つのルールR1~R5は、例えば、ルールR1指部を位置Pにあるねじの近くの位置Nに移動する、ルールR2指部をねじのサイズWより大きく開く、ルールR3指部をねじの中心の高さまで下げる、ルールR4指部をねじのサイズWまで閉じる、ルールR5指部を位置Nまで上げるである。ステップS202次に、シナリオプレーヤー104は、ルールRのカウント用定数のCを1に設定する。ステップS202終了後、ステップS203に進む。ステップS203次に、シナリオプレーヤー104は、ルールR1とルールR1に設定されている全ての条件Cを、ライブラリ121部から読み出す。次に、シナリオプレーヤー104は、読み出したルールR1に条件Cが設定されているか否かを判別する。ルールRに条件Cが設定されていると判別された場合ステップS203;Yes、ステップS204に進む。ルールR1に未処理の条件Cがない又はルールR1に条件Cが設定されていないと判別された場合ステップS203;No、命令M解釈の処理を終了する。ステップS204次に、シナリオプレーヤー104は、ルールR1に条件C1が設定されていると判別された場合ステップS203;Yes、命令MのルールR1の解釈の処理を行う。ルールR1の解釈処理とは、例えば、以下の一連の処理である。シナリオプレーヤー104は、ルールR1に設定されている条件C1に、パラメーター部122に登録されているパラメーター値を組み込んでロボット制御コマンドを生成する。または、シナリオプレーヤー104が、パラメーターの値を算出してロボット制御コマンドを生成する。そして、シナリオプレーヤー104は、生成したロボット制御コマンドをアーム制御部108に出力して、条件C1に記述されている命令を実行する。具体的には、例えば、ルールR1指部を位置Pにあるねじの近くの位置Nに移動するの場合、条件C1として《ねじの上の近くの位置Nを計算》が設定されている。シナリオプレーヤー104は、この条件C1を行うために必要な、位置Nをパラメーター部122から読み出してねじの上の近くの位置Nを算出する。なお、近くの位置とは、例えば、z軸方向の高さ方向の座標値が10であると、ライブラリ部122に予め定義して登録しておく。ステップS204終了後、ステップS205に進む。ステップS205次に、シナリオプレーヤー104は、ルールRのカウント用の定数Cに1を加算してステップS203に戻る。ルールR1に複数の条件が設定されている場合、全ての条件の命令を実施するまでステップS203~S205を再帰的に繰り返す。また、命令Mに複数のルールRが設定されている場合、ステップS202~S206を、全てのルールRの処理が終了するまで、再帰的に繰り返す。ステップS206次に、シナリオプレーヤー104は、命令MにルールRが設定されていないと判別された場合ステップS201;No、命令Mの解釈は行わずに、命令Mをアーム制御部108に出力する。すなわち、命令MにルールRが設定されていない場合、シナリオプレーヤー104は、入力された命令Mを制御装置100にそのまま送信する。一方、命令MにルールRが設定されている場合、シナリオプレーヤー104は、各ルールに設定されている条件Cを実行し、命令Mの各ルールRを解釈して実行する。各ルールRに、条件が設定されている場合、例えば、ねじの大きさを取得、ねじが置かれている位置を取得などがシナリオプレーヤーで演算すべき命令なのか、アーム制御部108に出力する命令なのかを判別することで解釈する。そして、シナリオプレーヤー104は、出力する命令と判別された命令からロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。または、シナリオプレーヤー104は、ライブラリ部121の値が更新されるか、アーム制御部108から値がアーム制御部108から返された後、返された値を命令M、ルールR及び条件Cに組み込み、これらの値が組み込まれた命令M、ルールR及び条件Cからロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。以上のように、操作者は、数値を設定したり、動作を全て記述した命令ではない曖昧な命令Mを入力装置62から入力する。シナリオプレーヤー104は、入力された命令Mに未設定のパラメーターがあればアーム制御部108を介してアーム2や撮像装置50を制御して、未設定のパラメーター値を取得するアーム制御部108が、データベース103のライブラリ部121に取得したパラメーター値を登録する。そして、シナリオプレーヤー104は、入力された命令Mに対応するデータベース103に登録されているシナリオを読み出す。そして、シナリオプレーヤー104は、取得されたパラメーターを命令、ルール及び条件に組み込み、パラメーターが組み込まれた命令、ルール及び条件のロボット制御コマンドを生成することで、アーム制御部108が実行可能な命令を生成している。そして、シナリオプレーヤー104は、生成したロボット制御コマンドをアーム制御部108に出力し、アーム制御部108が入力されたこのロボット制御コマンドによりロボット1を制御する。この結果、操作者は、抽象的な命令を入力装置62から入力した場合でも、制御装置100はロボット1に命令を実行させることができる。また、操作者は、ロボット1の操作に関する全ての命令や、操作に必要な全てのパラメーター値を入力せずに、簡単な命令を入力することでロボット1に操作を行わせることが可能になる。次に、制御装置100による具体的な制御の一例を説明する。図9は、本実施形態に係る拡張ユニットと基部に組み合わせる手順の一例のフローチャートである。以下は、接続ユニットにドライバーでネジをつける例である。ステップS401まず、操作者は、入力装置62から命令≪拡張ユニットを掴む≫、≪可動載置台に移動する≫、≪拡張ユニットを可動載置台に置く≫を入力する。なお、記号≪≫は、入力装置62に入力された命令文字列を表す。なお、掴む対象物をObj、掴んだ対象物の移動先をPosと定義してある場合、入力する命令は≪Objを掴む≫、≪Posに移動する≫、≪ObjをPosに置く≫でもよい。この場合、データベース103のライブラリ部121には、Objが拡張ユニットであると設定され登録され、Posが可動載置台であると設定されて登録されているようにしてもよい。ステップS401終了後、ステップS402に進む。ステップS402次に、命令取得部101は、入力装置62が出力する命令M1≪拡張ユニットを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪拡張ユニットを可動載置台に置く≫を取得し、取得した命令M1≪拡張ユニットを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪拡張ユニットを可動載置台に置く≫をシナリオエディター102、および画像表示装置60に出力する。本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令取得部101が出力する命令≪拡張ユニットを掴む≫、≪可動載置台に移動する≫、≪拡張ユニットを可動載置台に置く≫を、そのままシナリオプレーヤー104に出力する。ステップS402終了後、ステップS403に進む。ステップS403次に、シナリオプレーヤー104とアーム制御部108は、命令M1≪拡張ユニットを掴む≫処理を行う。ステップS403終了後、ステップS404に進む。ステップS404次に、シナリオプレーヤー104とアーム制御部108は、命令M2≪可動載置台に移動する≫処理を行う。ステップS404終了後、ステップS405に進む。ステップS405次に、シナリオプレーヤー104とアーム制御部108は、命令M3≪拡張ユニットを可動載置台に置く≫処理を行う。まず、ステップS403の命令M1≪拡張ユニットを掴む≫処理について、フローチャートを用いて説明する。図10は、本実施形態に係る命令≪拡張ユニットObjを掴む≫処理の一例のフローチャートである。ステップS501シナリオプレーヤー104は、命令M1≪拡張ユニットを掴む≫に未設定のパラメーターがあるか否かを判別する。この場合、命令M1≪拡張ユニットを掴む≫に未設定のパラメーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命令を、ライブラリ部121から読み出す。ステップS501終了後、ステップS502に進む。ステップS502次に、シナリオプレーヤー104は、拡張ユニットのサイズS横幅W、高さhと位置Pを読み出すパラメーター取得命令例えば、SendScan拡張ユニットをアーム制御部108に出力する。この場合、サイズSは、拡張ユニット256の直径と高さであり、拡張ユニット256が置かれている位置である。なお、すでにデータベース103に拡張ユニットのサイズS横幅W、高さhと位置Pが登録されている場合、シナリオプレーヤー104は、データベース103のライブラリ部121に登録されている拡張ユニットのサイズS横幅W、高さhと位置Pを読み出す。ステップS502終了後、ステップS503に進む。ステップS503次に、アーム制御部108は、シナリオプレーヤー104が出力するパラメーター取得命令に基づき、撮像装置50が取得した画像データから公知の手法を用いて、拡張ユニット256のサイズS横幅W、高さhと位置Pを算出する。また、アーム制御部108は、例えば、拡張ユニット256のサイズS横幅W、高さhと位置Pを算出するために、撮像装置50の角度や位置を制御することで、拡張ユニット256を撮像する。アーム制御部108は、算出した拡張ユニット256のサイズS横幅W、高さhと位置Pを、データベース103のライブラリ部121に登録して、データベース103のライブラリ部121を更新する。ステップS503終了後、ステップS504に進む。ステップS504次に、シナリオプレーヤー104は、命令M1≪拡張ユニットを掴む≫のシナリオであるルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出す。ステップS504終了後、ステップS505に進む。この場合、命令M1には、以下の5つのルールR1~R5が設定されている。ルールR1指部を位置Pにある拡張ユニットの近くの位置Nに移動するルールR2指部を拡張ユニットのサイズWより大きく開くルールR3指部を拡張ユニットの中心の高さまで下げるルールR4指部を拡張ユニットのサイズWまで閉じるルールR5指部を位置Nまで上げるステップS505次に、シナリオプレーヤー104は、ライブラリ部121に登録されているルールR1指部を位置Pにある拡張ユニットの近くの位置Nに移動するに条件が設定されているか否かを判別する。この場合、ルールR1指部を位置Pにある拡張ユニットの近くの位置Nに移動するには、《拡張ユニットの上の近くの位置Nを計算》条件C1、《位置Nに指部を移動を送信》条件C2が設定されている。ステップS505終了後、ステップS506に進む。ステップS506次に、シナリオプレーヤー104は、条件C1《拡張ユニットの上の近くの位置Nを計算》に基づき、パラメーター部122に登録されている拡張ユニット256のサイズS横幅W、高さhと位置Pを読み出す。次に、シナリオプレーヤー104は、読み出した拡張ユニット256が置かれている位置PObj.Pを用いて、拡張ユニットの近くの位置Nを算出する。拡張ユニットの近くの位置N1は、例えばN=Obj.P0,0,10により算出する。ステップS506終了後、ステップS507に進む。ステップS507次に、シナリオプレーヤー104は、読み出したルールR1の条件C2《位置Nに指部を移動》に算出した拡張ユニットの上の近くの位置Nを組み込み、条件C2’を生成する。次に、シナリオプレーヤー104は、生成した条件C2’《位置Nに指部を移動》に基づき、ロボット制御コマンド位置Nに指部を移動SendMoveHandNを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。なお、条件C2《位置Nに指部を移動》には、パラメーターの値が組み込まれていないロボット制御コマンドSendMoveHandNが、予めライブラリ部122に登録されている。このため、シナリオプレーヤー104は、このロボット制御コマンドSendMoveHandNに、パラメーターの値Nを組み込むことで、ロボット制御コマンドを生成する。ステップS507終了後、ステップS508に進む。ステップS508次に、アーム制御部108は、シナリオプレーヤー104が出力するロボット制御コマンド位置Nに指部を移動に基づいて、アーム制御信号を生成する。次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて、生成したアーム制御信号により、指部40を拡張ユニット256が置かれている位置Pの近くの位置Nまで移動させる。ステップS508終了後、ステップS509に進む。ステップS509次に、シナリオエディター104は、ライブラリ部122に登録されているルールR2指部を拡張ユニットのサイズWより大きく開くに、条件が設定されているか否かを判別する。この場合、ルールR2指部を拡張ユニットのサイズWより大きく開くには、《拡張ユニットのサイズWより10大きいサイズWLの計算上》条件C1、《指部をWLだけ開くを送信》条件C2が設定されている。ステップS509終了後、ステップS510に進む。ステップS510次に、シナリオエディター104は、条件C1《拡張ユニットのサイズWより10大きいサイズWLの計算上》に基づき、データベース103のライブラリ部121に登録されている拡張ユニット256のサイズS横幅Wを読み出す。次に、シナリオエディター104は、読み出した拡張ユニット256のサイズS横幅Wに基づき、拡張ユニットのサイズWObj.Wに対して、10大きい幅WL=Obj.W×1.1を、指部を開く幅WLとして算出する。ステップS510終了後、ステップS511に進む。ステップS511次に、シナリオプレーヤー104は、読み出したルールR2の条件C2《指部をWLだけ開くを送信》に算出した指部を開く幅WLを組み込み、条件C2’を生成する。次に、シナリオプレーヤー104は、生成した条件C2’《指部をWLだけ開く》に基づきロボット制御コマンド指部をWLだけ開くSendOpenHandSLを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS511終了後、ステップS512に進む。ステップS512次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コマンド指部をWLだけ開く基づいて、アーム制御信号を生成する。次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256のサイズSより指部40の2本の指の間隔を広げるように、指部40を制御する。ステップS512終了後、ステップS513に進む。ステップS513次に、シナリオエディター104は、ライブラリ部122に登録されているルールR3指部を拡張ユニットの中心の高さまで下げるに、条件が設定されているか否かを判別する。この場合、ルールR3指部を拡張ユニットのサイズWより大きく開くには、《拡張ユニットの中心の高さCHを計算》条件C1、《指部を高さCHに移動を送信》条件C2が設定されている。ステップS513終了後、ステップS514に進む。ステップS514次に、シナリオエディター104は、条件C1《拡張ユニットの中心の高さCHを計算》に基づき、データベース103のライブラリ部121に登録されている拡張ユニット256のサイズS高さhを読み出す。次に、シナリオエディター104は、条件C1《拡張ユニットの中心の高さCHを計算》に基づき、読み出した拡張ユニットの高さhを用いて中心の高さCHを計算する例えば、CHObjPzObjShight2。ステップS514終了後、ステップS515に進む。ステップS515次に、シナリオプレーヤー104は、読み出したルールR3の条件C2《指部を高さCHに移動を送信》に算出した中心の高さCHを組み込み、条件C2’を生成する。次に、シナリオプレーヤー104は、生成した条件C2’《指部を高さCHに移動》に基づきロボット制御コマンド指部を高さCHに移動SendMoveHandを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS515終了後、ステップS516に進む。ステップS516次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマンド指部を高さCHに移動基づいて、アーム制御信号を生成する。次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256の高さhの中心の高さCHに指部40を移動させるように制御する。ステップS516終了後、ステップS517に進む。ステップS517次に、シナリオエディター104は、ライブラリ部122に登録されているルールR4指部を拡張ユニットのサイズWまで閉じるに、条件が設定されているか否かを判別する。この場合、ルールR4指部を拡張ユニットのサイズWまで閉じるには、条件が設定されていない。ステップS517終了後、ステップS518に進む。ステップS518次に、シナリオエディター104は、ルールR4指部を拡張ユニットのサイズWまで閉じるに基づき、ロボット制御コマンド指部を拡張ユニットのサイズWまで閉じるendCloseHandObjSを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS518終了後、ステップS519に進む。ステップS519次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コマンド指部を拡張ユニットのサイズWまで閉じるに基づいて、アーム制御信号を生成する。次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256のサイズSまで指部40の2本の指を閉じるように制御する。これにより、指部40は、拡張ユニットである拡張ユニット256の把持を完了する。ステップS519終了後、ステップS520に進む。ステップS520次に、シナリオエディター104は、ライブラリ部122に登録されているルールR5指部を位置Nまで上げるに、条件が設定されているか否かを判別する。この場合、ルールR5指部を位置Nまで上げるには、条件が設定されていない。ステップS520終了後、ステップS521に進む。ステップS521次に、シナリオエディター104は、ルールR5指部を位置Nまで上げるに基づき、ロボット制御コマンド指部を位置Nまで上げるSendMoveHandNを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS521終了後、ステップS522に進む。ステップS522次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマンド指部を位置Nまで上げるに基づいて、アーム制御信号を生成する。次に、アーム制御部108は、センサー出力取得部107が出力する指部40に加わる力成分とトルク成分を含む情報に基づき、指部40が拡張ユニット256を把持したことを検出する。次に、アーム制御部108は、生成したアーム制御信号または、ロボット制御コマンドSendMoveHandNにより、把持した拡張ユニット256を、ライブラリ部121から読み出した高さNまで、拡張ユニット256を把持したまま位置Nまで持ち上げるように制御する。以上で、命令M1≪拡張ユニットを掴む≫に対する処理を終了する。次に、ステップS404の命令M2≪可動載置台Posに移動する≫の処理について、図11のフローチャートを用いて説明する。図11は、本実施形態に係る命令≪可動載置台に移動する≫処理の一例のフローチャートである。ステップS601シナリオプレーヤー104は、命令M2≪可動載置台に移動する≫に未設定のパラメーターがあるか否かを判別する。この場合、命令M2≪可動載置台に移動する≫に未設定のパラメーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命令を、ライブラリ部121から読み出す。ステップS601終了後、ステップS602に進む。ステップS602次に、シナリオプレーヤー104は、アーム制御部108に可動載置台の位置Pを読み出すロボット制御コマンド例えば、SendScanObjをアーム制御部108に出力する。なお、すでにデータベース103に可動載置台の位置Pが登録されている場合、シナリオプレーヤー104は、データベース103のライブラリ部121に登録されている可動載置台の位置Pを読み出す。ステップS602終了後、ステップS603に進む。ステップS603アーム制御部108は、撮像装置50が取得した画像データから公知の手法を用いて、作業台である可動載置台210の位置Pを算出する。また、アーム制御部108は、例えば、可動載置台210の位置Pを算出するために、撮像装置50の角度や位置を制御することで、拡張ユニット256を撮像する。アーム制御部108は、算出した可動載置台210の位置Pを、データベース103のライブラリ部121に登録して、データベース103のライブラリ部121を更新する。ステップS603終了後、ステップS604に進む。ステップS604次に、シナリオプレーヤー104は、命令M2≪可動載置台に移動する≫のシナリオであるルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出す。ステップS604終了後、ステップS605に進む。この場合、命令M2には、ルールR1指部を作業台の位置Nに移動するが設定されている。ステップS605次に、シナリオプレーヤー104は、ライブラリ部121に登録されているルールR1指部を作業台の位置Nに移動するに、条件が設定されているか否かを判別する。この場合、ルールR1指部を作業台の位置Nに移動するには、条件が設定されていない。ステップS605終了後、ステップS606に進む。ステップS606次に、シナリオエディター104は、ルールR1指部を作業台の位置Nに移動するに基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS606終了後、ステップS607に進む。ステップS607次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマンド指部を作業台の位置Nに移動するに基づいて、アーム制御信号を生成する。次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて、生成したアーム制御信号により、拡張ユニット256を把持している指部40を可動載置台210の位置まで移動させる。次に、ステップS405の命令M3≪ねじObjを可動載置台Posに置く≫の処理について、図12のフローチャートを用いて説明する。図12は、本実施形態に係る命令≪ねじを可動載置台に置く≫処理の一例のフローチャートである。ステップS701シナリオプレーヤー104は、命令M3≪ねじを可動載置台に置く≫に未設定のパラメーターがあるか否かを判別する。この場合、命令M3≪ねじを可動載置台に置く≫に未設定のパラメーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命令を、ライブラリ部121から読み出す。ステップS701終了後、ステップS702に進む。ステップS702次に、シナリオプレーヤー104は、アーム制御部108に可動載置台210の位置Pを読み出すロボット制御コマンド例えば、SendScanObjをアーム制御部108に出力する。この場合、可動載置台210の位置Pは、例えば、拡張ユニット256の面258と組み合わされる可動載置台210の上に置かれている基部251の面253の中心点である。なお、すでにデータベース103に可動載置台の位置Pが登録されている場合、シナリオプレーヤー104は、データベース103のライブラリ部121に登録されている可動載置台の位置Pを読み出す。ステップS702終了後、ステップS703に進む。ステップS703アーム制御部108は、撮像装置50が取得した画像データから公知の手法を用いて、基部251の面253の中心点の位置Pを算出する。また、アーム制御部108は、例えば、基部251の面253の中心点の位置Pを算出するために、撮像装置50の角度や位置を制御することで、拡張ユニット256を撮像する。アーム制御部108は、算出した可動載置台210の位置Pを、データベース103のライブラリ部121に登録して、データベース103のライブラリ部121を更新する。ステップS703終了後、ステップS704に進む。ステップS704次に、シナリオプレーヤー104は、命令M3≪ねじを可動載置台に置く≫のシナリオであるルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出す。ステップS704終了後、ステップS705に進む。この場合、命令M3には、ルールR1拡張ユニットを基部の位置Nに置く、ルールR2指部をねじのサイズWより大きく開くが設定されている。ステップS705次に、シナリオプレーヤー104は、ライブラリ部122に登録されているルールR1拡張ユニットを基部の位置Nに置くに、条件が設定されているか否かを判別する。この場合、ルールR1拡張ユニットを基部の位置Nに置くには、条件が設定されていない。ステップS705終了後、ステップS706に進む。ステップS706次に、シナリオエディター104は、ルールR1拡張ユニットを基部の位置Nに置くに基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS706終了後、ステップS707に進む。ステップS707次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマンド拡張ユニットを基部の位置Nに置くに基づいて、アーム制御信号を生成する。次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて、生成したアーム制御信号により、拡張ユニット256を把持している指部40を基部251に置かせる。ステップS707終了後、ステップS708に進む。ステップS708次に、シナリオエディター104は、ライブラリ部122に登録されているルールR2指部をねじのサイズWより大きく開くに、条件が設定されているか否かを判別する。この場合、ルールR2指部をねじのサイズWより大きく開くには、《ねじのサイズWより10大きいサイズWLの計算上》条件C1、《指部をWLだけ開くを送信》条件C2が設定されている。ステップS708終了後、ステップS709に進む。ステップS709次に、シナリオエディター104は、条件C1《ねじのサイズWより10大きいサイズWLの計算上》に基づき、データベース103のライブラリ部121に登録されている拡張ユニット256のサイズS横幅Wを読み出す。次に、シナリオエディター104は、読み出した拡張ユニット256のサイズS横幅Wに基づき、ねじのサイズWObj.Wに対して、10大きい幅WL=Obj.W×1.1を、指部を開く幅WLとして算出する。ステップS709終了後、ステップS710に進む。ステップS710次に、シナリオプレーヤー104は、読み出したルールR2の条件C2《指部をWLだけ開くを送信》に算出した指部を開く幅WLを組み込み、条件C2’を生成する。次に、シナリオプレーヤー104は、生成した条件C2’《指部をWLだけ開く》に基づき、ロボット制御コマンド指部をWLだけ開くSendOpenHandSLを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。ステップS710終了後、ステップS711に進む。ステップS711次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コマンド指部をWLだけ開く基づいて、アーム制御信号を生成する。次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256のサイズSより指部40の2本の指の間隔を広げるように、指部40を制御する。これにより、基部251の上に、拡張ユニット261が組み合わされる。次に、組み合わされた基部251と拡張ユニット256にねじ240を置く処理の概略を説明する。図13は、本実施形態に係る基部251と拡張ユニット256にねじ240を置く処理の手順の一例のフローチャートである。ステップS801まず、操作者は、入力装置62から命令≪ねじを掴む≫、≪可動載置台に移動する≫、≪ねじを可動載置台に置く≫を入力する。ステップS801終了後、ステップS802に進む。ステップS802次に、命令取得部101は、入力装置62が出力する命令M1≪ねじを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪ねじを可動載置台に置く≫を取得し、取得した命令M1≪ねじを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪ねじを可動載置台に置く≫をシナリオエディター102、および画像表示装置60に出力する。本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令取得部101が出力する命令M1≪ねじを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪ねじを可動載置台に置く≫を、そのままシナリオプレーヤー104に出力する。ステップS802終了後、ステップS803に進む。ステップS803次に、シナリオプレーヤー104とアーム制御部108は、≪ねじを掴む≫の処理を、例えば、上述したステップS501~S522と同様に行う。ステップS803終了後、ステップS804に進む。ステップS804次に、シナリオプレーヤー104とアーム制御部108は、≪可動載置台に移動する≫の処理を、例えば、上述したステップS601~S607と同様に行う。ステップS804終了後、ステップS805に進む。ステップS805次に、シナリオプレーヤー104とアーム制御部108は、≪ねじを可動載置台に置く≫の処理を、上述したステップS701~S711と同様に行う。以上の制御により、指部40に把持されているねじ240は、拡張ユニット256のねじ締めを行う位置に置かれる。次に、組み合わされた基部251と拡張ユニット256にねじ締めを行う処理の概略を説明する。図14は、本実施形態に係る基部251と拡張ユニット256にねじ締めを行う処理の手順の一例のフローチャートである。ステップS851次に、操作者は、入力装置62から命令≪ドライバーを掴む≫、≪拡張ユニットのねじ締め位置に移動する≫、≪ドライバーを縦にする≫、≪ドライバーを回す≫と入力する。ステップS851終了後、ステップS852に進む。ステップS852次に、命令取得部101は、入力装置62が出力する命令M1≪ドライバーを掴む≫、命令M2≪拡張ユニットのねじ締め位置に移動する≫、命令M3≪ドライバーを縦にする≫、命令M4≪ドライバーを回す≫を取得する。命令取得部101は、取得した命令M1≪ドライバーを掴む≫、命令M2≪拡張ユニットのねじ締め位置に移動する≫、命令M3≪ドライバーを縦にする≫、命令M4≪ドライバーを回す≫をシナリオエディター102、および画像表示装置60に出力する。本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令取得部101が出力する命令M1≪ドライバーを掴む≫、命令M2≪拡張ユニットのねじ締め位置に移動する≫、命令M3≪ドライバーを縦にする≫、命令M4≪ドライバーを回す≫を、そのままシナリオプレーヤー104に出力する。ステップS852終了後、ステップS853に進む。ステップS853シナリオプレーヤー104とアーム制御部108は、命令M1≪ドライバーを掴む≫の処理を、例えば、上述したステップS501~S522と同様に行う。この処理により、指部40にドライバーを掴ませる。ステップS853終了後、ステップS854に進む。ステップS854次に、シナリオプレーヤー104とアーム制御部108は、≪拡張ユニットのねじ締め位置に移動する≫処理を、例えば、上述したステップS601~S607と同様に行う。この処理により、指部40に把持されたドライバー70の先端の嵌合部を拡張ユニット256のねじ締め位置に移動させる。ステップS854終了後、ステップS855に進む。ステップS855次に、シナリオプレーヤー104とアーム制御部108は、≪ドライバーを縦にする≫処理を行い、指部40に把持されているドライバー70を縦にさせる。ステップS855終了後、ステップS856に進む。ステップS856次に、シナリオプレーヤー104とアーム制御部108は、≪ドライバーを回す≫処理を行い、指部40に把持されているドライバー70を回し、拡張ユニットのねじ締め部にねじ240を締め付けさせる。なお、アーム制御部108は、センサー出力取得部107が出力する指部40に加わる力成分とトルク成分を含む情報に基づき、指部40がねじ締めを完了したことを検出する。以上のように、操作者は、入力装置62から、≪Objを掴む≫、≪Posに移動する≫、≪ObjをPosに置く≫のような指示を入力する。そして、制御装置100は、指示を、データベース103に記憶されているシナリオとライブラリに基づき、ロボット1を制御するために必要な位置情報、部品等の大きさ等を設定する。さらに、制御装置100は、ロボット1に対する指示された内容をシナリオに基づき、ロボット1が実行可能なアーム制御信号またはロボット制御コマンドを生成し、生成したアーム制御信号またはロボット制御コマンドによりロボット1を制御する。この結果、操作者は、入力装置62から、≪Objを掴む≫、≪Posに移動する≫、≪ObjをPosに置く≫のような指示を入力するのみで、制御装置100がデータベース103に記憶されているシナリオとライブラリに基づいて、ロボット1に組み立てを行わせることができる。すなわち、従来技術では、ロボット1に拡張ユニットを掴ませるためには、上述したように、ステップS501~S519で行う操作に関するコマンドを操作者がすべて入力する必要があった。一方、本実施形態によれば、制御装置100が、入力された指示をデータベース103に記憶されているシナリオとライブラリに基づいて解釈するようにしたので、操作者は、曖昧または不定パラメーターの入った抽象的な指示シナリオ命令でロボット1を操作することができる。なお、本実施形態では、Objの判別を、データベース103のシナリオ部120またはライブラリ部121に記憶されているライブラリを読み出して行う例を説明したが、例えば、撮像装置50が撮像した画像データも用いて判別するようにしてもよい。この場合、例えば、アーム制御部108は、拡張ユニット256が可動載置台210に置かれているか否かを画像データから判別する。そして、拡張ユニット256が置かれていないと判別された場合、アーム制御部108は、拡張ユニット256が可動載置台210に置かれていないことを示す情報をシナリオプレーヤー104に出力するようにしてもよい。そして、シナリオプレーヤー104は、アーム制御部108が出力する拡張ユニット256が可動載置台210に置かれていないことを示す情報に基づき、Objを拡張ユニット256と解釈するようにしてもよい。また、本実施形態では、シナリオエディター102が、入力された命令を編集しない例を説明した。以下に、シナリオエディター102が、入力された命令を編集する例を説明する。入力装置62から命令が入力された場合、シナリオエディター102は、命令取得部101が出力する命令に対応するシナリオをデータベースのライブラリ部121から読み出す。シナリオエディター102は読み出したシナリオを画像表示装置60に表示させる。操作者は、画像表示装置60に表示されたシナリオが、操作者が行いたい操作と一致しているか確認し、異なっている箇所があれば、画像表示装置60と入力装置62を用いて、シナリオの編集を行う。シナリオの編集では、シナリオエディター102で、シナリオを構成しているルールの追加、編集、及び削除をメニューで指定して行うことができる。ルールの編集では、ルールの名前即ち結論と、各条件をテキスト編集する。この編集では、例えば、既に入力済みの全てのルールの結論と条件の一覧からドロップダウンリストで選択することもできる。シナリオエディター102は、編集されたシナリオをシミュレーター105に出力する。シミュレーター105は、シナリオエディター102が出力する編集されたシナリオに基づき、ロボット1が適正に動作するか判別し、判別結果をシナリオエディター102に出力する。シナリオエディター102は、シミュレーター105が出力する判定結果を画像表示装置60に出力する。または、シミュレーター105は、シナリオエディター102が出力する編集されたシナリオに基づき、例えば、3D動画データを生成し、生成した3D動画データを画像表示装置60に表示するようにしてもよい。このシミュレーション結果を、画像表示装置60上で視覚的に確認できるため、ロボット1の操作者は、入力したり編集した命令が、エラー無く、または、操作したいと考えている通りに動作するかを、実際にロボット1を動作させる前に確認することができる。[第2実施形態]第1実施形態では、図5に示したように、制御装置100が、入力された命令の解釈を行って、ロボット1を制御する例を説明した。第2実施形態は、命令解釈装置が、入力された命令を解釈し、解釈した命令を制御装置に出力する。そして、制御装置は、入力された命令に基づきロボットを制御する。図15は、本実施形態に係る命令解釈装置、制御装置、データベースの構成の一例を説明する図である。図15に示すように、ロボットシステムは、命令解析装置300は、命令取得部301、シナリオエディター302、シナリオプレーヤー304、及びシミュレーター305を備えている。命令取得部301、シナリオエディター302、シナリオプレーヤー304、シミュレーター305の機能は、第1実施形態の命令取得部101、シナリオエディター102、シナリオプレーヤー104、及びシミュレーター105と同じである。データベース310は、シナリオ部311、ライブラリ部312、及びパラメーター部313を備えている。シナリオ部311、ライブラリ部312、及びパラメーター部313は、それぞれ第1実施形態と同様のデータが登録されている。制御装置100aは、画像処理部106a、センサー出力取得部107a、アーム制御部108a、駆動部109aを備えている。画像処理部106a、センサー出力取得部107a、アーム制御部108a、駆動部109aの機能は、第1実施形態の画像処理部106、センサー出力取得部107、アーム制御部108、駆動部109と同様である。図15に示したロボットシステムは、従来の構成に、命令解釈装置300とデータベース310を加えることで構成されている。命令解釈装置300は、例えばPCパーソナルコンピューターで構成するようにしてもよい。このため、従来のロボットシステムにPCとデータベース310を追加するだけで、簡単に且つローコストで構成することができる。なお、本実施形態では、命令解釈装置300とデータベース310を別々に構成する例を説明したが、データベース310は、命令解釈装置300が備えるようにしてもよい。"