説明

ロボット制御装置、ロボット制御方法、およびプログラム

【課題】曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができず汎用性のあるロボット制御装置、ロボット制御方法、およびプログラムを提供すること。
【解決手段】シナリオとサブシナリオとが対応付けられて登録されているデータベース103と、入力装置62から入力された命令を取得する命令取得部101と、命令取得部が取得した命令に対応するサブシナリオをデータベースから読み出して、サブシナリオに基づいてロボット1を制御する制御コマンドを生成する制御コマンド生成部104とを備え、制御コマンド生成部は、命令取得部が取得した命令を実行するのに必要な要素に未取得の要素がある場合、ロボットに未取得の要素を取得させる命令を抽出してロボットに送信し、ロボットが取得した要素をサブシナリオに組み込んでロボットを制御する制御コマンドを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御装置、ロボット制御方法、およびプログラムに関する。
【背景技術】
【0002】
近年、製造現場等では、スカラロボットや多軸ロボット等が製品の組み立てや検査等に
用いられている。製品の組み立てや検査を行うときに物体を運搬する場合、ロボットは、
物体を吸着したり、アームにより把持したりする。このように、ロボットに操作を行わせ
るためには、物体の大きさ、物体が置かれている位置、物体の搬送先の位置などを予め計
測しておき、計測した値を組み込んだ操作命令をロボットに送信する必要がある。また、
操作命令は、1つ1つの手順を指示する命令の必要がある。
【0003】
ロボットの操作者がロボットを操作するための命令を全て記述するには、大労力や知識
が必要である。このため、特許文献1に記載の発明では、ロボットに対して、「こっち」
、「あっち」、または「そっち」などの方向を表す指示を入力する。ロボットは、入力さ
れた指示を、ロボットが移動している速度、方向に基づいて、対面視点、鳥瞰図視点また
は共有視点のいずれかのユーザ視点を決定する。そして、ロボットは、そのユーザ視点に
基づいて、指示語を解釈して解釈した方向に移動する。
【0004】
また、特許文献2に記載の発明では、ロボットが備えるセンサーが取得したデータから
特徴量を抽出し、抽出した特徴量と、用語付きデータベースに登録されている用語付きの
データ群との類似性を比較する。そして、類似していないデータ群を新たにデータベース
に登録する。そして、用語未決定のデータ群が一定量データ量になった場合、用語付与手
段は、操作者にデータ群を提示して質問を行い、データ群に対して操作者に用語名を命名
させて付与する。ロボットは、センサー出力と、このように生成されたデータベースを用
いて、ロボットの制御を行う。そして、特許文献2に記載の発明では、ロボットの操作者
が声により命令を行った場合、その命令に一致する用語をデータベースに登録されている
か比較する。データベースに登録されている場合、登録されている用語を選択し、選択し
た行動を実行する。そして、ロボットは、行動に対して操作者の言葉による命令に基づき
、その行動が正しいと判別される場合、命令と行動とを適合させて学習し、データベース
に蓄えている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許3318539号公報
【特許文献2】特許3884160号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の発明では、ロボットに入力される命令は方向に関す
るものだけなので、方向以外の曖昧な命令をロボットに入力しても、ロボットに動作を行
わせることができず汎用性に欠ける。
【0007】
また、特許文献2に記載の発明では、データベースに蓄積されている用語と行動とを結
合されて学習させる場合、人間がデータ群に用語を命名する必要がある。さらにデータベ
ースに登録されている用語が文脈に依存し、また用語データと命令とが1対1に対応して
いる。このため、用語データと命令とが関連付けられていない曖昧な命令をロボットに入
力しても、ロボットに動作を行わせることができず汎用性に欠ける。
【0008】
本発明は、上記の問題点に鑑みてなされたものであって、曖昧な命令をロボットに入力
しても、ロボットに動作を行わせることができる汎用性のあるロボット制御装置、ロボッ
ト制御方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット
制御装置であって、シナリオとサブシナリオとが対応付けられて登録されているデータベ
ースと、入力装置から入力された命令を取得する命令取得部と、前記命令取得部が取得し
た命令に対応する前記サブシナリオを前記データベースから読み出して、前記サブシナリ
オに基づいてロボットを制御する制御コマンドを生成する制御コマンド生成部と、を備え
、前記制御コマンド生成部は、前記命令取得部が取得した命令を実行するのに必要な要素
に未取得の要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出し
て前記ロボットに送信し、前記ロボットが取得した要素を前記サブシナリオに組み込んで
前記ロボットを制御する制御コマンドを生成することを特徴としている。
【0010】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登
録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから
読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマ
ンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボット
を制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定してい
ない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性
のあるロボット制御装置を提供できる。また、入力する命令に要素の値を記述しなくても
、ロボットに動作を行わせることができる効果がある。
【0011】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記取得された命令
に未取得の要素がある場合、前記ロボットが取得した要素を前記データベースの要素に登
録し、前記登録された要素を前記サブシナリオに組み込んで前記ロボットを制御する制御
コマンドを生成するようにしてもよい。
【0012】
本発明によれば、コマンド生成部は、データベースから読み出したサブシナリオから読
み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマン
ド生成部は、ロボットが取得した要素をデータベースに登録して更新する。この更新され
た要素を用いて、制御コマンド生成部は、制御コマンドを生成する。この結果、入力され
た命令自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに
動作を行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力す
る命令に要素の値を記述しなくても、ロボットに要素を取得させ、取得させた要素をデー
タベースに登録して更新できる効果がある。
【0013】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに
未取得の要素がない場合、前記データベースから前記要素を読み出し、前記データベース
から読み出した要素を前記サブシナリオに組み込んで前記ロボットを制御するコマンドを
生成するようにしてもよい。
【0014】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されている要素を読み出し、読み出した要素を命令またはサブシ
ナリオに組み込んでロボットを制御するコマンドを生成する。この結果、入力された命令
自体に要素の値を設定していない曖昧な命令をロボットに入力しても、ロボットに動作を
行わせることができる汎用性のあるロボット制御装置を提供できる。また、入力する命令
に要素の値を記述しなくても、ロボットに動作を行わせることができる効果がある。
【0015】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記サブシナリオに
前記要素を算出する命令がある場合、前記ロボットに前記要素を算出させる命令を前記デ
ータベースから読み出した前記サブシナリオから抽出して、該サブシナリオから抽出した
命令により前記要素を算出するようにしてもよい。
【0016】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されている要素を読み出し、読み出した要素を用いて、未設定の
要素を算出するようにした。この結果、入力された命令自体に要素の値を設定していない
曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性のあ
るロボット制御装置を提供できる。
【0017】
本発明のロボット制御装置において、前記制御コマンド生成部は、前記命令取得部が取
得した命令に対応する要素を含むサブシナリオを前記データベースから読み出し、読み出
した要素を含むサブシナリオを編集するコマンド編集部と、前記コマンド編集部が編集し
た要素を含むサブシナリオを前記ロボットに対して仮想的に動作させ、前記ロボットの動
作が適正か否かを判別するシミュレーター部と、を備え、前記制御コマンド生成部は、前
記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を含む
サブシナリオに基づき、前記ロボットを制御する制御コマンドを生成するようにしてもよ
い。
【0018】
本発明によれば、入力された命令に対応するサブシナリオを編集した場合、編集された
サブ命令群が適正に動作するか否かをシミュレーター部で確認する。そして、シミュレー
ター部の判別結果が適正の場合、編集されたサブシナリオに基づき、ロボットを制御する
制御コマンドを生成するようにした。この結果、命令が曖昧であっても、命令を編集する
ことができ、そして、編集した命令に基づくサブシナリオが適正に動作するか事前に確認
することができる。
【0019】
本発明のロボット制御装置において、前記シナリオは、前記命令と前記要素とルールベ
ースの前記サブシナリオとから構成され、前記制御コマンド生成部は、前記サブシナリオ
に含まれている前記要素を探索して、前記取得された命令に対応する前記サブシナリオを
読み出すようにしてもよい。
【0020】
本発明によれば、データベースに登録されているシナリオがルールベースであり、この
シナリオに入力された命令を含んでいるため、制御コマンド生成部は、曖昧な命令が入力
された場合でも、ロボットを適正に動作させるためのシナリオを抽出できる。この結果、
入力された命令が曖昧であっても、ロボットに適切な操作をさせるためのシナリオを用い
て動作を行わせることができるので、汎用性のあるロボット制御装置を提供できる。
【0021】
上記目的を達成するため、本発明は、制御コマンドによりロボットを制御するロボット
制御方法であって、シナリオとサブシナリオとが対応付けられて登録されているデータベ
ースと、命令取得部が、入力装置から入力された命令を取得する命令取得工程と、制御コ
マンド生成部が、前記命令取得工程が取得した命令に対応する前記サブシナリオを前記デ
ータベースから読み出して、前記サブシナリオに基づいてロボットを制御する制御コマン
ドを生成する制御コマンド生成工程と、を含み、前記制御コマンド生成工程は、前記命令
取得工程が取得した命令を実行するのに必要な要素に未取得の要素がある場合、前記ロボ
ットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前記ロボッ
トが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御コマンド
を生成することを特徴としている。
【0022】
上記目的を達成するため、本発明は、制御コマンドによりロボット制御の処理をコンピ
ューターに実行させるためのプログラムであり、入力装置から入力された命令を取得する
命令取得手順と、前記命令取得手順が取得した命令を実行するのに必要な要素に未取得の
要素がある場合、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボ
ットに送信し、前記ロボットが取得した要素を、データベースから読み出したサブシナリ
オに組み込んで前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と
、をコンピューターに実行させる。
【0023】
本発明によれば、入力された命令自体に要素の値を設定していなくても、コマンド生成
部がデータベースに登録されているか否かを判別する。そして、データベースに要素が登
録されていない場合、コマンド生成部は、データベースから読み出したサブシナリオから
読み出した抽出した未設定の要素を取得させる命令をロボットに送信する。そして、コマ
ンド生成部は、ロボットが取得した要素を命令またはサブシナリオに組み込んでロボット
を制御するコマンドを生成する。この結果、入力された命令自体に要素の値を設定してい
ない曖昧な命令をロボットに入力しても、ロボットに動作を行わせることができる汎用性
のあるロボット制御方法、プログラムを提供できる。また、入力する命令に要素の値を記
述しなくても、ロボットに動作を行わせることができる効果がある。
【図面の簡単な説明】
【0024】
【図1】第1実施形態に係るロボットの概略構成を示す斜視図である。
【図2】アセンブリ部品の概略構成を示す断面図である。
【図3】アセンブリ後の概略構成を示す断面図である。
【図4】同実施形態に係るアーム部と力センサーの概念図である。
【図5】同実施形態に係る制御装置のブロック図である。
【図6】同実施形態に係る制御装置によるアーム制御のフローチャートである。
【図7】同実施形態に係る解析処理のフローチャートである。
【図8】同実施形態に係る命令解析の処理のフローチャートである。
【図9】同実施形態に係る拡張ユニットと基部に組み合わせる手順の一例のフローチャートである。
【図10】同実施形態に係る命令≪拡張ユニットを掴む≫処理の一例のフローチャートである。
【図11】同実施形態に係る命令≪可動載置台に移動する≫処理の一例のフローチャートである。
【図12】同実施形態に係る命令≪ねじを可動載置台に置く≫処理の一例のフローチャートである。
【図13】同実施形態に係る基部と拡張ユニットにねじを置く処理の手順の一例のフローチャートである。
【図14】同実施形態に係る基部と拡張ユニットにねじ締めを行う処理の手順の一例のフローチャートである。
【図15】第2実施形態に係る命令解釈装置、制御装置、データベースの構成の一例を説明する図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態について図面を参照して詳細に説明する。なお、本発明は斯か
る実施形態に限定されず、その技術思想の範囲内で種々の変更が可能である。また、以下
の図面においては、各構成をわかりやすくするために、実際の構造と各構造における縮尺
や数等が異なっている。
【0026】
[第1実施形態]
図1は、本実施形態に係るロボット1の概略構成を示す斜視図である。図1に示すよう
に、ロボット1は、1本のアーム2を備えている。アーム2は、固定部10、アーム部2
0、力センサー30、及びエンドエフェクターである指部40を備える。また、ロボット
1は、制御装置100の制御により動作する。また、制御装置100には、撮像装置50
、画像表示装置60、入力装置62が接続されている。
ドライバー70a〜70cは、ドライバー置台75にセットされている。ドライバー7
0a〜70cは、ドライバービットの形状が異なる電動ドライバーまたはドライバーであ
る。以下、ドライバー70a〜70cを総称して、ドライバー70という。
ねじ240は、ねじ自動供給機の取り出し部のレール230上に予め配置されている。
なお、ねじ自動供給機は、公知の技術(例えば、WO2003/106307参照)によ
り取り出し部のレール230上にねじ240を配置する。もしくは、予めレールにねじ2
40が配置されたマガジンを用いてもよい。
また、図1に示すように、ロボット装置1は、例えば工場の組立製造ラインに設置され
ている。この組立製造ラインには、ロボット装置1及び撮像装置50と、組立中である同
種複数のアセンブリ部品が並べ置かれたコンベヤー200とが設置されている。
【0027】
コンベヤー200は、水平な可動載置台210を有し、組立て中である同種複数のアセ
ンブリ部品をその可動載置台210に配置して矢印A方向に搬送する。各アセンブリ部品
は、基台251と、拡張ユニット256である。
図2は、アセンブリ部品の概略構成を示す断面図である。図3は、アセンブリ後の概略
構成を示す断面図である。
図2(a)に示すように、基台251は、可動載置台210に載置された状態でx軸方
向の水平面に平行となる面252と面253を有している。また、基台251には、その
軸方向が基台251の面253に対して垂直となるねじ穴261が、y軸方向に貫通して
設けられている。また、面253は、面252に対して段差を有して形成されている。
図2(b)に示すように、拡張ユニット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により取り付けられる。
【0028】
図1に戻って、固定部10は、例えば床、壁、天井、移動可能な台車の上などに固定さ
れる。固定部10は、内部に、制御装置100(破線にて図示)を備える。
制御装置100は、アーム部20、指部40及び指部40が把持するドライバー70を
制御する。制御装置100の詳細は後述する。なお、制御装置100は、固定部10の内
部ではなく、固定部10の外部に設けるようにしてもよい。
【0029】
アーム部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が各回転屈折軸を中心に複合的に回転または屈折し、動く。
【0030】
アーム部20の第5フレーム25の他方端他には、エンドエフェクターである指部40
が設けられている。指部40は、直接的に、対象物を把持する。なお、指部40は、例え
ば、複数のフレームを有し、対象物を把持できる構造である。
【0031】
アーム部20の第5フレーム25と指部40の間には、力センサー30が介挿されてい
る。力センサー30は、指部40に加わる力の各空間成分(力成分という)とトルクの各
空間成分(トルク成分という)を検出する。力センサー30は、検出した指部40に加わ
る力成分とトルク成分を含む情報を制御装置100に出力する。ここでは、対象物として
ねじ211とドライバー70を例示して説明する。
【0032】
撮像装置50は、ロボット1と同様に、床に対して水平に設置されている。撮像装置5
0は、例えばCCD(Charge Coupled Device)カメラである。撮
像装置50は、ドライバー70の係合部に吸着されたねじ240を撮影し、撮影したアナ
ログ値の画像データを制御装置100に出力する。
【0033】
画像表示装置60は、制御装置100が出力するロボット1の制御状態を示す信号に基
づき、ロボット1の制御状態を表示する。また、画像表示装置60は、入力装置62から
入力されたロボット1に対する指示を、制御装置100を介して表示する。
入力装置62は、使用者が入力したロボット1に対する指示を制御装置100に出力す
る。入力装置62は、例えば、キーボード、マウスである。また、画像表示装置60をタ
ッチパネルにすることで、画像表示装置60が入力装置62を兼ねるようにしてもよい。
【0034】
制御装置100は、ロボット1のアーム2、指部40を、入力装置62から入力された
命令に基づき、後述するデータベース103に登録されているシナリオ、及びライブラリ
を用いて制御する。また、制御装置100は、入力された命令に基づくシナリオに従って
、アーム部20に取り付けられているエンコーダーが出力する回転角度および速度を示す
情報、力センサー30が出力する指部40に加わる力成分とトルク成分を含む情報、およ
び撮像装置50が出力する画像データを用いて、未設定のパラメーターの値を取得する指
示をロボット1に出力する。また、制御装置100は、ロボット1が取得したパラメータ
ーの値をシナリオに組み込んで、パラメーターを組み込んだシナリオに基づき、ロボット
1を制御する。
【0035】
図4は、本実施形態に係るアーム部20と力センサー30の概念図である。
図4に示すように、アーム2のアーム部20は、回転部82、83及び85と、屈折部
81、84及び86とを有している。そして、アーム2のアーム部20は、指部40との
間に力センサー30を有している。
【0036】
屈折部81は、固定部10と第1フレーム21との間に設けられている。回転部82は
、第1フレーム21と第2フレーム22との間に設けられている。回転部83は、第2フ
レーム22と第3フレーム23との間に設けられている。屈折部84は、第3フレーム2
3と第4フレーム24との間に設けられている。回転部85は、第4フレーム24と第5
フレーム25との間に設けられている。屈折部86は、第5フレーム25のうち第4フレ
ーム24が設けられた他方に設けられている。
【0037】
図2に示すように、アーム部20は、6自由度を有する6軸アームである。すなわち、
アーム部20の先端の指部40は、これらの各軸の回転部と屈折部の動作により、移動す
る。このように、アーム部20が6軸アームであるため、互いに独立な6つの変数で制御
することが可能であり、例えば、位置(x、y、z)の3つの変数(成分)、姿勢を表す
角度(α、β、γ)の3つの成分(変数)に対応して制御することができる。
【0038】
また、図4に示すように、回転部82、83及び85と、屈折部81、84及び86は
、各々エンコーダー91〜96を備えている。例えば、回転部82が備えるエンコーダー
92は、回転角度、速度を検出し、検出した回転角度および速度を示す情報を制御装置1
00に出力する。以下、エンコーダー91〜96を、エンコーダー90という。エンコー
ダー90は、例えば光学式エンコーダーであり、アブソリュート(絶対値)エンコーダー
またはインクリメンタル(相対値)エンコーダーである。
【0039】
図5は、本実施形態に係る制御装置100のブロック図である。
図5に示すように、制御装置100は、命令取得部101、シナリオエディター102
、データベース103、シナリオプレーヤー104、シミュレーター105、画像処理部
106、センサー出力取得部107、アーム制御部108、および、駆動部109を備え
ている。
【0040】
命令取得部101は、ロボット1の操作者が入力装置62から入力した命令Mを取得し
、取得した命令Mをシナリオエディター102と画像表示装置60に出力する。
【0041】
シナリオエディター102は、命令取得部101が取得した命令に基づき、編集する必
要があるか否かを判別する。
編集する必要がないと判別された場合、シナリオエディター102は、読み出した命令
(シナリオ)をシナリオプレーヤー104と画像表示装置60に出力する。
編集する必要があると判別された場合、シナリオエディター102は、命令取得部10
1が取得した命令に基づき、データベース103のシナリオ部120に登録されているシ
ナリオを読み出す。シナリオエディター102は、読み出したシナリオを入力された命令
に応じて編集し、編集したシナリオをシミュレーター105に出力する。また、シナリオ
エディター102は、シミュレーター105が出力するシミュレーションした結果が正し
く実行できると判別された場合、編集したシナリオをシナリオ部120に登録し、さらに
そのシナリオに基づく命令をシナリオプレーヤー104に出力する。また、シナリオエデ
ィター102は、シミュレーター105が出力するシミュレーションした結果が正しく実
行できないと判別された場合、正しく実行ができるようになるまでシナリオの編集を繰り
返す。なお、シナリオエディター102は、シナリオ部120から読み出したシナリオ、
または編集後のシナリオをシナリオプレーヤー104に出力するようにしてもよい。
【0042】
データベース103は、シナリオ部120と、ライブラリ部121、及びパラメーター
部122から構成されている。シナリオ部120とライブラリ部121とには、ロボット
1を操作する上で必要な操作に関する後述するシナリオ登録されている。なお、シナリオ
とは、ロボット1の操作者が入力した抽象的な命令をより具体的にした命令の下層の命令
ルール(サブシナリオ)と、そのルールを実行するための命令(条件(サブシナリオ))
で構成されている。また、条件とは、このルールを実行する上で必要な値を取得したり、
値を計算するなどのルールの下層の命令である。また、シナリオ部120には、例えば、
一時的に使用するシナリオが登録され、ライブラリ部121には、標準的なシナリオが登
録されている。
パラメーター部122には、ロボット1の操作に必要なパラメーターの値が登録されて
いる。パラメーターの値とは、例えば、指部40に把持させる対象物の大きさや、対象物
が置かれている場所の位置、対象物を組み付ける場所の位置などである。
【0043】
シナリオプレーヤー104は、シナリオエディター102が出力する命令に基づき、デ
ータベース103のシナリオ部120に登録されているシナリオを読み出す。また、シナ
リオプレーヤー104は、シナリオエディター102が出力する命令に基づき、命令に未
設定のパラメーターが含まれているか否かを判別する。なお、パラメーターとは、例えば
、指部40に把持させる部品の大きさ、部品が置かれている位置など、ロボット1を制御
する上で必要な数値データなどである。
命令に未設定のパラメーターの値が含まれていると判別された場合、シナリオプレーヤ
ー104は、シナリオ部120から読み出したシナリオに基づき、アーム制御部108に
未設定のパラメーターの値を取得して、取得したパラメーターの値をライブラリ部121
に登録する指示を出力する。また、シナリオプレーヤー104は、取得されたパラメータ
ーの値をシナリオに組み込む、パラメーターの値を組み込んだシナリオに基づく命令を生
成する。シナリオプレーヤー104は、生成した命令をアーム制御部108に出力する。
命令に未設定のパラメーターの値が含まれていないと判別された場合、シナリオプレー
ヤー104は、シナリオに含まれるパラメーターの値をライブラリ部121から読み出し
、読み出したパラメーターの値をシナリオに組み込む、パラメーターの値を組み込んだシ
ナリオに基づく命令を生成する。シナリオプレーヤー104は、生成した命令をアーム制
御部108に出力する。
【0044】
シミュレーター105は、シナリオエディター102が出力する編集されたシナリオが
、ロボット1で実行可能かシミュレーションを行う。シミュレーター105は、シナリオ
エディター102が出力する編集されたシナリオの実行時、データベース103に記憶さ
れているパラメーターやシナリオを読み出して用いる。シミュレーター105は、シナリ
オエディター102が出力する編集されたシナリオをシミュレーションした結果をシナリ
オエディター102に出力する。
【0045】
画像処理部106は、アーム制御部108の制御信号に基づき、撮像装置50が出力す
る画像データを取得し、取得した画像データをデジタルデータに変換する。画像取得部1
01は、アーム制御部108が出力する指示に基づき、変換した画像データから対象物を
公知の手法で抽出し、抽出した対象物の大きさ、位置などを公知の手法で算出する。画像
処理部106は、算出した対象物の大きさ、位置などをアーム制御部108に出力する。
【0046】
センサー出力取得部107には、エンコーダー90が出力する回転角度および速度を示
す情報と、力センサー30が出力する指部40に加わる力成分とトルク成分を含むセンサ
ー出力情報を取得し、取得したセンサー出力情報をアーム制御部108に出力する。
【0047】
アーム制御部108には、シナリオプレーヤー104が出力する命令M、画像処理部1
06が出力する画像データ、センサー出力取得部107が出力するセンサー出力情報が入
力される。アーム制御部108は、シナリオプレーヤー104が出力するロボット1を制
御するコマンドに基づき、ロボット1を制御する制御信号を生成し、生成した制御信号を
駆動部109に出力する。また、アーム制御部108は、シナリオプレーヤー104が出
力する命令Mに基づき、センサー出力取得部107が出力するセンサー出力情報を用いて
、ロボット1に未設定のパラメーターを取得させる。アーム制御部108は、取得したパ
ラメーターをデータベース103のライブラリ部121に登録してデータベース103を
更新する。
また、アーム制御部108は、シナリオプレーヤー104が出力する命令Mに基づき、
撮像された画像データから、対象物のパラメーターを抽出し、抽出した対象物の位置や大
きさを算出する指示を出力する。
【0048】
駆動部109は、アーム制御部108が出力する駆動信号に応じて、ロボット1のアー
ム部20を駆動する。
【0049】
次に、制御装置100によるアーム制御の手順を、図6〜図8を用いて説明する。
図6は、本実施形態に係る制御装置100によるアーム制御のフローチャートである。
【0050】
(ステップS1)
制御装置100のアーム制御部108は、入力装置62から指示が入力されたか否か片
別する。入力装置62から命令Mが入力された場合(ステップS1;Yes)、ステップ
S2に進む。入力装置62から命令Mが入力されていない場合(ステップS1;No)、
指示が入力されるまでステップS1を繰り返す。ステップS1終了後、ステップS2に進
む。
【0051】
(ステップS2)
次に、命令取得部101は、入力装置62が出力する命令Mを取得し、取得した命令M
をシナリオエディター102を介し、シナリオプレーヤー104と、アーム制御部108
に出力する。命令取得部101は、命令Mを画像表示装置60に表示する。ステップS2
終了後、ステップS3に進む。
【0052】
(ステップS3)
次に、シナリオプレーヤー104は、命令取得部101が出力する命令Mについて、後
述するように解析処理を行う。シナリオプレーヤー104は、解析結果に基づき、ロボッ
ト1への命令M、ルールR及び条件C’を生成する。また、シナリオエディター104は
、生成したロボット1へのコマンドをアーム制御部108に出力する。ステップS3終了
後、ステップS4に進む。
【0053】
なお、本実施形態では、入力装置62から入力された命令を、命令Mとする。また、命
令Mに対応するシナリオ部120に登録されているシナリオの内、命令Mの下層の命令を
ルールRとする。また、ルールRの下層に設定されている命令を、条件Cをする。例えば
、入力装置62から、命令Mとして≪ねじを掴む≫が入力された場合、シナリオ部120
には、ルールR1『指部をねじが置かれている位置Nの近くに移動する』、ルールR2『
指部をねじの幅より大きく開く』、ルールR3『指部をねじの長さの中心まで下げる』、
ルールR4『指部をねじの幅まで閉じる』、ルールR5『指部を高さNまで上げる』が設
定されている。また、例えば、ルールR1『指部をねじの近くに移動する』には、条件C
1《ねじが置かれている位置Nを取得を送信》、条件C2《指部を位置Nに移動を送信》
が設定されている。また、命令Mを記号≪≫で表し、ルールRを記号『』で表し、条件C
を記号《》で表している。
また、命令MにルールRが記述されていず、ルールのみが設定されている場合もある。
例えば、入力された命令Mが≪ねじを取付け位置Nに移動する≫の場合、ルールRは設定
されていず、条件C1《取付け位置Nを計算》、条件C2《指部を取付け位置Nに移動を
送信》が設定されている。
【0054】
また、本実施形態では、データベース103のライブラリ部121に登録されているシ
ナリオは、ルールベースであり、例えば、複数のルールRが記述されていて、各ルールに
条件が設定されている。そして、これらのルールの最後に、例えば≪Objを掴む≫が記
述されている。このため、シナリオプレーヤー103は、命令取得部101が出力する命
令M1≪ねじを掴む≫に対応するシナリオをデータベースから探索する場合、ルールの最
後を参照することで命令に対応するシナリオを見つけることができる。
【0055】
(ステップS4)
アーム制御部108は、シナリオエディター104が出力するロボット1へのコマンド
、画像処理部106が出力する画像データ、センサー出力取得部107が出力する力成分
とトルク成分を示す情報を用いて、アーム2を制御する。
【0056】
次に、解析処理の手順を、図7と図8を用いて説明する。
図7は、本実施形態に係る解析処理のフローチャートである。図8は、本実施形態に係
る命令解析の処理のフローチャートである。また、以下では、入力装置62から、1つの
命令が入力された場合について説明する。
【0057】
(ステップS101)
まず、シナリオプレーヤー104は、命令取得部101が出力する命令Mに含まれるパ
ラメーターを抽出する。なお、パラメーターとは、命令Mに含まれている処理に値を必要
とするものであり、例えば、ロボット1に把持させる部品や、部品が置かれている場所、
部品の取付け位置などである。ステップS101終了後、ステップS102に進む。
(ステップS102)
次に、シナリオプレーヤー104は、抽出したパラメーターの数を検出する。ステップ
S102終了後、ステップS103に進む。
【0058】
(ステップS103)
次に、シナリオプレーヤー104は、パラメーターをカウントする定数Pを1に設定す
る。ステップS103終了後、ステップS104に進む。
【0059】
(ステップS104)
次に、シナリオプレーヤー104は、入力された命令Mにパラメーターがあるか否かを
判別する。命令Mにパラメーターがある場合(ステップS104;Yes)、ステップS
105に進む。命令Mにパラメーターがない場合(ステップS104;No)、ステップ
S108の命令M解釈の処理に進む。
【0060】
(ステップS105)
命令Mにパラメーターがある場合(ステップS104;Yes)、シナリオプレーヤー
104は、そのパラメーターの値がデータベース103のパラメーター部122にすでに
登録されているか否かを判別する。パラメーターの値がパラメーター部122に登録され
ていない場合(ステップS105;Yes)、ステップS106に進む。パラメーターの
値がライブラリ部121にすでに登録されている場合(ステップS105;No)、ステ
ップS107に進む。
【0061】
(ステップS106)
次に、シナリオプレーヤー104は、パラメーターの値がパラメーター部122に登録
されていない場合(ステップS105;Yes)、パラメーターの値が必要な場合に記述
されているシナリオ(パラメーター取得命令)を、ライブラリ部121から読み出す。次
に、シナリオプレーヤー104は、読み出したパラメーター取得命令のロボットを制御す
るコマンド(以下、ロボット制御コマンドという、例えばSend Scan Obj)をアーム制御
部108に出力する。
なお、パラメーターの値が必要な場合に記述されているシナリオ(パラメーター取得命
令)とは、例えば、入力された命令が≪ねじを掴む≫の場合、ねじの大きさ(ねじ頭部の
大きさ、ねじの長さ)、ねじが置かれている場所の座標などを取得するための指示である

