(57)【特許請求の範囲】
【請求項１】
ロボットを制御するロボット制御装置であって、
入力装置から入力されたシナリオを取得する命令取得部と、
前記シナリオを実行するルールまたは条件であるサブシナリオと前記シナリオとが対応付けられて登録されているデータベースと、
前記シナリオに対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成部と、を備え、
前記制御コマンド生成部は、前記命令取得部が取得したシナリオを実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とするロボット制御装置。
【請求項２】
前記制御コマンド生成部は、前記取得された命令に未取得の要素がある場合、前記ロボットが取得した要素を前記データベースの要素に登録し、前記登録された要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記制御コマンド生成部は、前記サブシナリオに未取得の要素がない場合、前記データベースから前記要素を読み出し、前記データベースから読み出した要素を前記サブシナリオに組み込んで前記ロボットを制御するコマンドを生成することを特徴とする請求項１または請求項２に記載のロボット制御装置。
【請求項４】
前記制御コマンド生成部は、前記サブシナリオに前記要素を算出する命令がある場合、
前記ロボットに前記要素を算出させる命令を前記データベースから読み出した前記サブシナリオから抽出して、該サブシナリオから抽出した命令により前記要素を算出することを特徴とする請求項１から請求項３のいずれか１項に記載のロボット制御装置。
【請求項５】
前記制御コマンド生成部は、前記命令取得部が取得したシナリオに対応する要素を含むサブシナリオを前記データベースから読み出し、読み出した要素を含むサブシナリオを編集するコマンド編集部と、前記コマンド編集部が編集した要素を含むサブシナリオを前記ロボットに対して仮想的に動作させ、前記ロボットの動作が適正か否かを判別するシミュレーター部と、を備え、
前記制御コマンド生成部は、前記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を含むサブシナリオに基づき、前記ロボットを制御する制御コマンドを生成することを特徴とする請求項１から請求項４のいずれか１項に記載のロボット制御装置。
【請求項６】
前記シナリオは、前記命令と前記要素とルールベースの前記サブシナリオとから構成され、
前記制御コマンド生成部は、前記サブシナリオに含まれている前記要素を探索して、前記取得された命令に対応する前記サブシナリオを読み出すことを特徴とする請求項１から請求項５のいずれか１項に記載のロボット制御装置。
【請求項７】
ロボットを制御するロボット制御方法であって、
命令取得部が入力装置から入力されたシナリオを取得する命令取得工程と、
前記シナリオを実行するルールまたは条件であるサブシナリオと前記シナリオとをデータベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成工程と、を含み、
前記制御コマンド生成工程は、前記命令取得工程が取得したシナリオを実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成することを特徴とするロボット制御方法。
【請求項８】
制御コマンドによりロボット制御の処理をコンピューターに実行させるためのプログラムであり、
入力装置から入力されたシナリオを取得する命令取得手順と、
前記命令取得手順が取得したシナリオを実行するのに必要な要素に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボットが取得した要素を、データベースから読み出した前記シナリオを実行するルールまたは条件であるサブシナリオに組み込んで前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と、をコンピューターに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、ロボット制御方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、製造現場等では、スカラロボットや多軸ロボット等が製品の組み立てや検査等に
用いられている。製品の組み立てや検査を行うときに物体を運搬する場合、ロボットは、
物体を吸着したり、アームにより把持したりする。このように、ロボットに操作を行わせ
るためには、物体の大きさ、物体が置かれている位置、物体の搬送先の位置などを予め計
測しておき、計測した値を組み込んだ操作命令をロボットに送信する必要がある。また、
操作命令は、１つ１つの手順を指示する命令の必要がある。
【０００３】
ロボットの操作者がロボットを操作するための命令を全て記述するには、大労力や知識
が必要である。このため、特許文献１に記載の発明では、ロボットに対して、「こっち」
、「あっち」、または「そっち」などの方向を表す指示を入力する。ロボットは、入力さ
れた指示を、ロボットが移動している速度、方向に基づいて、対面視点、鳥瞰図視点また
は共有視点のいずれかのユーザ視点を決定する。そして、ロボットは、そのユーザ視点に
基づいて、指示語を解釈して解釈した方向に移動する。
【０００４】
また、特許文献２に記載の発明では、ロボットが備えるセンサーが取得したデータから
特徴量を抽出し、抽出した特徴量と、用語付きデータベースに登録されている用語付きの
データ群との類似性を比較する。そして、類似していないデータ群を新たにデータベース
に登録する。そして、用語未決定のデータ群が一定量データ量になった場合、用語付与手
段は、操作者にデータ群を提示して質問を行い、データ群に対して操作者に用語名を命名
させて付与する。ロボットは、センサー出力と、このように生成されたデータベースを用
いて、ロボットの制御を行う。そして、特許文献２に記載の発明では、ロボットの操作者
が声により命令を行った場合、その命令に一致する用語をデータベースに登録されている
か比較する。データベースに登録されている場合、登録されている用語を選択し、選択し
た行動を実行する。そして、ロボットは、行動に対して操作者の言葉による命令に基づき
、その行動が正しいと判別される場合、命令と行動とを適合させて学習し、データベース
に蓄えている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許３３１８５３９号公報
【特許文献２】特許３８８４１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の発明では、ロボットに入力される命令は方向に関す
るものだけなので、方向以外の曖昧な命令をロボットに入力しても、ロボットに動作を行
わせることができず汎用性に欠ける。
【０００７】
また、特許文献２に記載の発明では、データベースに蓄積されている用語と行動とを結
合されて学習させる場合、人間がデータ群に用語を命名する必要がある。さらにデータベ
ースに登録されている用語が文脈に依存し、また用語データと命令とが１対１に対応して
いる。このため、用語データと命令とが関連付けられていない曖昧な命令をロボットに入
力しても、ロボットに動作を行わせることができず汎用性に欠ける。
【０００８】
本発明は、上記の問題点に鑑みてなされたものであって、曖昧な命令をロボットに入力
しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置、ロボッ
ト制御方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット
制御装置であって、シナリオとサブシナリオとが対応付けられて登録されているデータベ
ースと、入力装置から入力された命令を取得する命令取得部と、前記命令取得部が取得し
た命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリ
オに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成部と、を備え
、前記制御コマンド生成部は、前記命令取得部が取得した命令を実行するのに必要な要素
に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出し
て前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで
前記ロボットを制御する制御コマンドを生成することを特徴としている。
【００１０】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登
録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから
読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマ
ンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボット
を制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定してい
ない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性
のあるロボット制御装置を提供できる。また、入力する命令に要素の値を記述しなくても
、ロボットに動作を行わせることができる効果がある。
【００１１】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記取得された命令
に未取得の要素がある場合、前記ロボットが取得した要素を前記データベースの要素に登
録し、前記登録された要素を前記サブシナリオに組み込んで前記ロボットを制御する制御
コマンドを生成するようにしてもよい。
【００１２】
本発明によれば、コマンド生成部は、データベースから読み出したサブシナリオから読
み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマン
ド生成部は、ロボットが取得した要素をデータベースに登録して更新する。この更新され
た要素を用いて、制御コマンド生成部は、制御コマンドを生成する。この結果、入力され
た命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに
動作を行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力す
る命令に要素の値を記述しなくても、ロボットに要素を取得させ、取得させた要素をデー
タベースに登録して更新できる効果がある。
【００１３】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに
未取得の要素がない場合、前記データベースから前記要素を読み出し、前記データベース
から読み出した要素を前記サブシナリオに組み込んで前記ロボットを制御するコマンドを
生成するようにしてもよい。
【００１４】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されている要素を読み出し、読み出した要素を命令またはサブシ
ナリオに組み込んでロボットを制御するコマンドを生成する。この結果、入力された命令
自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を
行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力する命令
に要素の値を記述しなくても、ロボットに動作を行わせることができる効果がある。
【００１５】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに
前記要素を算出する命令がある場合、前記ロボットに前記要素を算出させる命令を前記デ
ータベースから読み出した前記サブシナリオから抽出して、該サブシナリオから抽出した
命令により前記要素を算出するようにしてもよい。
【００１６】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されている要素を読み出し、読み出した要素を用いて、未設定の
要素を算出するようにした。この結果、入力された命令自体に要素の値を設定していない
曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあ
るロボット制御装置を提供できる。
【００１７】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記命令取得部が取
得した命令に対応する要素を含むサブシナリオを前記データベースから読み出し、読み出
した要素を含むサブシナリオを編集するコマンド編集部と、前記コマンド編集部が編集し
た要素を含むサブシナリオを前記ロボットに対して仮想的に動作させ、前記ロボットの動
作が適正か否かを判別するシミュレーター部と、を備え、前記制御コマンド生成部は、前
記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を含む
サブシナリオに基づき、前記ロボットを制御する制御コマンドを生成するようにしてもよ
い。
【００１８】
本発明によれば、入力された命令に対応するサブシナリオを編集した場合、編集された
サブ命令群が適正に動作するか否かをシミュレーター部で確認する。そして、シミュレー
ター部の判別結果が適正の場合、編集されたサブシナリオに基づき、ロボットを制御する
制御コマンドを生成するようにした。この結果、命令が曖昧であっても、命令を編集する
ことができ、そして、編集した命令に基づくサブシナリオが適正に動作するか事前に確認
することができる。
【００１９】
本発明のロボット制御装置において、前記シナリオは、前記命令と前記要素とルールベ
ースの前記サブシナリオとから構成され、前記制御コマンド生成部は、前記サブシナリオ
に含まれている前記要素を探索して、前記取得された命令に対応する前記サブシナリオを
読み出すようにしてもよい。
【００２０】
本発明によれば、データベースに登録されているシナリオがルールベースであり、この
シナリオに入力された命令を含んでいるため、制御コマンド生成部は、曖昧な命令が入力
された場合でも、ロボットを適正に動作させるためのシナリオを抽出できる。この結果、
入力された命令が曖昧であっても、ロボットに適切な操作をさせるためのシナリオを用い
て動作を行わせることができるので、汎用性のあるロボット制御装置を提供できる。
【００２１】
上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット
制御方法であって、シナリオとサブシナリオとが対応付けられて登録されているデータベ
ースと、命令取得部が、入力装置から入力された命令を取得する命令取得工程と、制御コ
マンド生成部が、前記命令取得工程が取得した命令に対応する前記サブシナリオを前記デ
ータベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマン
ドを生成する制御コマンド生成工程と、を含み、前記制御コマンド生成工程は、前記命令
取得工程が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボ
ットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボッ
トが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンド
を生成することを特徴としている。
【００２２】
上記目的を達成するため、本発明は、制御コマンドによりロボット制御の処理をコンピ
ューターに実行させるためのプログラムであり、入力装置から入力された命令を取得する
命令取得手順と、前記命令取得手順が取得した命令を実行するのに必要な要素に未取得の
要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボ
ットに送信し、前記ロボットが取得した要素を、データベースから読み出したサブシナリ
オに組み込んで前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と
、をコンピューターに実行させる。
【００２３】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登
録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから
読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマ
ンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボット
を制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定してい
ない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性
のあるロボット制御方法、プログラムを提供できる。また、入力する命令に要素の値を記
述しなくても、ロボットに動作を行わせることができる効果がある。
【図面の簡単な説明】
【００２４】
【図１】第１実施形態に係るロボットの概略構成を示す斜視図である。
【図２】アセンブリ部品の概略構成を示す断面図である。
【図３】アセンブリ後の概略構成を示す断面図である。
【図４】同実施形態に係るアーム部と力センサーの概念図である。
【図５】同実施形態に係る制御装置のブロック図である。
【図６】同実施形態に係る制御装置によるアーム制御のフローチャートである。
【図７】同実施形態に係る解析処理のフローチャートである。
【図８】同実施形態に係る命令解析の処理のフローチャートである。
【図９】同実施形態に係る拡張ユニットと基部に組み合わせる手順の一例のフローチャートである。
【図１０】同実施形態に係る命令≪拡張ユニットを掴む≫処理の一例のフローチャートである。
【図１１】同実施形態に係る命令≪可動載置台に移動する≫処理の一例のフローチャートである。
【図１２】同実施形態に係る命令≪ねじを可動載置台に置く≫処理の一例のフローチャートである。
【図１３】同実施形態に係る基部と拡張ユニットにねじを置く処理の手順の一例のフローチャートである。
【図１４】同実施形態に係る基部と拡張ユニットにねじ締めを行う処理の手順の一例のフローチャートである。
【図１５】第２実施形態に係る命令解釈装置、制御装置、データベースの構成の一例を説明する図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態について図面を参照して詳細に説明する。なお、本発明は斯か
る実施形態に限定されず、その技術思想の範囲内で種々の変更が可能である。また、以下
の図面においては、各構成をわかりやすくするために、実際の構造と各構造における縮尺
や数等が異なっている。
【００２６】
［第１実施形態］
図１は、本実施形態に係るロボット１の概略構成を示す斜視図である。図１に示すよう
に、ロボット１は、１本のアーム２を備えている。アーム２は、固定部１０、アーム部２
０、力センサー３０、及びエンドエフェクターである指部４０を備える。また、ロボット
１は、制御装置１００の制御により動作する。また、制御装置１００には、撮像装置５０
、画像表示装置６０、入力装置６２が接続されている。
ドライバー７０ａ〜７０ｃは、ドライバー置台７５にセットされている。ドライバー７
０ａ〜７０ｃは、ドライバービットの形状が異なる電動ドライバーまたはドライバーであ
る。以下、ドライバー７０ａ〜７０ｃを総称して、ドライバー７０という。
ねじ２４０は、ねじ自動供給機の取り出し部のレール２３０上に予め配置されている。
なお、ねじ自動供給機は、公知の技術（例えば、ＷＯ２００３／１０６３０７参照）によ
り取り出し部のレール２３０上にねじ２４０を配置する。もしくは、予めレールにねじ２
４０が配置されたマガジンを用いてもよい。
また、図１に示すように、ロボット装置１は、例えば工場の組立製造ラインに設置され
ている。この組立製造ラインには、ロボット装置１及び撮像装置５０と、組立中である同
種複数のアセンブリ部品が並べ置かれたコンベヤー２００とが設置されている。
【００２７】
コンベヤー２００は、水平な可動載置台２１０を有し、組立て中である同種複数のアセ
ンブリ部品をその可動載置台２１０に配置して矢印Ａ方向に搬送する。各アセンブリ部品
は、基台２５１と、拡張ユニット２５６である。
図２は、アセンブリ部品の概略構成を示す断面図である。図３は、アセンブリ後の概略
構成を示す断面図である。
図２（ａ）に示すように、基台２５１は、可動載置台２１０に載置された状態でｘ軸方
向の水平面に平行となる面２５２と面２５３を有している。また、基台２５１には、その
軸方向が基台２５１の面２５３に対して垂直となるねじ穴２６１が、ｙ軸方向に貫通して
設けられている。また、面２５３は、面２５２に対して段差を有して形成されている。
図２（ｂ）に示すように、拡張ユニット２５６は、可動載置台２１０に載置された状態
でｘ軸方向の水平面に平行となる面２５７、面２５８及び面２５９を有している。また、
拡張ユニット２５６には、その軸方向が拡張ユニット２５６の面２５８に対して垂直とな
るねじ穴２６２が、ｙ軸方向に貫通して設けられている。また、面２５８は、面２５９に
対して段差を有して形成されている。
図３に示すように、基台２５１の面２５３は、拡張ユニット２５６の面２５８と接する
ようにアセンブリされる。また、基台２５１のねじ穴２６１と拡張ユニット２５６のねじ
穴２６２は、アセンブリされた状態で、ｘ軸方向の同じ位置に形成されている。この基台
２５１のねじ穴２６１と拡張ユニット２５６のねじ穴２６２には、ねじ２４０がロボット
１により取り付けられる。
【００２８】
図１に戻って、固定部１０は、例えば床、壁、天井、移動可能な台車の上などに固定さ
れる。固定部１０は、内部に、制御装置１００（破線にて図示）を備える。
制御装置１００は、アーム部２０、指部４０及び指部４０が把持するドライバー７０を
制御する。制御装置１００の詳細は後述する。なお、制御装置１００は、固定部１０の内
部ではなく、固定部１０の外部に設けるようにしてもよい。
【００２９】
アーム部２０は、第１フレーム２１、第２フレーム２２、第３フレーム２３、第４フレ
ーム２４および第５フレーム２５から構成されている。第１フレーム２１は、回転屈折軸
を介して、固定部１０に回転可能または屈折可能に接続されている。第２フレーム２２は
、回転屈折軸を介して、第１フレーム２１および第３フレーム２３に接続されている。第
３フレーム２３は、回転屈折軸を介して、第２フレーム２２および第４フレーム２４に接
続されている。第４フレーム２４は、回転屈折軸を介して、第３フレーム２３および第５
フレーム２５に接続されている。第５フレーム２５の一方端には、回転屈折軸を介して、
第４フレーム２４に接続されている。アーム部２０は、制御装置１００の制御によって、
各フレーム２１〜２５が各回転屈折軸を中心に複合的に回転または屈折し、動く。
【００３０】
アーム部２０の第５フレーム２５の他方端他には、エンドエフェクターである指部４０
が設けられている。指部４０は、直接的に、対象物を把持する。なお、指部４０は、例え
ば、複数のフレームを有し、対象物を把持できる構造である。
【００３１】
アーム部２０の第５フレーム２５と指部４０の間には、力センサー３０が介挿されてい
る。力センサー３０は、指部４０に加わる力の各空間成分（力成分という）とトルクの各
空間成分（トルク成分という）を検出する。力センサー３０は、検出した指部４０に加わ
る力成分とトルク成分を含む情報を制御装置１００に出力する。ここでは、対象物として
ねじ２１１とドライバー７０を例示して説明する。
【００３２】
撮像装置５０は、ロボット１と同様に、床に対して水平に設置されている。撮像装置５
０は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）カメラである。撮
像装置５０は、ドライバー７０の係合部に吸着されたねじ２４０を撮影し、撮影したアナ
ログ値の画像データを制御装置１００に出力する。
【００３３】
画像表示装置６０は、制御装置１００が出力するロボット１の制御状態を示す信号に基
づき、ロボット１の制御状態を表示する。また、画像表示装置６０は、入力装置６２から
入力されたロボット１に対する指示を、制御装置１００を介して表示する。
入力装置６２は、使用者が入力したロボット１に対する指示を制御装置１００に出力す
る。入力装置６２は、例えば、キーボード、マウスである。また、画像表示装置６０をタ
ッチパネルにすることで、画像表示装置６０が入力装置６２を兼ねるようにしてもよい。
【００３４】
制御装置１００は、ロボット１のアーム２、指部４０を、入力装置６２から入力された
命令に基づき、後述するデータベース１０３に登録されているシナリオ、及びライブラリ
を用いて制御する。また、制御装置１００は、入力された命令に基づくシナリオに従って
、アーム部２０に取り付けられているエンコーダーが出力する回転角度および速度を示す
情報、力センサー３０が出力する指部４０に加わる力成分とトルク成分を含む情報、およ
び撮像装置５０が出力する画像データを用いて、未設定のパラメーターの値を取得する指
示をロボット１に出力する。また、制御装置１００は、ロボット１が取得したパラメータ
ーの値をシナリオに組み込んで、パラメーターを組み込んだシナリオに基づき、ロボット
１を制御する。
【００３５】
図４は、本実施形態に係るアーム部２０と力センサー３０の概念図である。
図４に示すように、アーム２のアーム部２０は、回転部８２、８３及び８５と、屈折部
８１、８４及び８６とを有している。そして、アーム２のアーム部２０は、指部４０との
間に力センサー３０を有している。
【００３６】
屈折部８１は、固定部１０と第１フレーム２１との間に設けられている。回転部８２は
、第１フレーム２１と第２フレーム２２との間に設けられている。回転部８３は、第２フ
レーム２２と第３フレーム２３との間に設けられている。屈折部８４は、第３フレーム２
３と第４フレーム２４との間に設けられている。回転部８５は、第４フレーム２４と第５
フレーム２５との間に設けられている。屈折部８６は、第５フレーム２５のうち第４フレ
ーム２４が設けられた他方に設けられている。
【００３７】
図２に示すように、アーム部２０は、６自由度を有する６軸アームである。すなわち、
アーム部２０の先端の指部４０は、これらの各軸の回転部と屈折部の動作により、移動す
る。このように、アーム部２０が６軸アームであるため、互いに独立な６つの変数で制御
することが可能であり、例えば、位置（ｘ、ｙ、ｚ）の３つの変数（成分）、姿勢を表す
角度（α、β、γ）の３つの成分（変数）に対応して制御することができる。
【００３８】
また、図４に示すように、回転部８２、８３及び８５と、屈折部８１、８４及び８６は
、各々エンコーダー９１〜９６を備えている。例えば、回転部８２が備えるエンコーダー
９２は、回転角度、速度を検出し、検出した回転角度および速度を示す情報を制御装置１
００に出力する。以下、エンコーダー９１〜９６を、エンコーダー９０という。エンコー
ダー９０は、例えば光学式エンコーダーであり、アブソリュート（絶対値）エンコーダー
またはインクリメンタル（相対値）エンコーダーである。
【００３９】
図５は、本実施形態に係る制御装置１００のブロック図である。
図５に示すように、制御装置１００は、命令取得部１０１、シナリオエディター１０２
、データベース１０３、シナリオプレーヤー１０４、シミュレーター１０５、画像処理部
１０６、センサー出力取得部１０７、アーム制御部１０８、および、駆動部１０９を備え
ている。
【００４０】
命令取得部１０１は、ロボット１の操作者が入力装置６２から入力した命令Ｍを取得し
、取得した命令Ｍをシナリオエディター１０２と画像表示装置６０に出力する。
【００４１】
シナリオエディター１０２は、命令取得部１０１が取得した命令に基づき、編集する必
要があるか否かを判別する。
編集する必要がないと判別された場合、シナリオエディター１０２は、読み出した命令
（シナリオ）をシナリオプレーヤー１０４と画像表示装置６０に出力する。
編集する必要があると判別された場合、シナリオエディター１０２は、命令取得部１０
１が取得した命令に基づき、データベース１０３のシナリオ部１２０に登録されているシ
ナリオを読み出す。シナリオエディター１０２は、読み出したシナリオを入力された命令
に応じて編集し、編集したシナリオをシミュレーター１０５に出力する。また、シナリオ
エディター１０２は、シミュレーター１０５が出力するシミュレーションした結果が正し
く実行できると判別された場合、編集したシナリオをシナリオ部１２０に登録し、さらに
そのシナリオに基づく命令をシナリオプレーヤー１０４に出力する。また、シナリオエデ
ィター１０２は、シミュレーター１０５が出力するシミュレーションした結果が正しく実
行できないと判別された場合、正しく実行ができるようになるまでシナリオの編集を繰り
返す。なお、シナリオエディター１０２は、シナリオ部１２０から読み出したシナリオ、
または編集後のシナリオをシナリオプレーヤー１０４に出力するようにしてもよい。
【００４２】
データベース１０３は、シナリオ部１２０と、ライブラリ部１２１、及びパラメーター
部１２２から構成されている。シナリオ部１２０とライブラリ部１２１とには、ロボット
１を操作する上で必要な操作に関する後述するシナリオ登録されている。なお、シナリオ
とは、ロボット１の操作者が入力した抽象的な命令をより具体的にした命令の下層の命令
ルール（サブシナリオ）と、そのルールを実行するための命令（条件（サブシナリオ））
で構成されている。また、条件とは、このルールを実行する上で必要な値を取得したり、
値を計算するなどのルールの下層の命令である。また、シナリオ部１２０には、例えば、
一時的に使用するシナリオが登録され、ライブラリ部１２１には、標準的なシナリオが登
録されている。
パラメーター部１２２には、ロボット１の操作に必要なパラメーターの値が登録されて
いる。パラメーターの値とは、例えば、指部４０に把持させる対象物の大きさや、対象物
が置かれている場所の位置、対象物を組み付ける場所の位置などである。
【００４３】
シナリオプレーヤー１０４は、シナリオエディター１０２が出力する命令に基づき、デ
ータベース１０３のシナリオ部１２０に登録されているシナリオを読み出す。また、シナ
リオプレーヤー１０４は、シナリオエディター１０２が出力する命令に基づき、命令に未
設定のパラメーターが含まれているか否かを判別する。なお、パラメーターとは、例えば
、指部４０に把持させる部品の大きさ、部品が置かれている位置など、ロボット１を制御
する上で必要な数値データなどである。
命令に未設定のパラメーターの値が含まれていると判別された場合、シナリオプレーヤ
ー１０４は、シナリオ部１２０から読み出したシナリオに基づき、アーム制御部１０８に
未設定のパラメーターの値を取得して、取得したパラメーターの値をライブラリ部１２１
に登録する指示を出力する。また、シナリオプレーヤー１０４は、取得されたパラメータ
ーの値をシナリオに組み込む、パラメーターの値を組み込んだシナリオに基づく命令を生
成する。シナリオプレーヤー１０４は、生成した命令をアーム制御部１０８に出力する。
命令に未設定のパラメーターの値が含まれていないと判別された場合、シナリオプレー
ヤー１０４は、シナリオに含まれるパラメーターの値をライブラリ部１２１から読み出し
、読み出したパラメーターの値をシナリオに組み込む、パラメーターの値を組み込んだシ
ナリオに基づく命令を生成する。シナリオプレーヤー１０４は、生成した命令をアーム制
御部１０８に出力する。
【００４４】
シミュレーター１０５は、シナリオエディター１０２が出力する編集されたシナリオが
、ロボット１で実行可能かシミュレーションを行う。シミュレーター１０５は、シナリオ
エディター１０２が出力する編集されたシナリオの実行時、データベース１０３に記憶さ
れているパラメーターやシナリオを読み出して用いる。シミュレーター１０５は、シナリ
オエディター１０２が出力する編集されたシナリオをシミュレーションした結果をシナリ
オエディター１０２に出力する。
【００４５】
画像処理部１０６は、アーム制御部１０８の制御信号に基づき、撮像装置５０が出力す
る画像データを取得し、取得した画像データをデジタルデータに変換する。画像取得部１
０１は、アーム制御部１０８が出力する指示に基づき、変換した画像データから対象物を
公知の手法で抽出し、抽出した対象物の大きさ、位置などを公知の手法で算出する。画像
処理部１０６は、算出した対象物の大きさ、位置などをアーム制御部１０８に出力する。
【００４６】
センサー出力取得部１０７には、エンコーダー９０が出力する回転角度および速度を示
す情報と、力センサー３０が出力する指部４０に加わる力成分とトルク成分を含むセンサ
ー出力情報を取得し、取得したセンサー出力情報をアーム制御部１０８に出力する。
【００４７】
アーム制御部１０８には、シナリオプレーヤー１０４が出力する命令Ｍ、画像処理部１
０６が出力する画像データ、センサー出力取得部１０７が出力するセンサー出力情報が入
力される。アーム制御部１０８は、シナリオプレーヤー１０４が出力するロボット１を制
御するコマンドに基づき、ロボット１を制御する制御信号を生成し、生成した制御信号を
駆動部１０９に出力する。また、アーム制御部１０８は、シナリオプレーヤー１０４が出
力する命令Ｍに基づき、センサー出力取得部１０７が出力するセンサー出力情報を用いて
、ロボット１に未設定のパラメーターを取得させる。アーム制御部１０８は、取得したパ
ラメーターをデータベース１０３のライブラリ部１２１に登録してデータベース１０３を
更新する。
また、アーム制御部１０８は、シナリオプレーヤー１０４が出力する命令Ｍに基づき、
撮像された画像データから、対象物のパラメーターを抽出し、抽出した対象物の位置や大
きさを算出する指示を出力する。
【００４８】
駆動部１０９は、アーム制御部１０８が出力する駆動信号に応じて、ロボット１のアー
ム部２０を駆動する。
【００４９】
次に、制御装置１００によるアーム制御の手順を、図６〜図８を用いて説明する。
図６は、本実施形態に係る制御装置１００によるアーム制御のフローチャートである。
【００５０】
（ステップＳ１）
制御装置１００のアーム制御部１０８は、入力装置６２から指示が入力されたか否か片
別する。入力装置６２から命令Ｍが入力された場合（ステップＳ１；Ｙｅｓ）、ステップ
Ｓ２に進む。入力装置６２から命令Ｍが入力されていない場合（ステップＳ１；Ｎｏ）、
指示が入力されるまでステップＳ１を繰り返す。ステップＳ１終了後、ステップＳ２に進
む。
【００５１】
（ステップＳ２）
次に、命令取得部１０１は、入力装置６２が出力する命令Ｍを取得し、取得した命令Ｍ
をシナリオエディター１０２を介し、シナリオプレーヤー１０４と、アーム制御部１０８
に出力する。命令取得部１０１は、命令Ｍを画像表示装置６０に表示する。ステップＳ２
終了後、ステップＳ３に進む。
【００５２】
（ステップＳ３）
次に、シナリオプレーヤー１０４は、命令取得部１０１が出力する命令Ｍについて、後
述するように解析処理を行う。シナリオプレーヤー１０４は、解析結果に基づき、ロボッ
ト１への命令Ｍ、ルールＲ及び条件Ｃ’を生成する。また、シナリオエディター１０４は
、生成したロボット１へのコマンドをアーム制御部１０８に出力する。ステップＳ３終了
後、ステップＳ４に進む。
【００５３】
なお、本実施形態では、入力装置６２から入力された命令を、命令Ｍとする。また、命
令Ｍに対応するシナリオ部１２０に登録されているシナリオの内、命令Ｍの下層の命令を
ルールＲとする。また、ルールＲの下層に設定されている命令を、条件Ｃをする。例えば
、入力装置６２から、命令Ｍとして≪ねじを掴む≫が入力された場合、シナリオ部１２０
には、ルールＲ１『指部をねじが置かれている位置Ｎの近くに移動する』、ルールＲ２『
指部をねじの幅より大きく開く』、ルールＲ３『指部をねじの長さの中心まで下げる』、
ルールＲ４『指部をねじの幅まで閉じる』、ルールＲ５『指部を高さＮまで上げる』が設
定されている。また、例えば、ルールＲ１『指部をねじの近くに移動する』には、条件Ｃ
１《ねじが置かれている位置Ｎを取得を送信》、条件Ｃ２《指部を位置Ｎに移動を送信》
が設定されている。また、命令Ｍを記号≪≫で表し、ルールＲを記号『』で表し、条件Ｃ
を記号《》で表している。
また、命令ＭにルールＲが記述されていず、ルールのみが設定されている場合もある。
例えば、入力された命令Ｍが≪ねじを取付け位置Ｎに移動する≫の場合、ルールＲは設定
されていず、条件Ｃ１《取付け位置Ｎを計算》、条件Ｃ２《指部を取付け位置Ｎに移動を
送信》が設定されている。
【００５４】
また、本実施形態では、データベース１０３のライブラリ部１２１に登録されているシ
ナリオは、ルールベースであり、例えば、複数のルールＲが記述されていて、各ルールに
条件が設定されている。そして、これらのルールの最後に、例えば≪Ｏｂｊを掴む≫が記
述されている。このため、シナリオプレーヤー１０３は、命令取得部１０１が出力する命
令Ｍ１≪ねじを掴む≫に対応するシナリオをデータベースから探索する場合、ルールの最
後を参照することで命令に対応するシナリオを見つけることができる。
【００５５】
（ステップＳ４）
アーム制御部１０８は、シナリオエディター１０４が出力するロボット１へのコマンド
、画像処理部１０６が出力する画像データ、センサー出力取得部１０７が出力する力成分
とトルク成分を示す情報を用いて、アーム２を制御する。
【００５６】
次に、解析処理の手順を、図７と図８を用いて説明する。
図７は、本実施形態に係る解析処理のフローチャートである。図８は、本実施形態に係
る命令解析の処理のフローチャートである。また、以下では、入力装置６２から、１つの
命令が入力された場合について説明する。
【００５７】
（ステップＳ１０１）
まず、シナリオプレーヤー１０４は、命令取得部１０１が出力する命令Ｍに含まれるパ
ラメーターを抽出する。なお、パラメーターとは、命令Ｍに含まれている処理に値を必要
とするものであり、例えば、ロボット１に把持させる部品や、部品が置かれている場所、
部品の取付け位置などである。ステップＳ１０１終了後、ステップＳ１０２に進む。
（ステップＳ１０２）
次に、シナリオプレーヤー１０４は、抽出したパラメーターの数を検出する。ステップ
Ｓ１０２終了後、ステップＳ１０３に進む。
【００５８】
（ステップＳ１０３）
次に、シナリオプレーヤー１０４は、パラメーターをカウントする定数Ｐを１に設定す
る。ステップＳ１０３終了後、ステップＳ１０４に進む。
【００５９】
（ステップＳ１０４）
次に、シナリオプレーヤー１０４は、入力された命令Ｍにパラメーターがあるか否かを
判別する。命令Ｍにパラメーターがある場合（ステップＳ１０４；Ｙｅｓ）、ステップＳ
１０５に進む。命令Ｍにパラメーターがない場合（ステップＳ１０４；Ｎｏ）、ステップ
Ｓ１０８の命令Ｍ解釈の処理に進む。
【００６０】
（ステップＳ１０５）
命令Ｍにパラメーターがある場合（ステップＳ１０４；Ｙｅｓ）、シナリオプレーヤー
１０４は、そのパラメーターの値がデータベース１０３のパラメーター部１２２にすでに
登録されているか否かを判別する。パラメーターの値がパラメーター部１２２に登録され
ていない場合（ステップＳ１０５；Ｙｅｓ）、ステップＳ１０６に進む。パラメーターの
値がライブラリ部１２１にすでに登録されている場合（ステップＳ１０５；Ｎｏ）、ステ
ップＳ１０７に進む。
【００６１】
（ステップＳ１０６）
次に、シナリオプレーヤー１０４は、パラメーターの値がパラメーター部１２２に登録
されていない場合（ステップＳ１０５；Ｙｅｓ）、パラメーターの値が必要な場合に記述
されているシナリオ（パラメーター取得命令）を、ライブラリ部１２１から読み出す。次
に、シナリオプレーヤー１０４は、読み出したパラメーター取得命令のロボットを制御す
るコマンド（以下、ロボット制御コマンドという、例えばSend Scan Obj）をアーム制御
部１０８に出力する。
なお、パラメーターの値が必要な場合に記述されているシナリオ（パラメーター取得命
令）とは、例えば、入力された命令が≪ねじを掴む≫の場合、ねじの大きさ（ねじ頭部の
大きさ、ねじの長さ）、ねじが置かれている場所の座標などを取得するための指示である
。
次に、アーム制御部１０８は、撮像装置５０が取得した画像データやアーム２が有する
エンコーダー９０の出力に基づき、知の手法を用いてパラメーターの値を算出する。アー
ム制御部１０８は、算出した拡張ユニット２５６のパラメーターの値を、パラメーター部
１２２に登録して、データベース１０３を更新する。ステップＳ１０６終了後、ステップ
Ｓ１０７に進む。
【００６２】
（ステップＳ１０７）
次に、シナリオプレーヤー１０４は、パラメーターのカウント用の定数Ｐに１を加算し
てステップＳ１０４に戻る。例えば、入力された命令が≪ねじを掴む≫の場合、パラメー
ターは「ねじ」の１つのみである。このため、ステップＳ１０４〜Ｓ１０７の処理は、１
回のみ行う。
【００６３】
（ステップＳ１０８）
次に、シナリオプレーヤー１０４は、命令Ｍにパラメーターがないと判別された場合（
ステップＳ１０４；Ｎｏ）、または、ステップＳ１０３〜Ｓ１０７の処理が終了した場合
、命令Ｍ解釈の処理を行う。
【００６４】
次に、命令Ｍ解釈の処理について、図８を用いて説明する。
【００６５】
（ステップＳ２０１）
次に、シナリオプレーヤー１０４は、取得された命令ＭにルールＲが設定されているか
否かを判別する。命令ＭにルールＲが設定されていると判別された場合（ステップＳ２０
１；Ｙｅｓ）、ステップＳ２０２に進む。命令ＭにルールＲが設定されていないと判別さ
れた場合（ステップＳ２０１；Ｎｏ）、ステップＳ２０６に進む。例えば、入力された命
令が≪ねじを掴む≫の場合、５つのルールＲ１〜Ｒ５を有している。５つのルールＲ１〜
Ｒ５は、例えば、ルールＲ１『指部を位置Ｐにあるねじの近くの位置Ｎに移動する』、ル
ールＲ２『指部をねじのサイズＷより大きく開く』、ルールＲ３『指部をねじの中心の高
さまで下げる』、ルールＲ４『指部をねじのサイズＷまで閉じる』、ルールＲ５『指部を
位置Ｎまで上げる』である。
【００６６】
（ステップＳ２０２）
次に、シナリオプレーヤー１０４は、ルールＲのカウント用定数のＣを１に設定する。
ステップＳ２０２終了後、ステップＳ２０３に進む。
【００６７】
（ステップＳ２０３）
次に、シナリオプレーヤー１０４は、ルールＲ１とルールＲ１に設定されている全ての
条件Ｃを、ライブラリ１２１部から読み出す。
次に、シナリオプレーヤー１０４は、読み出したルールＲ１に条件Ｃが設定されている
か否かを判別する。ルールＲに条件Ｃが設定されていると判別された場合（ステップＳ２
０３；Ｙｅｓ）、ステップＳ２０４に進む。ルールＲ１に未処理の条件Ｃがない又はルー
ルＲ１に条件Ｃが設定されていないと判別された場合（ステップＳ２０３；Ｎｏ）、命令
Ｍ解釈の処理を終了する。
【００６８】
（ステップＳ２０４）
次に、シナリオプレーヤー１０４は、ルールＲ１に条件Ｃ１が設定されていると判別さ
れた場合（ステップＳ２０３；Ｙｅｓ）、命令ＭのルールＲ１の解釈の処理を行う。
ルールＲ１の解釈処理とは、例えば、以下の一連の処理である。シナリオプレーヤー１
０４は、ルールＲ１に設定されている条件Ｃ１に、パラメーター部１２２に登録されてい
るパラメーター値を組み込んでロボット制御コマンドを生成する。または、シナリオプレ
ーヤー１０４が、パラメーターの値を算出してロボット制御コマンドを生成する。そして
、シナリオプレーヤー１０４は、生成したロボット制御コマンドをアーム制御部１０８に
出力して、条件Ｃ１に記述されている命令を実行する。
具体的には、例えば、ルールＲ１『指部を位置Ｐにあるねじの近くの位置Ｎに移動する
』の場合、条件Ｃ１として《ねじの上の近くの位置Ｎを計算》が設定されている。シナリ
オプレーヤー１０４は、この条件Ｃ１を行うために必要な、位置Ｎをパラメーター部１２
２から読み出して「ねじの上の近くの位置Ｎ」を算出する。なお、近くの位置とは、例え
ば、ｚ軸方向の高さ方向の座標値が１０であると、ライブラリ部１２２に予め定義して登
録しておく。
ステップＳ２０４終了後、ステップＳ２０５に進む。
【００６９】
（ステップＳ２０５）
次に、シナリオプレーヤー１０４は、ルールＲのカウント用の定数Ｃに１を加算してス
テップＳ２０３に戻る。
ルールＲ１に複数の条件が設定されている場合、全ての条件の命令を実施するまでステ
ップＳ２０３〜Ｓ２０５を再帰的に繰り返す。また、命令Ｍに複数のルールＲが設定され
ている場合、ステップＳ２０２〜Ｓ２０６を、全てのルールＲの処理が終了するまで、再
帰的に繰り返す。
【００７０】
（ステップＳ２０６）
次に、シナリオプレーヤー１０４は、命令ＭにルールＲが設定されていないと判別され
た場合（ステップＳ２０１；Ｎｏ）、命令Ｍの解釈は行わずに、命令Ｍをアーム制御部１
０８に出力する。
【００７１】
すなわち、命令ＭにルールＲが設定されていない場合、シナリオプレーヤー１０４は、
入力された命令Ｍを制御装置１００にそのまま送信する。一方、命令ＭにルールＲが設定
されている場合、シナリオプレーヤー１０４は、各ルールに設定されている条件Ｃを実行
し、命令Ｍの各ルールＲを解釈して実行する。
各ルールＲに、条件が設定されている場合、例えば、ねじの大きさを取得、ねじが置か
れている位置を取得などがシナリオプレーヤーで演算すべき命令なのか、アーム制御部１
０８に出力する命令なのかを判別することで解釈する。
そして、シナリオプレーヤー１０４は、出力する命令と判別された命令からロボット制
御コマンドを生成し、生成したロボット制御コマンドをアーム制御部１０８に出力する。
または、シナリオプレーヤー１０４は、ライブラリ部１２１の値が更新されるか、アーム
制御部１０８から値がアーム制御部１０８から返された後、返された値を命令Ｍ、ルール
Ｒ及び条件Ｃに組み込み、これらの値が組み込まれた命令Ｍ、ルールＲ及び条件Ｃからロ
ボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部１０８に出
力する。
【００７２】
以上のように、操作者は、数値を設定したり、動作を全て記述した命令ではない曖昧な
命令Ｍを入力装置６２から入力する。シナリオプレーヤー１０４は、入力された命令Ｍに
未設定のパラメーターがあればアーム制御部１０８を介してアーム２や撮像装置５０を制
御して、未設定のパラメーター値を取得する（アーム制御部１０８が、データベース１０
３のライブラリ部１２１に取得したパラメーター値を登録する）。
そして、シナリオプレーヤー１０４は、入力された命令Ｍに対応するデータベース１０
３に登録されているシナリオを読み出す。そして、シナリオプレーヤー１０４は、取得さ
れたパラメーターを命令、ルール及び条件に組み込み、パラメーターが組み込まれた命令
、ルール及び条件のロボット制御コマンドを生成することで、アーム制御部１０８が実行
可能な命令を生成している。そして、シナリオプレーヤー１０４は、生成したロボット制
御コマンドをアーム制御部１０８に出力し、アーム制御部１０８が入力されたこのロボッ
ト制御コマンドによりロボット１を制御する。
この結果、操作者は、抽象的な命令を入力装置６２から入力した場合でも、制御装置１
００はロボット１に命令を実行させることができる。また、操作者は、ロボット１の操作
に関する全ての命令や、操作に必要な全てのパラメーター値を入力せずに、簡単な命令を
入力することでロボット１に操作を行わせることが可能になる。
【００７３】
次に、制御装置１００による具体的な制御の一例を説明する。図９は、本実施形態に係
る拡張ユニットと基部に組み合わせる手順の一例のフローチャートである。以下は、接続
ユニット(部品)にドライバーでネジをつける例である。
【００７４】
（ステップＳ４０１）
まず、操作者は、入力装置６２から命令≪拡張ユニットを掴む≫、≪可動載置台に移動
する≫、≪拡張ユニットを可動載置台に置く≫を入力する。なお、記号≪≫は、入力装置
６２に入力された命令（文字列）を表す。
なお、掴む対象物をＯｂｊ、掴んだ対象物の移動先をＰｏｓと定義してある場合、入力
する命令は≪Ｏｂｊを掴む≫、≪Ｐｏｓに移動する≫、≪ＯｂｊをＰｏｓに置く≫でもよ
い。この場合、データベース１０３のライブラリ部１２１には、Ｏｂｊが拡張ユニットで
あると設定され登録され、Ｐｏｓが可動載置台であると設定されて登録されているように
してもよい。ステップＳ４０１終了後、ステップＳ４０２に進む。
【００７５】
（ステップＳ４０２）
次に、命令取得部１０１は、入力装置６２が出力する命令Ｍ１≪拡張ユニットを掴む≫
、命令Ｍ２≪可動載置台に移動する≫、命令Ｍ３≪拡張ユニットを可動載置台に置く≫を
取得し、取得した命令Ｍ１≪拡張ユニットを掴む≫、命令Ｍ２≪可動載置台に移動する≫
、命令Ｍ３≪拡張ユニットを可動載置台に置く≫をシナリオエディター１０２、および画
像表示装置６０に出力する。
本実施形態では、シナリオエディター１０２は、シナリオの編集を行わないため、命令
取得部１０１が出力する命令≪拡張ユニットを掴む≫、≪可動載置台に移動する≫、≪拡
張ユニットを可動載置台に置く≫を、そのままシナリオプレーヤー１０４に出力する。ス
テップＳ４０２終了後、ステップＳ４０３に進む。
【００７６】
（ステップＳ４０３）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、命令Ｍ１≪拡張ユニットを
掴む≫処理を行う。ステップＳ４０３終了後、ステップＳ４０４に進む。
（ステップＳ４０４）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、命令Ｍ２≪可動載置台に移
動する≫処理を行う。ステップＳ４０４終了後、ステップＳ４０５に進む。
（ステップＳ４０５）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、命令Ｍ３≪拡張ユニットを
可動載置台に置く≫処理を行う。
【００７７】
まず、ステップＳ４０３の命令Ｍ１≪拡張ユニットを掴む≫処理について、フローチャ
ートを用いて説明する。図１０は、本実施形態に係る命令≪拡張ユニット（Ｏｂｊ）を掴
む≫処理の一例のフローチャートである。
【００７８】
（ステップＳ５０１）
シナリオプレーヤー１０４は、命令Ｍ１≪拡張ユニットを掴む≫に未設定のパラメータ
ーがあるか否かを判別する。この場合、命令Ｍ１≪拡張ユニットを掴む≫に未設定のパラ
メーターがあるがあるため、シナリオプレーヤー１０４は、パラメーター取得命令を、ラ
イブラリ部１２１から読み出す。ステップＳ５０１終了後、ステップＳ５０２に進む。
【００７９】
（ステップＳ５０２）
次に、シナリオプレーヤー１０４は、拡張ユニットのサイズＳ（横幅Ｗ、高さｈ）と位
置Ｐを読み出すパラメーター取得命令（例えば、Ｓｅｎｄ  Ｓｃａｎ  拡張ユニット）を
アーム制御部１０８に出力する。この場合、サイズＳは、拡張ユニット２５６の直径と高
さであり、拡張ユニット２５６が置かれている位置である。
なお、すでにデータベース１０３に拡張ユニットのサイズＳ（横幅Ｗ、高さｈ）と位置
Ｐが登録されている場合、シナリオプレーヤー１０４は、データベース１０３のライブラ
リ部１２１に登録されている拡張ユニットのサイズＳ（横幅Ｗ、高さｈ）と位置Ｐを読み
出す。ステップＳ５０２終了後、ステップＳ５０３に進む。
【００８０】
（ステップＳ５０３）
次に、アーム制御部１０８は、シナリオプレーヤー１０４が出力するパラメーター取得
命令に基づき、撮像装置５０が取得した画像データから公知の手法を用いて、拡張ユニッ
ト２５６のサイズＳ（横幅Ｗ、高さｈ）と位置Ｐを算出する。また、アーム制御部１０８
は、例えば、拡張ユニット２５６のサイズＳ（横幅Ｗ、高さｈ）と位置Ｐを算出するため
に、撮像装置５０の角度や位置を制御することで、拡張ユニット２５６を撮像する。アー
ム制御部１０８は、算出した拡張ユニット２５６のサイズＳ（横幅Ｗ、高さｈ）と位置Ｐ
を、データベース１０３のライブラリ部１２１に登録して、データベース１０３のライブ
ラリ部１２１を更新する。ステップＳ５０３終了後、ステップＳ５０４に進む。
【００８１】
（ステップＳ５０４）
次に、シナリオプレーヤー１０４は、命令Ｍ１≪拡張ユニットを掴む≫のシナリオであ
るルールＲと、ルールＲに設定されている条件Ｃを、ライブラリ部１２１から読み出す。
ステップＳ５０４終了後、ステップＳ５０５に進む。
この場合、命令Ｍ１には、以下の５つのルールＲ１〜Ｒ５が設定されている。
【００８２】
ルールＲ１『指部を位置Ｐにある拡張ユニットの近くの位置Ｎに移動する』
【００８３】
ルールＲ２『指部を拡張ユニットのサイズＷより大きく開く』
【００８４】
ルールＲ３『指部を拡張ユニットの中心の高さまで下げる』
【００８５】
ルールＲ４『指部を拡張ユニットのサイズＷまで閉じる』
【００８６】
ルールＲ５『指部を位置Ｎまで上げる』
【００８７】
（ステップＳ５０５）
次に、シナリオプレーヤー１０４は、ライブラリ部１２１に登録されているルールＲ１
『指部を位置Ｐにある拡張ユニットの近くの位置Ｎに移動する』に条件が設定されている
か否かを判別する。この場合、ルールＲ１『指部を位置Ｐにある拡張ユニットの近くの位
置Ｎに移動する』には、《拡張ユニットの上の近くの位置Ｎを計算》（条件Ｃ１）、《位
置Ｎに指部を移動を送信》（条件Ｃ２）が設定されている。ステップＳ５０５終了後、ス
テップＳ５０６に進む。
【００８８】
（ステップＳ５０６）
次に、シナリオプレーヤー１０４は、条件Ｃ１《拡張ユニットの上の近くの位置Ｎを計
算》に基づき、パラメーター部１２２に登録されている拡張ユニット２５６のサイズＳ（
横幅Ｗ、高さｈ）と位置Ｐを読み出す。次に、シナリオプレーヤー１０４は、読み出した
拡張ユニット２５６が置かれている位置Ｐ（Ｏｂｊ．Ｐ）を用いて、拡張ユニットの近く
の位置Ｎを算出する。拡張ユニットの近くの位置Ｎ１は、例えばＮ＝Ｏｂｊ．Ｐ＋（０，
０，１０）により算出する。ステップＳ５０６終了後、ステップＳ５０７に進む。
【００８９】
（ステップＳ５０７）
次に、シナリオプレーヤー１０４は、読み出したルールＲ１の条件Ｃ２《位置Ｎに指部
を移動》に算出した拡張ユニットの上の近くの位置Ｎを組み込み、条件Ｃ２’を生成する
。次に、シナリオプレーヤー１０４は、生成した条件Ｃ２’《位置Ｎに指部を移動》に基
づき、ロボット制御コマンド『位置Ｎに指部を移動』（Send Move Hand, Ｎ）を生成し、
生成したロボット制御コマンドをアーム制御部１０８に出力する。なお、条件Ｃ２《位置
Ｎに指部を移動》には、パラメーターの値が組み込まれていないロボット制御コマンドSe
nd Move Hand, Ｎが、予めライブラリ部１２２に登録されている。このため、シナリオプ
レーヤー１０４は、このロボット制御コマンドSend Move Hand, Ｎに、パラメーターの値
Ｎを組み込むことで、ロボット制御コマンドを生成する。ステップＳ５０７終了後、ステ
ップＳ５０８に進む。
【００９０】
（ステップＳ５０８）
次に、アーム制御部１０８は、シナリオプレーヤー１０４が出力するロボット制御コマ
ンド『位置Ｎに指部を移動』に基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、センサー出力取得部１０７が出力する回転角度および速
度を示す情報と、画像処理部１０６が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、指部４０を拡張ユニット２５６が置かれている位置Ｐ
の近くの位置Ｎまで移動させる。ステップＳ５０８終了後、ステップＳ５０９に進む。
【００９１】
（ステップＳ５０９）
次に、シナリオエディター１０４は、ライブラリ部１２２に登録されているルールＲ２
『指部を拡張ユニットのサイズＷより大きく開く』に、条件が設定されているか否かを判
別する。この場合、ルールＲ２『指部を拡張ユニットのサイズＷより大きく開く』には、
《拡張ユニットのサイズＷより１０％大きいサイズＷＬの計算上》（条件Ｃ１）、《指部
をＷＬだけ開くを送信》（条件Ｃ２）が設定されている。ステップＳ５０９終了後、ステ
ップＳ５１０に進む。
【００９２】
（ステップＳ５１０）
次に、シナリオエディター１０４は、条件Ｃ１《拡張ユニットのサイズＷより１０％大
きいサイズＷＬの計算上》に基づき、データベース１０３のライブラリ部１２１に登録さ
れている拡張ユニット２５６のサイズＳ（横幅Ｗ）を読み出す。
次に、シナリオエディター１０４は、読み出した拡張ユニット２５６のサイズＳ（横幅
Ｗ）に基づき、拡張ユニットのサイズＷ（Ｏｂｊ．Ｗ）に対して、１０％大きい幅ＷＬ＝
Ｏｂｊ．Ｗ）×１．１を、指部を開く幅ＷＬとして算出する。ステップＳ５１０終了後、
ステップＳ５１１に進む。
【００９３】
（ステップＳ５１１）
次に、シナリオプレーヤー１０４は、読み出したルールＲ２の条件Ｃ２《指部をＷＬだ
け開くを送信》に算出した指部を開く幅ＷＬを組み込み、条件Ｃ２’を生成する。次に、
シナリオプレーヤー１０４は、生成した条件Ｃ２’《指部をＷＬだけ開く》に基づきロボ
ット制御コマンド『指部をＷＬだけ開く』（Send Open Hand, SL）を生成し、生成したロ
ボット制御コマンドをアーム制御部１０８に出力する。ステップＳ５１１終了後、ステッ
プＳ５１２に進む。
【００９４】
（ステップＳ５１２）
次に、アーム制御部１０８には、シナリオエディター１０４が出力するロボット制御コ
マンド『指部をＷＬだけ開く』基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、生成したアーム制御信号により、拡張ユニット２５６の
サイズＳより指部４０の２本の指の間隔を広げるように、指部４０を制御する。ステップ
Ｓ５１２終了後、ステップＳ５１３に進む。
【００９５】
（ステップＳ５１３）
次に、シナリオエディター１０４は、ライブラリ部１２２に登録されているルールＲ３
『指部を拡張ユニットの中心の高さまで下げる』に、条件が設定されているか否かを判別
する。この場合、ルールＲ３『指部を拡張ユニットのサイズＷより大きく開く』には、《
拡張ユニットの中心の高さＣＨを計算》（条件Ｃ１）、《指部を高さＣＨに移動を送信》
（条件Ｃ２）が設定されている。ステップＳ５１３終了後、ステップＳ５１４に進む。
【００９６】
（ステップＳ５１４）
次に、シナリオエディター１０４は、条件Ｃ１《拡張ユニットの中心の高さＣＨを計算
》に基づき、データベース１０３のライブラリ部１２１に登録されている拡張ユニット２
５６のサイズＳ（高さｈ）を読み出す。
次に、シナリオエディター１０４は、条件Ｃ１《拡張ユニットの中心の高さＣＨを計算
》に基づき、読み出した拡張ユニットの高さｈを用いて中心の高さＣＨを計算する（例え
ば、CH = Obj.P.z + Obj.S.hight / 2）。ステップＳ５１４終了後、ステップＳ５１５に
進む。
【００９７】
（ステップＳ５１５）
次に、シナリオプレーヤー１０４は、読み出したルールＲ３の条件Ｃ２《指部を高さＣ
Ｈに移動を送信》に算出した中心の高さＣＨを組み込み、条件Ｃ２’を生成する。次に、
シナリオプレーヤー１０４は、生成した条件Ｃ２’《指部を高さＣＨに移動》に基づきロ
ボット制御コマンド『指部を高さＣＨに移動』（Send Move Hand, (,,CH)）を生成し、生
成したロボット制御コマンドをアーム制御部１０８に出力する。ステップＳ５１５終了後
、ステップＳ５１６に進む。
【００９８】
（ステップＳ５１６）
次に、アーム制御部１０８は、シナリオエディター１０４が出力するロボット制御コマ
ンド『指部を高さＣＨに移動』基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、生成したアーム制御信号により、拡張ユニット２５６の
高さｈの中心の高さＣＨに指部４０を移動させるように制御する。ステップＳ５１６終了
後、ステップＳ５１７に進む。
【００９９】
（ステップＳ５１７）
次に、シナリオエディター１０４は、ライブラリ部１２２に登録されているルールＲ４『
指部を拡張ユニットのサイズＷまで閉じる』に、条件が設定されているか否かを判別する
。この場合、ルールＲ４『指部を拡張ユニットのサイズＷまで閉じる』には、条件が設定
されていない。ステップＳ５１７終了後、ステップＳ５１８に進む。
【０１００】
（ステップＳ５１８）
次に、シナリオエディター１０４は、ルールＲ４『指部を拡張ユニットのサイズＷまで
閉じる』に基づき、ロボット制御コマンド『指部を拡張ユニットのサイズＷまで閉じる』
（end Close Hand, Obj.S）を生成し、生成したロボット制御コマンドをアーム制御部１
０８に出力する。ステップＳ５１８終了後、ステップＳ５１９に進む。
【０１０１】
（ステップＳ５１９）
次に、アーム制御部１０８には、シナリオエディター１０４が出力するロボット制御コ
マンド『指部を拡張ユニットのサイズＷまで閉じる』に基づいて、アーム制御信号を生成
する。
次に、アーム制御部１０８は、生成したアーム制御信号により、拡張ユニット２５６の
サイズＳまで指部４０の２本の指を閉じるように制御する。これにより、指部４０は、拡
張ユニットである拡張ユニット２５６の把持を完了する。ステップＳ５１９終了後、ステ
ップＳ５２０に進む。
【０１０２】
（ステップＳ５２０）
次に、シナリオエディター１０４は、ライブラリ部１２２に登録されているルールＲ５
『指部を位置Ｎまで上げる』に、条件が設定されているか否かを判別する。この場合、ル
ールＲ５『指部を位置Ｎまで上げる』には、条件が設定されていない。ステップＳ５２０
終了後、ステップＳ５２１に進む。
【０１０３】
（ステップＳ５２１）
次に、シナリオエディター１０４は、ルールＲ５『指部を位置Ｎまで上げる』に基づき
、ロボット制御コマンド『指部を位置Ｎまで上げる』（Send Move Hand, N）を生成し、
生成したロボット制御コマンドをアーム制御部１０８に出力する。ステップＳ５２１終了
後、ステップＳ５２２に進む。
【０１０４】
（ステップＳ５２２）
次に、アーム制御部１０８は、シナリオエディター１０４が出力するロボット制御コマ
ンド『指部を位置Ｎまで上げる』に基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、センサー出力取得部１０７が出力する指部４０に加わる
力成分とトルク成分を含む情報に基づき、指部４０が拡張ユニット２５６を把持したこと
を検出する。次に、アーム制御部１０８は、生成したアーム制御信号（または、ロボット
制御コマンドSend Move Hand, N）により、把持した拡張ユニット２５６を、ライブラリ
部１２１から読み出した高さＮまで、拡張ユニット２５６を把持したまま位置Ｎまで持ち
上げるように制御する。
以上で、命令Ｍ１≪拡張ユニットを掴む≫に対する処理を終了する。
【０１０５】
次に、ステップＳ４０４の命令Ｍ２≪可動載置台（Ｐｏｓ）に移動する≫の処理につい
て、図１１のフローチャートを用いて説明する。図１１は、本実施形態に係る命令≪可動
載置台に移動する≫処理の一例のフローチャートである。
【０１０６】
（ステップＳ６０１）
シナリオプレーヤー１０４は、命令Ｍ２≪可動載置台に移動する≫に未設定のパラメー
ターがあるか否かを判別する。この場合、命令Ｍ２≪可動載置台に移動する≫に未設定の
パラメーターがあるがあるため、シナリオプレーヤー１０４は、パラメーター取得命令を
、ライブラリ部１２１から読み出す。ステップＳ６０１終了後、ステップＳ６０２に進む
。
【０１０７】
（ステップＳ６０２）
次に、シナリオプレーヤー１０４は、アーム制御部１０８に可動載置台の位置Ｐを読み
出すロボット制御コマンド（例えば、Ｓｅｎｄ  Ｓｃａｎ  Ｏｂｊ）をアーム制御部１０
８に出力する。
なお、すでにデータベース１０３に可動載置台の位置Ｐが登録されている場合、シナリ
オプレーヤー１０４は、データベース１０３のライブラリ部１２１に登録されている可動
載置台の位置Ｐを読み出す。ステップＳ６０２終了後、ステップＳ６０３に進む。
【０１０８】
（ステップＳ６０３）
アーム制御部１０８は、撮像装置５０が取得した画像データから公知の手法を用いて、
作業台である可動載置台２１０の位置Ｐを算出する。また、アーム制御部１０８は、例え
ば、可動載置台２１０の位置Ｐを算出するために、撮像装置５０の角度や位置を制御する
ことで、拡張ユニット２５６を撮像する。アーム制御部１０８は、算出した可動載置台２
１０の位置Ｐを、データベース１０３のライブラリ部１２１に登録して、データベース１
０３のライブラリ部１２１を更新する。ステップＳ６０３終了後、ステップＳ６０４に進
む。
【０１０９】
（ステップＳ６０４）
次に、シナリオプレーヤー１０４は、命令Ｍ２≪可動載置台に移動する≫のシナリオで
あるルールＲと、ルールＲに設定されている条件Ｃを、ライブラリ部１２１から読み出す
。ステップＳ６０４終了後、ステップＳ６０５に進む。
この場合、命令Ｍ２には、ルールＲ１『指部を作業台の位置Ｎに移動する』が設定され
ている。
【０１１０】
（ステップＳ６０５）
次に、シナリオプレーヤー１０４は、ライブラリ部１２１に登録されているルールＲ１
『指部を作業台の位置Ｎに移動する』に、条件が設定されているか否かを判別する。この
場合、ルールＲ１『指部を作業台の位置Ｎに移動する』には、条件が設定されていない。
ステップＳ６０５終了後、ステップＳ６０６に進む。
【０１１１】
（ステップＳ６０６）
次に、シナリオエディター１０４は、ルールＲ１『指部を作業台の位置Ｎに移動する』
に基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御
部１０８に出力する。ステップＳ６０６終了後、ステップＳ６０７に進む。
【０１１２】
（ステップＳ６０７）
次に、アーム制御部１０８は、シナリオエディター１０４が出力するロボット制御コマ
ンド『指部を作業台の位置Ｎに移動する』に基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、センサー出力取得部１０７が出力する回転角度および速
度を示す情報と、画像処理部１０６が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、拡張ユニット２５６を把持している指部４０を可動載
置台２１０の位置まで移動させる。
【０１１３】
次に、ステップＳ４０５の命令Ｍ３≪ねじ（Ｏｂｊ）を可動載置台（Ｐｏｓ）に置く≫
の処理について、図１２のフローチャートを用いて説明する。図１２は、本実施形態に係
る命令≪ねじを可動載置台に置く≫処理の一例のフローチャートである。
【０１１４】
（ステップＳ７０１）
シナリオプレーヤー１０４は、命令Ｍ３≪ねじを可動載置台に置く≫に未設定のパラメ
ーターがあるか否かを判別する。この場合、命令Ｍ３≪ねじを可動載置台に置く≫に未設
定のパラメーターがあるがあるため、シナリオプレーヤー１０４は、パラメーター取得命
令を、ライブラリ部１２１から読み出す。ステップＳ７０１終了後、ステップＳ７０２に
進む。
【０１１５】
（ステップＳ７０２）
次に、シナリオプレーヤー１０４は、アーム制御部１０８に可動載置台２１０の位置Ｐ
を読み出すロボット制御コマンド（例えば、Ｓｅｎｄ  Ｓｃａｎ  Ｏｂｊ）をアーム制御
部１０８に出力する。この場合、可動載置台２１０の位置Ｐは、例えば、拡張ユニット２
５６の面２５８と組み合わされる可動載置台２１０の上に置かれている基部２５１の面２
５３の中心点である。
なお、すでにデータベース１０３に可動載置台の位置Ｐが登録されている場合、シナリ
オプレーヤー１０４は、データベース１０３のライブラリ部１２１に登録されている可動
載置台の位置Ｐを読み出す。ステップＳ７０２終了後、ステップＳ７０３に進む。
【０１１６】
（ステップＳ７０３）
アーム制御部１０８は、撮像装置５０が取得した画像データから公知の手法を用いて、
基部２５１の面２５３の中心点の位置Ｐを算出する。また、アーム制御部１０８は、例え
ば、基部２５１の面２５３の中心点の位置Ｐを算出するために、撮像装置５０の角度や位
置を制御することで、拡張ユニット２５６を撮像する。アーム制御部１０８は、算出した
可動載置台２１０の位置Ｐを、データベース１０３のライブラリ部１２１に登録して、デ
ータベース１０３のライブラリ部１２１を更新する。ステップＳ７０３終了後、ステップ
Ｓ７０４に進む。
【０１１７】
（ステップＳ７０４）
次に、シナリオプレーヤー１０４は、命令Ｍ３≪ねじを可動載置台に置く≫のシナリオ
であるルールＲと、ルールＲに設定されている条件Ｃを、ライブラリ部１２１から読み出
す。ステップＳ７０４終了後、ステップＳ７０５に進む。
この場合、命令Ｍ３には、ルールＲ１『拡張ユニットを基部の位置Ｎに置く』、ルール
Ｒ２『指部をねじのサイズＷより大きく開く』が設定されている。
【０１１８】
（ステップＳ７０５）
次に、シナリオプレーヤー１０４は、ライブラリ部１２２に登録されているルールＲ１
『拡張ユニットを基部の位置Ｎに置く』に、条件が設定されているか否かを判別する。こ
の場合、ルールＲ１『拡張ユニットを基部の位置Ｎに置く』には、条件が設定されていな
い。ステップＳ７０５終了後、ステップＳ７０６に進む。
【０１１９】
（ステップＳ７０６）
次に、シナリオエディター１０４は、ルールＲ１『拡張ユニットを基部の位置Ｎに置く
』に基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制
御部１０８に出力する。ステップＳ７０６終了後、ステップＳ７０７に進む。
【０１２０】
（ステップＳ７０７）
次に、アーム制御部１０８は、シナリオエディター１０４が出力するロボット制御コマ
ンド『拡張ユニットを基部の位置Ｎに置く』に基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、センサー出力取得部１０７が出力する回転角度および速
度を示す情報と、画像処理部１０６が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、拡張ユニット２５６を把持している指部４０を基部２
５１に置かせる。ステップＳ７０７終了後、ステップＳ７０８に進む。
【０１２１】
（ステップＳ７０８）
次に、シナリオエディター１０４は、ライブラリ部１２２に登録されているルールＲ２
『指部をねじのサイズＷより大きく開く』に、条件が設定されているか否かを判別する。
この場合、ルールＲ２『指部をねじのサイズＷより大きく開く』には、《ねじのサイズＷ
より１０％大きいサイズＷＬの計算上》（条件Ｃ１）、《指部をＷＬだけ開くを送信》（
条件Ｃ２）が設定されている。ステップＳ７０８終了後、ステップＳ７０９に進む。
【０１２２】
（ステップＳ７０９）
次に、シナリオエディター１０４は、条件Ｃ１《ねじのサイズＷより１０％大きいサイ
ズＷＬの計算上》に基づき、データベース１０３のライブラリ部１２１に登録されている
拡張ユニット２５６のサイズＳ（横幅Ｗ）を読み出す。
次に、シナリオエディター１０４は、読み出した拡張ユニット２５６のサイズＳ（横幅
Ｗ）に基づき、ねじのサイズＷ（Ｏｂｊ．Ｗ）に対して、１０％大きい幅ＷＬ＝Ｏｂｊ．
Ｗ）×１．１を、指部を開く幅ＷＬとして算出する。ステップＳ７０９終了後、ステップ
Ｓ７１０に進む。
【０１２３】
（ステップＳ７１０）
次に、シナリオプレーヤー１０４は、読み出したルールＲ２の条件Ｃ２《指部をＷＬだ
け開くを送信》に算出した指部を開く幅ＷＬを組み込み、条件Ｃ２’を生成する。次に、
シナリオプレーヤー１０４は、生成した条件Ｃ２’《指部をＷＬだけ開く》に基づき、ロ
ボット制御コマンド『指部をＷＬだけ開く』（Send Open Hand, SL）を生成し、生成した
ロボット制御コマンドをアーム制御部１０８に出力する。ステップＳ７１０終了後、ステ
ップＳ７１１に進む。
【０１２４】
（ステップＳ７１１）
次に、アーム制御部１０８には、シナリオエディター１０４が出力するロボット制御コ
マンド『指部をＷＬだけ開く』基づいて、アーム制御信号を生成する。
次に、アーム制御部１０８は、生成したアーム制御信号により、拡張ユニット２５６の
サイズＳより指部４０の２本の指の間隔を広げるように、指部４０を制御する。これによ
り、基部２５１の上に、拡張ユニット２６１が組み合わされる。
【０１２５】
次に、組み合わされた基部２５１と拡張ユニット２５６にねじ２４０を置く処理の概略
を説明する。図１３は、本実施形態に係る基部２５１と拡張ユニット２５６にねじ２４０
を置く処理の手順の一例のフローチャートである。
【０１２６】
（ステップＳ８０１）
まず、操作者は、入力装置６２から命令≪ねじを掴む≫、≪可動載置台に移動する≫、
≪ねじを可動載置台に置く≫を入力する。ステップＳ８０１終了後、ステップＳ８０２に
進む。
【０１２７】
（ステップＳ８０２）
次に、命令取得部１０１は、入力装置６２が出力する命令Ｍ１≪ねじを掴む≫、命令Ｍ
２≪可動載置台に移動する≫、命令Ｍ３≪ねじを可動載置台に置く≫を取得し、取得した
命令Ｍ１≪ねじを掴む≫、命令Ｍ２≪可動載置台に移動する≫、命令Ｍ３≪ねじを可動載
置台に置く≫をシナリオエディター１０２、および画像表示装置６０に出力する。
本実施形態では、シナリオエディター１０２は、シナリオの編集を行わないため、命令
取得部１０１が出力する命令Ｍ１≪ねじを掴む≫、命令Ｍ２≪可動載置台に移動する≫、
命令Ｍ３≪ねじを可動載置台に置く≫を、そのままシナリオプレーヤー１０４に出力する
。ステップＳ８０２終了後、ステップＳ８０３に進む。
【０１２８】
（ステップＳ８０３）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪ねじを掴む≫の処理を、
例えば、上述したステップＳ５０１〜Ｓ５２２と同様に行う。ステップＳ８０３終了後、
ステップＳ８０４に進む。
【０１２９】
（ステップＳ８０４）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪可動載置台に移動する≫
の処理を、例えば、上述したステップＳ６０１〜Ｓ６０７と同様に行う。ステップＳ８０
４終了後、ステップＳ８０５に進む。
【０１３０】
（ステップＳ８０５）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪ねじを可動載置台に置く
≫の処理を、上述したステップＳ７０１〜Ｓ７１１と同様に行う。
以上の制御により、指部４０に把持されているねじ２４０は、拡張ユニット２５６のね
じ締めを行う位置に置かれる。
【０１３１】
次に、組み合わされた基部２５１と拡張ユニット２５６にねじ締めを行う処理の概略を
説明する。図１４は、本実施形態に係る基部２５１と拡張ユニット２５６にねじ締めを行
う処理の手順の一例のフローチャートである。
【０１３２】
（ステップＳ８５１）
次に、操作者は、入力装置６２から命令≪ドライバーを掴む≫、≪拡張ユニットのねじ
締め位置に移動する≫、≪ドライバーを縦にする≫、≪ドライバーを回す≫と入力する。
ステップＳ８５１終了後、ステップＳ８５２に進む。
【０１３３】
（ステップＳ８５２）
次に、命令取得部１０１は、入力装置６２が出力する命令Ｍ１≪ドライバーを掴む≫、
命令Ｍ２≪拡張ユニットのねじ締め位置に移動する≫、命令Ｍ３≪ドライバーを縦にする
≫、命令Ｍ４≪ドライバーを回す≫を取得する。命令取得部１０１は、取得した命令Ｍ１
≪ドライバーを掴む≫、命令Ｍ２≪拡張ユニットのねじ締め位置に移動する≫、命令Ｍ３
≪ドライバーを縦にする≫、命令Ｍ４≪ドライバーを回す≫をシナリオエディター１０２
、および画像表示装置６０に出力する。
本実施形態では、シナリオエディター１０２は、シナリオの編集を行わないため、命令
取得部１０１が出力する命令Ｍ１≪ドライバーを掴む≫、命令Ｍ２≪拡張ユニットのねじ
締め位置に移動する≫、命令Ｍ３≪ドライバーを縦にする≫、命令Ｍ４≪ドライバーを回
す≫を、そのままシナリオプレーヤー１０４に出力する。ステップＳ８５２終了後、ステ
ップＳ８５３に進む。
【０１３４】
（ステップＳ８５３）
シナリオプレーヤー１０４とアーム制御部１０８は、命令Ｍ１≪ドライバーを掴む≫の
処理を、例えば、上述したステップＳ５０１〜Ｓ５２２と同様に行う。この処理により、
指部４０にドライバーを掴ませる。ステップＳ８５３終了後、ステップＳ８５４に進む。
【０１３５】
（ステップＳ８５４）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪拡張ユニットのねじ締め
位置に移動する≫処理を、例えば、上述したステップＳ６０１〜Ｓ６０７と同様に行う。
この処理により、指部４０に把持されたドライバー７０の先端の嵌合部を拡張ユニット２
５６のねじ締め位置に移動させる。ステップＳ８５４終了後、ステップＳ８５５に進む。
【０１３６】
（ステップＳ８５５）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪ドライバーを縦にする≫
処理を行い、指部４０に把持されているドライバー７０を縦にさせる。ステップＳ８５５
終了後、ステップＳ８５６に進む。
【０１３７】
（ステップＳ８５６）
次に、シナリオプレーヤー１０４とアーム制御部１０８は、≪ドライバーを回す≫処理
を行い、指部４０に把持されているドライバー７０を回し、拡張ユニットのねじ締め部に
ねじ２４０を締め付けさせる。
なお、アーム制御部１０８は、センサー出力取得部１０７が出力する指部４０に加わる
力成分とトルク成分を含む情報に基づき、指部４０がねじ締めを完了したことを検出する
。
【０１３８】
以上のように、操作者は、入力装置６２から、≪Ｏｂｊを掴む≫、≪Ｐｏｓに移動する
≫、≪ＯｂｊをＰｏｓに置く≫のような指示を入力する。そして、制御装置１００は、指
示を、データベース１０３に記憶されているシナリオとライブラリに基づき、ロボット１
を制御するために必要な位置情報、部品等の大きさ等を設定する。さらに、制御装置１０
０は、ロボット１に対する指示された内容をシナリオに基づき、ロボット１が実行可能な
アーム制御信号またはロボット制御コマンドを生成し、生成したアーム制御信号またはロ
ボット制御コマンドによりロボット１を制御する。
この結果、操作者は、入力装置６２から、≪Ｏｂｊを掴む≫、≪Ｐｏｓに移動する≫、
≪ＯｂｊをＰｏｓに置く≫のような指示を入力するのみで、制御装置１００がデータベー
ス１０３に記憶されているシナリオとライブラリに基づいて、ロボット１に組み立てを行
わせることができる。
すなわち、従来技術では、ロボット１に拡張ユニットを掴ませるためには、上述したよ
うに、ステップＳ５０１〜Ｓ５１９で行う操作に関するコマンドを操作者がすべて入力す
る必要があった。一方、本実施形態によれば、制御装置１００が、入力された指示をデー
タベース１０３に記憶されているシナリオとライブラリに基づいて解釈するようにしたの
で、操作者は、曖昧または不定パラメーターの入った抽象的な指示（シナリオ命令）でロ
ボット１を操作することができる。
【０１３９】
なお、本実施形態では、Ｏｂｊの判別を、データベース１０３のシナリオ部１２０また
はライブラリ部１２１に記憶されているライブラリを読み出して行う例を説明したが、例
えば、撮像装置５０が撮像した画像データも用いて判別するようにしてもよい。この場合
、例えば、アーム制御部１０８は、拡張ユニット２５６が可動載置台２１０に置かれてい
るか否かを画像データから判別する。そして、拡張ユニット２５６が置かれていないと判
別された場合、アーム制御部１０８は、拡張ユニット２５６が可動載置台２１０に置かれ
ていないことを示す情報をシナリオプレーヤー１０４に出力するようにしてもよい。そし
て、シナリオプレーヤー１０４は、アーム制御部１０８が出力する拡張ユニット２５６が
可動載置台２１０に置かれていないことを示す情報に基づき、Ｏｂｊを拡張ユニット２５
６と解釈するようにしてもよい。
【０１４０】
また、本実施形態では、シナリオエディター１０２が、入力された命令を編集しない例
を説明した。以下に、シナリオエディター１０２が、入力された命令を編集する例を説明
する。
入力装置６２から命令が入力された場合、シナリオエディター１０２は、命令取得部１
０１が出力する命令に対応するシナリオをデータベースのライブラリ部１２１から読み出
す。シナリオエディター１０２は読み出したシナリオを画像表示装置６０に表示させる。
操作者は、画像表示装置６０に表示されたシナリオが、操作者が行いたい操作と一致し
ているか確認し、異なっている箇所があれば、画像表示装置６０と入力装置６２を用いて
、シナリオの編集を行う。
シナリオの編集では、シナリオエディター１０２で、シナリオを構成しているルールの
追加、編集、及び削除をメニューで指定して行うことができる。ルールの編集では、ルー
ルの名前即ち結論と、各条件をテキスト編集する。この編集では、例えば、既に入力済み
の全てのルールの結論と条件の一覧からドロップダウンリストで選択することもできる。
シナリオエディター１０２は、編集されたシナリオをシミュレーター１０５に出力する
。シミュレーター１０５は、シナリオエディター１０２が出力する編集されたシナリオに
基づき、ロボット１が適正に動作するか判別し、判別結果をシナリオエディター１０２に
出力する。シナリオエディター１０２は、シミュレーター１０５が出力する判定結果を画
像表示装置６０に出力する。
または、シミュレーター１０５は、シナリオエディター１０２が出力する編集されたシ
ナリオに基づき、例えば、３Ｄ動画データを生成し、生成した３Ｄ動画データを画像表示
装置６０に表示するようにしてもよい。このシミュレーション結果を、画像表示装置６０
上で視覚的に確認できるため、ロボット１の操作者は、入力したり編集した命令が、エラ
ー無く、または、操作したいと考えている通りに動作するかを、実際にロボット１を動作
させる前に確認することができる。
【０１４１】
［第２実施形態］
第１実施形態では、図５に示したように、制御装置１００が、入力された命令の解釈を
行って、ロボット１を制御する例を説明した。
第２実施形態は、命令解釈装置が、入力された命令を解釈し、解釈した命令を制御装置
に出力する。そして、制御装置は、入力された命令に基づきロボットを制御する。
【０１４２】
図１５は、本実施形態に係る命令解釈装置、制御装置、データベースの構成の一例を説
明する図である。図１５に示すように、ロボットシステムは、命令解析装置３００は、命
令取得部３０１、シナリオエディター３０２、シナリオプレーヤー３０４、及びシミュレ
ーター３０５を備えている。命令取得部３０１、シナリオエディター３０２、シナリオプ
レーヤー３０４、シミュレーター３０５の機能は、第１実施形態の命令取得部１０１、シ
ナリオエディター１０２、シナリオプレーヤー１０４、及びシミュレーター１０５と同じ
である。
データベース３１０は、シナリオ部３１１、ライブラリ部３１２、及びパラメーター部
３１３を備えている。シナリオ部３１１、ライブラリ部３１２、及びパラメーター部３１
３は、それぞれ第１実施形態と同様のデータが登録されている。
制御装置１００ａは、画像処理部１０６ａ、センサー出力取得部１０７ａ、アーム制御
部１０８ａ、駆動部１０９ａを備えている。画像処理部１０６ａ、センサー出力取得部１
０７ａ、アーム制御部１０８ａ、駆動部１０９ａの機能は、第１実施形態の画像処理部１
０６、センサー出力取得部１０７、アーム制御部１０８、駆動部１０９と同様である。
【０１４３】
図１５に示したロボットシステムは、従来の構成に、命令解釈装置３００とデータベー
ス３１０を加えることで構成されている。命令解釈装置３００は、例えばＰＣ（パーソナ
ル・コンピューター）で構成するようにしてもよい。このため、従来のロボットシステム
にＰＣとデータベース３１０を追加するだけで、簡単に且つローコストで構成することが
できる。
【０１４４】
なお、本実施形態では、命令解釈装置３００とデータベース３１０を別々に構成する例
を説明したが、データベース３１０は、命令解釈装置３００が備えるようにしてもよい。
【符号の説明】
【０１４５】
１・・・ロボット  ２・・・アーム  １０・・・固定部  ２０・・・アーム部
３０・・・力センサー  ４０・・・指部  ５０・・・撮像装置  ６０・・・画像表示装置
６２・・・入力装置  ７０・・・ドライバー  ７５・・・ドライバー置台
８２、８３、８５・・・回転部  ８１、８４、８６・・・屈折部
１００・・・制御装置  １０１、３０１・・・命令取得部
１０２、３０２・・・シナリオエディター  １０３、３１０・・・データベース
１２０、３１１・・・シナリオ部  １２１、３１２・・・ライブラリ部
１２２、３１３・・・パラメーター部
１０４、３０２・・・シナリオプレーヤー（制御コマンド生成部）
１０５、３０５・・・シミュレーター  １０７・・・画像処理部
１０７・・・センサー出力取得部  １０８・・・アーム制御部  １０９・・・駆動部
２００・・・コンベヤー  ２１０・・・可動載置台  ２４０・・・ねじ
２５１・・・基台  ２５６・・・拡張ユニット  ３００・・・命令解釈装置
Ｍ・・・命令
Ｒ・・・ルール（サブシナリオ）
【図１】
0005895347.tif 000002
【図２】
0005895347.tif 000003
【図３】
0005895347.tif 000004
【図４】
0005895347.tif 000005
【図５】
0005895347.tif 000006
【図６】
0005895347.tif 000007
【図７】
0005895347.tif 000008
【図８】
0005895347.tif 000009
【図９】
0005895347.tif 000010
【図１０】
0005895347.tif 000011
【図１１】
0005895347.tif 000012
【図１２】
0005895347.tif 000013
【図１３】
0005895347.tif 000014
【図１４】
0005895347.tif 000015
【図１５】
0005895347.tif 000016