(57)【要約】  ハンド（５１）と周囲環境との干渉が生じない非干渉領域と、ワーク（６）を把持する際にハンド（５１）が通過する可能性のあるワーク領域とを、それぞれパラメータ（４２１）として記憶する記憶部（４２）と、取り出し動作の手順に従った命令列を含む動作記述プログラム（４２２）を実行し、ロボット（５）にアーム（５２）を駆動させてハンド（５１）を移動させ、記憶部（４２）からワーク領域のパラメータ（４２１）を読み出し、三次元ビジョンセンサ（１）から取得したワーク（６）の位置及び姿勢に基づいて、ワーク領域の位置及び向きを演算し、記憶部（４２）から非干渉領域のパラメータを読み出して周囲環境領域と位置及び向きが演算されたワーク領域との重複部分を演算し、周囲環境領域とワーク領域とに重複部分が存在している場合、ワーク領域内にハンド（５１）が進入した際に、干渉時動作として規定された動作を実行する制御部（４３）とを有する。
2012140770.tif 000002
【特許請求の範囲】
【請求項１】
ワーク検出手段が検出したワークをハンドで把持して移動させる取り出し動作を、アームの先端に前記ハンドが設置されたロボットに行わせるロボット制御装置であって、
前記ハンドと周囲環境との干渉が生じない非干渉領域と、前記ワークを把持する際に前記ハンドが通過する可能性のあるワーク領域とを、それぞれパラメータとして記憶するパラメータ記憶手段と、
前記取り出し動作の手順に従って記述された命令列を含む動作記述プログラムを実行し、前記ロボットに前記アームを駆動させて前記ハンドを移動させるプログラム実行手段と、
前記パラメータ記憶手段から前記ワーク領域のパラメータを読み出し、前記ワーク検出手段から取得した前記ワークの位置及び姿勢に基づいて、前記ワーク領域の位置及び向きを演算するワーク領域演算手段と、
前記パラメータ記憶手段から前記非干渉領域のパラメータを読み出して、前記非干渉領域を除いた周囲環境領域と前記ワーク領域演算手段によって位置及び向きが演算された前記ワーク領域との重複部分を演算する重複部分演算手段と、
前記周囲環境領域と前記ワーク領域演算手段によって位置及び向きが演算された前記ワーク領域とに重複部分が存在している場合、前記ワーク領域内に前記ハンドが進入した際に、干渉時動作として予め規定された動作を実行する干渉時動作実行手段とを有することを特徴とするロボット制御装置。
【請求項２】
前記動作記述プログラムは、領域干渉確認動作実行命令を含み、
前記ワーク領域演算手段、前記重複部分演算手段及び前記干渉時動作実行手段は、前記領域干渉確認動作実行命令が前記プログラム実行手段によって実行された際に作動することを特徴とする請求項１記載のロボット制御装置。
【請求項３】
前記ワーク領域演算手段、前記重複部分演算手段及び前記干渉時動作実行手段を、前記プログラム実行手段が前記動作記述プログラムを実行する間作動させるように動作モードを指定する手段を有することを特徴とする請求項１記載のロボット制御装置。
【請求項４】
前記干渉時動作は、前記ハンドの移動の中止であることを特徴とする請求項１記載のロボット制御装置。
【請求項５】
ティーチングボックスから入力される指令に基づいて前記ロボットに前記アームを駆動させ、前記ハンドを移動させる手段を有することを特徴とする請求項１記載のロボット制御装置。
【請求項６】
前記パラメータ記憶手段は、前記非干渉領域のパラメータを複数記憶可能であり、
前記干渉時動作実行手段は、前記パラメータ記憶手段にパラメータが記憶された複数の前記非干渉領域のいずれにも含まれない領域を周囲干渉領域として作動することを特徴とする請求項１から５のいずれか１項記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置に関する。
【背景技術】
【０００２】
従来、ロボットと三次元ビジョンセンサとに接続されるロボット制御装置は、三次元ビジョンセンサで認識された対象ワークに対してロボットのアームの先端に取り付けたハンドでロボットを取り出し上空位置から対象ワークが検出された位置へ移動させ、対象ワークを取り出す。この際、ロボット制御装置は、上空位置から三次元ビジョンセンサが対象ワークを認識検出した位置へハンドを移動させるようにアームを動かして対象ワークを取り出す作業を行う。【０００３】
上空位置から三次元ビジョンセンサで対象ワークを認識検出された位置へハンドを直線的に移動する場合、周囲環境（周辺治具、対象ワークが納められている箱）に干渉することがある。この場合、干渉となる対象ワークを避けて干渉しない領域を求め上空位置から対象ワークが検出された位置へ移動させる必要がある。【０００４】
干渉となる領域を避けて干渉しない領域を求め移動させるには、ロボットが配置された様々な周辺環境が想定されるため、その都度、周辺環境にあった個別のプログラム（ロボットの移動条件を管理するために作成された言語を用いた制御手順）を作成する必要がある。さらに、周囲環境が複雑な形状であったり、周囲環境が途中変更されたり追加されたりするごとにプログラムを改造する手間が発生する。【０００５】
特許文献１に記載の発明は、把持対象物の近傍空間に把持位置を頂点とする所定の大きさの空間錘に分割するとともに、この空間錘の中から周囲物体との干渉がない開放空間錘を選択し、得られた開放空間錘について周囲物体からの距離を求め、その距離に基づいて把持姿勢を決定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−１６７１０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上空位置から把持位置へ移動する際には、アームの姿勢及び移動方向は決まっている。したがって、上空位置から把持位置へ移動の際の周囲環境との干渉を検討するにあたっては、上記特許文献のように、複数の空間錘による把持位置を中心とした多面体で、全方位について周囲環境との干渉を検討すると、ロボット処理装置の処理負荷が増大し、処理が遅くなってしまうという問題があった。【０００８】
本発明は、上記に鑑みてなされたものであって、周囲環境に合わせて動作記述プログラムを変更する必要のないロボット制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、ワーク検出手段が検出したワークをハンドで把持して移動させる取り出し動作を、アームの先端に前記ハンドが設置されたロボットに行わせるロボット制御装置であって、ハンドと周囲環境との干渉が生じない非干渉領域と、ワークを把持する際にハンドが通過する可能性のあるワーク領域とを、それぞれパラメータとして記憶するパラメータ記憶手段と、取り出し動作の手順に従って記述された命令列を含む動作記述プログラムを実行し、ロボットにアームを駆動させてハンドを移動させるプログラム実行手段と、パラメータ記憶手段からワーク領域のパラメータを読み出し、ワーク検出手段から取得したワークの位置及び姿勢に基づいて、ワーク領域の位置及び向きを演算するワーク領域演算手段と、パラメータ記憶手段から非干渉領域のパラメータを読み出して、非干渉領域を除いた周囲環境領域とワーク領域演算手段によって位置及び向きが演算されたワーク領域との重複部分を演算する重複部分演算手段と、周囲環境領域とワーク領域演算手段によって位置及び向きが演算されたワーク領域とに重複部分が存在している場合、ワーク領域内にハンドが進入した際に、干渉時動作として予め規定された動作を実行する干渉時動作実行手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明にかかるロボット制御装置は、ハンドが進入すると周囲環境との干渉が生じる干渉領域と、ワークを把持する際にハンドが通過しうるワーク領域の形状とをパラメータとして動作記述プログラムとは別個に設定できるため、周囲環境に合わせて動作記述プログラムを変更する必要がないという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明にかかるロボット制御装置の実施の形態を用いたロボット制御システムの構成を示す図である。
【図２】図２は、非干渉領域の設定の一例を示す図である。
【図３Ａ】図３Ａは、ワーク領域を立方体形状に設定する一例を示す図である。
【図３Ｂ】図３Ｂは、ワーク領域を円柱形状に設定する一例を示す図である。
【図３Ｃ】図３Ｃは、ワーク領域を円錐形状に設定する一例を示す図である。
【図３Ｄ】図３Ｄは、ワーク領域を頂点側が除かれた部分円錐形状（テーパ柱形状）に設定する一例を示す図である。
【図４】図４は、傾いてないワークをハンドが取り出す状態の一例を示す図である。
【図５】図５は、傾いているワークをハンドが取り出す状態の別の一例を示す図である。
【図６】図６は、ワークを取り出す際にハンドが周囲環境と干渉する状態の一例を示す図である。
【図７】図７は、周囲環境領域とワーク領域とに重複する部分が存在する場合の一例を示す図である。
【図８】図８は、周囲環境領域とワーク領域とに重複する部分が存在しない場合の一例を示す図である。
【図９】図９は、初期設定の流れを示す図である。
【図１０】図１０は、動作記述プログラムの一例を示す図である。
【図１１】図１１は、領域干渉確認動作時のロボット制御装置の動作の流れを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明にかかるロボット制御システムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態．
図１は、本発明にかかるロボット制御装置の実施の形態を用いたロボット制御システムの構成を示す図である。ロボット制御システムは、三次元ビジョンセンサ１、ティーチングボックス（Ｔ／Ｂ）２、コンピュータ３、ロボット制御装置４及びロボット５を備え、ロボット５でワーク６を把持して移動させる動作を行う。
【００１４】
ワーク検出手段としての三次元ビジョンセンサ１は、撮像により画像データを生成する撮像部１１と、撮像部１１が生成した画像データを処理してロボットの座標データを生成するロボット座標生成部１２とを有する。
【００１５】
ロボット制御装置４は、三次元ビジョンセンサ１やＴ／Ｂ２、コンピュータ３とのデータの送受信のためのインタフェース（Ｉ／Ｆ）４１と、各種のパラメータ４２１、動作記述プログラム４２２及び制御プログラム４２３を格納する記憶部４２と、動作記述プログラム４２２や制御プログラム４２３を実行する制御部４３と、ロボット５が備えるサーボモータへ制御信号を出力するサーボアンプ４４とを有する。
【００１６】
パラメータ４２１は、後段で説明する初期設定によってパラメータ記憶手段としての記憶部４２に記憶される。動作記述プログラム４２２は、三次元ビジョンセンサ１が検出したワーク６をハンド５１で把持して移動させる取り出し動作をロボット５に行わせる自動運転ための動作を記述したプログラムリストであり、取り出し動作の手順に従って記述された命令列（コマンド列）を含んでいる。制御プログラム４２３は、動作記述プログラム４２２中で実行されるコマンド又はＴ／Ｂ２による操作に応じてロボット５に動作をさせるためにサーボアンプ４４へ送る命令を示す。サーボアンプ４４は、ロボット５に搭載された不図示のサーボモータを駆動して、ロボット５に所定の動作を実行させる。
【００１７】
コンピュータ３は、パラメータ４２１などのデータの入力や、動作記述プログラム４２３の作成、後段で説明する警告表示などを行うユーザインタフェースとして用いられる。
【００１８】
Ｔ／Ｂ２は、手動操作でロボット５を制御するための入力インタフェースである。
【００１９】
ロボット５は、ワーク６を把持するためのハンド５１と、ハンド５１を非干渉領域内の任意の位置へ移動させるためのアーム５２と、ハンド５１やアーム５２を動作させるサーボモータ５３とを有する。ハンド５１及びアーム５２は、サーボモータ５３がサーボアンプ４４からの制御信号で駆動されることによって動作する。
【００２０】
上記構成において、動作記述プログラム４２２中のハンド５１を所定位置へ動かすコマンドを実行する場合には、制御部４３は制御プログラム４２３として記憶されている命令によって、サーボアンプ４４に指令を送って制御信号を出力させ、ロボット５のサーボモータ５３を駆動させてアーム５２を動かすことによりハンド５１を移動させる。
【００２１】
初期設定では、非干渉領域、ワーク領域、干渉時動作及び領域干渉確認の実行の有無が設定される。
【００２２】
周囲環境と干渉を生じることなくハンドを移動させることが可能な領域である非干渉領域は初期設定によってパラメータ４２１として記憶部４２に設定される。非干渉領域は、座標位置や寸法を数値として指定することで設定される。図２は、非干渉領域の設定の一例を示す図である。ロボット５の座標系がＸＹＺＡＢＣの６軸座標系であるならば、座標空間内に２点を指定する（図２では、ＰＡ及びＰＢ）ことで、指定した２点を頂点として含む直方体を非干渉領域として設定できる。ここで、Ｘ、Ｙ、Ｚは、座標基準位置（例えばアーム５２の付け根）からのＸ方向、Ｙ方向、Ｚ方向の距離であり、Ａ、Ｂ、Ｃは、Ｘ座標軸、Ｙ座標軸、Ｚ座標軸の回転角度である。これにより、非干渉領域を除いた空間が周囲環境領域（干渉領域）として間接的に設定される。なお、非干渉領域を複数設定することにより、複雑な形状の周囲環境領域を設定することも可能である。
【００２３】
ワーク領域は、三次元ビジョンセンサ１で検出したワーク６を把持する際にハンド５１が通過する可能性があると見なす領域であり、三次元ビジョンセンサ１で検出したワークの位置を基準としてどのような形状（立方体、円柱、円錐など）及び大きさとするかが設定される。空間内での幾何学図形状の領域の定義には公知の方法を適用可能である。例えば、円錐状の領域を定義する場合には、高さ及び底面半径と、軸方向とを指定すれば良い。図３Ａは、ワーク領域を立方体形状に設定する一例を示す図である。図３Ｂは、ワーク領域を円柱形状に設定する一例を示す図である。図３Ｃは、ワーク領域を円錐形状に設定する一例を示す図である。図３Ｄは、ワーク領域を頂点側が除かれた部分円錐形状（テーパ柱形状）に設定する一例を示す図である。
【００２４】
図４は、傾いていないワーク６をハンド５１が取り出す状態の一例を示す図である。ワーク６が傾いていない場合には、ハンド５１はワーク６の鉛直上方の所定の距離離れた取り出し上空位置に配置された後に、把持位置まで移動してワーク６を把持する。したがって、この場合には、ワーク領域はワーク６の鉛直上方に設けられる。
【００２５】
図５は、傾いているワーク６をハンド５１が取り出す状態の一例を示す図である。ワーク６が傾いている場合には、ハンド５１はワーク６の傾きに合わせて傾けられた状態でワーク６の垂線方向の所定距離離れた取り出し上空位置に配置された後に、把持位置まで移動してワーク６を把持する。したがって、この場合には、ワーク領域はワーク６の斜め上方に設けられる。
【００２６】
図６は、ワーク６を取り出す際にハンドが周囲環境と干渉する状態の一例を示す図である。ワーク６が傾いている場合、把持位置や取り出し上空位置において周囲環境と干渉しなくても、取り出し上空位置やそこから把持位置へ移動する際にハンド５１が周囲環境と干渉する可能性がある。周囲環境領域とワーク領域とが重複する部分が存在する場合、すなわち、ワーク領域が非干渉領域からはみ出る場合には、ハンド５１が周囲環境と干渉する可能性があると判断できる。図７は、周囲環境領域とワーク領域とが重複する部分が存在する場合の一例を示す図であり、ワーク６の斜め上方に設けられたワーク領域３０は、非干渉領域２０からはみ出しており、ハンド５１は周囲環境と干渉している。図８は、周囲環境領域とワーク領域とが重複する部分が存在しない場合の一例を示す図であり、ワーク６の斜め上方に設けられたワーク領域３０は、非干渉領域２０からはみ出しておらず、ハンド５１が周囲環境と干渉する可能性がないと判断できる。
【００２７】
干渉時動作は、ハンド５１を移動させると周囲環境との干渉が生じる可能性がある場合に干渉時動作としてどのような処理を行うかの設定であり、例えば、エラー停止によりハンド５１の移動を停止させる処理や、警告表示を行った上でハンド５１の移動を継続させる処理などを設定する。
【００２８】
領域干渉確認有りとする（領域干渉確認動作モードとする）設定がなされた場合、自動運転時は動作記述プログラム４２２の記述によらず、ハンド５１を移動させる際に常に領域干渉確認動作を行う。領域干渉確認無しとの設定がなされた場合、領域干渉確認動作は行わない。ただし、動作記述プログラム４２２に領域干渉確認開始命令が含まれている場合には、その命令の実行後は動作記述プログラム４２２中の領域干渉確認終了命令が実行されるまで、領域干渉確認動作を実行する。このように動作記述プログラム４２２中の領域干渉確認命令にしたがって領域干渉確認動作を行う場合には、非干渉領域及び周辺環境の領域設定は、動作記述プログラム４２２中で行うことも可能である。なお、パラメータ４２１と動作記述プログラム４２２との両方で非干渉領域及び周辺環境の領域を設定することも可能である。また、ワーク領域の設定に関しても、動作記述プログラム４２２による設定も可能である。
【００２９】
図９は、初期設定の流れを示す図である。まず、コンピュータ３を介して領域パラメータや干渉時動作などを入力し、記憶部４２にパラメータ４２１を記憶させる（ステップＳ１０１）。また、領域干渉確認実行の有無の設定についてもパラメータ４２１として記憶部４２に記憶させる（ステップＳ１０２）。これらの設定が完了した後、制御部４３は、領域干渉確認動作の実行をする設定がなされたか否かを確認する（ステップＳ１０３）。領域干渉確認動作を行わない設定の場合は（ステップＳ１０３／Ｎｏ）、初期設定は終了する。領域干渉確認動作を実行する設定がされた場合には（ステップＳ１０３／Ｙｅｓ）、外部環境とワーク領域との両方がパラメータ４２１として設定されているか否かを確認し（ステップＳ１０４）、これらの少なくとも一方が設定されていない場合には（ステップＳ１０４／Ｎｏ）、領域干渉確認動作を実行できない旨をエラー表示した上で領域干渉確認動作の実行の設定を無効に変更して（ステップＳ１０５）、初期設定を終了する。両方が設定されている場合は（ステップＳ１０４／Ｙｅｓ）、領域干渉確認動作が可能であるため、エラー表示は行わずに初期設定を終了する。
【００３０】
次に、ロボット５の自動運転時の動作について説明する。制御部４３がプログラム実行手段として機能し、動作記述プログラム４２２を実行することにより、ロボット５は、動作記述プログラム４２２に従った手順で、三次元ビジョンセンサ１が位置及び姿勢（傾き）を検出したワーク６に対して取り出し作業を行うべく動作する。パラメータ４２１や動作記述プログラム４２２によって設定された領域に基づく領域干渉確認動作を有効にすることで、制御部４３はワーク領域演算手段として機能し、ワーク領域を演算する。また、制御部４３は、重複部分演算手段としても機能し、周囲環境領域とワーク領域との重複部分を演算する。制御部４３は、ハンド５１を上空位置へ移動させる際に、領域演算結果に基づいてハンド５１が周囲環境と干渉することなく動作可能であるか否かを判断し、移動可能な場合はエラー出力することなく継続して作業を進める。ハンド５１が周囲環境と干渉する可能性がある場合には、制御部４３は干渉時動作実行手段として機能し、ハンド５１がワーク領域に入った時点で干渉時動作として指定された動作（ロボット５のエラー停止、警告表示など）を行う。
【００３１】
図１０は、動作記述プログラム４２２の一例を示す図である。図１０において動作記述プログラム４２２には、非干渉領域内の所定の位置Ｐ０にハンド５１を移動させたのち、上空位置Ｐ１にハンドを移動させ、さらに把持位置Ｐ２にハンド５１を移動させてからハンド５１でワーク６を把持し、上空位置Ｐ１にハンド５１を移動させる動作が記述されている。この例においては動作記述プログラム４２２中に領域干渉確認動作の開始及び終了の命令（領域干渉確認動作実行命令）が含まれているため、パラメータ４２１による設定に関わらず、Ｐ０から上空位置Ｐ１へハンド５１を移動させる際と、上空位置Ｐ１から把持位置Ｐ２へハンド５１を移動させる際には領域干渉確認動作を実行する。
【００３２】
図１１は、領域干渉確認動作時のロボット制御装置４の動作の流れを示す図である。領域干渉確認動作中でない場合、処理を行うことなく終了する（ステップＳ２０１／Ｎｏ）。領域干渉確認動作を開始すると（ステップＳ２０１／Ｙｅｓ）、制御部４３は、ワーク領域演算手段として機能し、三次元ビジョンセンサ１から入力されたワークの座標位置と、パラメータ４２１又は動作記述プログラム４２２に設定されている形状に基づいてワーク領域を算出する。また、制御部４３は、重複部分演算手段としても機能し、周囲環境領域を間接的に設定する非干渉領域のパラメータ４２１を記憶部４２から読み出し、周囲環境領域とワーク領域との重複部分を演算する（ステップＳ２０２）。
【００３３】
次に、制御部４３は、状態変数の値を確認する（ステップＳ２０３）。状態変数は、ワーク領域と周囲環境領域とに重複する部分があり、かつ、ハンド５１の現在位置がワーク領域内である場合に“１”となり、それ以外の場合に“０”となる変数である。状態変数の初期値は“０”であるとする。状態変数が“０”である場合には（ステップＳ２０３／０）、ハンド５１が移動しても周囲環境と干渉する可能性はないため、制御部４３はサーボアンプ４４を用いてロボット５のサーボモータを駆動し、アーム５２を動かしてハンド５１を移動させる（ステップＳ２０４）。ハンド５１を移動させた後、制御部４３は動作記述プログラム４２２で指定された位置にハンド５１が到達したか否かを判断する（ステップＳ２０５）。動作記述プログラム４２２で指定された位置にハンド５１が到達したならば（ステップＳ２０５／Ｙｅｓ）、処理を終了する。
【００３４】
動作記述プログラム４２２中の命令で指定された位置にハンド５１が到達していない場合（ステップＳ２０５／Ｎｏ）、ワーク領域と周囲環境領域とに重複する部分があり、かつ、ハンド５１の現在位置がワーク領域内であるか否かを確認する（ステップＳ２０６）。ワーク領域と周囲環境領域とに重複する部分があり、かつ、ハンド５１の現在位置がワーク領域内である場合には（ステップＳ２０６／Ｙｅｓ）、状態変数に“１”を設定し（ステップＳ２０７）、そうでなければ（ステップＳ２０６／Ｎｏ）、状態変数に“０”を設定する（ステップＳ２０８）。その後、ステップＳ２０３に戻る。
【００３５】
状態変数を確認した際に、値が“１”であった場合は（ステップＳ２０３／１）、パラメータ４２１として設定されている干渉時動作を確認する（ステップＳ２０９）。干渉時動作が“エラー”である場合には（ステップＳ２０９／エラー）、ハンド５１を動かさずに処理を終了する。干渉時動作をこのように設定した場合には、周囲環境と干渉する可能性がある領域内でハンド５１を移動させないようにすることができる。よって、ハンド５１が周囲環境と干渉して破損することを防止し、ロボット５の長期使用が可能となる。また、ハンド５１の交換の必要が少なくなるため、生産設備としての環境負荷を低減できる。また、干渉時動作が“信号出力”である場合には（ステップＳ２０９／信号出力）、周囲環境と干渉する可能性がある領域内でハンド５１が移動していることを警告表示し（ステップＳ２１０）、その上でアームを動かしてハンド５１を移動させる（ステップＳ２０４）。周囲環境領域とワーク領域とに重複する部分がある場合でも、ハンド５１が実際に周囲環境と干渉するとは限らないため、干渉時動作をこのように設定して警告表示を行った上でハンド５１の移動を継続することで、作業能率を高めることができる。ハンド５１が周囲環境と干渉するとしても、事前に警告表示がなされているため、実際に干渉を生じる前にＴ／Ｂ２からの操作でハンド５１の移動を停止させたり、干渉発生後速やかにハンド５１の移動を停止させることが可能となる。なお、干渉時動作として“無効”を設定することも可能であり、この場合には、状態変数の値に関わらずアーム５２を動かしてハンド５１を移動させる。
【００３６】
ここでは、動作記述プログラム４２２を実行して自動運転する場合を例として説明したが、Ｔ／Ｂ２の操作によって制御プログラム４３を動作させてサーボアンプ４４へ制御信号を送る手動運転時も、初期設定において領域干渉確認動作を実行可能な設定がなされているならば、状態変数に応じてハンド５１の移動を停止させたり、警告表示を行うことが可能である。このため、Ｔ／Ｂ２での操作によって干渉しない領域へロボット５を移動させた上で、プログラムの変更や修正を行うことが容易である。
【００３７】
このように、本実施の形態においては、プログラム作成者は、ロボットの干渉状態を配置された周囲環境に応じて個別に干渉条件を毎回演算して求める必要はなく、ロボットの状態変数を確認することで容易に作成することが可能となる。さらに、状態変数は、プログラム作成用のコンピュータにおいて容易に確認可能であり、三次元立体図として可視化して確認できる。
【符号の説明】
【００３８】
１  三次元ビジョンセンサ
２  Ｔ／Ｂ
３  コンピュータ
４  ロボット制御装置
５  ロボット
１１  撮像部
１２  ロボット座標生成部
４１  Ｉ／Ｆ
４２  記憶部
４３  制御部
４４  サーボアンプ
５１  ハンド
５２  アーム
４２１  パラメータ
４２２  動作記述プログラム
４２３  制御プログラム
【図１】
2012140770.tif 000003
【図２】
2012140770.tif 000004
【図３Ａ】
2012140770.tif 000005
【図３Ｂ】
2012140770.tif 000006
【図３Ｃ】
2012140770.tif 000007
【図３Ｄ】
2012140770.tif 000008
【図４】
2012140770.tif 000009
【図５】
2012140770.tif 000010
【図６】
2012140770.tif 000011
【図７】
2012140770.tif 000012
【図８】
2012140770.tif 000013
【図９】
2012140770.tif 000014
【図１０】
2012140770.tif 000015
【図１１】
2012140770.tif 000016
【手続補正書】
【提出日】平成23年10月20日(2011.10.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ワーク検出手段が検出したワークをハンドで把持して移動させる取り出し動作を、アームの先端に前記ハンドが設置されたロボットに行わせるロボット制御装置であって、
前記ハンドと周囲環境との干渉が生じない非干渉領域と、前記ワークを把持する際に前記ハンドが通過する可能性のあるワーク領域とを、それぞれパラメータとして記憶するパラメータ記憶手段と、
前記取り出し動作の手順に従って記述された命令列を含む動作記述プログラムを実行し、前記ロボットに前記アームを駆動させて前記ハンドを移動させるプログラム実行手段と、
前記パラメータ記憶手段から前記ワーク領域のパラメータを読み出し、前記ワーク検出手段から取得した前記ワークの位置及び姿勢に基づいて、前記ワーク検出手段が検出した前記ワークの位置を基準として前記ワーク領域の位置及び向きを演算するワーク領域演算手段と、
前記パラメータ記憶手段から前記非干渉領域のパラメータを読み出して、前記非干渉領域を除いた周囲環境領域と前記ワーク領域演算手段によって位置及び向きが演算された前記ワーク領域との重複部分を演算する重複部分演算手段と、
前記周囲環境領域と前記ワーク領域演算手段によって位置及び向きが演算された前記ワーク領域とに重複部分が存在している場合、前記ワーク領域内に前記ハンドが進入した際に、干渉時動作として予め規定された動作を実行する干渉時動作実行手段とを有することを特徴とするロボット制御装置。
【請求項２】
前記動作記述プログラムは、領域干渉確認動作実行命令を含み、
前記ワーク領域演算手段、前記重複部分演算手段及び前記干渉時動作実行手段は、前記領域干渉確認動作実行命令が前記プログラム実行手段によって実行された際に作動することを特徴とする請求項１記載のロボット制御装置。
【請求項３】
前記ワーク領域演算手段、前記重複部分演算手段及び前記干渉時動作実行手段を、前記プログラム実行手段が前記動作記述プログラムを実行する間作動させるように動作モードを指定する手段を有することを特徴とする請求項１記載のロボット制御装置。
【請求項４】
前記干渉時動作は、前記ハンドの移動の中止であることを特徴とする請求項１記載のロボット制御装置。
【請求項５】
ティーチングボックスから入力される指令に基づいて前記ロボットに前記アームを駆動させ、前記ハンドを移動させる手段を有することを特徴とする請求項１記載のロボット制御装置。
【請求項６】
前記パラメータ記憶手段は、前記非干渉領域のパラメータを複数記憶可能であり、
前記干渉時動作実行手段は、前記パラメータ記憶手段にパラメータが記憶された複数の前記非干渉領域のいずれにも含まれない領域を周囲環境領域として作動することを特徴とする請求項１から５のいずれか１項記載のロボット制御装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
技術分野
［０００１］
本発明は、ロボット制御装置に関する。
背景技術
［０００２］
従来、ロボットと三次元ビジョンセンサとに接続されるロボット制御装置は、三次元ビジョンセンサで認識された対象ワークに対して、ロボットを取り出し上空位置から対象ワークが検出された位置へ移動させ、ロボットのアームの先端に取り付けたハンドで対象ワークを取り出す。この際、ロボット制御装置は、上空位置から三次元ビジョンセンサが対象ワークを認識検出した位置へハンドを移動させるようにアームを動かして対象ワークを取り出す作業を行う。
［０００３］
上空位置から三次元ビジョンセンサで対象ワークを認識検出された位置へハンドを直線的に移動する場合、周囲環境（周辺治具、対象ワークが納められている箱）に干渉することがある。この場合、干渉となる領域を避けて干渉しない領域を求め上空位置から対象ワークが検出された位置へ移動させる必要がある。
［０００４］
干渉となる領域を避けて干渉しない領域を求め移動させるには、ロボットが配置された様々な周辺環境が想定されるため、その都度、周辺環境にあった個別のプログラム（ロボットの移動条件を管理するために作成された言語を用いた制御手順）を作成する必要がある。さらに、周囲環境が複雑な形状であったり、周囲環境が途中変更されたり追加されたりするごとにプログラムを改造する手間が発生する。
［０００５］
特許文献１には、把持対象物の近傍空間に把持位置を頂点とする所定の大きさの空間錘に分割するとともに、この空間錘の中から周囲物体との干渉がない開放空間錘を選択し、得られた開放空間錘について周囲物体からの距離を求め、その距離に基づいて把持姿勢を決定する技術が開示され
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
ビジョンセンサ１が検出したワーク６をハンド５１で把持して移動させる取り出し動作をロボット５に行わせる自動運転ための動作を記述したプログラムリストであり、取り出し動作の手順に従って記述された命令列（コマンド列）を含んでいる。制御プログラム４２３は、動作記述プログラム４２２中で実行されるコマンド又はＴ／Ｂ２による操作に応じてロボット５に動作をさせるためにサーボアンプ４４へ送る命令を示す。サーボアンプ４４は、ロボット５に搭載された不図示のサーボモータを駆動して、ロボット５に所定の動作を実行させる。
［００１７］
コンピュータ３は、パラメータ４２１などのデータの入力や、動作記述プログラム４２２の作成、後段で説明する警告表示などを行うユーザインタフェースとして用いられる。
［００１８］
Ｔ／Ｂ２は、手動操作でロボット５を制御するための入力インタフェースである。
［００１９］
ロボット５は、ワーク６を把持するためのハンド５１と、ハンド５１を非干渉領域内の任意の位置へ移動させるためのアーム５２と、ハンド５１やアーム５２を動作させるサーボモータ５３とを有する。ハンド５１及びアーム５２は、サーボモータ５３がサーボアンプ４４からの制御信号で駆動されることによって動作する。
［００２０］
上記構成において、動作記述プログラム４２２中のハンド５１を所定位置へ動かすコマンドを実行する場合には、制御部４３は制御プログラム４２３として記憶されている命令によって、サーボアンプ４４に指令を送って制御信号を出力させ、ロボット５のサーボモータ５３を駆動させてアーム５２を動かすことによりハンド５１を移動させる。
［００２１］
初期設定では、非干渉領域、ワーク領域、干渉時動作及び領域干渉確認の実行の有無が設定される。
［００２２］
周囲環境と干渉を生じることなくハンドを移動させることが可能な領域である非干渉領域は初期設定によってパラメータ４２１として記憶部４２に設定される。非干渉領域は、座標位置や寸法を数値として指定することで設定
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
で非干渉領域及び周辺環境の領域を設定することも可能である。また、ワーク領域の設定に関しても、動作記述プログラム４２２による設定も可能である。
［００２９］
図９は、初期設定の流れを示す図である。まず、コンピュータ３を介して領域パラメータや干渉時動作などを入力し、記憶部４２にパラメータ４２１を記憶させる（ステップＳ１０１）。また、領域干渉確認実行の有無の設定についてもパラメータ４２１として記憶部４２に記憶させる（ステップＳ１０２）。これらの設定が完了した後、制御部４３は、領域干渉確認動作の実行をする設定がなされたか否かを確認する（ステップＳ１０３）。領域干渉確認動作を行わない設定の場合は（ステップＳ１０３／Ｎｏ）、初期設定は終了する。領域干渉確認動作を実行する設定がされた場合には（ステップＳ１０３／Ｙｅｓ）、非干渉領域とワーク領域との両方がパラメータ４２１として設定されているか否かを確認し（ステップＳ１０４）、これらの少なくとも一方が設定されていない場合には（ステップＳ１０４／Ｎｏ）、領域干渉確認動作を実行できない旨をエラー表示した上で領域干渉確認動作の実行の設定を無効に変更して（ステップＳ１０５）、初期設定を終了する。両方が設定されている場合は（ステップＳ１０４／Ｙｅｓ）、領域干渉確認動作が可能であるため、エラー表示は行わずに初期設定を終了する。
［００３０］
次に、ロボット５の自動運転時の動作について説明する。制御部４３がプログラム実行手段として機能し、動作記述プログラム４２２を実行することにより、ロボット５は、動作記述プログラム４２２に従った手順で、三次元ビジョンセンサ１が位置及び姿勢（傾き）を検出したワーク６に対して取り出し作業を行うべく動作する。パラメータ４２１や動作記述プログラム４２２によって設定された領域に基づく領域干渉確認動作を有効にすることで、制御部４３はワーク領域演算手段として機能し、ワーク領域を演算する。また、制御部４３は、重複部分演算手段としても機能し、周囲環境領域とワーク領域との重複部分を演算する。制御部４３は、ハンド５１を上空位置へ移動させる際に、領域演算結果に基づいてハンド５１が周囲環境と干渉するこ
【国際調査報告】
2012140770.tif 000017
2012140770.tif 000018
2012140770.tif 000019
2012140770.tif 000020
2012140770.tif 000021
2012140770.tif 000022