次に、アーム制御部108は、撮像装置50が取得した画像データやアーム2が有する
エンコーダー90の出力に基づき、知の手法を用いてパラメーターの値を算出する。アー
ム制御部108は、算出した拡張ユニット256のパラメーターの値を、パラメーター部
122に登録して、データベース103を更新する。ステップS106終了後、ステップ
S107に進む。
【0062】
(ステップS107)
次に、シナリオプレーヤー104は、パラメーターのカウント用の定数Pに1を加算し
てステップS104に戻る。例えば、入力された命令が≪ねじを掴む≫の場合、パラメー
ターは「ねじ」の1つのみである。このため、ステップS104〜S107の処理は、1
回のみ行う。
【0063】
(ステップS108)
次に、シナリオプレーヤー104は、命令Mにパラメーターがないと判別された場合(
ステップS104;No)、または、ステップS103〜S107の処理が終了した場合
、命令M解釈の処理を行う。
【0064】
次に、命令M解釈の処理について、図8を用いて説明する。
【0065】
(ステップS201)
次に、シナリオプレーヤー104は、取得された命令MにルールRが設定されているか
否かを判別する。命令MにルールRが設定されていると判別された場合(ステップS20
1;Yes)、ステップS202に進む。命令MにルールRが設定されていないと判別さ
れた場合(ステップS201;No)、ステップS206に進む。例えば、入力された命
令が≪ねじを掴む≫の場合、5つのルールR1〜R5を有している。5つのルールR1〜
R5は、例えば、ルールR1『指部を位置Pにあるねじの近くの位置Nに移動する』、ル
ールR2『指部をねじのサイズWより大きく開く』、ルールR3『指部をねじの中心の高
さまで下げる』、ルールR4『指部をねじのサイズWまで閉じる』、ルールR5『指部を
位置Nまで上げる』である。
【0066】
(ステップS202)
次に、シナリオプレーヤー104は、ルールRのカウント用定数のCを1に設定する。
ステップS202終了後、ステップS203に進む。
【0067】
(ステップS203)
次に、シナリオプレーヤー104は、ルールR1とルールR1に設定されている全ての
条件Cを、ライブラリ121部から読み出す。
次に、シナリオプレーヤー104は、読み出したルールR1に条件Cが設定されている
か否かを判別する。ルールRに条件Cが設定されていると判別された場合(ステップS2
03;Yes)、ステップS204に進む。ルールR1に未処理の条件Cがない又はルー
ルR1に条件Cが設定されていないと判別された場合(ステップS203;No)、命令
M解釈の処理を終了する。
【0068】
(ステップS204)
次に、シナリオプレーヤー104は、ルールR1に条件C1が設定されていると判別さ
れた場合(ステップS203;Yes)、命令MのルールR1の解釈の処理を行う。
ルールR1の解釈処理とは、例えば、以下の一連の処理である。シナリオプレーヤー1
04は、ルールR1に設定されている条件C1に、パラメーター部122に登録されてい
るパラメーター値を組み込んでロボット制御コマンドを生成する。または、シナリオプレ
ーヤー104が、パラメーターの値を算出してロボット制御コマンドを生成する。そして
、シナリオプレーヤー104は、生成したロボット制御コマンドをアーム制御部108に
出力して、条件C1に記述されている命令を実行する。
具体的には、例えば、ルールR1『指部を位置Pにあるねじの近くの位置Nに移動する
』の場合、条件C1として《ねじの上の近くの位置Nを計算》が設定されている。シナリ
オプレーヤー104は、この条件C1を行うために必要な、位置Nをパラメーター部12
2から読み出して「ねじの上の近くの位置N」を算出する。なお、近くの位置とは、例え
ば、z軸方向の高さ方向の座標値が10であると、ライブラリ部122に予め定義して登
録しておく。
ステップS204終了後、ステップS205に進む。
【0069】
(ステップS205)
次に、シナリオプレーヤー104は、ルールRのカウント用の定数Cに1を加算してス
テップS203に戻る。
ルールR1に複数の条件が設定されている場合、全ての条件の命令を実施するまでステ
ップS203〜S205を再帰的に繰り返す。また、命令Mに複数のルールRが設定され
ている場合、ステップS202〜S206を、全てのルールRの処理が終了するまで、再
帰的に繰り返す。
【0070】
(ステップS206)
次に、シナリオプレーヤー104は、命令MにルールRが設定されていないと判別され
た場合(ステップS201;No)、命令Mの解釈は行わずに、命令Mをアーム制御部1
08に出力する。
【0071】
すなわち、命令MにルールRが設定されていない場合、シナリオプレーヤー104は、
入力された命令Mを制御装置100にそのまま送信する。一方、命令MにルールRが設定
されている場合、シナリオプレーヤー104は、各ルールに設定されている条件Cを実行
し、命令Mの各ルールRを解釈して実行する。
各ルールRに、条件が設定されている場合、例えば、ねじの大きさを取得、ねじが置か
れている位置を取得などがシナリオプレーヤーで演算すべき命令なのか、アーム制御部1
08に出力する命令なのかを判別することで解釈する。
そして、シナリオプレーヤー104は、出力する命令と判別された命令からロボット制
御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出力する。
または、シナリオプレーヤー104は、ライブラリ部121の値が更新されるか、アーム
制御部108から値がアーム制御部108から返された後、返された値を命令M、ルール
R及び条件Cに組み込み、これらの値が組み込まれた命令M、ルールR及び条件Cからロ
ボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御部108に出
力する。
【0072】
以上のように、操作者は、数値を設定したり、動作を全て記述した命令ではない曖昧な
命令Mを入力装置62から入力する。シナリオプレーヤー104は、入力された命令Mに
未設定のパラメーターがあればアーム制御部108を介してアーム2や撮像装置50を制
御して、未設定のパラメーター値を取得する(アーム制御部108が、データベース10
3のライブラリ部121に取得したパラメーター値を登録する)。
そして、シナリオプレーヤー104は、入力された命令Mに対応するデータベース10
3に登録されているシナリオを読み出す。そして、シナリオプレーヤー104は、取得さ
れたパラメーターを命令、ルール及び条件に組み込み、パラメーターが組み込まれた命令
、ルール及び条件のロボット制御コマンドを生成することで、アーム制御部108が実行
可能な命令を生成している。そして、シナリオプレーヤー104は、生成したロボット制
御コマンドをアーム制御部108に出力し、アーム制御部108が入力されたこのロボッ
ト制御コマンドによりロボット1を制御する。
この結果、操作者は、抽象的な命令を入力装置62から入力した場合でも、制御装置1
00はロボット1に命令を実行させることができる。また、操作者は、ロボット1の操作
に関する全ての命令や、操作に必要な全てのパラメーター値を入力せずに、簡単な命令を
入力することでロボット1に操作を行わせることが可能になる。
【0073】
次に、制御装置100による具体的な制御の一例を説明する。図9は、本実施形態に係
る拡張ユニットと基部に組み合わせる手順の一例のフローチャートである。以下は、接続
ユニット(部品)にドライバーでネジをつける例である。
【0074】
(ステップS401)
まず、操作者は、入力装置62から命令≪拡張ユニットを掴む≫、≪可動載置台に移動
する≫、≪拡張ユニットを可動載置台に置く≫を入力する。なお、記号≪≫は、入力装置
62に入力された命令(文字列)を表す。
なお、掴む対象物をObj、掴んだ対象物の移動先をPosと定義してある場合、入力
する命令は≪Objを掴む≫、≪Posに移動する≫、≪ObjをPosに置く≫でもよ
い。この場合、データベース103のライブラリ部121には、Objが拡張ユニットで
あると設定され登録され、Posが可動載置台であると設定されて登録されているように
してもよい。ステップS401終了後、ステップS402に進む。
【0075】
(ステップS402)
次に、命令取得部101は、入力装置62が出力する命令M1≪拡張ユニットを掴む≫
、命令M2≪可動載置台に移動する≫、命令M3≪拡張ユニットを可動載置台に置く≫を
取得し、取得した命令M1≪拡張ユニットを掴む≫、命令M2≪可動載置台に移動する≫
、命令M3≪拡張ユニットを可動載置台に置く≫をシナリオエディター102、および画
像表示装置60に出力する。
本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令
取得部101が出力する命令≪拡張ユニットを掴む≫、≪可動載置台に移動する≫、≪拡
張ユニットを可動載置台に置く≫を、そのままシナリオプレーヤー104に出力する。ス
テップS402終了後、ステップS403に進む。
【0076】
(ステップS403)
次に、シナリオプレーヤー104とアーム制御部108は、命令M1≪拡張ユニットを
掴む≫処理を行う。ステップS403終了後、ステップS404に進む。
(ステップS404)
次に、シナリオプレーヤー104とアーム制御部108は、命令M2≪可動載置台に移
動する≫処理を行う。ステップS404終了後、ステップS405に進む。
(ステップS405)
次に、シナリオプレーヤー104とアーム制御部108は、命令M3≪拡張ユニットを
可動載置台に置く≫処理を行う。
【0077】
まず、ステップS403の命令M1≪拡張ユニットを掴む≫処理について、フローチャ
ートを用いて説明する。図10は、本実施形態に係る命令≪拡張ユニット(Obj)を掴
む≫処理の一例のフローチャートである。
【0078】
(ステップS501)
シナリオプレーヤー104は、命令M1≪拡張ユニットを掴む≫に未設定のパラメータ
ーがあるか否かを判別する。この場合、命令M1≪拡張ユニットを掴む≫に未設定のパラ
メーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命令を、ラ
イブラリ部121から読み出す。ステップS501終了後、ステップS502に進む。
【0079】
(ステップS502)
次に、シナリオプレーヤー104は、拡張ユニットのサイズS(横幅W、高さh)と位
置Pを読み出すパラメーター取得命令(例えば、Send Scan 拡張ユニット)を
アーム制御部108に出力する。この場合、サイズSは、拡張ユニット256の直径と高
さであり、拡張ユニット256が置かれている位置である。
なお、すでにデータベース103に拡張ユニットのサイズS(横幅W、高さh)と位置
Pが登録されている場合、シナリオプレーヤー104は、データベース103のライブラ
リ部121に登録されている拡張ユニットのサイズS(横幅W、高さh)と位置Pを読み
出す。ステップS502終了後、ステップS503に進む。
【0080】
(ステップ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に進む。
【0081】
(ステップS504)
次に、シナリオプレーヤー104は、命令M1≪拡張ユニットを掴む≫のシナリオであ
るルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出す。
ステップS504終了後、ステップS505に進む。
この場合、命令M1には、以下の5つのルールR1〜R5が設定されている。
【0082】
ルールR1『指部を位置Pにある拡張ユニットの近くの位置Nに移動する』
【0083】
ルールR2『指部を拡張ユニットのサイズWより大きく開く』
【0084】
ルールR3『指部を拡張ユニットの中心の高さまで下げる』
【0085】
ルールR4『指部を拡張ユニットのサイズWまで閉じる』
【0086】
ルールR5『指部を位置Nまで上げる』
【0087】
(ステップS505)
次に、シナリオプレーヤー104は、ライブラリ部121に登録されているルールR1
『指部を位置Pにある拡張ユニットの近くの位置Nに移動する』に条件が設定されている
か否かを判別する。この場合、ルールR1『指部を位置Pにある拡張ユニットの近くの位
置Nに移動する』には、《拡張ユニットの上の近くの位置Nを計算》(条件C1)、《位
置Nに指部を移動を送信》(条件C2)が設定されている。ステップS505終了後、ス
テップS506に進む。
【0088】
(ステップS506)
次に、シナリオプレーヤー104は、条件C1《拡張ユニットの上の近くの位置Nを計
算》に基づき、パラメーター部122に登録されている拡張ユニット256のサイズS(
横幅W、高さh)と位置Pを読み出す。次に、シナリオプレーヤー104は、読み出した
拡張ユニット256が置かれている位置P(Obj.P)を用いて、拡張ユニットの近く
の位置Nを算出する。拡張ユニットの近くの位置N1は、例えばN=Obj.P+(0,
0,10)により算出する。ステップS506終了後、ステップS507に進む。
【0089】
(ステップS507)
次に、シナリオプレーヤー104は、読み出したルールR1の条件C2《位置Nに指部
を移動》に算出した拡張ユニットの上の近くの位置Nを組み込み、条件C2’を生成する
。次に、シナリオプレーヤー104は、生成した条件C2’《位置Nに指部を移動》に基
づき、ロボット制御コマンド『位置Nに指部を移動』(Send Move Hand, N)を生成し、
生成したロボット制御コマンドをアーム制御部108に出力する。なお、条件C2《位置
Nに指部を移動》には、パラメーターの値が組み込まれていないロボット制御コマンドSe
nd Move Hand, Nが、予めライブラリ部122に登録されている。このため、シナリオプ
レーヤー104は、このロボット制御コマンドSend Move Hand, Nに、パラメーターの値
Nを組み込むことで、ロボット制御コマンドを生成する。ステップS507終了後、ステ
ップS508に進む。
【0090】
(ステップS508)
次に、アーム制御部108は、シナリオプレーヤー104が出力するロボット制御コマ
ンド『位置Nに指部を移動』に基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速
度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、指部40を拡張ユニット256が置かれている位置P
の近くの位置Nまで移動させる。ステップS508終了後、ステップS509に進む。
【0091】
(ステップS509)
次に、シナリオエディター104は、ライブラリ部122に登録されているルールR2
『指部を拡張ユニットのサイズWより大きく開く』に、条件が設定されているか否かを判
別する。この場合、ルールR2『指部を拡張ユニットのサイズWより大きく開く』には、
《拡張ユニットのサイズWより10%大きいサイズWLの計算上》(条件C1)、《指部
をWLだけ開くを送信》(条件C2)が設定されている。ステップS509終了後、ステ
ップS510に進む。
【0092】
(ステップS510)
次に、シナリオエディター104は、条件C1《拡張ユニットのサイズWより10%大
きいサイズWLの計算上》に基づき、データベース103のライブラリ部121に登録さ
れている拡張ユニット256のサイズS(横幅W)を読み出す。
次に、シナリオエディター104は、読み出した拡張ユニット256のサイズS(横幅
W)に基づき、拡張ユニットのサイズW(Obj.W)に対して、10%大きい幅WL=
Obj.W)×1.1を、指部を開く幅WLとして算出する。ステップS510終了後、
ステップS511に進む。
【0093】
(ステップS511)
次に、シナリオプレーヤー104は、読み出したルールR2の条件C2《指部をWLだ
け開くを送信》に算出した指部を開く幅WLを組み込み、条件C2’を生成する。次に、
シナリオプレーヤー104は、生成した条件C2’《指部をWLだけ開く》に基づきロボ
ット制御コマンド『指部をWLだけ開く』(Send Open Hand, SL)を生成し、生成したロ
ボット制御コマンドをアーム制御部108に出力する。ステップS511終了後、ステッ
プS512に進む。
【0094】
(ステップS512)
次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コ
マンド『指部をWLだけ開く』基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256の
サイズSより指部40の2本の指の間隔を広げるように、指部40を制御する。ステップ
S512終了後、ステップS513に進む。
【0095】
(ステップS513)
次に、シナリオエディター104は、ライブラリ部122に登録されているルールR3
『指部を拡張ユニットの中心の高さまで下げる』に、条件が設定されているか否かを判別
する。この場合、ルールR3『指部を拡張ユニットのサイズWより大きく開く』には、《
拡張ユニットの中心の高さCHを計算》(条件C1)、《指部を高さCHに移動を送信》
(条件C2)が設定されている。ステップS513終了後、ステップS514に進む。
【0096】
(ステップS514)
次に、シナリオエディター104は、条件C1《拡張ユニットの中心の高さCHを計算
》に基づき、データベース103のライブラリ部121に登録されている拡張ユニット2
56のサイズS(高さh)を読み出す。
次に、シナリオエディター104は、条件C1《拡張ユニットの中心の高さCHを計算
》に基づき、読み出した拡張ユニットの高さhを用いて中心の高さCHを計算する(例え
ば、CH = Obj.P.z + Obj.S.hight / 2)。ステップS514終了後、ステップS515に
進む。
【0097】
(ステップS515)
次に、シナリオプレーヤー104は、読み出したルールR3の条件C2《指部を高さC
Hに移動を送信》に算出した中心の高さCHを組み込み、条件C2’を生成する。次に、
シナリオプレーヤー104は、生成した条件C2’《指部を高さCHに移動》に基づきロ
ボット制御コマンド『指部を高さCHに移動』(Send Move Hand, (,,CH))を生成し、生
成したロボット制御コマンドをアーム制御部108に出力する。ステップS515終了後
、ステップS516に進む。
【0098】
(ステップS516)
次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマ
ンド『指部を高さCHに移動』基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256の
高さhの中心の高さCHに指部40を移動させるように制御する。ステップS516終了
後、ステップS517に進む。
【0099】
(ステップS517)
次に、シナリオエディター104は、ライブラリ部122に登録されているルールR4『
指部を拡張ユニットのサイズWまで閉じる』に、条件が設定されているか否かを判別する
。この場合、ルールR4『指部を拡張ユニットのサイズWまで閉じる』には、条件が設定
されていない。ステップS517終了後、ステップS518に進む。
【0100】
(ステップS518)
次に、シナリオエディター104は、ルールR4『指部を拡張ユニットのサイズWまで
閉じる』に基づき、ロボット制御コマンド『指部を拡張ユニットのサイズWまで閉じる』
(end Close Hand, Obj.S)を生成し、生成したロボット制御コマンドをアーム制御部1
08に出力する。ステップS518終了後、ステップS519に進む。
【0101】
(ステップS519)
次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コ
マンド『指部を拡張ユニットのサイズWまで閉じる』に基づいて、アーム制御信号を生成
する。
次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256の
サイズSまで指部40の2本の指を閉じるように制御する。これにより、指部40は、拡
張ユニットである拡張ユニット256の把持を完了する。ステップS519終了後、ステ
ップS520に進む。
【0102】
(ステップS520)
次に、シナリオエディター104は、ライブラリ部122に登録されているルールR5
『指部を位置Nまで上げる』に、条件が設定されているか否かを判別する。この場合、ル
ールR5『指部を位置Nまで上げる』には、条件が設定されていない。ステップS520
終了後、ステップS521に進む。
【0103】
(ステップS521)
次に、シナリオエディター104は、ルールR5『指部を位置Nまで上げる』に基づき
、ロボット制御コマンド『指部を位置Nまで上げる』(Send Move Hand, N)を生成し、
生成したロボット制御コマンドをアーム制御部108に出力する。ステップS521終了
後、ステップS522に進む。
【0104】
(ステップS522)
次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマ
ンド『指部を位置Nまで上げる』に基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、センサー出力取得部107が出力する指部40に加わる
力成分とトルク成分を含む情報に基づき、指部40が拡張ユニット256を把持したこと
を検出する。次に、アーム制御部108は、生成したアーム制御信号(または、ロボット
制御コマンドSend Move Hand, N)により、把持した拡張ユニット256を、ライブラリ
部121から読み出した高さNまで、拡張ユニット256を把持したまま位置Nまで持ち
上げるように制御する。
以上で、命令M1≪拡張ユニットを掴む≫に対する処理を終了する。
【0105】
次に、ステップS404の命令M2≪可動載置台(Pos)に移動する≫の処理につい
て、図11のフローチャートを用いて説明する。図11は、本実施形態に係る命令≪可動
載置台に移動する≫処理の一例のフローチャートである。
【0106】
(ステップS601)
シナリオプレーヤー104は、命令M2≪可動載置台に移動する≫に未設定のパラメー
ターがあるか否かを判別する。この場合、命令M2≪可動載置台に移動する≫に未設定の
パラメーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命令を
、ライブラリ部121から読み出す。ステップS601終了後、ステップS602に進む

