説明

干渉判定装置および干渉判定方法

【課題】干渉のない立体交差を考慮しつつも、干渉判定を短時間で行う。
【解決手段】
識別番号を各部位に割り当てる識別番号割当部421と、干渉情報を格納する干渉情報格納部412と、干渉条件情報を格納する干渉条件情報格納部413と、ロボットの動作する空間を2次元平面上に投影した上で、2次元平面をn1×n2のマス目に区切るマス目管理部424と、対応マス目を特定し、占有情報を対応マス目ごとに記録する占有情報記録部425と、占有情報および干渉条件情報の桁ごとの論理積を求め、論理積の全ての桁が「0」なら干渉無しと判断し、少なくとも一つの桁が「1」なら干渉有りと判断する判断部426と、を備える。干渉情報は、立体交差する際に干渉を伴わないなら「0」、干渉を伴うなら「1」を表す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、干渉判定装置および干渉判定方法に関するものである。
【背景技術】
【0002】
先端に昇降軸を持つ二台の水平多関節アームを人間の両腕のように配置した双腕ロボットは、設置に要するスペースの割に自由度が高く、また両腕の作業領域の少なくとも一部が重複していることからワークを押さえつつねじ締めを行うなどの複合作業が可能であるという利点がある。しかし、各アームは移動経路で衝突する危険があり、作業者はその動きを予測することが困難である。そこで、双腕ロボットの各アームが他方のアームの作業領域に一部でも重複するような作業領域内で移動する際、互いのアームが相手の移動軌道上に重なるかどうかという干渉判定が必要となる。また、双腕ロボットが実際に作業を行う上で、左右のアーム同士以外にも、治具や安全柵などの障害物との干渉が生じる可能性があり、水平多関節アームと障害物の干渉判定も必要になる場合がある。
【0003】
干渉判定を行う方法としては、いくつかの方式が存在する。例えば、工作機械を制御する数値制御装置で干渉チェックを行うために、「複数の機械構造物の干渉領域を各々定義し、前記干渉領域を移動させ、前記各々の機械構造物の干渉領域がそれぞれ干渉するかをチェックする機能を有する数値制御装置について、前記干渉領域として、直方体、円筒、平面の立体図形で定義し、各々の立体図形が交差するか交差しないかにより干渉をチェックする」という方式がある(特許文献1参照)。また、干渉判定を行う他の方法として、水平多関節ロボットに対して、「3次元ロボットモデルを2次元平面上に投影した2次元ロボットモデルに変換」し、「3次元障害物モデルを2次元障害物モデルとして分割」したものとの干渉判定を行う方式も存在する(特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−054043号公報
【特許文献2】特開2004−202627号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の特許文献1の発明のように、3次元方向の運動を行う3次元物体に対する干渉判定は、定義が容易な3次元の単純近似モデルに変換して行われることが多い。しかしながら、双腕ロボットの2次元方向の運動のみを考慮する(ロボットアームの昇降軸の動作と治具の上昇下降を考えない)場合に、これを3次元モデルで扱うことは処理時間の短縮やメモリ確保の観点で有益ではない。
【0006】
また、特許文献2の発明においては、障害物モデルの分割は3次元障害物モデルの高さ毎に行われ、水平多関節ロボットの設置面からアームまでの高さ(高さは一定であるが、ある厚みを持つ)と一致する障害物モデルのみが干渉判定の対象となる。そのため、2次元ロボットモデルを用いているにもかかわらず、立体交差が可能な部分を干渉判定から除外した結果を短時間で得ることができる。この方式の優れている点は、水平多関節ロボットの高さと一致する分割面のみを判定すればよいという点である。しかしながら、例えば水平多関節ロボットを複数の分割面に分けなければならないような場合には、それぞれの分割面で干渉判定を行わなければならない。双腕ロボットもこれに該当し、ロボットアームを構成する各部分(第1リンク、第2リンク、先端の昇降軸など)で異なる高さを持つために干渉判定を行うべき分割面が多数になる可能性があり、このような場合には、演算量が増加し、処理に長時間を要するという問題がある。また、特許文献2の発明においては、2次元平面上に投影した2次元ロボットモデルの占有領域の重複だけで干渉判定を行っており、干渉のない立体交差は存在しないことを前提としている。つまり、特許文献2の場合において、干渉のない立体交差は考慮の対象に入っていない。しかし、干渉のない立体交差があるか否かを更に考慮に入れることにより、干渉判定の精度が更に向上することが期待される。
【0007】
そこで、本発明は上記に鑑みてなされたもので、干渉のない立体交差を考慮しつつも、干渉判定を短時間で行うことが可能な干渉判定装置および干渉判定方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明の干渉判定装置は、3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定装置であって、複数の桁数を有し且つ他の識別番号との間で桁ごとの論理積を計算すると全ての桁が「0」となるように設定された識別番号を、前記各部位に割り当てる識別番号割当手段と、前記各部位のうち移動を伴う部位である移動部位が、他の前記部位との間で立体交差する際に干渉を伴わない場合には「0」、立体交差する際に干渉を伴う場合には「1」を表す情報を干渉情報として格納する干渉情報格納手段と、前記干渉情報に基づき設定され、前記複数の桁数を有し、前記移動部位が前記他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である干渉条件情報を、前記移動部位ごとに格納する干渉条件情報格納手段と、前記ロボットの動作する空間を2次元平面上に投影した上で、前記2次元平面をn1×n2のマス目に区切るとともに、前記n1×n2のマス目それぞれに対応するメモリ領域を確保するマス目管理手段と、前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目を特定し、前記各部位の前記識別番号に基づく情報であり前記複数の桁数を有する占有情報を前記対応マス目に対応する前記メモリ領域に記録する占有情報記録手段と、前記占有情報および前記干渉条件情報における桁ごとの論理積を前記対応マス目ごとに求め、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断し、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断する判断手段と、を備えることを特徴とする。
【0009】
また、本発明の干渉判定方法は、3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定方法であって、複数の桁数を有し且つ他の識別番号との間で桁ごとの論理積を計算すると全ての桁が「0」となるように設定された識別番号が、前記各部位に割り当てられ、前記各部位のうち移動を伴う部位である移動部位が、他の前記部位との間で立体交差する際に干渉を伴わない場合には「0」、立体交差する際に干渉を伴う場合には「1」を表す情報が、干渉情報として格納され、前記干渉情報に基づき設定され、前記複数の桁数を有し、前記移動部位が前記他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である干渉条件情報が、前記移動部位ごとに格納され、前記ロボットの動作する空間が2次元平面上に投影された上で、前記2次元平面がn1×n2のマス目に区切られるとともに、前記n1×n2のマス目それぞれに対応するメモリ領域が確保され、前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目が特定され、前記各部位の前記識別番号に基づく情報であり前記複数の桁数を有する占有情報が前記対応マス目に対応する前記メモリ領域に記録され、前記占有情報および前記干渉条件情報における桁ごとの論理積が前記対応マス目ごとに求められ、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断され、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断される、ことを特徴とする。
【0010】
このような本発明の干渉判定装置および干渉判定方法では、識別番号、干渉情報、干渉条件情報、および占有情報が各部位間の干渉を判定するための必須の情報として用いられる。このうち、特に干渉情報および干渉条件情報は、移動部位が他の部位との間で立体交差する際に干渉を伴わない場合の値および干渉を伴う場合の値に基づいた情報である。したがって、これら干渉情報および干渉条件情報を用いることにより、本発明による干渉判定の結果には各部位間の立体交差時の干渉の有無が考慮されることとなる。これにより、干渉判定の精度が向上される。
【0011】
また、本発明においては、ロボットの動作する空間を2次元平面上に投影した上で、干渉判定を行うため、例えば3次元での干渉判定に比べ、干渉判定処理を短時間で行うことが可能となる。また、本発明で用いる干渉情報は「0」または「1」を表す情報であり、そのデータ量が少ないことから、装置全体における計算量や計算時間が短縮できる。
【0012】
また、本発明で用いる識別番号、干渉条件情報、および占有情報はロボットおよび障害物の各部位の数と同数の桁数を有する情報であるため、例えば部位の数が増えた場合には、増えた部位に関する干渉条件を設定した上で、増えた部位の数だけ識別番号、干渉条件情報、および占有情報の桁数を増やして、本発明における干渉判定を行うことができる。このように、本発明によれば、部位の数が増えた場合に、柔軟な対応が可能である。また、「0」か「1」かの少ないデータ量で計算を行うことから、部位の数が増えたことに伴って、装置全体の計算量や計算時間が極端に増えることを防止できる。
【0013】
また、本発明において、前記干渉条件情報格納手段は、下記の数式(1)により計算される情報Ciを前記干渉条件情報として格納しても良い。
【数1】


ただし、hは前記各部位の数であり、iおよびjは1以上h以下の自然数であり、Ciはi番目の部位の前記干渉条件情報であり、IDjはj番目の部位の前記識別番号であり、tijはi番目の部位とj番目の部位における前記干渉情報である。
【0014】
この発明によれば、干渉条件情報を計算するための具体的な手法が提供される。
【0015】
また、本発明において、前記占有情報記録手段は、前記メモリ領域が初期化されている場合には、前記識別番号を前記占有情報として前記メモリ領域に記録し、前記メモリ領域が初期化されていない場合には、既存の占有情報と前記識別番号との間の桁ごとの論理和を前記占有情報として前記メモリ領域に記録しても良い。
【0016】
この発明によれば、占有情報を記録するための具体的な手法が提供される。
【0017】
また、本発明においては、前記ロボットの動作における動作開始時刻と動作終了時刻との間が一定時間間隔ごとに区切られ、当該区切られた各時刻における前記各部位の位置に対して、前記占有情報記録手段は、前記各時刻における前記対応マス目を特定し、前記占有情報を前記対応マス目に対応する前記メモリ領域に記録し、前記判断手段は、前記占有情報および前記干渉条件情報における桁ごとの論理積を前記対応マス目ごとに求め、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断し、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断しても良い。
【0018】
この発明によれば、ロボットの動作における動作開始時刻と動作終了時刻との間の各時刻に対して干渉判定が行われる。これにより、動作中の全ての時刻において干渉が生じないことを判断した上で、安全にロボットを動作させることができる。
【0019】
また、本発明において、前記ロボットは、水平多関節アームを有する双腕ロボットであっても良い。
【0020】
この発明は、ロボットが水平多関節アームを有する双腕ロボットである場合に特に有用である。
【0021】
また、本発明において、前記識別番号、前記干渉条件情報、および前記占有情報は、前記各部位の数と同数の前記複数の桁数を有する情報であっても良い。
【0022】
この発明は、識別番号、干渉条件情報、および占有情報が、ロボットおよび障害物の各部位の数と同数の桁数を有することから、各情報が必要最小限の桁数を有することとなり、演算に無駄がなく、必要最小限のメモリ量を用いて演算を行うことができる。
【0023】
また、本発明は、3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定装置であって、前記ロボットの動作する空間を2次元平面上に投影した上で、前記2次元平面をn1×n2のマス目に区切るとともに、前記n1×n2のマス目それぞれに対応するメモリ領域を確保するマス目管理手段と、前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目を部位毎に特定し、前記各部位が前記対応マス目を占有するか否かを示す占有情報を前記部位毎に順次前記対応マス目に対応する前記メモリ領域に記録する占有情報記録手段と、前記占有情報を前記メモリ領域に記録するときに、そのメモリ領域に既に別の部位の前記占有情報が記録されている場合には、それらの部位同士が干渉すると判断する判断手段と、を備えることを特徴とする。
【0024】
このような本発明の干渉判定装置は、マス目管理手段、占有情報記録手段、および判断手段のみを必須の構成要素とする簡素な構成となり、このような構成により、簡易的な干渉判定処理が可能となる。この簡易的な干渉判定処理は、干渉判定対象部位が少なく、2次元平面上での動作(例えばアームの旋回動作)だけ考慮すれば良いロボットおよび障害物に対して特に有効である。すなわち、マス目を使って2次元平面上での干渉判定を行うため、3次元的な空間やモデルを用いて干渉判定を行う場合に比べて極めて少ないデータ量で計算ができ、干渉判定を高速化でき、ロボットの2次元方向の運動のみを考慮する(ロボットアームの昇降軸の動作や冶具の上昇下降がない)場合に特に有効である。
【発明の効果】
【0025】
本発明によれば、干渉のない立体交差を考慮しつつも、干渉判定を短時間で行うことが可能な干渉判定装置および干渉判定方法を提供することができる。
【図面の簡単な説明】
【0026】
【図1】双腕ロボットシステム100の構成概要図である。
【図2】双腕ロボット3の側面概要図である。
【図3】双腕ロボット3の上面概要図である。
【図4】干渉判定部4の機能的構成要素を示したブロック図である。
【図5】識別番号割当部421が双腕ロボット3および障害物5の各部位に割り当てた識別番号IDiの一例を示す図である。
【図6】干渉情報生成部422が作成したテーブルの一例を示す図である。
【図7】干渉条件情報生成部423により生成された干渉条件情報の一例を示す図である。
【図8】干渉条件情報生成部423により生成された干渉条件情報の一例を示す図である。
【図9】マス目管理部424により作成された判定領域6の一例を示す図である。
【図10】双腕ロボットシステム100にて行われるメイン処理を示すフローチャートである。
【図11】干渉判定部4による干渉判定処理を示すフローチャートである。
【図12】図11のステップS205にて諸元等格納部411に記憶された角度テーブルの一例を示す図である。
【図13】図11のループ1内のある時刻におけるステップS208からステップS210の処理の具体例を示す図である(i=1の場合)。
【図14】図11のループ1内のある時刻におけるステップS208からステップS210の処理の具体例を示す図である(i=2の場合)。
【図15】図11のループ1内のある時刻におけるステップS208からステップS210の処理の具体例を示す図である(i=6の場合)。
【図16】占有情報記録部425による占有領域の特定方法を説明するための図である。
【図17】占有情報記録部425による占有領域の特定方法を説明するための図である(手順1)。
【図18】占有情報記録部425による占有領域の特定方法を説明するための図である(手順2)。
【図19】占有情報記録部425による占有領域の特定方法を説明するための図である(手順3)。
【発明を実施するための形態】
【0027】
以下、添付図面を参照して本発明にかかる干渉判定装置および干渉判定方法の好適な実施形態を詳細に説明する。なお、図面の説明において同一の要素には同一の符号を付し、重複する説明を省略する。
【0028】
[双腕ロボットシステム100の全体構成]
まず、本発明の実施形態に係る双腕ロボットシステム100の全体構成について、図1〜3を参照しながら説明する。図1は、双腕ロボットシステム100の構成概要図である。図1に示すように、双腕ロボットシステム100は、軌道生成部1、サーボドライバ2a〜2d、双腕ロボット3、および干渉判定部4を含んで構成され、各構成要素は例えば図1にて矢印で表現される通信手段により互いに通信できるように接続されている。図2は双腕ロボット3の側面概要図であり、図3は双腕ロボット3の上面概要図である。
【0029】
双腕ロボット3は、例えば図2および図3に示されるように、先端に昇降軸313および323を持つ二台の水平多関節アーム31および32を有する。水平多関節アーム31および32は、人間の両腕のように作業領域の少なくとも一部が重複する間隔で例えばワーク5を挟んで配置される。各アームの第1軸311および321の付け根(双腕ロボット3の肩部分)と、第2軸312および322の付け根(双腕ロボット3のひじ部分)には、それぞれ、サーボモータ3a〜3dが設けられている。この構成により各軸は水平方向に旋回移動できるようになっている。
【0030】
図1にて示される軌道生成部1は、双腕ロボット3の各部位が現在位置から目標位置まで移動できるように、各関節の移動量および移動速度を演算し、各サーボドライバに指令を送る部分である。軌道生成部1は、記憶部11および演算部12を含んで構成される。記憶部11は、軌道生成に必要な双腕ロボット3の概形寸法や移動に関する補間情報ならびに速度情報などの諸元と、教示もしくはロボット言語によるプログラミングによって記述されたロボットの動作順序を制御する動作プログラム、および干渉判定に必要な干渉条件を格納する部分である。演算部12は、双腕ロボット3の各部位が現在位置から目標位置まで移動できるように、各関節の移動量および移動速度を演算する部分である。双腕ロボット3の移動前に、軌道生成部1の演算部12は干渉判定部4へ、移動前の位置から移動後の位置に移動する場合の移動中および移動後の干渉の有無を問い合わせる。
【0031】
サーボドライバ2a〜2dは、軌道生成部1からの指令を受けて、双腕ロボット3の各関節に設けられたサーボモータ3a〜3dをそれぞれ駆動し、駆動後の現在位置を軌道生成部1にフィードバックする部分である。
【0032】
[干渉判定部4の構成]
以下、双腕ロボットシステム100の一構成要素である干渉判定部4(特許請求の範囲における「干渉判定装置」に相当)の構成について、図4〜図9を更に参照しながら詳細に説明する。干渉判定部4は、軌道生成部1から問い合わせを受けて、3次元で動作する双腕ロボット3の各部位(移動部位)と、障害物としてワークまたは治具の各部位(固定部位)に対して干渉判定を行う部分である。図4は、干渉判定部4の機能的構成要素を示したブロック図である。図4に示されるように、干渉判定部4は、格納部41および干渉判定演算部42を含んで構成される。なお、以下の説明においては、「移動部位」とは、双腕ロボット3および障害物5の各部位のうち移動を伴う部位をいい、「固定部位」とは、双腕ロボット3および障害物5の各部位のうち移動を伴わない部位をいい、「部位」は、移動部位と固定部位の総称である。
【0033】
干渉判定部4の格納部41は、諸元等格納部411、干渉情報格納部412(特許請求の範囲における「干渉情報格納手段」に相当)、および干渉条件情報格納部413(特許請求の範囲における「干渉条件情報格納手段」に相当)を含んで構成される。諸元等格納部411は、電源投入後に受け取った双腕ロボット3の諸元、および軌道生成部1からの問い合わせ毎に受け取った移動前後の移動部位毎の角度を格納する部分である。干渉情報格納部412は、双腕ロボット3および障害物5の移動部位における干渉情報を格納する部分である。干渉情報は、後に詳細に説明されるように、移動部位が他の部位との間で立体交差する際に、干渉を伴わない場合には「0」を、干渉を伴う場合には「1」を表す情報である。干渉条件情報格納部413は、干渉条件情報を移動部位ごとに格納する部分である。干渉条件情報は、後に詳細に説明されるように、干渉情報に基づき設定され、双腕ロボット3および障害物5の各部位の数と同数の複数の桁数を有し、移動部位が他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である。
【0034】
干渉判定部4の干渉判定演算部42は、格納部41に格納された各情報に基づき干渉判定を行う部分である。干渉判定演算部42は、双腕ロボット3の移動前後の各関節の角度に対して、更に一定時間毎に分割された移動過程の各関節の角度に対して、それぞれ干渉判定を行う。干渉判定演算部42は、図4に示されるように、識別番号割当部421(特許請求の範囲における「識別番号割当手段」に相当)、干渉情報生成部422(特許請求の範囲における「干渉情報格納手段」に相当)、干渉条件情報生成部423(特許請求の範囲における「干渉条件情報格納手段」に相当)、マス目管理部424(特許請求の範囲における「マス目管理手段」に相当)、占有情報記録部425(特許請求の範囲における「占有情報記録手段」に相当)、および判断部426(特許請求の範囲における「判断手段」に相当)を含んで構成される。以下、干渉判定演算部42を構成する各構成要素について詳細に説明する。
【0035】
[識別番号割当部421]
識別番号割当部421は、双腕ロボット3および障害物5の各部位に識別番号を割り当てる部分である。各識別番号は、双腕ロボット3および障害物5の各部位の数と同数の複数の桁数を有し且つ他の全ての識別番号との間で桁ごとの論理積を計算すると全ての桁が「0」となるように設定される情報である。具体的に、識別番号割当部421が図2および図3にて示した双腕ロボット3および障害物5の各部位に割り当てた識別番号IDiの一例を図5に示す。図5の一例において、識別番号割当部421は、アーム31の第1軸(第1リンク)311に対して、識別番号ID1として「1000000」を割り当てている。また、識別番号割当部421は、アーム32の昇降軸323に対して、識別番号ID6として「0000010」を割り当てている。更に、識別番号割当部421は、冶具5に対して、識別番号ID7として「0000001」を割り当てている。ここで挙げた一例においては、双腕ロボット3および障害物5の各部位が「7つ」あるため、各識別番号IDiの桁数は「7」となっている。また、ID1からID7までの桁ごとの論理積を計算すると、全ての桁において「0」となる。
【0036】
[干渉情報生成部422]
干渉情報生成部422は、双腕ロボット3の各移動部位と他の部位との間で、干渉のない立体交差が存在しない場合(つまり立体交差する際に干渉を伴う場合)は「1」とし、干渉のない立体交差が可能である場合(つまり立体交差する際に干渉を伴わない場合)もしくは自分自身との関係は「0」としたテーブルを作成する部分である。
【0037】
具体的に、干渉情報生成部422が作成したテーブルの一例を図6に示す。図6の一例において、例えばi=1およびj=2の場合における干渉の有無を示す干渉情報t12の値は「0」であり、これはi=1に相当するアーム31の第1軸311とj=2に相当するアーム31の第2軸312との間では、干渉のない立体交差が存在すること、つまり立体交差する際に干渉を伴わないことを示す。また、例えばi=4およびj=3の場合における干渉の有無を示す干渉情報t43の値は「1」であり、これはi=4に相当するアーム32の第1軸321とj=3に相当するアーム31の昇降軸313との間では、干渉のない立体交差が存在しないこと、つまり立体交差する際に干渉を伴うことを示す。また、例えばi=5およびj=5の場合における干渉の有無を示す干渉情報t55の値は「0」であり、これはi=5に相当するアーム32の第2軸322が自分自身との間で干渉することは有り得ないことを示す。
【0038】
干渉情報生成部422は、このようにして作成したテーブルを格納部41の干渉情報格納部412に格納させる。なお、干渉情報生成部422は、移動を伴わない部位である固定部位つまり識別番号ID7の冶具5に対しては、干渉情報t71、t72などを求めなくても良い。他の移動部位の干渉情報t17、t27などにおいて冶具5との干渉の有無が既に考慮されているからである。また、この意味では、干渉情報tijの値と干渉情報tjiの値は常に同じであるため、図6の一例をtijかtjiのうち何れか一方のみを明らかにしたテーブルにしても良い。
【0039】
[干渉条件情報生成部423]
干渉条件情報生成部423は、干渉条件情報を生成する部分である。干渉条件情報は、干渉情報に基づき設定され、双腕ロボット3および障害物5の各部位の数と同数の複数の桁数を有し、移動部位が他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である。干渉条件情報生成部423は、下記の数式(1)により計算される情報Ciを干渉条件情報として生成する。
【数2】


ただし、hは双腕ロボット3および障害物5の各部位の数であり、iおよびjは1以上h以下の自然数であり、Ciはi番目の移動部位の干渉条件情報であり、IDjはj番目の部位の識別番号であり、tijはi番目の移動部位とj番目の部位における干渉情報である。
【0040】
以下、干渉条件情報生成部423による干渉条件情報の生成方法を詳細に説明する。まず、簡単な一例として、干渉判定部位が2個のみのケースを考える。すなわち、右腕(ID1=01)と左腕(ID2=10)のみの干渉判定を行う場合を考える。この場合に干渉条件情報生成部423により生成される干渉条件情報を図7に示す。なお、図7の一例においては、右腕と左腕とが立体交差する際に干渉を伴うとして、干渉情報が設定されている。つまり、t12=1であり、t21=1である。
【0041】
図7の一例において、i=1の識別番号ID1の部位である右腕に対して干渉条件情報C1を求めると、上記式(1)に従い、
C1=ID1・t11+ID2・t12…(2)
である。そして、図7の一例において、ID1=01、t11=0、ID2=10、t12=1であるため、それぞれの値を上記式(2)に代入すると、
C1=01・0+10・1=10…(3)
となり、識別番号ID1の右腕の干渉条件情報C1の値は10として求められる。
【0042】
続いて、より複雑な例として、図2および図3にて示した干渉判定部位が7つであるケースを考える。説明の便宜上、図5および図6の場合と同様の識別番号および干渉情報について考える。この場合に干渉条件情報生成部423により生成される干渉条件情報を図8に示す。この場合において、i=1の識別番号ID1の部位であるアーム31の第1軸311に対して干渉条件情報C1を求めると、上記式(1)に従い、
C1=ID1・t11+ID2・t12+ID3・t13+ID4・t14+ID5・t15+ID6・t16+ID7・t17…(4)
である。そして、ID1=1000000、t11=0、ID2=0100000、t12=0、ID3=0010000、t13=1、ID4=0001000、t14=1、ID5=0000100、t15=0、ID6=0000010、t16=1、ID7=0000001、t17=0であるため、それぞれの値を上記式(4)に代入すると、
C1=1000000・0
+0100000・0
+0010000・1
+0001000・1
+0000100・0
+0000010・1
+0000001・0
=0011010…(5)
となり、識別番号ID1のアーム31の第1軸311の干渉条件情報C1の値は0011010として求められる。
【0043】
同様に、他の部位に対して干渉条件情報を求めることができ、その結果が図8にC2〜C6の値として示されている。干渉条件情報生成部423は、このようにして生成した干渉条件情報を格納部41の干渉条件情報格納部413に格納させる。なお、干渉条件情報生成部423は、固定部位である識別番号ID7の冶具5に対しては干渉条件情報を求めなくても良い。移動部位に対する干渉条件情報であるC1〜C6の値に、固定部位の冶具5との間の干渉の有無が既に反映されているからである。
【0044】
[マス目管理部424]
マス目管理部424は、双腕ロボット3の動作する空間を2次元平面上に投影した上で、その2次元平面をn1×n2のマス目に区切った判定領域を作成するとともに、そのn1×n2の個々のマス目に対応するメモリ領域を確保する部分である。図9は、マス目管理部424により作成された判定領域6の一例を示す。判定領域6は、双腕ロボット3の姿勢および障害物5の位置を演算するために要する諸元を格納した諸元等格納部411の値を元に、双腕ロボット3の動作する範囲を包含する空間、もしくは双腕ロボット3の動作する範囲の一部であって干渉判定の対象となる空間を2次元平面上に投影したn1×n2の2次元平面のマス目で表現されるものである。
【0045】
[占有情報記録部425]
占有情報記録部425は、マス目管理部424による上記n1×n2のマス目のうち、双腕ロボット3および障害物5の各部位に対応するマス目である対応マス目を特定し、占有情報を上記対応マス目に対応するメモリ領域に記録する部分である。図9は、占有情報記録部425により特定された対応マス目の一例を示す。図9の一例では、同じ平面上に投影した判定対象となる姿勢をとった双腕ロボット3や障害物5の各部位が存在する領域(以下、「占有領域」ともいう。)に対応する対応マス目が符号311m、312m、313m、321m、322m、323m、および5mで示されるように特定されている。なお、対応マス目を特定する方法については、後述の[占有領域の特定方法]の欄にて詳細に説明する。
【0046】
占有情報記録部425は、対応マス目の特定後に、占有情報を当該対応マス目に対応するメモリ領域に記録する。占有情報は、双腕ロボット3および障害物5の各部位の識別番号に基づく情報であり、双腕ロボット3および障害物5の各部位の数と同数の複数の桁数を有する情報である。占有情報記録部425は、占有情報を記録する対象となるメモリ領域が初期化されている場合には、対応マス目を占有する部位の識別番号を占有情報としてメモリ領域に記録する。一方で、占有情報記録部425は、占有情報を記録する対象となるメモリ領域が初期化されていない場合(既に占有情報が記録されている場合)には、既存の占有情報と対応マス目を占有する部位の識別番号との間の桁ごとの論理和を占有情報としてメモリ領域に記録する。占有情報記録部425による占有情報の記録により、個々のマス目を占有する双腕ロボット3および障害物5の各部位に対応するビットが立った状態となる。なお、占有情報記録部425による動作の詳細については後述する。
【0047】
[判断部426]
判断部426は、占有情報および干渉条件情報における桁ごとの論理積を対応マス目ごとに求め、当該論理積の結果に基づき干渉判断を行うものである。判断部426は、当該論理積の結果が全ての桁において「0」であれば、双腕ロボット3および障害物5の各部位同士は干渉しないと判断する。一方で、判断部426は、当該論理積の結果が少なくとも一つの桁において「1」であれば、双腕ロボット3および障害物5の各部位同士は干渉すると判断する。判断部426は、干渉判断の結果を示す情報を軌道生成部1に出力する。判断部426は、干渉判断の結果を出力する際に、干渉が生じている部位を特定する情報をともに出力するようにしても良い。
【0048】
[双腕ロボットシステム100の動作]
続いて、双腕ロボットシステム100により行われる動作について、図10〜図15を参照しながら説明する。下記の説明は、双腕ロボットシステム100におけるメイン処理と、干渉判定部4による干渉判定処理とに大別される。
【0049】
[メイン処理]
まず、双腕ロボットシステム100におけるメイン処理について図10を参照しながら説明する。図10は、双腕ロボットシステム100にて行われるメイン処理を示すフローチャートである。
【0050】
最初に、軌道生成部1の演算部12が、記憶部11に格納されているパラメータを干渉判定部4の干渉判定演算部42に送信する。このパラメータは、干渉判定の対象部位毎に設定されるものであり、上述した干渉情報tijを含む(ステップS101)。
【0051】
次に、軌道生成部1の演算部12が、各サーボドライバ2a〜2dから双腕ロボット3の各部位の現在角度を読み込む(ステップS102)。
【0052】
次に、軌道生成部1の演算部12が、記憶部11に格納された動作プログラムを解析して、双腕ロボット3の各部位の移動先の角度(目標角度)を求める(ステップS103)。
【0053】
次に、軌道生成部1の演算部12が、双腕ロボット3の各部位の現在角度と目標角度を干渉判定部4の干渉判定演算部42に送信する(ステップS104)。
【0054】
次に、軌道生成部1の演算部12は干渉判定部4の干渉判定演算部42からの判定結果信号を待つ(ステップS105)。この間、干渉判定部4では詳細を後述する干渉判定処理が行われ、双腕ロボット3のアーム31,32の移動の全体で部位同士の干渉が生じないかどうかが判定される。そして、干渉判定部4の干渉判定演算部42からの判定結果信号が「干渉なし」の場合(ステップS106:YES)、軌道生成部1の演算部12は、表示部(図示せず)に「干渉なし」の表示をさせ(ステップS107)、記憶部11に格納されている動作プログラムを実行させ、双腕ロボット3の動作制御を行う(ステップS108)。
【0055】
一方で、干渉判定部4の干渉判定演算部42からの判定結果信号が「干渉あり」の場合には(ステップS106:NO)、軌道生成部1の演算部12は、表示部(図示せず)に「干渉あり」の表示をさせ(ステップS109)、そのまま処理を終了させる。以上のように軌道生成部1は、双腕ロボット3の移動の全体で部位同士の干渉が生じない判定結果が得られるまでサーボドライバ2a〜2dに指令を送らずに待機し、干渉が生じる場合には双腕ロボット3の各移動部位の移動を開始させない。
【0056】
[干渉判定処理]
引き続き、干渉判定部4による干渉判定処理について図11および図12を参照しながら説明する。図11は、干渉判定部4による干渉判定処理を示すフローチャートであり、図12はステップS205の説明で参照する図である。
【0057】
最初に、識別番号割当部421が干渉判定の対象部位毎に識別番号IDi(i=1〜h)を割り当てる(ステップS201、図5参照)。
【0058】
次に、干渉条件情報生成部423が、ステップS201にて割り当てられた識別番号IDiと、干渉情報生成部422により作成され干渉情報格納部412に格納されたテーブル(図6参照)に記載された干渉情報tijに基づいて、上述した式(1)に従い干渉条件情報Ciを生成する(ステップS202、図7および図8参照)。
【0059】
次に、マス目管理部424が、判定領域(n1×n2のマス目領域、図9参照)に対応するメモリ領域を確保する(ステップS203)。
【0060】
次に、干渉判定演算部42はステップS104(図10参照)にて軌道生成部1から双腕ロボット3の各部位の現在角度と目標角度が入力されることを待つ(ステップS204)。
【0061】
軌道生成部1から双腕ロボット3の各部位の現在角度と目標角度の入力があった場合に(ステップS204:YES)、干渉判定演算部42は、双腕ロボット3の各部位の目標角度と現在角度の差Δθおよび各部位の速度パラメータから一定時間間隔の各部位の角度を求め、これを諸元等格納部411の角度テーブルに記憶する。図示はしないが、この処理のために干渉判定演算部42が別途の処理部を備えていても良い。図12は諸元等格納部411に記憶された角度テーブルの一例を示す。図12に示されるように、角度テーブルは、一定時間間隔毎のレコード(レコード数:m)に部位毎のフィールドを備えて構成されるものである(ステップS205)。
【0062】
以下、ステップS206からステップS213までのループ1が開始される。ステップS205の次に、マス目管理部424が、判定領域(n1×n2のマス目領域、図9参照)に対応するメモリ領域に占有情報の初期値として0を設定することにより、メモリ領域を初期化する(ステップS206)。
【0063】
次に、占有情報記録部425が、図12にて例示した角度テーブルからk番目(k=1〜m)のレコードの角度データを読み込む(ステップS207)。
【0064】
以下、ステップS208からステップS210までのループ2が開始される。ステップS207の次に、占有情報記録部425が、干渉判定の対象部位iの角度データと寸法パラメータから判定領域(二次元平面)において干渉判定の対象部位iが占有するマス目、すなわち対応マス目を特定する。なお、対応マス目を特定する処理については、後述の[占有領域の特定方法]の欄で詳細に説明する。また、占有情報記録部425は、特定した当該対応マス目に対応するメモリ領域に記録された占有情報を取得する(ステップS208)。
【0065】
次に、占有情報記録部425が、干渉判定の対象部位iが占有するメモリ領域の内、既存の占有情報が0のメモリ領域には占有情報として識別番号IDiを書き込み、既存の占有情報が0以外のメモリ領域には既存の占有情報と識別番号IDiの論理和を占有情報として書き込む(ステップS209)。
【0066】
次に、判断部426が、最前のステップS209の処理で占有情報を書き込んだ全てのメモリ領域について、干渉条件Ciとの論理積を求める(ステップS210)。
【0067】
ステップS208からステップS210までの処理をi=hとなるまで、すなわち全ての干渉判定の対象部位について繰り返す。これにより、ループ2が終了し、ある時点kにおける双腕ロボット3の姿勢に対する干渉判定が終了する。なお、ループ2の処理の具体例については、下記の[ループ2の処理の具体例]の欄で後述する。
【0068】
ループ2が終了した時点で、判断部426はステップS210にて求めたそれぞれの論理積が全ての桁において0か否かを判断する(ステップS211)。ステップS211の判断にて、全ての論理積が全ての桁において0ならば(ステップS211:YES)、判断部426は「干渉なし」を表す情報を格納部41に記憶させる(ステップS212)。一方で、ステップS211の判断にて、何れかの論理積に全ての桁において0でないものがある場合には(ステップS211:NO)、判断部426は「干渉あり」を表す情報を格納部41に記憶させる(ステップS213)。格納部41はこの記憶処理のために別途の記憶手段を更に備えていても良く、諸元等格納部411がこの記憶処理を行っても良い。
【0069】
ステップS206からステップS213までの処理をk=mとなるまで、すなわち各部位の目標角度まで繰り返す。これにより、ループ1が終了し、双腕ロボット3の各アームが目標とする姿勢に移行するまでの全ての姿勢における干渉判定処理が終了する。
【0070】
ループ1が終了した時点で、判断部426は、ステップS212またはステップS213にて格納部41に記憶された一定時間間隔毎の判定結果情報から最終的な判定結果を求め、これを判定結果信号として軌道生成部1に送る。判定結果は、一定時間間隔毎の判定結果情報の全てが干渉なしなら「干渉なし」、一つでも干渉ありがあれば「干渉あり」となる(ステップS214)。このような干渉判定処理により、双腕ロボット3のアーム31,32が初期の姿勢から目標とする姿勢まで動作する間の一定時間間隔毎の各姿勢について、部位同士の干渉の有無を確認することができる。
【0071】
[ループ2の処理の具体例]
続いて、図13〜図15を参照しながら、ループ2の処理の具体例について説明する。図13〜図15は、ループ1内のある時刻(例えばk番目の時刻)におけるステップS208からステップS210までの処理の具体例を示す。図13はi=1の場合の処理の具体例であり、図14はi=2の場合の処理の具体例であり、図15はi=6の場合の処理の具体例である。
【0072】
図13が示すi=1の場合には、アーム31の第1軸311に対してステップS208からステップS210までの処理が行われる。すなわち、最初に、占有情報記録部425が判定領域6において第1軸311の占有領域(図13にてドットを付した領域H1に対応するマス目)を特定する(ステップS208)。次に、占有情報記録部425がステップS208にて特定した対応マス目に対応するメモリ領域に占有情報を書き込む。この時、全てのメモリ領域は、ステップS206で初期化された状態(占有情報の初期値として「0」が書き込まれた状態)にあることから、領域H1のマス目に対応するメモリ領域には第1軸311の識別番号ID1=「1000000」が書き込まれる(ステップS209)。次に、占有情報記録部425が、最前のステップS209で書き込まれた占有情報それぞれと干渉条件C1との論理積を求める(ステップS210)。つまり、判断部426は、下記の式(6)にて示される論理積を求める。
領域H1のマス目に係る論理積=
1000000
×0011010
=0000000・・・(6)
【0073】
図14が示すi=2の場合には、アーム31の第2軸312に対してステップS208からステップS210までの処理が行われる。すなわち、最初に、占有情報記録部425が判定領域6において第2軸312の占有領域(図14にてドットを付した領域H2およびハッチを付した領域H3に対応するマス目)を特定する(ステップS208)。領域H2は第2軸312のみが存在する領域であり、領域H3は第2軸312と第1軸311が重なる領域である。次に、占有情報記録部425がステップS208にて特定した対応マス目に対応するメモリ領域に占有情報を書き込む。メモリ領域が初期化された状態のままの領域H2のマス目に対応するメモリ領域には第2軸312の識別番号ID2=「0100000」が書き込まれる。一方、i=1での書き込みによりメモリ領域が初期化された状態になくなっている領域H3のマス目に対応するメモリ領域には既存の占有情報「1000000」と第2軸312の識別番号ID2=「0100000」の論理和が新たな占有情報として書き込まれる。つまり、占有情報記録部425は、下記の式(7)によって示される占有情報を領域H3のマス目に対応するメモリ領域に記録する。
領域H3のマス目に対応するメモリ領域に書き込まれる占有情報=
1000000
+0100000
=1100000・・・(7)
【0074】
次に、判断部426が、領域H2と領域H3のそれぞれに対応するマス目について、次の式(8)および式(9)によって示される占有情報と干渉条件C2との論理積をマス目ごとに求める。
領域H2のマス目に係る論理積=
0100000
×0000110
=0000000・・・(8)
領域H3のマス目に係る論理積=
1100000
×0000110
=0000000・・・(9)
【0075】
前述のようにして、i=3で昇降軸313、i=4で第1軸321、i=5で第2軸322と、それぞれ判定対象となる部位毎に処理が進み、図15が示すi=6の場合には、アーム32の昇降軸323に対してステップS208からステップS210までの処理が行われる。すなわち、最初に、占有情報記録部425が判定領域6において昇降軸323の占有領域(図15にてドットを付した領域H4、ハッチを付した領域H5、領域H6、および領域H7に対応するマス目)を特定する(ステップS208)。領域H4は昇降軸323のみが存在する領域であり、領域H5は昇降軸323とアーム32の第2軸322が重なる領域であり、領域H6は昇降軸323とアーム31の第2軸312が重なる領域であり、領域H7は昇降軸323とアーム31の第1軸311および第2軸312が重なる領域である。
【0076】
次に、占有情報記録部425がステップS208にて特定した対応マス目に対応するメモリ領域に占有情報を書き込む。メモリが初期化された状態のままの領域H4のマス目に対応するメモリ領域には、昇降軸323の識別番号ID6=「0000010」が書き込まれる。一方、i=5での書き込みによりメモリが初期化された状態になくなっている領域H5の対応マス目に対応するメモリ領域には、既存の占有情報としてのアーム32の第2軸322の識別番号ID5=「0000100」と昇降軸323の識別番号ID6=「0000010」の論理和が新たな占有情報として書き込まれる。つまり、占有情報記録部425は、下記の式(10)によって示される占有情報を領域H5のマス目に対応するメモリ領域に記録する。
領域H5のマス目に対応するメモリ領域に書き込まれる占有情報=
0000100
+0000010
=0000110・・・(10)
【0077】
また、i=2での書き込みによりメモリが初期化された状態になくなっている領域H6のマス目に対応するメモリ領域には、既存の占有情報としてのアーム1の第2軸321の識別番号ID2=「0100000」と昇降軸323の識別番号ID6=「0000010」の論理和が新たな占有情報として書き込まれる。つまり、占有情報記録部425は、下記の式(11)によって示される占有情報を領域H6のマス目に対応するメモリ領域に記録する。
0100000
+0000010
=0100010・・・(11)
【0078】
更に、i=1およびi=2での書き込みによりメモリが初期化された状態になくなっている領域H7のマス目に対応するメモリ領域には、既存の占有情報としてのアーム1の第1軸311の識別番号ID1=「1000000」と第2軸312の識別番号ID2=「0100000」と昇降軸323の識別番号ID6=「0000010」の論理和が新たな占有情報として書き込まれる。つまり、占有情報記録部425は、下記の式(12)によって示される占有情報を領域H6のマス目に対応するメモリ領域に記録する。
1000000
+0100000
+0000010
=1100010・・・(12)
【0079】
次に、判断部426が、領域H4ないし領域H7のそれぞれに対応するマス目について、次の式(13)ないし式(16)によって示される占有情報と干渉条件C6との論理積をマス目ごとに求める。
領域H4のマス目に係る論理積=
0000010
×1111001
=0000000・・・(13)
領域H5のマス目に係る論理積=
0000110
×1111001
=0000000・・・(14)
領域H6のマス目に係る論理積=
0100010
×1111001
=0100000・・・(15)
領域H7のマス目に係る論理積=
1100010
×1111001
=1100000・・・(16)
【0080】
以上、ループ2の処理の具体例について説明したが、このようにしてループ2が終了する(全ての判定対象部位について占有情報と干渉条件との論理積とが求まる)と、判断部426は、それぞれの論理積が0か否かを判断する(ステップS211)。この場合、判断部426は、上述の具体例におけるi=1およびi=2の時のように論理積の結果が全ての桁で0であれば、干渉は生じないと判断する。実際、具体例のi=1の場合、第1軸311が自分自身と干渉することはあり得ない。また、i=2の場合は、第1軸311と第2軸312とは関節でつながって立体交差しており、干渉することはあり得ない。一方、上述の具体例におけるi=6の時のように論理積の結果が0でない(少なくとも一つの桁が1である)場合は、干渉が生じると判断する。なお、干渉が生じる場所は、上記の式(15)および式(16)において値が「1」である桁と同一桁で値を「1」とする識別番号の部位である。つまり、上記の式(15)において値が「1」である桁は左から二番目の桁であり、この桁で値を「1」とする識別番号の部位はアーム31の第2軸312(識別番号「0100000」)である。したがって、昇降軸323はアーム31の第2軸312と干渉することがわかる。また、式(16)において値が「1」である桁は左から一番目と二番目の各桁であり、これらの桁で値を「1」とする識別番号の部位はアーム31の第1軸311(識別番号「1000000」)と第2軸312(識別番号「0100000」)である。したがって、昇降軸323はアーム31の第1軸311と第2軸312とが重なる位置、つまり右ひじ部においても干渉を生じることがわかる。
【0081】
なお、図13〜図15では説明の便宜上マス目(メモリ領域)を大きく設定して説明した。しかし、実際のマス目は図13〜図15の例よりもっと小さい設定となる。
【0082】
[占有領域の特定方法]
前述したように、占有情報記録部425は、マス目管理部424が作成したn1×n2のマス目(判定領域、図9参照)のうち、ある時点における双腕ロボット3および障害物5の各部位が存在する領域(占有領域)に対応する対応マス目を特定する。以下、占有情報記録部425による占有領域の特定方法について、図16〜図19を参照し、具体例を挙げながら詳細に説明する。
【0083】
図16は、占有情報記録部425による占有領域の特定方法を説明するための図である。この図16に示す例は、前後に関節AAおよび関節BBを有するアームCCがXY平面上において存在する領域(アームCCの占有領域、図16ではグレーで表示された領域K)を特定する例である。また、図16に示す例は、例えば前述したアーム31の第1軸311に対して、その対応マス目を特定するための例として理解されることができ、この場合の第1軸311は図16に示すアームCCに該当する。なお、この場合の第1軸311は、例えばオーバル形状である。また、実際のXY平面は、図9に示した判定領域に係るn1×n2のマス目が全て存在可能な平面領域が確保されるが、図16では説明の便宜上、アームCCの部分だけを拡大して示している。その特定方法としては、図16のXY平面上に存在する点(マス目を構成する4つの頂点)に対して、下記の手順1〜手順3を行い、各点がアームCCの占有領域に含まれるか否かを判定することで、XY平面上におけるアームCCの占有領域を特定することができる。
【0084】
この例において、関節AAの中心座標、関節BBの中心座標、およびアームCCの幅は、既知の情報である。これらの既知の情報は、軌道生成部1の記憶部11に格納されており、干渉判定演算部42に送信される。図16において、関節AAの中心座標は点A(x、y)であり、関節BBの中心座標は点B(x、y)であり、アームCCの幅はwである。また、関節AAおよび関節BBの半径R=w/2である。つまり、
点A(x、y):関節AAの中心座標
点B(x、y):関節BBの中心座標
w:アームの幅(R=w/2)
である。また、この例において、点DはアームCCの占有領域に入っているか否かの判定対象となる点である。つまり、
点D(x、y):任意のマス目の任意の頂点
である。また、各補助線および補助点の定義は以下のとおりである。
:点A、点Bを通る直線
11:関節AAおよび関節BBを近似した円(点A、Bを中心とした半径Rの円)の接線(下側)
12:関節AAおよび関節BBを近似した円(点A、Bを中心とした半径Rの円)の接線(上側)
:点Dを通り、lと垂直に交わる直線(つまりlとlは垂直関係)
点C(x、y):lとlの交点
点A、B:点A、Bを中心とした半径Rの円の接線l1iとの接点
点E’:点AからX軸に垂線を引いたときにY座標がAと同じになる点
点B’:点DからX軸に垂線を引いたときにlと交わる点
なお、関節AAおよび関節BBの半径は同じとする。ゆえに、l、l11、およびl12は互いに並行である。また、関節AAおよび関節BBの近似円及び線分l11及びl12に囲まれた範囲(領域K)がアームCCに相当する。
【0085】
(手順1)
最初に、図17に示すルールに従い、判定対象部位(アームCC)が位置する座標系を特定し、占有される可能性のあるマス目領域を限定する。点Dの座標(x、y)が、
(xmin< x< xmax)…(17)
および
(ymin <y< ymax)…(18)
を満たすならば、点Dは判定対象部位の占有領域に含まれる可能性がある。この範囲外のマス目は、下記の手順3の項で後述する円形部分に含まれるか、もしくは判定対象部位の占有領域に含まれないことになる。
【0086】
ここで、x12wおよびy12wは、三角形ABEと三角形AAE’との相似関係より、
ab:a12:b12= R:y12w:x12w
(但し、a12=y−y、b12=x−x
が成り立つから、方向性を加味して、
12w= −R b12/Lab
12w= −R a12/Lab
として与えられる。Labは、三平方の定理から、
【数3】


となる。
【0087】
(手順2)
次に、上記の式(17)および(18)、つまり(xmin <x< xmax)および(ymin< y< ymax)を満たす各マス目の点Dが、図18にてグレーで表示された領域K1に入るか否かを判定する。これには、点Dから線分lまでの垂線の長さLcdがR以下となるかどうか、すなわち、
cd≦ R…(19)
となるかどうかを判定すればよい。これが成立すれば、点Dを有するマス目は占有領域に含まれることになる。
【0088】
ここで、Lcdは、以下の通り、軌道生成部1の記憶部11に格納されていたパラメータ等から与えられる既知の条件値から求めることができる。まず、線分lの方程式は、傾きをa1、切片をbとすると、
x+ b= y
である。これにより、図18における点B’の座標は、X座標が点Dと同じxであるから、(x、a + b) である。したがって、2点DB’間の距離Ldb’は、
db’ =y − (a + b
である。ここで、三角形ABEと三角形DB’Cとが相似関係となることから、
db’ :Lcd = Lab : (x− x
が成り立つ。これを、2点CD間の距離Lcdについて解けば、
cd= (x −x) Ldb’ /Lab
= (x −x) {y − (a + b)} / Lab
= −(x− x) [y − {(y - y)/(x - x)} x− (y- x)/(x - x) ]/ Lab
= {(y - y)x−(x− x)y+ (y- x)} /Lab
但し、上記の通り、
【数4】


である。
【0089】
(手順3)
最後に、全てのマス目を対象に、点Dが図19にてグレーで表示された円形領域K2に入るか否かを判定する。座標(x、y)を中心とする半径Rの円の方程式は、
(x −x+ (y −y =R
であるから、円の境界を含む内側は、
(x −x+ (y −y ≦R
と表現できる。ここで、点D(x、y)に対して関節AAおよび関節BBの2つの円を考えれば、
(x−x+ (y −y ≦R…(20)
(x−x+ (y −y ≦R…(21)
のいずれかが成立すれば、点D(x、y)を有するマス目は占有領域に含まれることになる。
【0090】
(まとめ)
以上の説明のように、上記の手順1で特定した領域に存在する各マス目の4つの頂点座標が手順2の条件(式(19))に該当するか否かを判定し、さらに、全てのマス目の4つの頂点座標が手順3(式(20)または式(21))の条件に該当するか否かを判定する。そして、何れかの頂点が何れかの条件に該当する場合には、そのマス目はアームCC、すなわち判定対象部位iの占有領域に含まれると判定する。
【0091】
[本実施形態の作用及び効果]
続いて、本実施形態にかかる双腕ロボットシステム100の作用及び効果について説明する。本実施形態の双腕ロボットシステム100では、識別番号、干渉情報、干渉条件情報、および占有情報が各部位間の干渉を判定するための必須の情報として用いられる。このうち、特に干渉情報および干渉条件情報は、移動部位が他の部位との間で立体交差する際に干渉を伴わない場合の値および干渉を伴う場合の値に基づいた情報である。したがって、これら干渉情報および干渉条件情報を用いることにより、本実施形態による干渉判定の結果には各部位間の立体交差時の干渉の有無が考慮されることとなる。これにより、干渉判定の精度が向上される。
【0092】
また、本実施形態においては、双腕ロボット3の動作する空間を2次元平面上に投影した上で、干渉判定を行うため、例えば3次元での干渉判定に比べ、干渉判定処理を短時間で行うことが可能となる。また、本実施形態で用いる干渉情報は「0」または「1」を表す情報であり、そのデータ量が少ないことから、装置全体における計算量や計算時間が短縮できる。
【0093】
また、本実施形態で用いる識別番号、干渉条件情報、および占有情報は双腕ロボット3および障害物5の各部位の数と同数の桁数を有する情報であるため、例えば部位の数が増えた場合には、増えた部位に関する干渉条件を設定した上で、増えた部位の数だけ識別番号、干渉条件情報、および占有情報の桁数を増やして、本実施形態における干渉判定を行うことができる。このように、本実施形態によれば、部位の数が増えた場合に、柔軟な対応が可能である。また、「0」か「1」かの少ないデータ量で計算を行うことから、本実施形態によれば、部位の数が増えたことに伴って、装置全体の計算量や計算時間が極端に増えることを防止できる。
【0094】
また、本実施形態において、識別番号、干渉条件情報、および占有情報が、双腕ロボット3および障害物5の各部位の数と同数の桁数を有することは、言い換えれば各情報が必要最小限の桁数を有することであり、この場合には、演算に無駄がなく、必要最小限のメモリ量を用いて演算を行うことができる。
【0095】
また、本実施形態によれば、双腕ロボット3の動作における動作開始時刻と動作終了時刻との間の各時刻に対して干渉判定が行われる。これにより、動作中の全ての時刻において干渉が生じないことを判断した上で、安全に双腕ロボット3を動作させることができる。
【0096】
以上で説明した軌道生成部1および干渉判定部4は実際に双腕ロボット3を動作させる前に事前に干渉判定を行うシミュレーション装置としても利用することができる。つまり、図1に示した双腕ロボット3やサーボドライバ2a〜2dが実際には存在しない場合でも、これらの機械部分をパソコン上で擬似的に構成し、双腕ロボット3および障害物の各部位間の干渉判定をシミュレーションすることができる。
【0097】
[他の実施形態]
以上、本発明の好適な実施形態について説明したが、本発明が上記実施形態に限定されないことは言うまでもない。例えば、図示はしないが、干渉判定演算部42をマス目管理部424、占有情報記録部425、および判断部426のみを必須の構成要素とする簡素な構成としてもよい。
【0098】
この場合のマス目管理部424は、前述の通り、双腕ロボット3の動作する空間を2次元平面上に投影した上で、その2次元平面をn1×n2のマス目に区切った判定領域を作成するとともに、そのn1×n2の個々のマス目に対応するメモリ領域を確保する。また、占有情報記録部425は、マス目管理部424による上記n1×n2のマス目のうち、双腕ロボット3および障害物5の各部位に対応するマス目である対応マス目を特定し、占有情報を部位毎に順次対応マス目に対応するメモリ領域に記録する。ここで、この場合の占有情報は、双腕ロボット3および障害物5の各部位が対応マス目を占有するか否かを示す情報である。また、判断部426は、占有情報をメモリ領域に記録するときに、そのメモリ領域に既に別の部位の占有情報が記録されている場合には、それらの部位同士が干渉すると判断する。
【0099】
以上のような構成により、以下に示すような簡易的な干渉判定処理が可能となる。説明の便宜上、干渉判定部位が2個のみのケースを考える。例えば、右腕(識別番号ID=01)と左腕(識別番号ID=10)のみの干渉判定を行う場合が例として挙げられる。この場合に、最初に、マス目管理部424が、双腕ロボット3の動作空間を2次元平面上に投影した上で、その2次元平面をn1×n2のマス目に区切った判定領域を作成するとともに、そのn1×n2の個々のマス目に対応するメモリ領域を確保する。次に、占有情報記録部425が、ID=01の部位が占有するマス目を特定し、そのメモリ領域に占有情報として「ID=01を示す旨の情報」を書き込む。次に、占有情報記録部425が、ID=10の部位が占有するマス目を特定し、そのメモリ領域に占有情報として「ID=10を示す旨の情報」を書き込む。この「ID=10を示す旨の情報」の書き込み処理時に、占有情報記録部425が既に「ID=01を示す旨の情報」が書き込まれたメモリ領域に「ID=10を示す旨の情報」を書き込まなければならなくなった場合には、判断部426は、ID=01の部位とID=10の部位との間で部位同士が「干渉する」と判定する。一方で、「ID=10を示す旨の情報」を書き込むメモリ領域の何れにも「ID=01を示す旨の情報」が書き込まれていない場合には、部位同士が「干渉しない」と判定する。
【0100】
以上のような簡易的な干渉判定処理は、干渉判定対象部位が少なく、2次元平面上での動作(例えばアームの旋回動作)だけ考慮すれば良いロボットおよび障害物に対して特に有効である。すなわち、マス目を使って2次元平面上での干渉判定を行うため、3次元的な空間やモデルを用いて干渉判定を行う場合に比べて極めて少ないデータ量で計算ができ、干渉判定を高速化でき、双腕ロボット3の2次元方向の運動のみを考慮する(ロボットアームの昇降軸の動作や冶具の上昇下降がない)場合に特に有効である。
【符号の説明】
【0101】
100…双腕ロボットシステム、1…軌道生成部、11…記憶部、12…演算部、2a〜2d…サーボドライバ、3a〜3d…サーボモータ、3…双腕ロボット、31,32…水平多関節アーム、311…アーム31の第1軸、312…アーム31の第2軸、313…アーム31の昇降軸、321…アーム32の第1軸、322…アーム32の第2軸、323…アーム32の昇降軸、4…干渉判定部、41…格納部、411…諸元等格納部、412…干渉情報格納部、413…干渉条件情報格納部、42…干渉判定演算部、421…識別番号割当部、422…干渉情報生成部、423…干渉条件情報生成部、424…マス目管理部、425…占有情報記録部、426…判断部、5…障害物、ワーク、冶具、6…判定領域。

【特許請求の範囲】
【請求項1】
3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定装置であって、
複数の桁数を有し且つ他の識別番号との間で桁ごとの論理積を計算すると全ての桁が「0」となるように設定された識別番号を、前記各部位に割り当てる識別番号割当手段と、
前記各部位のうち移動を伴う部位である移動部位が、他の前記部位との間で立体交差する際に干渉を伴わない場合には「0」、立体交差する際に干渉を伴う場合には「1」を表す情報を干渉情報として格納する干渉情報格納手段と、
前記干渉情報に基づき設定され、前記複数の桁数を有し、前記移動部位が前記他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である干渉条件情報を、前記移動部位ごとに格納する干渉条件情報格納手段と、
前記ロボットの動作する空間を2次元平面上に投影した上で、前記2次元平面をn1×n2のマス目に区切るとともに、前記n1×n2のマス目それぞれに対応するメモリ領域を確保するマス目管理手段と、
前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目を特定し、前記各部位の前記識別番号に基づく情報であり前記複数の桁数を有する占有情報を前記対応マス目に対応する前記メモリ領域に記録する占有情報記録手段と、
前記占有情報および前記干渉条件情報における桁ごとの論理積を前記対応マス目ごとに求め、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断し、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断する判断手段と、
を備えることを特徴とする干渉判定装置。
【請求項2】
前記干渉条件情報格納手段は、下記の数式(1)により計算される情報Ciを前記干渉条件情報として格納することを特徴とする請求項1に記載の干渉判定装置。
【数1】


ただし、hは前記各部位の数であり、iおよびjは1以上h以下の自然数であり、Ciはi番目の部位の前記干渉条件情報であり、IDjはj番目の部位の前記識別番号であり、tijはi番目の部位とj番目の部位における前記干渉情報である。
【請求項3】
前記占有情報記録手段は、
前記メモリ領域が初期化されている場合には、前記識別番号を前記占有情報として前記メモリ領域に記録し、
前記メモリ領域が初期化されていない場合には、既存の占有情報と前記識別番号との間の桁ごとの論理和を前記占有情報として前記メモリ領域に記録する、
ことを特徴とする請求項1または2に記載の干渉判定装置。
【請求項4】
前記ロボットの動作における動作開始時刻と動作終了時刻との間が一定時間間隔ごとに区切られ、当該区切られた各時刻における前記各部位の位置に対して、
前記占有情報記録手段は、前記各時刻における前記対応マス目を特定し、前記占有情報を前記対応マス目に対応する前記メモリ領域に記録し、
前記判断手段は、前記占有情報および前記干渉条件情報における桁ごとの論理積を前記対応マス目ごとに求め、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断し、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断する、
ことを特徴とする請求項1〜3の何れか1項に記載の干渉判定装置。
【請求項5】
前記ロボットは、水平多関節アームを有する双腕ロボットである、
ことを特徴とする請求項1〜4の何れか1項に記載の干渉判定装置。
【請求項6】
前記識別番号、前記干渉条件情報、および前記占有情報は、前記各部位の数と同数の前記複数の桁数を有する情報である、
ことを特徴とする請求項1〜5の何れか1項に記載の干渉判定装置。
【請求項7】
3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定装置であって、
前記ロボットの動作する空間を2次元平面上に投影した上で、前記2次元平面をn1×n2のマス目に区切るとともに、前記n1×n2のマス目それぞれに対応するメモリ領域を確保するマス目管理手段と、
前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目を部位毎に特定し、前記各部位が前記対応マス目を占有するか否かを示す占有情報を前記部位毎に順次前記対応マス目に対応する前記メモリ領域に記録する占有情報記録手段と、
前記占有情報を前記メモリ領域に記録するときに、そのメモリ領域に既に別の部位の前記占有情報が記録されている場合には、それらの部位同士が干渉すると判断する判断手段と、
を備えることを特徴とする干渉判定装置。
【請求項8】
3次元で動作するロボットおよび障害物の各部位に対して干渉判定を行う干渉判定方法であって、
複数の桁数を有し且つ他の識別番号との間で桁ごとの論理積を計算すると全ての桁が「0」となるように設定された識別番号が、前記各部位に割り当てられ、
前記各部位のうち移動を伴う部位である移動部位が、他の前記部位との間で立体交差する際に干渉を伴わない場合には「0」、立体交差する際に干渉を伴う場合には「1」を表す情報が、干渉情報として格納され、
前記干渉情報に基づき設定され、前記複数の桁数を有し、前記移動部位が前記他の部位との間で立体交差する際に干渉を伴うか否かを表す情報である干渉条件情報が、前記移動部位ごとに格納され、
前記ロボットの動作する空間が2次元平面上に投影された上で、前記2次元平面がn1×n2のマス目に区切られるとともに、前記n1×n2のマス目それぞれに対応するメモリ領域が確保され、
前記n1×n2のマス目のうち前記各部位に対応するマス目である対応マス目が特定され、前記各部位の前記識別番号に基づく情報であり前記複数の桁数を有する占有情報が前記対応マス目に対応する前記メモリ領域に記録され、
前記占有情報および前記干渉条件情報における桁ごとの論理積が前記対応マス目ごとに求められ、前記論理積の結果が全ての桁において「0」であれば前記各部位同士は干渉しないと判断され、前記論理積の結果が少なくとも一つの桁において「1」であれば前記各部位同士は干渉すると判断される、
ことを特徴とする干渉判定方法。


【図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

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate