ロボットの移動方向決定方法及びロボットの制御装置
【課題】ユーザがロボットをリアルタイムで動作させる場合でも、ロボットを動作領域の限界まで動作させる。
【解決手段】ロボットの動作領域空間をキューブの集合として捉え、各キューブの外面を規定する3次元座標値を決定し、それらを安全空間と危険空間との何れかに評価した空間評価データを用い、手先部分を覆うガード領域Gを設定する。ユーザが、ジョイスティックで指示した方向に手先を移動させ続けるとガード領域Gと危険空間が干渉する場合で両者が面で接触すれば、その面と平行な方向に手先を移動可能であれば単位距離だけ移動させた後(S14)、指示方向への移動を再試行する。両者が面で接触しない場合,又はガード領域Gが干渉する場合は、指示方向を3つの方向ベクトルに分解して第1方向,第2方向を定め(S5)、手先を第1方向に移動可能であれば単位距離だけ移動させた後(S15)指示方向への移動を再試行し、干渉する場合は第1方向を45度回転させた方向を次に移動させる候補にする(S8)。
【解決手段】ロボットの動作領域空間をキューブの集合として捉え、各キューブの外面を規定する3次元座標値を決定し、それらを安全空間と危険空間との何れかに評価した空間評価データを用い、手先部分を覆うガード領域Gを設定する。ユーザが、ジョイスティックで指示した方向に手先を移動させ続けるとガード領域Gと危険空間が干渉する場合で両者が面で接触すれば、その面と平行な方向に手先を移動可能であれば単位距離だけ移動させた後(S14)、指示方向への移動を再試行する。両者が面で接触しない場合,又はガード領域Gが干渉する場合は、指示方向を3つの方向ベクトルに分解して第1方向,第2方向を定め(S5)、手先を第1方向に移動可能であれば単位距離だけ移動させた後(S15)指示方向への移動を再試行し、干渉する場合は第1方向を45度回転させた方向を次に移動させる候補にする(S8)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザが、操作手段を介してロボットの手先の移動方向を指示する操作入力を行った場合、実際に手先を移動させる方向を決定する方法,及びロボットの制御装置に関する。
【背景技術】
【0002】
ロボットを動作させる場合には、ロボットが周辺の設備に衝突することを回避するため、動作領域の限界を定める、いわゆるバーチャルフェンス,或いはソフトウェアケージと称する仮想的なフェンスやケージを設定することが行われている。例えば特許文献1には、指定された目標点に向かうためロボットの動作軌跡を生成する場合に、その軌跡の途中に障害物が存在すると、目標点を前記障害物の直前の位置に変更する技術が開示されている。また、特許文献2には、特許文献1と同様に目標点に向かうためロボットの動作軌跡を生成する場合に、動作領域について既に得ている情報から、安全な経路を選択するように検索を行う技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7−129214号公報
【特許文献2】特開2003−280710号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットを制御プログラムに従い動作させる場合(変数移動)であれば、特許文献1,2に開示されている技術を適用することで、手先を障害物との境界に沿って動かすことが可能となり、動作領域の限界まで動作させることができる。しかしながら、ユーザが、例えばジョイステイック等の操作手段を用いて、移動方向をリアルタイムで指示しながらロボットを動作させる場合には、移動の最終目標座標が定まらないため特許文献1,2のような技術が適用できず、ロボットを動作領域の限界まで動作させることができないという問題がある。
【0005】
本発明は上記事情に鑑みてなされたものであり、その目的は、ユーザがロボットをリアルタイムで動作させる場合でも、ロボットを動作領域の限界まで動作させることが可能となるロボットの移動方向決定方法,及びロボットの制御装置を提供することにある。
【課題を解決するための手段】
【0006】
請求項1記載のロボットの移動方向決定方法によれば、ロボットが動作する動作領域空間を立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、それらの各単位空間を、ロボットが通過可能な安全空間と、ロボットが通過不能な危険空間との何れかに評価した空間評価データを用意する。また、単位空間よりもサイズが大きな立方体状の空間によって、ロボットの手先部分を覆うガード領域を設定する。
【0007】
そして、ユーザが、操作手段を介してロボットの手先の移動方向を指示する操作入力を行い、手先を操作入力に応じた指示方向に移動させ続けるとガード領域が危険空間に進入することが予測される場合には、ガード領域と危険空間とが接する状態で移動を一旦停止させる。この時、両者が面で接触する場合は、その面に平行となる方向を第1候補として、手先を前記方向に移動させるとガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、指示方向への移動を再試行する。
【0008】
最初にガード領域と危険空間とが面で接触しない場合,又は第1候補の方向に移動させるとガード領域が危険空間に進入する場は、指示方向をロボットの基準座標系の原点に立つ単位ベクトルで表わし、単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解する。そして、3つの方向ベクトルの長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向に定め、第1方向を次に移動させる第2候補として設定する。ここで、3つの方向ベクトルのうち、何れか2つの長さが等しい場合には、そのうちの何れか一方を選択して第1及び第2方向ベクトルを定める。また、3つの方向ベクトルの、全ての長さが等しい場合は、何れか2つの方向を選択して第1及び第2方向ベクトルを定める。
【0009】
すなわち、動作領域空間は単位空間の集合であるため、ガード領域と危険空間とが接している状態から手先が移動可能な方向は、±90度,±135度,180度の何れかとなる。そこで、手先を第1方向に移動させると安全空間に進入する場合は、そのまま第1方向に単位距離だけ移動させた後、指示方向への移動を再試行する。一方、第1方向に移動させるとガード領域が危険空間に進入する場合は、第2方向を基準として第1方向を45度回転させた第1回転方向(第2方向基準で135度回転させた方向)を、次に移動させる第3候補として設定する。
【0010】
次に、手先を第1回転方向に移動させるとガード領域が安全空間に進入する場合は、第1回転方向に単位距離の21/2倍だけ移動させた後、指示方向への移動を再試行し、ガード領域が危険空間に進入する場合は、第2方向を基準として第1回転方向を更に45度回転させた第2回転方向(第2方向基準で180度回転させた方向)を、次に移動させる第4候補として設定する。更に、手先を第2回転方向に移動させるとガード領域が安全空間に進入する場合は、第2回転方向に単位距離だけ移動させた後指示方向への移動を再試行し、ガード領域が危険空間に進入する場合は、その時点で移動を停止させる。
【0011】
このように移動方向を決定すれば、ユーザがリアルタイムで、操作手段を介してロボットの手先の移動方向を指示する操作入力を行うことで手先が危険空間に近付いた場合に、危険空間が連続する境界に沿わせながら、ユーザが指示した方向に極力近づくように手先を移動させることができる。したがって、ユーザがリアルタイムで移動方向を指示する場合でも、ロボットの手先を、安全空間として設定されている領域は全て移動させることが可能となり、空間を限界まで使用することができる。また、ガード領域が危険空間に接した場合は、ユーザが操作手段を介して指示した方向を基準として、手先が危険空間との境界を滑るようにして移動するので、ユーザがイメージした手先の動作に近い動きになり、予想を逸脱するような動きにならず、危険な動作状態が生じることを抑制できる。
【0012】
請求項2記載のロボットの移動方向決定方法によれば、ガード領域のサイズを変更可能とし、安全空間内において、手先を移動させる速度が上昇するのに応じてガード領域のサイズを段階的に拡大させ、安全空間内において、手先を移動させる速度が下降するのに応じてガード領域のサイズを段階的に縮小させる。これにより、手先の移動速度が速ければガード領域のサイズが大きくなるため狭い安全空間には進入し難くなり、結果としてガード領域;手先はより広く設定されている安全空間に沿って移動することになる。すなわち、手先の移動速度が速い場合とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、手先をより広い安全空間に沿って移動させることで、移動距離をより長く伸ばすことが可能となる。
【0013】
請求項3記載のロボットの移動方向決定方法によれば、ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うので、ガード領域のサイズをより広いレンジで変化させることができる。
【0014】
請求項4記載のロボットの移動方向決定方法によれば、手先を、現在位置が存在する単位空間からn個先にある単位空間内にある目標座標まで移動させる際に、n個先の単位空間が安全空間であることを条件に、手先の移動速度により1サンプリングタイムで進む単位空間の数をnsとすると、ガード領域のサイズをn/nsの値の大きさを基準として決定する。これにより、ガード領域のサイズを手先の移動速度の速さとのバランスに応じて最適に決定することができる。
【0015】
請求項5記載のロボットの移動方向決定方法によれば、n個先の単位空間が危険空間であれば、ガード領域のサイズを1段階だけ拡大させる。すなわち、手先を危険空間との境界に沿って移動させている状態とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、危険空間との干渉を回避しながら、請求項2と同様に移動距離をより長く伸ばすことが可能となる。
【図面の簡単な説明】
【0016】
【図1】第1実施例であり、手先の移動方向を決定する処理を示すフローチャート
【図2】手先の動きを2次元的に示した場合の処理手順をイメージ的に示す図
【図3】指示方向を3軸方向ベクトル成分に分解する状態を示す図
【図4】ガード領域Gが障害物OBに接近した場合の3次元イメージを示す図
【図5】ロボット本体の手先にガード領域Gを設定した状態を示す図
【図6】動作領域空間にキューブを設定した状態を示す図
【図7】垂直多関節型ロボットのシステム構成を示す図
【図8】機能ブロック図
【図9】第2実施例を示す図1の一部相当図
【図10】ガード領域Gのサイズが変化するイメージを示す図
【図11】第3実施例を示す図1の一部相当図
【図12】手先の移動とガード領域Gの拡大との関係を説明する図
【発明を実施するための形態】
【0017】
(第1実施例)
以下、第1実施例について図1ないし図8を参照して説明する。図7は、垂直多関節型(6軸)ロボットのシステム構成を示す。このロボット本体1は、ベース(回転軸)2上に、この場合6軸のアームを有している。前記ベース2上には、第1関節J1を介してショルダ部3が回転可能に連結されている。このショルダ部3には、第2関節J2を介して上方に延びる下アーム4の下端部が回転可能に連結され、さらに、この下アーム4の先端部には、第3関節J3を介して第1上アーム5が回転可能に連結されている。
【0018】
この第1上アーム5の先端には第4関節J4を介して第2上アーム6が回転可能に連結され、この第2上アーム6の先端には第5関節J5を介して手首7が回転可能に連結され、この手首7には第6関節J6を介して第6のフランジ8が回転可能に連結されている。なお、各関節J1〜J6においては、サーボモータ26(図8参照)によりショルダ部3〜フランジ8を回転駆動する。
【0019】
ロボット本体1と制御装置(コントローラ,ガード領域設定手段,方向決定手段)11との間は、接続ケーブル12によって接続されている。これにより、ロボット本体1の各軸を駆動するサーボモータは、制御装置11により制御される。制御装置11には、パーソナルコンピュータ(パソコン)13がケーブル14を介して接続され、パソコン13との間で、ロボット本体1の手先の現在位置の送信や動作コマンドの受信など、高速通信を実行するようになっている。パソコン13には、メモリやハードディスクなどの記憶装置が内蔵されている。
【0020】
ジョイスティック(操作手段)15は、ケーブル16を介してパソコン13に接続されている。ユーザは、ジョイスティック15を操作して倒した方向により、ロボット本体1の手先(フランジ8の先端,TCP:Tool Center Point)の移動方向を指示する。その指示方向は、パソコン13を介して制御装置11に伝達され、制御装置11は、ロボット本体1の手先をXY平面上で指示された方向に移動させるように制御する。
【0021】
制御装置11は、図8に示すように、CPU21と、駆動回路22と、位置検出回路23とを備えて構成されている。CPU22には、システムプログラムや動作プログラムを作成するためのロボット言語などを記憶するROM24及び動作プログラムなどを記憶するRAM25が接続されていると共に、図示しない通信インターフェイスを介してパソコン13が接続されている。
【0022】
位置検出回路23は、ショルダ部3〜フランジ8の位置を検出するためのもので、各軸の駆動源であるサーボモータ26に設けられているロータリエンコーダ27が接続されている。位置検出回路23は、ロータリエンコーダ27から入力される検出信号に基づいて各軸の回転角度を検出し、それら検出した位置検出情報をCPU21に出力する。そして、CPU21は、動作プログラムに基づいてショルダ部3〜フランジ8を動作させる際に、位置検出回路23から入力する位置検出情報をフィードバック信号として、各軸のサーボモータ26を駆動する。
【0023】
次に、本実施例の作用について図1ないし図6を参照して説明する。本実施例では、図6に示すように、ロボット本体1が動作する領域を、立方体状の単位空間(以下、キューブと称す)を3次元的に積み上げたものとして設定しており、各キューブを構成する6面,或いは12本の直線を規定する3次元座標値が決定されている。すなわち、制御装置11のソフトウェア上で、そのように仮想されている。そして、各キューブについては、ロボット本体1が動作した場合に、周辺の障害物等に接触する可能性があるものが「危険」と評価され(危険空間)、接触する可能性がないものが「安全」と評価されている(安全空間)。そして、その情報が空間評価データベースとして、例えばRAM(記憶手段)25に予め記憶されている。
【0024】
一方、ロボット本体1については、図5に示すように、手先を覆うようにガード領域Gが設定されている(キューブと同様にソフトウェア上で仮想されている)。例えばガード領域Gの中心は手先に設定されている。この場合、ガード領域Gの体積(サイズ)は、キューブの体積よりも大きく設定されており、例えば10倍程度となっている。そして、ロボット本体1を動作させることで、手先であるフランジ8の位置が変化すると、その位置の変化に応じてガード領域Gの位置もソフトウェア上で変化する。
【0025】
図1は、制御装置2が手先の移動方向を決定する処理を示すフローチャートであり、図2は、簡単のため、手先の動きを2次元的に示した場合の処理手順をイメージ的に示す図である。ユーザが、例えばジョイスティック15を操作して、ロボット本体1の手先の移動方向を指示した場合、その指示方向に手先を移動させると、ガード領域Gが危険空間と干渉するか否かを判断する(ステップS1)。ここで「干渉」とは、ガード領域Gが危険空間の一部に進入する(両者が交錯する)状態を言う。両者が干渉しなければ(NO)、指示方向に手先を移動させて(ステップS13)ステップS1に戻る。また、以降では、上記のように干渉するか否かの判断を「干渉チェック」と称する。
【0026】
一方、ガード領域Gが危険空間と干渉する場合は(ステップS1:YES)、干渉が発生する直前の状態で手先を停止させ、指示方向を、図3に示すように、ロボット本体1の基準座標上で原点に立つ単位ベクトルDと見た場合に、そのベクトルDを、X,Y,Z方向成分である各軸方向ベクトルDx,Dy,Dzに分解する。そして、それらのうち、危険空間のXY平面,YZ平面,ZX平面の何れかと干渉するベクトルを除いた2つの合成ベクトルの方向(上記干渉する面に対して平行となる方向)を、次に手先を移動させる方向の候補(第1候補)とする(ステップS2,図2(a)(2)参照)。
【0027】
尚、図2では、ユーザがジョイスティック15を操作することで、ジョグ動作として指示した方向を破線矢印で示しており、移動候補となる方向を実線矢印で示している。そして、前記の平行な方向に移動させるとした場合について干渉チェックを行い(ステップS3)、干渉しなければ(NO)手先を当該方向に、キューブの1辺の長さである単位距離だけ移動させて(ステップS14)ステップS1に戻る。また、両者が干渉する場合は(YES)ステップS4に移行する。
【0028】
ステップS4では、指示方向を、ステップS2と同様に、ロボット本体1の基準座標上で原点に立つ単位ベクトルDと見た場合に、そのベクトルDを、X,Y,Z方向成分である各軸方向ベクトルDx,Dy,Dzに分解する。それから、各方向ベクトルの長さを評価して、長さが最も長いベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向とする(ステップS5)。図3は、ここでの処理を3次元的なイメージで示す。但し、3つの方向ベクトルDx,Dy,Dzのうち、何れか2つの長さが等しい場合には、そのうちの何れか一方を選択して第1及び第2方向ベクトルを定める。
【0029】
また、3つの方向ベクトルDx,Dy,Dzの、全ての長さが等しい場合は、何れか2つの方向を選択して第1及び第2方向ベクトルを定める。すなわち、上記方向ベクトルの長さはジョイスティック15の移動方向の近似度を示しているので、長さが等しいということは、その何れの方向に移動させてもジョイスティック15によって指示された方向に対する近似度は等しくなるからである。
【0030】
第1及び第2方向を定めると、第1方向が示す方向(第1方向)を、手先を次に移動させる候補として(第2候補,ステップS6,図2(a)(3)参照)、第1方向に移動させるとした場合の干渉チェックを行う(ステップS7)。そして干渉しなければ(NO)手先を第1方向に単位距離だけ移動させてから(ステップS15)ステップS1に戻る。一方、第1方向に移動させると干渉する場合は(YES,図2(a)(4)参照)、第1方向を、第2方向を基準として45度回転させて(第1回転方向,ステップS8,図2(a)(5)参照)、その第1回転方向について干渉チェックを行う(ステップS9)。
【0031】
図3では、方向ベクトルDxが第1方向となり、方向ベクトルDy,Dzの方向を合成したベクトルDyzの方向が第2方向となる。そして、方向ベクトルDxを、合成ベクトルDyzを基準として45度回転させた(或いは、ベクトル(−Dyz)に向けて45度回転させた)ベクトルDrの方向が、第1回転方向となっている(第2方向から+135度)。ステップS9におけるチェックの結果、干渉しない場合は(NO)手先を第1回転方向に、単位距離の21/2倍だけ移動させてから(ステップS16)ステップS1に戻る。
【0032】
一方、第1回転方向に移動させると干渉する場合は(ステップS9:YES,図2(a)(6)参照)、その第1回転方向を更に45度回転させる(第2回転方向,ステップS10,図2(a)(7)参照)。そして、第2回転方向(第2方向から+180度)について干渉チェックを行い(ステップS11)、干渉しない場合は(NO,図2(a)(8)参照)手先を第2回転方向に単位距離だけ移動させてから(ステップS17,図2(a)(9)参照)ステップS1に戻る。第2回転方向に移動させると干渉する場合は(ステップS11:YES)、この時点で指示方向に基づく移動を停止させてエラー出力を行う(ステップS12)。例えば、指示方向の変更を促す旨のメッセージを、パソコン13のディスプレイ画面に表示させるなどする。
【0033】
図2(a)(10)は、(1)と同様に、(9)の状態から再び指示方向への移動を試みた場合を示している。この場合も干渉が発生するので、(3)と同様に方向成分の分解を行う(11)。そして、第1方向に移動させても干渉が発生しないので、第1方向に単位距離だけ移動させる(12)。
図2(b)は、危険空間をマクロ的に見た場合に安全空間との境界が斜面となっており、手先を破線矢印方向に移動させるように指示すると、上記斜面にガード領域Gが接して干渉する場合である。このような状態で本実施例の処理を適用すると、手先は斜面に沿って移動するようになり、危険空間が存在しなくなった位置で指示方向に移動するようになる。
【0034】
また、図4は、3次元イメージで示しており、ロボット本体1の動作領域空間に円柱状の障害物OBが存在する場合、その障害物OBは、制御装置2では危険空間であるキューブの集合として把握されている。そして、ロボット本体1の手先の移動方向が図中の矢印方向で指示されている場合に、ガード領域Gが障害物OBに接近すると、ガード領域Gは、障害物OBの表面に沿って、すなわち危険空間との境界に沿って移動するようになり、障害物OBとの干渉が回避される。
【0035】
以上のように本実施例によれば、ロボット本体1が動作する動作領域空間をキューブの集合として捉え、各キューブの外面を規定する3次元座標値を決定し、それらの各キューブを、ロボットが通過可能な安全空間と通過不能な危険空間との何れかに評価した空間評価データを用い、キューブよりもサイズが大きな立方体状の空間によって、ロボット本体1の手先部分を覆うガード領域Gを設定する。そして、ユーザが、ジョイスティック15を介して指示した方向に手先を移動させ続けると、ガード領域Gと危険空間とが干渉すると予測される場合は両者が接する状態で移動を一旦停止させ、両者が面で接触する場合はその面に平行となる方向を第1候補として、手先を前記方向に移動可能であれば当該方向に単位距離だけ移動させた後指示方向への移動を再試行する。
【0036】
また、ガード領域Gと危険空間とが面で接触しない場合,或いは第1候補の方向に移動させるとガード領域Gが干渉する場合は、指示方向を3つの方向ベクトルに成分分解して第1方向,第2方向を定め、第1方向を次に移動させる第2候補とする。そして、手先を第1方向に移動可能であれば、そのまま第1方向に単位距離だけ移動させた後指示方向への移動を再試行し、干渉する場合は、第1方向を45度回転させた第1回転方向を、次に移動させる第3候補とする。
次に、手先を第1回転方向に移動可能であれば、第1回転方向に単位距離の21/2倍だけ移動させた後指示方向への移動を再試行し、干渉する場合は、第1回転方向を更に45度回転させた第2回転方向を次に移動させる第4候補とする。更に、手先を第2回転方向に移動可能であれば、第2回転方向に単位距離だけ移動させた後指示方向への移動を再試行し、干渉する場合はその時点で移動を停止させるようにした。
【0037】
このように移動方向を決定すれば、ユーザがリアルタイムで、ジョイスティック15を介してロボット本体1の手先の移動方向を指示する操作入力を行うことで手先が危険空間に近付いた場合に、危険空間が連続する境界に沿わせながら、ユーザが指示した方向に極力近づくように手先を移動させることができる。
したがって、ユーザがリアルタイムで移動方向を指示する場合でも、ロボット本体1の手先を、安全空間として設定されている領域は全て移動させることが可能となり、動作領域空間を限界まで使用することができる。また、ガード領域Gが危険空間に接した場合は、指示方向を基準として、手先が危険空間との境界を滑るようにして移動するので、ユーザがイメージした手先の動作に近い動きになり、予想を逸脱するような動きにならず、危険な動作状態が生じることを抑制できる。
【0038】
(第2実施例)
図9及び図10は第2実施例であり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図9は図1の一部相当図であり、ステップS1で「NO」と判断してからステップS13に移行する間に、ステップS21〜S25の処理を実行するようになっている。先ず、ステップS21では、ユーザにより設定されたロボットの手先の移動速度をしきい値(1)と比較する。手先の移動速度は、例えばジョイスティック15を傾けた速さなどで設定される。そして、移動速度がしきい値(1)以下であれば(NO)、ガード領域Gのサイズを設定値(1)とする(ステップS23)。設定値(1)は、デフォルトの最小サイズであり、例えば1辺の長さがキューブ2,3個分程度とする。
【0039】
ステップS21において、移動速度がしきい値(1)を超えていると(YES)、次に移動速度を、しきい値(2)と比較する(ステップS22)。尚、しきい値(2)は、しきい値(1)よりも高い値に設定されている。そして、移動速度がしきい値(2)以下であれば(NO)、ガード領域Gのサイズを設定値(2)とする(ステップS24)。設定値(2)は、設定値(1)に対して、1辺の長さを例えばキューブ1,2個分程度増加させたサイズとする。例えば、設定値(1)における1辺のサイズがキューブ3個分(3Cbとする)であるとすると、そこから1辺のサイズを4Cbにすればガード領域Gの体積増加分は、64/27≒2.73倍となる。
【0040】
一方、ステップS22において、移動速度がしきい値(2)を超えていると(YES)、ガード領域Gのサイズを設定値(3)とする(ステップS25)。設定値(3)は、設定値(2)に対して、更に1辺の長さを例えばキューブ1,2個分程度増加させたサイズとする。尚、ユーザがロボット本体1を直接操作する場合の移動速度は、一般に、自動運転時の10%〜20%程度に設定されている。その範囲における最大速度の範囲内でしきい値(1),(2)を設定する。
【0041】
すなわち、図9に示す処理を実行する毎に、手先の移動速度がしきい値(1),(2)と比較され、その比較結果に応じてガード領域Gのサイズが拡大したり縮小したり変化することになる。図10は、ガード領域Gのサイズが変化するイメージを示している。(a)は手先の移動速度が低速の場合であり(例えばしきい値(1)以下)、ガード領域Gのサイズが小さく設定されるので、より精密な位置制御が可能であり、安全空間の開口部にも進入可能となっている。一方、(b)は手先の移動速度が高速の場合であり(例えばしきい値(2)を上回る)、ガード領域Gのサイズが大きく設定されているため、安全空間の開口部には進入不能となっている(図中に破線で示すように、開口部に向かう以外の方向には移動可能である)。
【0042】
以上のように第2実施例によれば、ガード領域Gのサイズを変更可能とし、安全空間内において、手先を移動させる速度が上昇するのに応じてガード領域Gのサイズを段階的に拡大させ、安全空間内において、手先を移動させる速度が下降するのに応じてガード領域Gのサイズを段階的に縮小させるようにした。これにより、手先の移動速度が速ければガード領域Gのサイズが大きくなるため狭い安全空間には進入し難くなり、結果としてガード領域G;手先はより広く設定されている安全空間に沿って移動することになる。
【0043】
すなわち、手先の移動速度が速い場合とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、手先をより広い安全空間に沿って移動させることで、移動距離をより長く伸ばすことが可能となる。また、ガード領域Gのサイズの拡大及び縮小を、手先の移動速度の速さに応じて複数段階で行うので、ガード領域Gのサイズをより広いレンジで変化させることができる。
【0044】
(第3実施例)
図11及び図12は第3実施例であり、第1又は第2実施例と異なる部分のみ説明する。第3実施例では、第2実施例と同様にガード領域Gのサイズを手先の移動速度に応じて変化させるが、その手法が異なっている。図11において処理を開始すると、ステップS30〜S35を実行し、その後、ステップS1,S2に替えて、ステップS41〜44を実行する。この場合、手先の移動目標位置がユーザ(作業者)により予め決定されるので、それに伴い、目標位置の座標が含まれているキューブが現在位置から何個目になるのか(n)を決定する(ステップS30)。続いて「n=1」か否かを判断し(ステップS31)、「n=1」であれば(YES)ステップS41に移行する。この場合、ガード領域Gのサイズをデフォルトから拡大させる余地はない。また、「n≧2」であれば(NO)ステップS32に移行する。
【0045】
ステップS32では、設定されている移動速度が最小値(MIN)か否かを判断し、最小値(MIN)であれば(YES)ステップS41に移行し(上記と同様に理由による)、最小値でなければ(NO)ステップS33に移行する。そして、上記移動速度によって、制御装置11によるロボット本体1の制御周期である1サンプリングタイム(単位時間)Tsにおいて、手先が進むキューブの数nsを計算し、その数nsがステップS30で求められたn以上か否かを判断する。(ns≧n)であれば(YES)、移動速度を最小値に設定してからステップS41に移行する。すなわち(ns≧n)の場合も、ガード領域Gのサイズを拡大させる余地はないからである。
【0046】
一方、ステップS33において、(ns<n)であれば(NO)n/nsを計算し、その商の値に応じてガード領域Gの大きさを設定してから(ステップS35)、ステップS41に移行する。すなわち、ガード領域Gの大きさをどのように設定すべきかは、その時点の現在位置から目標位置までの移動距離と、移動速度の速さとに応じて相対的に変化するため、n/nsを指標として用い、最適な大きさを設定する。
【0047】
例えば、図12に示すように、n=25であり、移動距離並びに移動速度に応じて決まるキューブ数ns=5の場合はn/ns=5となる。手先KTCPがn=0の位置にあれば、n個先のキューブに干渉する直前まで4Ts(4制御周期)の時間があることになる(但し、ガード領域Gの一片の大きさが10Cb以下であることを条件とする)。そして、ガード領域Gの1辺の大きさを拡大させれば上記の到達時間はより短くなるが、初期値が10Cb以下であるとすれば増加数を30Cb以下にすれば、次の制御周期における移動でガード領域Gが危険領域に干渉することは無い。したがって、n/nsを指標として用いることで最適な大きさを設定することができる。
【0048】
ステップS41では、指示方向にキューブn個分移動するか否かを判断し、干渉しなければ(NO)ステップS13に移行する。また、干渉する場合は(YES)、ガード領域Gが拡大可能か否かを判断する(ステップS42)。ここでの判断は、上述したステップS35の場合と同様であり、例えばn/nsを指標として用いることで判断すれば良い。そして、拡大可能であれば(YES)1段階だけ拡大させてから(ステップS43)ステップS2に替わるステップS44に移行する。また、拡大不能であれば(NO)そのままステップS44に移行する。ステップS44では、ステップ2と同様の処理を、キューブn個分移動した位置について行う。
【0049】
すなわち、手先を危険空間との境界に沿って移動させている状態は、ユーザがサンプリングタイム当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、ガード領域Gを1段階だけ拡大させて危険空間との干渉を回避しつつ移動距離をより長く伸ばすようにする。
【0050】
以上のように第3実施例によれば、ロボット本体1の手先を、現在位置が存在するキューブからn個先にあるキューブ内にある目標座標まで移動させる際に、n個先のキューブが安全空間であることを条件に、手先の移動速度により1サンプリングタイムで進むキューブ数をnsとすると、ガード領域Gのサイズをn/nsの値の大きさを基準として決定するようにした。これにより、ガード領域Gのサイズを手先の移動速度の速さとのバランスに応じて最適に決定できる。また、n個先のキューブが危険空間であれば、ガード領域Gのサイズを1段階だけ拡大させるので、危険空間との干渉を回避しつつ移動距離をより長く伸ばすことができる。
【0051】
本発明は上記し、又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
操作手段は、ジョイスティック15に限ることなく、少なくとも方向を2次元で指示する操作入力が可能な手段であれば良い。
キューブとガード領域とのサイズについては、両者の大小関係を維持する範囲で適宜変更して良い。
ガード領域の拡大,縮小は、少なくとも1段階行えば良く、また、3段階以上に変化させても良い。
【符号の説明】
【0052】
図面中、1はロボット本体、11は制御装置(ガード領域設定手段,方向決定手段,領域サイズ変更手段)、15はジョイスティック(操作手段)、25はRAM(記憶手段)を示す。
【技術分野】
【0001】
本発明は、ユーザが、操作手段を介してロボットの手先の移動方向を指示する操作入力を行った場合、実際に手先を移動させる方向を決定する方法,及びロボットの制御装置に関する。
【背景技術】
【0002】
ロボットを動作させる場合には、ロボットが周辺の設備に衝突することを回避するため、動作領域の限界を定める、いわゆるバーチャルフェンス,或いはソフトウェアケージと称する仮想的なフェンスやケージを設定することが行われている。例えば特許文献1には、指定された目標点に向かうためロボットの動作軌跡を生成する場合に、その軌跡の途中に障害物が存在すると、目標点を前記障害物の直前の位置に変更する技術が開示されている。また、特許文献2には、特許文献1と同様に目標点に向かうためロボットの動作軌跡を生成する場合に、動作領域について既に得ている情報から、安全な経路を選択するように検索を行う技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7−129214号公報
【特許文献2】特開2003−280710号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットを制御プログラムに従い動作させる場合(変数移動)であれば、特許文献1,2に開示されている技術を適用することで、手先を障害物との境界に沿って動かすことが可能となり、動作領域の限界まで動作させることができる。しかしながら、ユーザが、例えばジョイステイック等の操作手段を用いて、移動方向をリアルタイムで指示しながらロボットを動作させる場合には、移動の最終目標座標が定まらないため特許文献1,2のような技術が適用できず、ロボットを動作領域の限界まで動作させることができないという問題がある。
【0005】
本発明は上記事情に鑑みてなされたものであり、その目的は、ユーザがロボットをリアルタイムで動作させる場合でも、ロボットを動作領域の限界まで動作させることが可能となるロボットの移動方向決定方法,及びロボットの制御装置を提供することにある。
【課題を解決するための手段】
【0006】
請求項1記載のロボットの移動方向決定方法によれば、ロボットが動作する動作領域空間を立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、それらの各単位空間を、ロボットが通過可能な安全空間と、ロボットが通過不能な危険空間との何れかに評価した空間評価データを用意する。また、単位空間よりもサイズが大きな立方体状の空間によって、ロボットの手先部分を覆うガード領域を設定する。
【0007】
そして、ユーザが、操作手段を介してロボットの手先の移動方向を指示する操作入力を行い、手先を操作入力に応じた指示方向に移動させ続けるとガード領域が危険空間に進入することが予測される場合には、ガード領域と危険空間とが接する状態で移動を一旦停止させる。この時、両者が面で接触する場合は、その面に平行となる方向を第1候補として、手先を前記方向に移動させるとガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、指示方向への移動を再試行する。
【0008】
最初にガード領域と危険空間とが面で接触しない場合,又は第1候補の方向に移動させるとガード領域が危険空間に進入する場は、指示方向をロボットの基準座標系の原点に立つ単位ベクトルで表わし、単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解する。そして、3つの方向ベクトルの長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向に定め、第1方向を次に移動させる第2候補として設定する。ここで、3つの方向ベクトルのうち、何れか2つの長さが等しい場合には、そのうちの何れか一方を選択して第1及び第2方向ベクトルを定める。また、3つの方向ベクトルの、全ての長さが等しい場合は、何れか2つの方向を選択して第1及び第2方向ベクトルを定める。
【0009】
すなわち、動作領域空間は単位空間の集合であるため、ガード領域と危険空間とが接している状態から手先が移動可能な方向は、±90度,±135度,180度の何れかとなる。そこで、手先を第1方向に移動させると安全空間に進入する場合は、そのまま第1方向に単位距離だけ移動させた後、指示方向への移動を再試行する。一方、第1方向に移動させるとガード領域が危険空間に進入する場合は、第2方向を基準として第1方向を45度回転させた第1回転方向(第2方向基準で135度回転させた方向)を、次に移動させる第3候補として設定する。
【0010】
次に、手先を第1回転方向に移動させるとガード領域が安全空間に進入する場合は、第1回転方向に単位距離の21/2倍だけ移動させた後、指示方向への移動を再試行し、ガード領域が危険空間に進入する場合は、第2方向を基準として第1回転方向を更に45度回転させた第2回転方向(第2方向基準で180度回転させた方向)を、次に移動させる第4候補として設定する。更に、手先を第2回転方向に移動させるとガード領域が安全空間に進入する場合は、第2回転方向に単位距離だけ移動させた後指示方向への移動を再試行し、ガード領域が危険空間に進入する場合は、その時点で移動を停止させる。
【0011】
このように移動方向を決定すれば、ユーザがリアルタイムで、操作手段を介してロボットの手先の移動方向を指示する操作入力を行うことで手先が危険空間に近付いた場合に、危険空間が連続する境界に沿わせながら、ユーザが指示した方向に極力近づくように手先を移動させることができる。したがって、ユーザがリアルタイムで移動方向を指示する場合でも、ロボットの手先を、安全空間として設定されている領域は全て移動させることが可能となり、空間を限界まで使用することができる。また、ガード領域が危険空間に接した場合は、ユーザが操作手段を介して指示した方向を基準として、手先が危険空間との境界を滑るようにして移動するので、ユーザがイメージした手先の動作に近い動きになり、予想を逸脱するような動きにならず、危険な動作状態が生じることを抑制できる。
【0012】
請求項2記載のロボットの移動方向決定方法によれば、ガード領域のサイズを変更可能とし、安全空間内において、手先を移動させる速度が上昇するのに応じてガード領域のサイズを段階的に拡大させ、安全空間内において、手先を移動させる速度が下降するのに応じてガード領域のサイズを段階的に縮小させる。これにより、手先の移動速度が速ければガード領域のサイズが大きくなるため狭い安全空間には進入し難くなり、結果としてガード領域;手先はより広く設定されている安全空間に沿って移動することになる。すなわち、手先の移動速度が速い場合とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、手先をより広い安全空間に沿って移動させることで、移動距離をより長く伸ばすことが可能となる。
【0013】
請求項3記載のロボットの移動方向決定方法によれば、ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うので、ガード領域のサイズをより広いレンジで変化させることができる。
【0014】
請求項4記載のロボットの移動方向決定方法によれば、手先を、現在位置が存在する単位空間からn個先にある単位空間内にある目標座標まで移動させる際に、n個先の単位空間が安全空間であることを条件に、手先の移動速度により1サンプリングタイムで進む単位空間の数をnsとすると、ガード領域のサイズをn/nsの値の大きさを基準として決定する。これにより、ガード領域のサイズを手先の移動速度の速さとのバランスに応じて最適に決定することができる。
【0015】
請求項5記載のロボットの移動方向決定方法によれば、n個先の単位空間が危険空間であれば、ガード領域のサイズを1段階だけ拡大させる。すなわち、手先を危険空間との境界に沿って移動させている状態とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、危険空間との干渉を回避しながら、請求項2と同様に移動距離をより長く伸ばすことが可能となる。
【図面の簡単な説明】
【0016】
【図1】第1実施例であり、手先の移動方向を決定する処理を示すフローチャート
【図2】手先の動きを2次元的に示した場合の処理手順をイメージ的に示す図
【図3】指示方向を3軸方向ベクトル成分に分解する状態を示す図
【図4】ガード領域Gが障害物OBに接近した場合の3次元イメージを示す図
【図5】ロボット本体の手先にガード領域Gを設定した状態を示す図
【図6】動作領域空間にキューブを設定した状態を示す図
【図7】垂直多関節型ロボットのシステム構成を示す図
【図8】機能ブロック図
【図9】第2実施例を示す図1の一部相当図
【図10】ガード領域Gのサイズが変化するイメージを示す図
【図11】第3実施例を示す図1の一部相当図
【図12】手先の移動とガード領域Gの拡大との関係を説明する図
【発明を実施するための形態】
【0017】
(第1実施例)
以下、第1実施例について図1ないし図8を参照して説明する。図7は、垂直多関節型(6軸)ロボットのシステム構成を示す。このロボット本体1は、ベース(回転軸)2上に、この場合6軸のアームを有している。前記ベース2上には、第1関節J1を介してショルダ部3が回転可能に連結されている。このショルダ部3には、第2関節J2を介して上方に延びる下アーム4の下端部が回転可能に連結され、さらに、この下アーム4の先端部には、第3関節J3を介して第1上アーム5が回転可能に連結されている。
【0018】
この第1上アーム5の先端には第4関節J4を介して第2上アーム6が回転可能に連結され、この第2上アーム6の先端には第5関節J5を介して手首7が回転可能に連結され、この手首7には第6関節J6を介して第6のフランジ8が回転可能に連結されている。なお、各関節J1〜J6においては、サーボモータ26(図8参照)によりショルダ部3〜フランジ8を回転駆動する。
【0019】
ロボット本体1と制御装置(コントローラ,ガード領域設定手段,方向決定手段)11との間は、接続ケーブル12によって接続されている。これにより、ロボット本体1の各軸を駆動するサーボモータは、制御装置11により制御される。制御装置11には、パーソナルコンピュータ(パソコン)13がケーブル14を介して接続され、パソコン13との間で、ロボット本体1の手先の現在位置の送信や動作コマンドの受信など、高速通信を実行するようになっている。パソコン13には、メモリやハードディスクなどの記憶装置が内蔵されている。
【0020】
ジョイスティック(操作手段)15は、ケーブル16を介してパソコン13に接続されている。ユーザは、ジョイスティック15を操作して倒した方向により、ロボット本体1の手先(フランジ8の先端,TCP:Tool Center Point)の移動方向を指示する。その指示方向は、パソコン13を介して制御装置11に伝達され、制御装置11は、ロボット本体1の手先をXY平面上で指示された方向に移動させるように制御する。
【0021】
制御装置11は、図8に示すように、CPU21と、駆動回路22と、位置検出回路23とを備えて構成されている。CPU22には、システムプログラムや動作プログラムを作成するためのロボット言語などを記憶するROM24及び動作プログラムなどを記憶するRAM25が接続されていると共に、図示しない通信インターフェイスを介してパソコン13が接続されている。
【0022】
位置検出回路23は、ショルダ部3〜フランジ8の位置を検出するためのもので、各軸の駆動源であるサーボモータ26に設けられているロータリエンコーダ27が接続されている。位置検出回路23は、ロータリエンコーダ27から入力される検出信号に基づいて各軸の回転角度を検出し、それら検出した位置検出情報をCPU21に出力する。そして、CPU21は、動作プログラムに基づいてショルダ部3〜フランジ8を動作させる際に、位置検出回路23から入力する位置検出情報をフィードバック信号として、各軸のサーボモータ26を駆動する。
【0023】
次に、本実施例の作用について図1ないし図6を参照して説明する。本実施例では、図6に示すように、ロボット本体1が動作する領域を、立方体状の単位空間(以下、キューブと称す)を3次元的に積み上げたものとして設定しており、各キューブを構成する6面,或いは12本の直線を規定する3次元座標値が決定されている。すなわち、制御装置11のソフトウェア上で、そのように仮想されている。そして、各キューブについては、ロボット本体1が動作した場合に、周辺の障害物等に接触する可能性があるものが「危険」と評価され(危険空間)、接触する可能性がないものが「安全」と評価されている(安全空間)。そして、その情報が空間評価データベースとして、例えばRAM(記憶手段)25に予め記憶されている。
【0024】
一方、ロボット本体1については、図5に示すように、手先を覆うようにガード領域Gが設定されている(キューブと同様にソフトウェア上で仮想されている)。例えばガード領域Gの中心は手先に設定されている。この場合、ガード領域Gの体積(サイズ)は、キューブの体積よりも大きく設定されており、例えば10倍程度となっている。そして、ロボット本体1を動作させることで、手先であるフランジ8の位置が変化すると、その位置の変化に応じてガード領域Gの位置もソフトウェア上で変化する。
【0025】
図1は、制御装置2が手先の移動方向を決定する処理を示すフローチャートであり、図2は、簡単のため、手先の動きを2次元的に示した場合の処理手順をイメージ的に示す図である。ユーザが、例えばジョイスティック15を操作して、ロボット本体1の手先の移動方向を指示した場合、その指示方向に手先を移動させると、ガード領域Gが危険空間と干渉するか否かを判断する(ステップS1)。ここで「干渉」とは、ガード領域Gが危険空間の一部に進入する(両者が交錯する)状態を言う。両者が干渉しなければ(NO)、指示方向に手先を移動させて(ステップS13)ステップS1に戻る。また、以降では、上記のように干渉するか否かの判断を「干渉チェック」と称する。
【0026】
一方、ガード領域Gが危険空間と干渉する場合は(ステップS1:YES)、干渉が発生する直前の状態で手先を停止させ、指示方向を、図3に示すように、ロボット本体1の基準座標上で原点に立つ単位ベクトルDと見た場合に、そのベクトルDを、X,Y,Z方向成分である各軸方向ベクトルDx,Dy,Dzに分解する。そして、それらのうち、危険空間のXY平面,YZ平面,ZX平面の何れかと干渉するベクトルを除いた2つの合成ベクトルの方向(上記干渉する面に対して平行となる方向)を、次に手先を移動させる方向の候補(第1候補)とする(ステップS2,図2(a)(2)参照)。
【0027】
尚、図2では、ユーザがジョイスティック15を操作することで、ジョグ動作として指示した方向を破線矢印で示しており、移動候補となる方向を実線矢印で示している。そして、前記の平行な方向に移動させるとした場合について干渉チェックを行い(ステップS3)、干渉しなければ(NO)手先を当該方向に、キューブの1辺の長さである単位距離だけ移動させて(ステップS14)ステップS1に戻る。また、両者が干渉する場合は(YES)ステップS4に移行する。
【0028】
ステップS4では、指示方向を、ステップS2と同様に、ロボット本体1の基準座標上で原点に立つ単位ベクトルDと見た場合に、そのベクトルDを、X,Y,Z方向成分である各軸方向ベクトルDx,Dy,Dzに分解する。それから、各方向ベクトルの長さを評価して、長さが最も長いベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向とする(ステップS5)。図3は、ここでの処理を3次元的なイメージで示す。但し、3つの方向ベクトルDx,Dy,Dzのうち、何れか2つの長さが等しい場合には、そのうちの何れか一方を選択して第1及び第2方向ベクトルを定める。
【0029】
また、3つの方向ベクトルDx,Dy,Dzの、全ての長さが等しい場合は、何れか2つの方向を選択して第1及び第2方向ベクトルを定める。すなわち、上記方向ベクトルの長さはジョイスティック15の移動方向の近似度を示しているので、長さが等しいということは、その何れの方向に移動させてもジョイスティック15によって指示された方向に対する近似度は等しくなるからである。
【0030】
第1及び第2方向を定めると、第1方向が示す方向(第1方向)を、手先を次に移動させる候補として(第2候補,ステップS6,図2(a)(3)参照)、第1方向に移動させるとした場合の干渉チェックを行う(ステップS7)。そして干渉しなければ(NO)手先を第1方向に単位距離だけ移動させてから(ステップS15)ステップS1に戻る。一方、第1方向に移動させると干渉する場合は(YES,図2(a)(4)参照)、第1方向を、第2方向を基準として45度回転させて(第1回転方向,ステップS8,図2(a)(5)参照)、その第1回転方向について干渉チェックを行う(ステップS9)。
【0031】
図3では、方向ベクトルDxが第1方向となり、方向ベクトルDy,Dzの方向を合成したベクトルDyzの方向が第2方向となる。そして、方向ベクトルDxを、合成ベクトルDyzを基準として45度回転させた(或いは、ベクトル(−Dyz)に向けて45度回転させた)ベクトルDrの方向が、第1回転方向となっている(第2方向から+135度)。ステップS9におけるチェックの結果、干渉しない場合は(NO)手先を第1回転方向に、単位距離の21/2倍だけ移動させてから(ステップS16)ステップS1に戻る。
【0032】
一方、第1回転方向に移動させると干渉する場合は(ステップS9:YES,図2(a)(6)参照)、その第1回転方向を更に45度回転させる(第2回転方向,ステップS10,図2(a)(7)参照)。そして、第2回転方向(第2方向から+180度)について干渉チェックを行い(ステップS11)、干渉しない場合は(NO,図2(a)(8)参照)手先を第2回転方向に単位距離だけ移動させてから(ステップS17,図2(a)(9)参照)ステップS1に戻る。第2回転方向に移動させると干渉する場合は(ステップS11:YES)、この時点で指示方向に基づく移動を停止させてエラー出力を行う(ステップS12)。例えば、指示方向の変更を促す旨のメッセージを、パソコン13のディスプレイ画面に表示させるなどする。
【0033】
図2(a)(10)は、(1)と同様に、(9)の状態から再び指示方向への移動を試みた場合を示している。この場合も干渉が発生するので、(3)と同様に方向成分の分解を行う(11)。そして、第1方向に移動させても干渉が発生しないので、第1方向に単位距離だけ移動させる(12)。
図2(b)は、危険空間をマクロ的に見た場合に安全空間との境界が斜面となっており、手先を破線矢印方向に移動させるように指示すると、上記斜面にガード領域Gが接して干渉する場合である。このような状態で本実施例の処理を適用すると、手先は斜面に沿って移動するようになり、危険空間が存在しなくなった位置で指示方向に移動するようになる。
【0034】
また、図4は、3次元イメージで示しており、ロボット本体1の動作領域空間に円柱状の障害物OBが存在する場合、その障害物OBは、制御装置2では危険空間であるキューブの集合として把握されている。そして、ロボット本体1の手先の移動方向が図中の矢印方向で指示されている場合に、ガード領域Gが障害物OBに接近すると、ガード領域Gは、障害物OBの表面に沿って、すなわち危険空間との境界に沿って移動するようになり、障害物OBとの干渉が回避される。
【0035】
以上のように本実施例によれば、ロボット本体1が動作する動作領域空間をキューブの集合として捉え、各キューブの外面を規定する3次元座標値を決定し、それらの各キューブを、ロボットが通過可能な安全空間と通過不能な危険空間との何れかに評価した空間評価データを用い、キューブよりもサイズが大きな立方体状の空間によって、ロボット本体1の手先部分を覆うガード領域Gを設定する。そして、ユーザが、ジョイスティック15を介して指示した方向に手先を移動させ続けると、ガード領域Gと危険空間とが干渉すると予測される場合は両者が接する状態で移動を一旦停止させ、両者が面で接触する場合はその面に平行となる方向を第1候補として、手先を前記方向に移動可能であれば当該方向に単位距離だけ移動させた後指示方向への移動を再試行する。
【0036】
また、ガード領域Gと危険空間とが面で接触しない場合,或いは第1候補の方向に移動させるとガード領域Gが干渉する場合は、指示方向を3つの方向ベクトルに成分分解して第1方向,第2方向を定め、第1方向を次に移動させる第2候補とする。そして、手先を第1方向に移動可能であれば、そのまま第1方向に単位距離だけ移動させた後指示方向への移動を再試行し、干渉する場合は、第1方向を45度回転させた第1回転方向を、次に移動させる第3候補とする。
次に、手先を第1回転方向に移動可能であれば、第1回転方向に単位距離の21/2倍だけ移動させた後指示方向への移動を再試行し、干渉する場合は、第1回転方向を更に45度回転させた第2回転方向を次に移動させる第4候補とする。更に、手先を第2回転方向に移動可能であれば、第2回転方向に単位距離だけ移動させた後指示方向への移動を再試行し、干渉する場合はその時点で移動を停止させるようにした。
【0037】
このように移動方向を決定すれば、ユーザがリアルタイムで、ジョイスティック15を介してロボット本体1の手先の移動方向を指示する操作入力を行うことで手先が危険空間に近付いた場合に、危険空間が連続する境界に沿わせながら、ユーザが指示した方向に極力近づくように手先を移動させることができる。
したがって、ユーザがリアルタイムで移動方向を指示する場合でも、ロボット本体1の手先を、安全空間として設定されている領域は全て移動させることが可能となり、動作領域空間を限界まで使用することができる。また、ガード領域Gが危険空間に接した場合は、指示方向を基準として、手先が危険空間との境界を滑るようにして移動するので、ユーザがイメージした手先の動作に近い動きになり、予想を逸脱するような動きにならず、危険な動作状態が生じることを抑制できる。
【0038】
(第2実施例)
図9及び図10は第2実施例であり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図9は図1の一部相当図であり、ステップS1で「NO」と判断してからステップS13に移行する間に、ステップS21〜S25の処理を実行するようになっている。先ず、ステップS21では、ユーザにより設定されたロボットの手先の移動速度をしきい値(1)と比較する。手先の移動速度は、例えばジョイスティック15を傾けた速さなどで設定される。そして、移動速度がしきい値(1)以下であれば(NO)、ガード領域Gのサイズを設定値(1)とする(ステップS23)。設定値(1)は、デフォルトの最小サイズであり、例えば1辺の長さがキューブ2,3個分程度とする。
【0039】
ステップS21において、移動速度がしきい値(1)を超えていると(YES)、次に移動速度を、しきい値(2)と比較する(ステップS22)。尚、しきい値(2)は、しきい値(1)よりも高い値に設定されている。そして、移動速度がしきい値(2)以下であれば(NO)、ガード領域Gのサイズを設定値(2)とする(ステップS24)。設定値(2)は、設定値(1)に対して、1辺の長さを例えばキューブ1,2個分程度増加させたサイズとする。例えば、設定値(1)における1辺のサイズがキューブ3個分(3Cbとする)であるとすると、そこから1辺のサイズを4Cbにすればガード領域Gの体積増加分は、64/27≒2.73倍となる。
【0040】
一方、ステップS22において、移動速度がしきい値(2)を超えていると(YES)、ガード領域Gのサイズを設定値(3)とする(ステップS25)。設定値(3)は、設定値(2)に対して、更に1辺の長さを例えばキューブ1,2個分程度増加させたサイズとする。尚、ユーザがロボット本体1を直接操作する場合の移動速度は、一般に、自動運転時の10%〜20%程度に設定されている。その範囲における最大速度の範囲内でしきい値(1),(2)を設定する。
【0041】
すなわち、図9に示す処理を実行する毎に、手先の移動速度がしきい値(1),(2)と比較され、その比較結果に応じてガード領域Gのサイズが拡大したり縮小したり変化することになる。図10は、ガード領域Gのサイズが変化するイメージを示している。(a)は手先の移動速度が低速の場合であり(例えばしきい値(1)以下)、ガード領域Gのサイズが小さく設定されるので、より精密な位置制御が可能であり、安全空間の開口部にも進入可能となっている。一方、(b)は手先の移動速度が高速の場合であり(例えばしきい値(2)を上回る)、ガード領域Gのサイズが大きく設定されているため、安全空間の開口部には進入不能となっている(図中に破線で示すように、開口部に向かう以外の方向には移動可能である)。
【0042】
以上のように第2実施例によれば、ガード領域Gのサイズを変更可能とし、安全空間内において、手先を移動させる速度が上昇するのに応じてガード領域Gのサイズを段階的に拡大させ、安全空間内において、手先を移動させる速度が下降するのに応じてガード領域Gのサイズを段階的に縮小させるようにした。これにより、手先の移動速度が速ければガード領域Gのサイズが大きくなるため狭い安全空間には進入し難くなり、結果としてガード領域G;手先はより広く設定されている安全空間に沿って移動することになる。
【0043】
すなわち、手先の移動速度が速い場合とは、作業者が単位時間当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、手先をより広い安全空間に沿って移動させることで、移動距離をより長く伸ばすことが可能となる。また、ガード領域Gのサイズの拡大及び縮小を、手先の移動速度の速さに応じて複数段階で行うので、ガード領域Gのサイズをより広いレンジで変化させることができる。
【0044】
(第3実施例)
図11及び図12は第3実施例であり、第1又は第2実施例と異なる部分のみ説明する。第3実施例では、第2実施例と同様にガード領域Gのサイズを手先の移動速度に応じて変化させるが、その手法が異なっている。図11において処理を開始すると、ステップS30〜S35を実行し、その後、ステップS1,S2に替えて、ステップS41〜44を実行する。この場合、手先の移動目標位置がユーザ(作業者)により予め決定されるので、それに伴い、目標位置の座標が含まれているキューブが現在位置から何個目になるのか(n)を決定する(ステップS30)。続いて「n=1」か否かを判断し(ステップS31)、「n=1」であれば(YES)ステップS41に移行する。この場合、ガード領域Gのサイズをデフォルトから拡大させる余地はない。また、「n≧2」であれば(NO)ステップS32に移行する。
【0045】
ステップS32では、設定されている移動速度が最小値(MIN)か否かを判断し、最小値(MIN)であれば(YES)ステップS41に移行し(上記と同様に理由による)、最小値でなければ(NO)ステップS33に移行する。そして、上記移動速度によって、制御装置11によるロボット本体1の制御周期である1サンプリングタイム(単位時間)Tsにおいて、手先が進むキューブの数nsを計算し、その数nsがステップS30で求められたn以上か否かを判断する。(ns≧n)であれば(YES)、移動速度を最小値に設定してからステップS41に移行する。すなわち(ns≧n)の場合も、ガード領域Gのサイズを拡大させる余地はないからである。
【0046】
一方、ステップS33において、(ns<n)であれば(NO)n/nsを計算し、その商の値に応じてガード領域Gの大きさを設定してから(ステップS35)、ステップS41に移行する。すなわち、ガード領域Gの大きさをどのように設定すべきかは、その時点の現在位置から目標位置までの移動距離と、移動速度の速さとに応じて相対的に変化するため、n/nsを指標として用い、最適な大きさを設定する。
【0047】
例えば、図12に示すように、n=25であり、移動距離並びに移動速度に応じて決まるキューブ数ns=5の場合はn/ns=5となる。手先KTCPがn=0の位置にあれば、n個先のキューブに干渉する直前まで4Ts(4制御周期)の時間があることになる(但し、ガード領域Gの一片の大きさが10Cb以下であることを条件とする)。そして、ガード領域Gの1辺の大きさを拡大させれば上記の到達時間はより短くなるが、初期値が10Cb以下であるとすれば増加数を30Cb以下にすれば、次の制御周期における移動でガード領域Gが危険領域に干渉することは無い。したがって、n/nsを指標として用いることで最適な大きさを設定することができる。
【0048】
ステップS41では、指示方向にキューブn個分移動するか否かを判断し、干渉しなければ(NO)ステップS13に移行する。また、干渉する場合は(YES)、ガード領域Gが拡大可能か否かを判断する(ステップS42)。ここでの判断は、上述したステップS35の場合と同様であり、例えばn/nsを指標として用いることで判断すれば良い。そして、拡大可能であれば(YES)1段階だけ拡大させてから(ステップS43)ステップS2に替わるステップS44に移行する。また、拡大不能であれば(NO)そのままステップS44に移行する。ステップS44では、ステップ2と同様の処理を、キューブn個分移動した位置について行う。
【0049】
すなわち、手先を危険空間との境界に沿って移動させている状態は、ユーザがサンプリングタイム当たりの手先移動距離を長くすることを所望している状態であり、目標位置の近傍において移動を精密に制御する状態とは異なっている。したがって、ガード領域Gを1段階だけ拡大させて危険空間との干渉を回避しつつ移動距離をより長く伸ばすようにする。
【0050】
以上のように第3実施例によれば、ロボット本体1の手先を、現在位置が存在するキューブからn個先にあるキューブ内にある目標座標まで移動させる際に、n個先のキューブが安全空間であることを条件に、手先の移動速度により1サンプリングタイムで進むキューブ数をnsとすると、ガード領域Gのサイズをn/nsの値の大きさを基準として決定するようにした。これにより、ガード領域Gのサイズを手先の移動速度の速さとのバランスに応じて最適に決定できる。また、n個先のキューブが危険空間であれば、ガード領域Gのサイズを1段階だけ拡大させるので、危険空間との干渉を回避しつつ移動距離をより長く伸ばすことができる。
【0051】
本発明は上記し、又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
操作手段は、ジョイスティック15に限ることなく、少なくとも方向を2次元で指示する操作入力が可能な手段であれば良い。
キューブとガード領域とのサイズについては、両者の大小関係を維持する範囲で適宜変更して良い。
ガード領域の拡大,縮小は、少なくとも1段階行えば良く、また、3段階以上に変化させても良い。
【符号の説明】
【0052】
図面中、1はロボット本体、11は制御装置(ガード領域設定手段,方向決定手段,領域サイズ変更手段)、15はジョイスティック(操作手段)、25はRAM(記憶手段)を示す。
【特許請求の範囲】
【請求項1】
多関節型のロボットが動作する動作領域空間を、立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、前記各単位空間を、前記ロボットが通過可能な安全空間と、前記ロボットが通過不能な危険空間との何れかに評価した空間評価データを有し、
前記単位空間よりもサイズが大きな立方体状の空間によって、前記ロボットの手先部分を覆うガード領域を設定し、
ユーザが、操作手段を介して前記ロボットの手先の移動方向を指示する操作入力を行い、前記手先を前記操作入力に応じた指示方向に移動させ続けると、前記ガード領域が危険空間に進入すると予測される場合は、前記ガード領域と前記危険空間とが接する状態で移動を一旦停止させ、
前記ガード領域と前記危険空間とが面で接触する場合は、前記接触する面に平行となる方向を第1候補として、前記手先を前記方向に移動させると前記ガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、
前記ガード領域と前記危険空間とが面で接触しない場合,又は前記第1候補の方向に移動させると前記ガード領域が危険空間に進入する場合は、前記指示方向を、前記ロボットの基準座標系の原点に立つ単位ベクトルで表わして、前記単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解し、前記3つの方向ベクトルの長さを評価して、長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向すると、前記第1方向を、前記手先を次に移動させる第2候補として設定し、
前記手先を前記第1方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1方向を45度回転させた第1回転方向を、前記手先を次に移動させる第3候補として設定し、
前記手先を前記第1回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1回転方向に前記単位距離の21/2倍だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1回転方向を更に45度回転させた第2回転方向を、前記手先を次に移動させる第4候補として設定し、
前記手先を前記第2回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第2回転方向に前記単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、その時点で移動を停止させることを特徴とするロボットの移動方向決定方法。
【請求項2】
前記ガード領域のサイズを変更可能として、
前記安全空間内において、前記手先を移動させる速度が上昇するのに応じて前記ガード領域のサイズを段階的に拡大させ、
前記安全空間内において、前記手先を移動させる速度が下降するのに応じて前記ガード領域のサイズを段階的に縮小させることを特徴とする請求項1記載のロボットの移動方向決定方法。
【請求項3】
前記ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うことを特徴とする請求項2記載のロボットの移動方向決定方法。
【請求項4】
前記手先を、現在位置が存在する単位空間からn(nは自然数)個先にある単位空間内にある目標座標まで移動させる際に、前記n個先までの単位空間が安全空間であることを条件として、設定されている前記手先の移動速度により1サンプリングタイムで進む前記単位空間の数をns(nsは自然数)とすると、前記ガード領域のサイズをn/nsの値の大きさを基準として決定することを特徴とする請求項2又は3記載のロボットの移動方向決定方法。
【請求項5】
前記n個先の単位空間が危険空間であれば、前記ガード領域のサイズを1段階だけ拡大させることを特徴とする請求項4記載のロボットの移動方向決定方法。
【請求項6】
多関節型のロボットが動作する動作領域空間を、立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、前記各単位空間を、前記ロボットが通過可能な安全空間と、前記ロボットが通過不能な危険空間との何れかに評価した空間評価データが記憶される記憶手段と、
前記単位空間よりもサイズが大きな立方体状の空間によって、前記ロボットの手先部分を覆うガード領域を設定するガード領域設定手段と、
ユーザが、操作手段を介して前記ロボットの手先の移動方向を指示する操作入力を行い、前記手先を前記操作入力に応じた指示方向に移動させ続けると、前記ガード領域が危険空間に進入すると予測される場合は、前記ガード領域と前記危険空間とが接する状態で移動を一旦停止させ、
前記ガード領域と前記危険空間とが面で接触する場合は、前記接触する面に平行となる方向を第1候補として、前記手先を前記方向に移動させると前記ガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、
前記ガード領域と前記危険空間とが面で接触しない場合,又は前記第1候補の方向に移動させると前記ガード領域が危険空間に進入する場合は、前記指示方向を、前記ロボットの基準座標系の原点に立つ単位ベクトルで表わして、前記単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解し、前記3つの方向ベクトルの長さを評価して、長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向すると、前記第1方向を、前記手先を次に移動させる第2候補として設定し、
前記手先を前記第1方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1方向を45度回転させた第1回転方向を、前記手先を次に移動させる第3候補として設定し、
前記手先を前記第1回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1回転方向に前記単位距離の21/2倍だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1回転方向を更に45度回転させた第2回転方向を、前記手先を次に移動させる第4候補として設定し、
前記手先を前記第2回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第2回転方向に前記単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、その時点で移動を停止させる方向決定手段とを備えたことを特徴とするロボットの制御装置。
【請求項7】
前記ガード領域設定手段は、前記ガード領域のサイズを変更可能に構成され、
前記安全空間内において、前記手先を移動させる速度が上昇するのに応じて前記ガード領域のサイズを段階的に拡大させ、
前記安全空間内において、前記手先を移動させる速度が下降するのに応じて前記ガード領域のサイズを段階的に縮小させることを特徴とする請求項6記載のロボットの制御装置。
【請求項8】
前記ガード領域設定手段は、前記ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うことを特徴とする請求項7記載のロボットの制御装置。
【請求項9】
前記手先を、現在位置が存在する単位空間からn(nは自然数)個先にある単位空間内にある目標座標まで移動させる際に、
前記ガード領域設定手段は、前記n個先までの単位空間が安全空間であることを条件として、設定されている前記手先の移動速度により1サンプリングタイムで進む前記単位空間の数をns(nsは自然数)とすると、前記ガード領域のサイズをn/nsの値の大きさを基準として決定することを特徴とする請求項7又は8記載のロボットの制御装置。
【請求項10】
前記ガード領域設定手段は、前記n個先の単位空間が危険空間であれば、前記ガード領域のサイズを1段階だけ拡大させることを特徴とする請求項9記載のロボットの制御装置。
【請求項1】
多関節型のロボットが動作する動作領域空間を、立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、前記各単位空間を、前記ロボットが通過可能な安全空間と、前記ロボットが通過不能な危険空間との何れかに評価した空間評価データを有し、
前記単位空間よりもサイズが大きな立方体状の空間によって、前記ロボットの手先部分を覆うガード領域を設定し、
ユーザが、操作手段を介して前記ロボットの手先の移動方向を指示する操作入力を行い、前記手先を前記操作入力に応じた指示方向に移動させ続けると、前記ガード領域が危険空間に進入すると予測される場合は、前記ガード領域と前記危険空間とが接する状態で移動を一旦停止させ、
前記ガード領域と前記危険空間とが面で接触する場合は、前記接触する面に平行となる方向を第1候補として、前記手先を前記方向に移動させると前記ガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、
前記ガード領域と前記危険空間とが面で接触しない場合,又は前記第1候補の方向に移動させると前記ガード領域が危険空間に進入する場合は、前記指示方向を、前記ロボットの基準座標系の原点に立つ単位ベクトルで表わして、前記単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解し、前記3つの方向ベクトルの長さを評価して、長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向すると、前記第1方向を、前記手先を次に移動させる第2候補として設定し、
前記手先を前記第1方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1方向を45度回転させた第1回転方向を、前記手先を次に移動させる第3候補として設定し、
前記手先を前記第1回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1回転方向に前記単位距離の21/2倍だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1回転方向を更に45度回転させた第2回転方向を、前記手先を次に移動させる第4候補として設定し、
前記手先を前記第2回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第2回転方向に前記単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、その時点で移動を停止させることを特徴とするロボットの移動方向決定方法。
【請求項2】
前記ガード領域のサイズを変更可能として、
前記安全空間内において、前記手先を移動させる速度が上昇するのに応じて前記ガード領域のサイズを段階的に拡大させ、
前記安全空間内において、前記手先を移動させる速度が下降するのに応じて前記ガード領域のサイズを段階的に縮小させることを特徴とする請求項1記載のロボットの移動方向決定方法。
【請求項3】
前記ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うことを特徴とする請求項2記載のロボットの移動方向決定方法。
【請求項4】
前記手先を、現在位置が存在する単位空間からn(nは自然数)個先にある単位空間内にある目標座標まで移動させる際に、前記n個先までの単位空間が安全空間であることを条件として、設定されている前記手先の移動速度により1サンプリングタイムで進む前記単位空間の数をns(nsは自然数)とすると、前記ガード領域のサイズをn/nsの値の大きさを基準として決定することを特徴とする請求項2又は3記載のロボットの移動方向決定方法。
【請求項5】
前記n個先の単位空間が危険空間であれば、前記ガード領域のサイズを1段階だけ拡大させることを特徴とする請求項4記載のロボットの移動方向決定方法。
【請求項6】
多関節型のロボットが動作する動作領域空間を、立方体状の単位空間の集合として捉え、各単位空間の外面を規定する3次元座標値を決定し、前記各単位空間を、前記ロボットが通過可能な安全空間と、前記ロボットが通過不能な危険空間との何れかに評価した空間評価データが記憶される記憶手段と、
前記単位空間よりもサイズが大きな立方体状の空間によって、前記ロボットの手先部分を覆うガード領域を設定するガード領域設定手段と、
ユーザが、操作手段を介して前記ロボットの手先の移動方向を指示する操作入力を行い、前記手先を前記操作入力に応じた指示方向に移動させ続けると、前記ガード領域が危険空間に進入すると予測される場合は、前記ガード領域と前記危険空間とが接する状態で移動を一旦停止させ、
前記ガード領域と前記危険空間とが面で接触する場合は、前記接触する面に平行となる方向を第1候補として、前記手先を前記方向に移動させると前記ガード領域が安全空間に進入する場合は、前記方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、
前記ガード領域と前記危険空間とが面で接触しない場合,又は前記第1候補の方向に移動させると前記ガード領域が危険空間に進入する場合は、前記指示方向を、前記ロボットの基準座標系の原点に立つ単位ベクトルで表わして、前記単位ベクトルの方向を3次元座標上で3つの方向ベクトルに成分分解し、前記3つの方向ベクトルの長さを評価して、長さが最長のベクトルの方向を第1方向,それ以外の2つのベクトルを合成した方向を第2方向すると、前記第1方向を、前記手先を次に移動させる第2候補として設定し、
前記手先を前記第1方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1方向に前記単位空間の1辺の距離に相当する単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1方向を45度回転させた第1回転方向を、前記手先を次に移動させる第3候補として設定し、
前記手先を前記第1回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第1回転方向に前記単位距離の21/2倍だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、前記第2方向を基準として前記第1回転方向を更に45度回転させた第2回転方向を、前記手先を次に移動させる第4候補として設定し、
前記手先を前記第2回転方向に移動させると前記ガード領域が前記安全空間に進入する場合は、前記第2回転方向に前記単位距離だけ移動させた後、前記指示方向への移動を再試行し、前記ガード領域が危険空間に進入する場合は、その時点で移動を停止させる方向決定手段とを備えたことを特徴とするロボットの制御装置。
【請求項7】
前記ガード領域設定手段は、前記ガード領域のサイズを変更可能に構成され、
前記安全空間内において、前記手先を移動させる速度が上昇するのに応じて前記ガード領域のサイズを段階的に拡大させ、
前記安全空間内において、前記手先を移動させる速度が下降するのに応じて前記ガード領域のサイズを段階的に縮小させることを特徴とする請求項6記載のロボットの制御装置。
【請求項8】
前記ガード領域設定手段は、前記ガード領域のサイズの拡大及び縮小を、前記手先の移動速度の速さに応じて複数段階で行うことを特徴とする請求項7記載のロボットの制御装置。
【請求項9】
前記手先を、現在位置が存在する単位空間からn(nは自然数)個先にある単位空間内にある目標座標まで移動させる際に、
前記ガード領域設定手段は、前記n個先までの単位空間が安全空間であることを条件として、設定されている前記手先の移動速度により1サンプリングタイムで進む前記単位空間の数をns(nsは自然数)とすると、前記ガード領域のサイズをn/nsの値の大きさを基準として決定することを特徴とする請求項7又は8記載のロボットの制御装置。
【請求項10】
前記ガード領域設定手段は、前記n個先の単位空間が危険空間であれば、前記ガード領域のサイズを1段階だけ拡大させることを特徴とする請求項9記載のロボットの制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−81577(P2012−81577A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2011−60625(P2011−60625)
【出願日】平成23年3月18日(2011.3.18)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願日】平成23年3月18日(2011.3.18)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
[ Back to top ]