【0107】
(ステップS602)
次に、シナリオプレーヤー104は、アーム制御部108に可動載置台の位置Pを読み
出すロボット制御コマンド(例えば、Send Scan Obj)をアーム制御部10
8に出力する。
なお、すでにデータベース103に可動載置台の位置Pが登録されている場合、シナリ
オプレーヤー104は、データベース103のライブラリ部121に登録されている可動
載置台の位置Pを読み出す。ステップS602終了後、ステップS603に進む。
【0108】
(ステップS603)
アーム制御部108は、撮像装置50が取得した画像データから公知の手法を用いて、
作業台である可動載置台210の位置Pを算出する。また、アーム制御部108は、例え
ば、可動載置台210の位置Pを算出するために、撮像装置50の角度や位置を制御する
ことで、拡張ユニット256を撮像する。アーム制御部108は、算出した可動載置台2
10の位置Pを、データベース103のライブラリ部121に登録して、データベース1
03のライブラリ部121を更新する。ステップS603終了後、ステップS604に進
む。
【0109】
(ステップS604)
次に、シナリオプレーヤー104は、命令M2≪可動載置台に移動する≫のシナリオで
あるルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出す
。ステップS604終了後、ステップS605に進む。
この場合、命令M2には、ルールR1『指部を作業台の位置Nに移動する』が設定され
ている。
【0110】
(ステップS605)
次に、シナリオプレーヤー104は、ライブラリ部121に登録されているルールR1
『指部を作業台の位置Nに移動する』に、条件が設定されているか否かを判別する。この
場合、ルールR1『指部を作業台の位置Nに移動する』には、条件が設定されていない。
ステップS605終了後、ステップS606に進む。
【0111】
(ステップS606)
次に、シナリオエディター104は、ルールR1『指部を作業台の位置Nに移動する』
に基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制御
部108に出力する。ステップS606終了後、ステップS607に進む。
【0112】
(ステップS607)
次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマ
ンド『指部を作業台の位置Nに移動する』に基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速
度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、拡張ユニット256を把持している指部40を可動載
置台210の位置まで移動させる。
【0113】
次に、ステップS405の命令M3≪ねじ(Obj)を可動載置台(Pos)に置く≫
の処理について、図12のフローチャートを用いて説明する。図12は、本実施形態に係
る命令≪ねじを可動載置台に置く≫処理の一例のフローチャートである。
【0114】
(ステップS701)
シナリオプレーヤー104は、命令M3≪ねじを可動載置台に置く≫に未設定のパラメ
ーターがあるか否かを判別する。この場合、命令M3≪ねじを可動載置台に置く≫に未設
定のパラメーターがあるがあるため、シナリオプレーヤー104は、パラメーター取得命
令を、ライブラリ部121から読み出す。ステップS701終了後、ステップS702に
進む。
【0115】
(ステップS702)
次に、シナリオプレーヤー104は、アーム制御部108に可動載置台210の位置P
を読み出すロボット制御コマンド(例えば、Send Scan Obj)をアーム制御
部108に出力する。この場合、可動載置台210の位置Pは、例えば、拡張ユニット2
56の面258と組み合わされる可動載置台210の上に置かれている基部251の面2
53の中心点である。
なお、すでにデータベース103に可動載置台の位置Pが登録されている場合、シナリ
オプレーヤー104は、データベース103のライブラリ部121に登録されている可動
載置台の位置Pを読み出す。ステップS702終了後、ステップS703に進む。
【0116】
(ステップS703)
アーム制御部108は、撮像装置50が取得した画像データから公知の手法を用いて、
基部251の面253の中心点の位置Pを算出する。また、アーム制御部108は、例え
ば、基部251の面253の中心点の位置Pを算出するために、撮像装置50の角度や位
置を制御することで、拡張ユニット256を撮像する。アーム制御部108は、算出した
可動載置台210の位置Pを、データベース103のライブラリ部121に登録して、デ
ータベース103のライブラリ部121を更新する。ステップS703終了後、ステップ
S704に進む。
【0117】
(ステップS704)
次に、シナリオプレーヤー104は、命令M3≪ねじを可動載置台に置く≫のシナリオ
であるルールRと、ルールRに設定されている条件Cを、ライブラリ部121から読み出
す。ステップS704終了後、ステップS705に進む。
この場合、命令M3には、ルールR1『拡張ユニットを基部の位置Nに置く』、ルール
R2『指部をねじのサイズWより大きく開く』が設定されている。
【0118】
(ステップS705)
次に、シナリオプレーヤー104は、ライブラリ部122に登録されているルールR1
『拡張ユニットを基部の位置Nに置く』に、条件が設定されているか否かを判別する。こ
の場合、ルールR1『拡張ユニットを基部の位置Nに置く』には、条件が設定されていな
い。ステップS705終了後、ステップS706に進む。
【0119】
(ステップS706)
次に、シナリオエディター104は、ルールR1『拡張ユニットを基部の位置Nに置く
』に基づき、ロボット制御コマンドを生成し、生成したロボット制御コマンドをアーム制
御部108に出力する。ステップS706終了後、ステップS707に進む。
【0120】
(ステップS707)
次に、アーム制御部108は、シナリオエディター104が出力するロボット制御コマ
ンド『拡張ユニットを基部の位置Nに置く』に基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、センサー出力取得部107が出力する回転角度および速
度を示す情報と、画像処理部106が出力する画像データをフィードバック情報に用いて
、生成したアーム制御信号により、拡張ユニット256を把持している指部40を基部2
51に置かせる。ステップS707終了後、ステップS708に進む。
【0121】
(ステップS708)
次に、シナリオエディター104は、ライブラリ部122に登録されているルールR2
『指部をねじのサイズWより大きく開く』に、条件が設定されているか否かを判別する。
この場合、ルールR2『指部をねじのサイズWより大きく開く』には、《ねじのサイズW
より10%大きいサイズWLの計算上》(条件C1)、《指部をWLだけ開くを送信》(
条件C2)が設定されている。ステップS708終了後、ステップS709に進む。
【0122】
(ステップS709)
次に、シナリオエディター104は、条件C1《ねじのサイズWより10%大きいサイ
ズWLの計算上》に基づき、データベース103のライブラリ部121に登録されている
拡張ユニット256のサイズS(横幅W)を読み出す。
次に、シナリオエディター104は、読み出した拡張ユニット256のサイズS(横幅
W)に基づき、ねじのサイズW(Obj.W)に対して、10%大きい幅WL=Obj.
W)×1.1を、指部を開く幅WLとして算出する。ステップS709終了後、ステップ
S710に進む。
【0123】
(ステップS710)
次に、シナリオプレーヤー104は、読み出したルールR2の条件C2《指部をWLだ
け開くを送信》に算出した指部を開く幅WLを組み込み、条件C2’を生成する。次に、
シナリオプレーヤー104は、生成した条件C2’《指部をWLだけ開く》に基づき、ロ
ボット制御コマンド『指部をWLだけ開く』(Send Open Hand, SL)を生成し、生成した
ロボット制御コマンドをアーム制御部108に出力する。ステップS710終了後、ステ
ップS711に進む。
【0124】
(ステップS711)
次に、アーム制御部108には、シナリオエディター104が出力するロボット制御コ
マンド『指部をWLだけ開く』基づいて、アーム制御信号を生成する。
次に、アーム制御部108は、生成したアーム制御信号により、拡張ユニット256の
サイズSより指部40の2本の指の間隔を広げるように、指部40を制御する。これによ
り、基部251の上に、拡張ユニット261が組み合わされる。
【0125】
次に、組み合わされた基部251と拡張ユニット256にねじ240を置く処理の概略
を説明する。図13は、本実施形態に係る基部251と拡張ユニット256にねじ240
を置く処理の手順の一例のフローチャートである。
【0126】
(ステップS801)
まず、操作者は、入力装置62から命令≪ねじを掴む≫、≪可動載置台に移動する≫、
≪ねじを可動載置台に置く≫を入力する。ステップS801終了後、ステップS802に
進む。
【0127】
(ステップS802)
次に、命令取得部101は、入力装置62が出力する命令M1≪ねじを掴む≫、命令M
2≪可動載置台に移動する≫、命令M3≪ねじを可動載置台に置く≫を取得し、取得した
命令M1≪ねじを掴む≫、命令M2≪可動載置台に移動する≫、命令M3≪ねじを可動載
置台に置く≫をシナリオエディター102、および画像表示装置60に出力する。
本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令
取得部101が出力する命令M1≪ねじを掴む≫、命令M2≪可動載置台に移動する≫、
命令M3≪ねじを可動載置台に置く≫を、そのままシナリオプレーヤー104に出力する
。ステップS802終了後、ステップS803に進む。
【0128】
(ステップS803)
次に、シナリオプレーヤー104とアーム制御部108は、≪ねじを掴む≫の処理を、
例えば、上述したステップS501〜S522と同様に行う。ステップS803終了後、
ステップS804に進む。
【0129】
(ステップS804)
次に、シナリオプレーヤー104とアーム制御部108は、≪可動載置台に移動する≫
の処理を、例えば、上述したステップS601〜S607と同様に行う。ステップS80
4終了後、ステップS805に進む。
【0130】
(ステップS805)
次に、シナリオプレーヤー104とアーム制御部108は、≪ねじを可動載置台に置く
≫の処理を、上述したステップS701〜S711と同様に行う。
以上の制御により、指部40に把持されているねじ240は、拡張ユニット256のね
じ締めを行う位置に置かれる。
【0131】
次に、組み合わされた基部251と拡張ユニット256にねじ締めを行う処理の概略を
説明する。図14は、本実施形態に係る基部251と拡張ユニット256にねじ締めを行
う処理の手順の一例のフローチャートである。
【0132】
(ステップS851)
次に、操作者は、入力装置62から命令≪ドライバーを掴む≫、≪拡張ユニットのねじ
締め位置に移動する≫、≪ドライバーを縦にする≫、≪ドライバーを回す≫と入力する。
ステップS851終了後、ステップS852に進む。
【0133】
(ステップS852)
次に、命令取得部101は、入力装置62が出力する命令M1≪ドライバーを掴む≫、
命令M2≪拡張ユニットのねじ締め位置に移動する≫、命令M3≪ドライバーを縦にする
≫、命令M4≪ドライバーを回す≫を取得する。命令取得部101は、取得した命令M1
≪ドライバーを掴む≫、命令M2≪拡張ユニットのねじ締め位置に移動する≫、命令M3
≪ドライバーを縦にする≫、命令M4≪ドライバーを回す≫をシナリオエディター102
、および画像表示装置60に出力する。
本実施形態では、シナリオエディター102は、シナリオの編集を行わないため、命令
取得部101が出力する命令M1≪ドライバーを掴む≫、命令M2≪拡張ユニットのねじ
締め位置に移動する≫、命令M3≪ドライバーを縦にする≫、命令M4≪ドライバーを回
す≫を、そのままシナリオプレーヤー104に出力する。ステップS852終了後、ステ
ップS853に進む。
【0134】
(ステップS853)
シナリオプレーヤー104とアーム制御部108は、命令M1≪ドライバーを掴む≫の
処理を、例えば、上述したステップS501〜S522と同様に行う。この処理により、
指部40にドライバーを掴ませる。ステップS853終了後、ステップS854に進む。
【0135】
(ステップS854)
次に、シナリオプレーヤー104とアーム制御部108は、≪拡張ユニットのねじ締め
位置に移動する≫処理を、例えば、上述したステップS601〜S607と同様に行う。
この処理により、指部40に把持されたドライバー70の先端の嵌合部を拡張ユニット2
56のねじ締め位置に移動させる。ステップS854終了後、ステップS855に進む。
【0136】
(ステップS855)
次に、シナリオプレーヤー104とアーム制御部108は、≪ドライバーを縦にする≫
処理を行い、指部40に把持されているドライバー70を縦にさせる。ステップS855
終了後、ステップS856に進む。
【0137】
(ステップS856)
次に、シナリオプレーヤー104とアーム制御部108は、≪ドライバーを回す≫処理
を行い、指部40に把持されているドライバー70を回し、拡張ユニットのねじ締め部に
ねじ240を締め付けさせる。
なお、アーム制御部108は、センサー出力取得部107が出力する指部40に加わる
力成分とトルク成分を含む情報に基づき、指部40がねじ締めを完了したことを検出する

【0138】
以上のように、操作者は、入力装置62から、≪Objを掴む≫、≪Posに移動する
≫、≪ObjをPosに置く≫のような指示を入力する。そして、制御装置100は、指
示を、データベース103に記憶されているシナリオとライブラリに基づき、ロボット1
を制御するために必要な位置情報、部品等の大きさ等を設定する。さらに、制御装置10
0は、ロボット1に対する指示された内容をシナリオに基づき、ロボット1が実行可能な
アーム制御信号またはロボット制御コマンドを生成し、生成したアーム制御信号またはロ
ボット制御コマンドによりロボット1を制御する。
この結果、操作者は、入力装置62から、≪Objを掴む≫、≪Posに移動する≫、
≪ObjをPosに置く≫のような指示を入力するのみで、制御装置100がデータベー
ス103に記憶されているシナリオとライブラリに基づいて、ロボット1に組み立てを行
わせることができる。
すなわち、従来技術では、ロボット1に拡張ユニットを掴ませるためには、上述したよ
うに、ステップS501〜S519で行う操作に関するコマンドを操作者がすべて入力す
る必要があった。一方、本実施形態によれば、制御装置100が、入力された指示をデー
タベース103に記憶されているシナリオとライブラリに基づいて解釈するようにしたの
で、操作者は、曖昧または不定パラメーターの入った抽象的な指示(シナリオ命令)でロ
ボット1を操作することができる。
【0139】
なお、本実施形態では、Objの判別を、データベース103のシナリオ部120また
はライブラリ部121に記憶されているライブラリを読み出して行う例を説明したが、例
えば、撮像装置50が撮像した画像データも用いて判別するようにしてもよい。この場合
、例えば、アーム制御部108は、拡張ユニット256が可動載置台210に置かれてい
るか否かを画像データから判別する。そして、拡張ユニット256が置かれていないと判
別された場合、アーム制御部108は、拡張ユニット256が可動載置台210に置かれ
ていないことを示す情報をシナリオプレーヤー104に出力するようにしてもよい。そし
て、シナリオプレーヤー104は、アーム制御部108が出力する拡張ユニット256が
可動載置台210に置かれていないことを示す情報に基づき、Objを拡張ユニット25
6と解釈するようにしてもよい。
【0140】
また、本実施形態では、シナリオエディター102が、入力された命令を編集しない例
を説明した。以下に、シナリオエディター102が、入力された命令を編集する例を説明
する。
入力装置62から命令が入力された場合、シナリオエディター102は、命令取得部1
01が出力する命令に対応するシナリオをデータベースのライブラリ部121から読み出
す。シナリオエディター102は読み出したシナリオを画像表示装置60に表示させる。
操作者は、画像表示装置60に表示されたシナリオが、操作者が行いたい操作と一致し
ているか確認し、異なっている箇所があれば、画像表示装置60と入力装置62を用いて
、シナリオの編集を行う。
シナリオの編集では、シナリオエディター102で、シナリオを構成しているルールの
追加、編集、及び削除をメニューで指定して行うことができる。ルールの編集では、ルー
ルの名前即ち結論と、各条件をテキスト編集する。この編集では、例えば、既に入力済み
の全てのルールの結論と条件の一覧からドロップダウンリストで選択することもできる。
シナリオエディター102は、編集されたシナリオをシミュレーター105に出力する
。シミュレーター105は、シナリオエディター102が出力する編集されたシナリオに
基づき、ロボット1が適正に動作するか判別し、判別結果をシナリオエディター102に
出力する。シナリオエディター102は、シミュレーター105が出力する判定結果を画
像表示装置60に出力する。
または、シミュレーター105は、シナリオエディター102が出力する編集されたシ
ナリオに基づき、例えば、3D動画データを生成し、生成した3D動画データを画像表示
装置60に表示するようにしてもよい。このシミュレーション結果を、画像表示装置60
上で視覚的に確認できるため、ロボット1の操作者は、入力したり編集した命令が、エラ
ー無く、または、操作したいと考えている通りに動作するかを、実際にロボット1を動作
させる前に確認することができる。
【0141】
[第2実施形態]
第1実施形態では、図5に示したように、制御装置100が、入力された命令の解釈を
行って、ロボット1を制御する例を説明した。
第2実施形態は、命令解釈装置が、入力された命令を解釈し、解釈した命令を制御装置
に出力する。そして、制御装置は、入力された命令に基づきロボットを制御する。
【0142】
図15は、本実施形態に係る命令解釈装置、制御装置、データベースの構成の一例を説
明する図である。図15に示すように、ロボットシステムは、命令解析装置300は、命
令取得部301、シナリオエディター302、シナリオプレーヤー304、及びシミュレ
ーター305を備えている。命令取得部301、シナリオエディター302、シナリオプ
レーヤー304、シミュレーター305の機能は、第1実施形態の命令取得部101、シ
ナリオエディター102、シナリオプレーヤー104、及びシミュレーター105と同じ
である。
データベース310は、シナリオ部311、ライブラリ部312、及びパラメーター部
313を備えている。シナリオ部311、ライブラリ部312、及びパラメーター部31
3は、それぞれ第1実施形態と同様のデータが登録されている。
制御装置100aは、画像処理部106a、センサー出力取得部107a、アーム制御
部108a、駆動部109aを備えている。画像処理部106a、センサー出力取得部1
07a、アーム制御部108a、駆動部109aの機能は、第1実施形態の画像処理部1
06、センサー出力取得部107、アーム制御部108、駆動部109と同様である。
【0143】
図15に示したロボットシステムは、従来の構成に、命令解釈装置300とデータベー
ス310を加えることで構成されている。命令解釈装置300は、例えばPC(パーソナ
ル・コンピューター)で構成するようにしてもよい。このため、従来のロボットシステム
にPCとデータベース310を追加するだけで、簡単に且つローコストで構成することが
できる。
【0144】
なお、本実施形態では、命令解釈装置300とデータベース310を別々に構成する例
を説明したが、データベース310は、命令解釈装置300が備えるようにしてもよい。
【符号の説明】
【0145】
1・・・ロボット 2・・・アーム 10・・・固定部 20・・・アーム部
30・・・力センサー 40・・・指部 50・・・撮像装置 60・・・画像表示装置
62・・・入力装置 70・・・ドライバー 75・・・ドライバー置台
82、83、85・・・回転部 81、84、86・・・屈折部
100・・・制御装置 101、301・・・命令取得部
102、302・・・シナリオエディター 103、310・・・データベース
120、311・・・シナリオ部 121、312・・・ライブラリ部
122、313・・・パラメーター部
104、302・・・シナリオプレーヤー(制御コマンド生成部)
105、305・・・シミュレーター 107・・・画像処理部
107・・・センサー出力取得部 108・・・アーム制御部 109・・・駆動部
200・・・コンベヤー 210・・・可動載置台 240・・・ねじ
251・・・基台 256・・・拡張ユニット 300・・・命令解釈装置
M・・・命令
R・・・ルール(サブシナリオ)

【特許請求の範囲】
【請求項1】
制御コマンドによりロボットを制御するロボット制御装置であって、
シナリオとサブシナリオとが対応付けられて登録されているデータベースと、
入力装置から入力された命令を取得する命令取得部と、
前記命令取得部が取得した命令に対応する前記サブシナリオを前記データベースから読
み出して、前記サブシナリオに基づいてロボットを制御する制御コマンドを生成する制御
コマンド生成部と、
を備え、
前記制御コマンド生成部は、
前記命令取得部が取得した命令を実行するのに必要な要素に未取得の要素がある場合、
前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、前
記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制御
コマンドを生成する
ことを特徴とするロボット制御装置。
【請求項2】
前記制御コマンド生成部は、
前記取得された命令に未取得の要素がある場合、前記ロボットが取得した要素を前記デ
ータベースの要素に登録し、前記登録された要素を前記サブシナリオに組み込んで前記ロ
ボットを制御する制御コマンドを生成する
ことを特徴とする請求項1に記載のロボット制御装置。
【請求項3】
前記制御コマンド生成部は、
前記サブシナリオに未取得の要素がない場合、前記データベースから前記要素を読み出
し、前記データベースから読み出した要素を前記サブシナリオに組み込んで前記ロボット
を制御するコマンドを生成する
ことを特徴とする請求項1または請求項2に記載のロボット制御装置。
【請求項4】
前記制御コマンド生成部は、
前記サブシナリオに前記要素を算出する命令がある場合、前記ロボットに前記要素を算
出させる命令を前記データベースから読み出した前記サブシナリオから抽出して、該サブ
シナリオから抽出した命令により前記要素を算出する
ことを特徴とする請求項1から請求項3のいずれか1項に記載のロボット制御装置。
【請求項5】
前記制御コマンド生成部は、
前記命令取得部が取得した命令に対応する要素を含むサブシナリオを前記データベース
から読み出し、読み出した要素を含むサブシナリオを編集するコマンド編集部と、
前記コマンド編集部が編集した要素を含むサブシナリオを前記ロボットに対して仮想的
に動作させ、前記ロボットの動作が適正か否かを判別するシミュレーター部と、
を備え、
前記制御コマンド生成部は、
前記シミュレーター部の判別結果が適正の場合、前記コマンド編集部が編集した要素を
含むサブシナリオに基づき、前記ロボットを制御する制御コマンドを生成する
ことを特徴とする請求項1から請求項4のいずれか1項に記載のロボット制御装置。
【請求項6】
前記シナリオは、
前記命令と前記要素とルールベースの前記サブシナリオとから構成され、
前記制御コマンド生成部は、
前記サブシナリオに含まれている前記要素を探索して、前記取得された命令に対応する
前記サブシナリオを読み出す
ことを特徴とする請求項1から請求項5のいずれか1項に記載のロボット制御装置。
【請求項7】
制御コマンドによりロボットを制御するロボット制御方法であって、
シナリオとサブシナリオとが対応付けられて登録されているデータベースと、
命令取得部が、入力装置から入力された命令を取得する命令取得工程と、
制御コマンド生成部が、前記命令取得工程が取得した命令に対応する前記サブシナリオ
を前記データベースから読み出して、前記サブシナリオに基づいてロボットを制御する制
御コマンドを生成する制御コマンド生成工程と、
を含み、
前記制御コマンド生成工程は、
前記命令取得工程が取得した命令を実行するのに必要な要素に未取得の要素がある場合
、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、
前記ロボットが取得した要素を前記サブシナリオに組み込んで前記ロボットを制御する制
御コマンドを生成する
ことを特徴とするロボット制御方法。
【請求項8】
制御コマンドによりロボット制御の処理をコンピューターに実行させるためのプログラ
ムであり、
入力装置から入力された命令を取得する命令取得手順と、
前記命令取得手順が取得した命令を実行するのに必要な要素に未取得の要素がある場合
、前記ロボットに前記未取得の要素を取得させる命令を抽出して前記ロボットに送信し、
前記ロボットが取得した要素を、データベースから読み出したサブシナリオに組み込んで
前記ロボットを制御する制御コマンドを生成する制御コマンド生成手順と、
をコンピューターに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−179673(P2012−179673A)
【公開日】平成24年9月20日(2012.9.20)
【国際特許分類】
【出願番号】特願2011−43607(P2011−43607)
【出願日】平成23年3月1日(2011.3.1)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】