IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 川崎重工業株式会社の特許一覧

特許7429807経路生成装置、経路生成方法及び経路生成プログラム
<>
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図1
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図2
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図3
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図4
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図5
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図6
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図7
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図8
  • 特許-経路生成装置、経路生成方法及び経路生成プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-31
(45)【発行日】2024-02-08
(54)【発明の名称】経路生成装置、経路生成方法及び経路生成プログラム
(51)【国際特許分類】
   B25J 13/00 20060101AFI20240201BHJP
   G05B 19/4093 20060101ALI20240201BHJP
   B25J 13/08 20060101ALN20240201BHJP
【FI】
B25J13/00 Z
G05B19/4093 E
B25J13/08 A
【請求項の数】 15
(21)【出願番号】P 2022574892
(86)(22)【出願日】2021-01-12
(86)【国際出願番号】 JP2021000734
(87)【国際公開番号】W WO2022153374
(87)【国際公開日】2022-07-21
【審査請求日】2023-05-09
(73)【特許権者】
【識別番号】000000974
【氏名又は名称】川崎重工業株式会社
(74)【代理人】
【識別番号】100131200
【弁理士】
【氏名又は名称】河部 大輔
(72)【発明者】
【氏名】松田 吉平
(72)【発明者】
【氏名】本間 敏行
(72)【発明者】
【氏名】高山 裕規
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2013-186088(JP,A)
【文献】特開2006-190228(JP,A)
【文献】国際公開第2018/092860(WO,A1)
【文献】国際公開第2021/232669(WO,A1)
【文献】国際公開第2022/138864(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
G05B 19/18-19/416
G05B 19/42-19/46
(57)【特許請求の範囲】
【請求項1】
動作装置の経路を生成する経路生成装置であって、
前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定する物体設定部と、
前記配置空間における前記動作装置のモデルである装置モデルを設定する装置設定部と、
前記動作装置の経路を段階的に生成する経路生成部と、
前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行う干渉判定部とを備え、
前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、
干渉の可能性があると前記干渉判定部によって判定された場合には、
前記物体設定部及び前記装置設定部の少なくとも一方は、前記点群モデルの前記点群の密度を高くし、
前記干渉判定部は、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、
前記経路生成部は、干渉の可能性がないと前記干渉判定部によって判定された場合には次の経路を生成する経路生成装置。
【請求項2】
請求項1に記載の経路生成装置において、
前記物体設定部及び前記装置設定部の少なくとも一方は、干渉の可能性があると前記干渉判定部によって判定された場合には、前記干渉判定において干渉の可能性があると判定された部分を含む、前記点群モデルの一部の前記点群の密度を高くする経路生成装置。
【請求項3】
請求項1又は2に記載の経路生成装置において、
前記干渉判定部は、
前記物体モデルと前記装置モデルとの最短距離であるモデル間距離が所定の安全閾値以下の場合に、干渉の可能性があると判定し、
前記モデル間距離が前記安全閾値よりも大きい場合に、干渉の可能性がないと判定する経路生成装置。
【請求項4】
請求項3に記載の経路生成装置において、
前記干渉判定部は、前記モデル間距離が前記安全閾値よりも小さな干渉閾値以下の場合に、干渉すると判定し、
前記経路生成部は、干渉すると前記干渉判定部によって判定された場合には経路を変更する経路生成装置。
【請求項5】
請求項3又は4に記載の経路生成装置において、
前記安全閾値は、前記点群モデルの前記点群の密度が高いほど小さくなるように設定される経路生成装置。
【請求項6】
請求項3乃至5の何れか1項に記載の経路生成装置において、
前記動作装置は、複数のリンクと、複数のリンクを連結する複数の関節とを有するロボットアームであって、
前記干渉判定部は、
前記複数のリンクのそれぞれについて前記モデル間距離を求め、
前記複数のリンクの少なくとも1つのリンクの前記モデル間距離が前記安全閾値以下の場合に、干渉の可能性があると判定し、
前記複数のリンクの全てのリンクの前記モデル間距離が前記安全閾値よりも大きい場合に、干渉の可能性がないと判定する経路生成装置。
【請求項7】
請求項6に記載の経路生成装置において、
前記干渉判定部は、前記複数のリンクのうち前記ロボットアームの先端側のリンクから順に、前記モデル間距離を求め、求められた前記モデル間距離と前記安全閾値とを比較する経路生成装置。
【請求項8】
請求項3に記載の経路生成装置において、
前記干渉判定部は、干渉の可能性がないと判定した場合、前記モデル間距離から前記安全閾値を減じた値である余裕距離を求め、
前記経路生成部は、前記経路を生成する場合、今回の経路に繋がる前の経路の前記余裕距離が前記今回の経路の前記装置モデルの移動量よりも大きいときには、前記今回の経路に対する前記干渉判定を省略する経路生成装置。
【請求項9】
請求項8に記載の経路生成装置において、
前記動作装置は、複数のリンクと、複数のリンクを連結する複数の関節とを有するロボットアームであって、
前記干渉判定部は、
前記複数のリンクのそれぞれについて前記モデル間距離を求め、
前記複数のリンクの少なくとも1つのリンクの前記モデル間距離が前記安全閾値以下の場合に、干渉の可能性があると判定し、
前記複数のリンクの全てのリンクの前記モデル間距離が前記安全閾値よりも大きい場合に、干渉の可能性がないと判定し、前記複数のリンクのそれぞれについて前記余裕距離を求め、
前記経路生成部は、前記経路を生成する場合、前記今回の経路に対する前記干渉判定を省略するか否かを前記複数のリンクごとに判定する経路生成装置。
【請求項10】
請求項1乃至7の何れか1項に記載の経路生成装置において、
前記物体モデル及び前記装置モデルのうち少なくとも前記物体モデルは、前記点群モデルである経路生成装置。
【請求項11】
請求項1乃至10の何れか1項に記載の経路生成装置において、
前記物体モデル及び前記装置モデルは両方とも、前記点群モデルである経路生成装置。
【請求項12】
請求項11に記載の経路生成装置において、
干渉の可能性があると前記干渉判定部によって判定された場合には、
前記物体設定部は、前記物体モデルの前記点群の密度を高くし、
前記装置設定部は、前記装置モデルの前記点群の密度を高くし、
前記干渉判定部は、前記点群の密度が高くなった前記装置モデルと前記点群の密度が高くなった前記物体モデルとの干渉判定を行う経路生成装置。
【請求項13】
請求項12に記載の経路生成装置において、
前記物体設定部は、前記干渉判定において干渉の可能性があると判定された部分を含む、前記物体モデルの一部の前記点群の密度を高くし、
前記装置設定部は、前記干渉判定において干渉の可能性があると判定された部分を含む、前記装置モデルの一部の前記点群の密度を高くする経路生成装置。
【請求項14】
動作装置の経路を生成する経路生成方法であって、
前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定することと、
前記配置空間における前記動作装置のモデルである装置モデルを設定することと、
前記動作装置の経路を段階的に生成することと、
前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行うこととを含み、
前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、
干渉の可能性があると前記干渉判定によって判定された場合には、
前記物体モデルを設定すること及び前記装置モデルを設定することの少なくとも一方において、前記点群モデルの前記点群の密度を高くし、
前記干渉判定を行うことにおいて、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、
前記経路を生成することにおいては、干渉の可能性がないと前記干渉判定によって判定された場合には次の経路を生成する経路生成方法。
【請求項15】
動作装置の動作を生成するためにコンピュータに、
前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定する機能と、
前記配置空間における前記動作装置のモデルである装置モデルを設定する機能と、
前記動作装置の経路を段階的に生成する機能と、
前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行う機能とを実現させ、
前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、
干渉の可能性があると前記干渉判定によって判定された場合には、
前記物体モデルを設定する機能及び前記装置モデルを設定する機能の少なくとも一方は、前記点群モデルの前記点群の密度を高くし、
前記干渉判定を行う機能は、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、
前記経路を生成する機能は、干渉の可能性がないと前記干渉判定によって判定された場合には次の経路を生成する経路生成プログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、経路生成装置、経路生成方法及び経路生成プログラムに関する。
【背景技術】
【0002】
従来より、動作装置の経路を生成する技術が知られている。例えば、特許文献1には、ロボットと障害物との干渉を判定しつつ、ロボットの経路を計画する装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2013-246553号公報
【発明の概要】
【0004】
動作装置の経路を生成する場合には、特許文献1の装置のように、障害物等の物体と動作装置との干渉を判定する必要がある。干渉判定は、経路を生成する上で何度も行われる。例えば、所定の開始位置から終了位置に至る経路を生成する場合には、その経路上の複数個所で行われる。また、干渉判定によって物体と動作装置とが干渉すると判定された場合には、経路を変更して再び干渉判定が行われる。通常、干渉判定は、物体と動作装置との距離を演算することによって行われる。前述の如く、経路生成においては干渉判定が何度も行われるので、物体と動作装置との距離の演算の時間がかかると、経路生成の時間が長期化することになる。その一方で、経路生成の時間を短縮するために、物体と動作装置との距離の演算を簡略化すると、物体と動作装置との干渉判定の精度が低下する。
【0005】
本開示は、かかる点に鑑みてなされたものであり、その目的とするところは、干渉判定の時間の短縮と精度の向上とを両立させることにある。
【0006】
本開示の経路生成装置は、動作装置の経路を生成する経路生成装置であって、前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定する物体設定部と、前記配置空間における前記動作装置のモデルである装置モデルを設定する装置設定部と、前記動作装置の経路を段階的に生成する経路生成部と、前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行う干渉判定部とを備え、前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると前記干渉判定部によって判定された場合には、前記物体設定部及び前記装置設定部の少なくとも一方は、前記点群モデルの前記点群の密度を高くし、前記干渉判定部は、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、前記経路生成部は、干渉の可能性がないと前記干渉判定部によって判定された場合には次の経路を生成する。
【0007】
本開示の経路生成方法は、動作装置の経路を生成する経路生成方法であって、前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定することと、前記配置空間における前記動作装置のモデルである装置モデルを設定することと、前記動作装置の経路を段階的に生成することと、前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行うこととを含み、前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると前記干渉判定によって判定された場合には、前記物体モデルを設定すること及び前記装置モデルを設定することの少なくとも一方において、前記点群モデルの前記点群の密度を高くし、前記干渉判定を行うことにおいて、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、前記経路を生成することにおいては、干渉の可能性がないと前記干渉判定によって判定された場合には次の経路を生成する。
【0008】
本開示の経路生成プログラムは、動作装置の動作を生成するためにコンピュータに、前記動作装置が配置された配置空間に含まれる物体のモデルである物体モデルを設定する機能と、前記配置空間における前記動作装置のモデルである装置モデルを設定する機能と、前記動作装置の経路を段階的に生成する機能と、前記物体モデルと前記装置モデルとの距離に基づいて、前記物体モデルと前記経路に沿って移動した後の前記装置モデルとの干渉判定を行う機能とを実現させ、前記物体モデル及び前記装置モデルの少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると前記干渉判定によって判定された場合には、前記物体モデルを設定する機能及び前記装置モデルを設定する機能の少なくとも一方は、前記点群モデルの前記点群の密度を高くし、前記干渉判定を行う機能は、前記点群の密度が高くなった前記点群モデルを用いて前記干渉判定を再び行い、前記経路を生成する機能は、干渉の可能性がないと前記干渉判定によって判定された場合には次の経路を生成する。
【0009】
前記経路生成装置によれば、干渉判定の時間の短縮と精度の向上とを両立させることができる。
【0010】
前記経路生成方法によれば、干渉判定の時間の短縮と精度の向上とを両立させることができる。
【0011】
前記経路生成プログラムによれば、干渉判定の時間の短縮と精度の向上とを両立させることができる。
【図面の簡単な説明】
【0012】
図1図1は、ロボットシステムの構成を示す模式図である。
図2図2は、ロボット制御装置及び制御装置の概略的なハードウェア構成を示す図である。
図3図3は、制御部の制御系統の構成を示すブロック図である。
図4図4は、物体モデル及び装置モデルの一例を示す図である。
図5図5は、制御装置によるロボットアームの動作制御を示すフローチャートである。
図6図6は、制御装置によるロボットアームの経路生成処理を示すフローチャートである。
図7図7は、第1装置モデルが第1物体モデルに接近した状態を示す模式図である。
図8図8は、図7における第1物体モデル及び第1装置モデルが第2物体モデル及び第2装置モデルに変更された状態を示す模式図である。
図9図9は、図8における第2物体モデル及び第2装置モデルが第3物体モデル及び第3装置モデルに変更された状態を示す模式図である。
【発明を実施するための形態】
【0013】
以下、例示的な実施形態を図面に基づいて詳細に説明する。図1は、ロボットシステム100の構成を示す模式図である。
【0014】
ロボットシステム100は、ロボット1と、ロボット1の経路を生成する経路生成装置3とを備えている。経路生成装置3は、制御装置5を備えている。経路生成装置3は、ロボット1が配置された配置空間の情報を取得する三次元ビジョンセンサ4を備えていてもよい。ロボットシステム100では、制御装置5が三次元ビジョンセンサ4の検出結果を参照してロボット1の経路を生成すると共に、ロボット1の動作を制御する。
【0015】
この例では、ロボット1は、コンテナ91内の物体を搬出したり、コンテナ91内へ物体を搬入したりする。
【0016】
ロボット1は、この例では、産業用ロボットである。ロボット1は、ロボットアーム12と、ロボット1の全体を制御するロボット制御装置2とを有している。ロボットアーム12は、エンドエフェクタとしてのハンド14を有している。ロボットアーム12は、ハンド14によって物体を把持する。ロボット1は、動作装置の一例であり、より具体的には、ロボットアーム12が動作装置の一例である。
【0017】
ロボット1が配置される空間には、直交3軸のロボット座標系が規定されている。例えば、上下方向にZ軸が設定され、水平方向に互いに直交するX軸及びY軸が設定される。
【0018】
ロボットアーム12は、三次元状に動作するように構成されている。具体的には、ロボットアーム12は、少なくとも3自由度の並進を含む動作を行うように構成されている。この例では、ロボットアーム12は、垂直多関節型のロボットアームである。ロボットアーム12は、ベース10に支持されている。ロボットアーム12は、複数のリンクと、複数のリンクを連結する複数の関節とを有している。
【0019】
詳しくは、ロボットアーム12は、ベース10に連結された第1リンク12aと、第1リンク12aに連結された第2リンク12bと、第2リンク12bに連結された第3リンク12cと、第3リンク12cに連結された第4リンク12dと、第4リンク12dに連結された第5リンク12eとを有している。尚、ハンド14も、ロボットアーム12の1つのリンクとみなすことができる。
【0020】
詳しくは、ベース10と第1リンク12aとは、鉛直方向に延びる軸回りに回転可能な第1関節13aを介して互いに連結されている。第1リンク12aと第2リンク12bとは、水平方向に延びる軸回りに回転可能な第2関節13bを介して互いに連結されている。第2リンク12bと第3リンク12cとは、水平方向に延びる軸回りに回転可能な第3関節13cを介して互いに連結されている。第3リンク12cと第4リンク12dとは、第4リンク12dの軸心(即ち、第4リンク12dが延びる方向)回りに回転可能な第4関節13dを介して互いに連結されている。第4リンク12dと第5リンク12eとは、第4リンク12dの軸心と直交する軸回りに回転可能な第5関節13eを介して互いに連結されている。
【0021】
ロボットアーム12の先端部、即ち、第5リンク12eには、ハンド14が連結されている。第5リンク12eとハンド14とは、所定の軸回りに回転可能に第6関節13fを介して互いに連結されている。ハンド14は、開閉するように構成された2本の指14aを有している。2本の指14aは、エアシリンダ等のアクチュエータによって開閉駆動される。
【0022】
ロボットアーム12は、各関節を回転駆動するサーボモータ15(図2参照)を有している。各サーボモータ15は、エンコーダ15a(図2参照)を有している。
【0023】
図2は、ロボット制御装置2及び制御装置5の概略的なハードウェア構成を示す図である。ロボット制御装置2は、制御装置5と信号及び指令等の送受信を行う。ロボット制御装置2は、ロボットアーム12のサーボモータ15及びハンド14を制御する。例えば、ロボット制御装置2は、制御装置5の指令に応じて、サーボモータ15に電流を供給する。このとき、ロボット制御装置2は、エンコーダ15aの出力に基づいて供給電流をフィードバック制御する。また、ロボット制御装置2は、ハンド14のアクチュエータを制御することによって2本の指14aを開閉させる。
【0024】
ロボット制御装置2は、制御部21と、記憶部22と、メモリ23とを有している。
【0025】
制御部21は、ロボット制御装置2の全体を制御する。制御部21は、各種の演算処理を行う。例えば、制御部21は、CPU(Central Processing Unit)等のプロセッサで形成されている。制御部21は、MCU(Micro Controller Unit)、MPU(Micro Processor Unit)、FPGA(Field Programmable Gate Array)、PLC(Programmable Logic Controller)、システムLSI等で形成されていてもよい。
【0026】
記憶部22は、制御部21で実行されるプログラム及び各種データを格納している。記憶部22は、不揮発性メモリ、HDD(Hard Disc Drive)又はSSD(Solid State Drive)等で形成される。
【0027】
メモリ23は、データ等を一時的に格納する。例えば、メモリ23は、揮発性メモリで形成される。
【0028】
三次元ビジョンセンサ4は、ロボットアーム12、即ち、ロボット1が配置された配置空間の空間情報を取得する。空間情報は、配置空間における物体の位置及び形状の情報を含む。三次元ビジョンセンサ4は、三次元の空間情報を取得する。例えば、三次元ビジョンセンサ4は、コンテナ91を上方から、コンテナ91及びコンテナ91内の物体の位置及び形状を計測する。三次元ビジョンセンサ4は、コンテナ91及びコンテナ91内の物体の位置及び形状を点群データの形式で出力する。三次元ビジョンセンサ4は、計測結果を空間情報として制御装置5へ出力する。
【0029】
制御装置5は、ロボットアーム12の経路を生成すると共に、ロボットアーム12を経路に沿って移動させる指令をロボット制御装置2へ出力する。この例では、ロボットアーム12が他の物体との干渉を回避しながら所定の開始位置から目標位置まで移動する経路を生成する。より具体的には、ロボットアーム12がコンテナ91内から所定の物体Aを取り出し、その物体Aを載置台(図示省略)まで搬送するピックアンドプレース動作を制御装置5がロボットアーム12に実行させる。
【0030】
制御装置5は、ロボット制御装置2と信号及び情報等の送受信を行う。制御装置5には、三次元ビジョンセンサ4の検出結果が入力される。制御装置5は、図2に示すように、制御部51と、記憶部52と、メモリ53とを有している。尚、図示を省略するが、制御装置5は、動作生成に関する設定等を行うためにユーザが操作する入力操作部と、設定内容を表示するディスプレイとをさらに有していてもよい。
【0031】
制御部51は、制御装置5の全体を制御する。制御部51は、各種の演算処理を行う。例えば、制御部51は、CPU(Central Processing Unit)等のプロセッサで形成されている。制御部51は、MCU(Micro Controller Unit)、MPU(Micro Processor Unit)、FPGA(Field Programmable Gate Array)、PLC(Programmable Logic Controller)、システムLSI等で形成されていてもよい。
【0032】
記憶部52は、制御部51で実行されるプログラム及び各種データを格納している。例えば、記憶部52は、ロボットアーム12の動作を制御するための動作制御プログラム61及びロボットアーム12の経路を生成するための経路生成プログラム62が格納されている。記憶部52は、不揮発性メモリ、HDD(Hard Disc Drive)又はSSD(Solid State Drive)等で形成される。
【0033】
メモリ53は、データ等を一時的に格納する。例えば、メモリ53は、揮発性メモリで形成される。
【0034】
図3は、制御部51の制御系統の構成を示すブロック図である。制御部51は、記憶部52から経路生成プログラム62をメモリ53に読み出して展開することによって、各種機能を実現する。具体的には、制御部51は、物体設定部54と装置設定部55と経路生成部56と干渉判定部57と動作指令部58として機能する。
【0035】
物体設定部54は、ロボットアーム12が配置された配置空間に含まれる物体のモデルである物体モデル71を設定する。この例では、物体モデル71は、点群で形成された点群モデルである。また、この例では、コンテナ91、載置台及び、コンテナ91内の物体が配置空間に含まれる物体に相当する。物体設定部54は、コンテナ91等のそれぞれの物体について物体モデル71を生成する。物体設定部54は、物体ごとに、物体モデル71の点群の密度を変更することができる。以下、「密度」は、特段の断りが無い限り、点群の密度を意味する。例えば、物体設定部54は、三次元ビジョンセンサ4から出力される点群データをダウンサンプリングして物体モデル71を生成することによって、点群の密度が異なる物体モデル71を生成することができる。物体設定部54は、物体モデル71の一部の点群の密度を変更することができる。物体設定部54は、物体モデル71の全部の点群の密度を変更することもできる。
【0036】
この例では、物体設定部54は、所定の第1密度と第1密度よりも高い第2密度と第2密度よりも高い第3密度との3段階で、物体モデル71の点群の密度を変更する。また、物体設定部54は、物体モデル71の一部の点群の密度を変更する。以下、最も高い点群の密度が第1密度の物体モデル71を「第1物体モデル71A」と称し、最も高い点群の密度が第2密度の物体モデル71を「第2物体モデル71B」と称し、最も高い点群の密度が第3密度の物体モデル71を「第3物体モデル71C」と称する。第1物体モデル71A、第2物体モデル71B及び第3物体モデル71Cのそれぞれを区別しない場合には、単に「物体モデル71」と称する。図4は、物体モデル71及び装置モデル72の一例を示す図である。図4では、物体モデル71のうちコンテナ91の物体モデル71を示している。図4は、コンテナ91の第1物体モデル71Aを示している。
【0037】
経路生成部56は、ロボットアーム12の経路を段階的に生成する。この例では、経路生成部56は、ロボットアーム12の開始位置と目標位置との間の1又は複数の中間位置(即ち、ノード)を生成することによって、1又は複数の中間位置を経由した開始位置から目標位置までの経路を生成する。ここで、ロボットアーム12は複数の自由度を有しているので、ロボットアーム12の位置は、各関節及びハンド14の指先の位置によって一義的に決まる位置であり、ロボットアーム12の姿勢とみなすこともできる(つまり、開始位置は開始姿勢、目標位置は目標姿勢、及び、中間位置は中間姿勢とみなすこともできる)。また、ロボットアーム12の経路は、複数の関節の位置及びハンド14の指先の位置によって定義され、ひいては、各関節の回転角によって定義される。
【0038】
例えば、経路生成部56は、ロボットアーム12の中間位置を開始位置から目標位置へ向かって順番に生成する。中間位置の生成は、中間位置までの経路の生成とみなすことができる。経路生成部56は、新たな中間位置をランダム又は所定のルール(制約)に従って生成する。所定のルールとしては、例えば、ロボットアーム12が目標位置へ近づくこと、ロボットアーム12が物体と干渉する場合にはロボットアーム12が物体から遠ざかること、又は、複数の関節及びハンド14の指先のそれぞれの移動量の上限値等が挙げられる。経路生成部56は、これらのルールを総合的に判断して、中間位置を生成してもよい。
【0039】
生成された中間位置、即ち、経路に対して、干渉判定部57による干渉判定が行われる。経路生成部56は、干渉判定の結果に応じて、中間位置の変更(即ち、経路の変更)及び次の中間位置の生成(即ち、次の経路の生成)を選択的に行う。
【0040】
装置設定部55は、配置空間におけるロボットアーム12のモデルである装置モデル72を設定する。この例では、装置モデル72は、点群で形成された点群モデルである。装置設定部55は、経路生成部56によって生成された中間位置に位置するロボットアーム12の装置モデル72を生成する。
【0041】
装置設定部55は、装置モデル72の点群の密度を変更することができる。装置設定部55は、装置モデル72の一部の点群の密度を変更することができる。装置設定部55は、装置モデル72の全体の点群の密度を変更することもできる。
【0042】
記憶部52には、ロボットアーム12の点群データが記憶されている。ロボットアーム12の点群データは、ロボットアーム12の形状、少なくとも外形を表す。具体的には、ロボットアーム12の点群データには、各リンクの点群データが含まれている。さらに、記憶部52には、密度が異なるロボットアーム12の点群データが記憶されている。具体的には、所定の第1密度のロボットアーム12の点群データと、第1密度よりも高い第2密度のロボットアーム12の点群データと、第2密度よりも高い第3密度のロボットアーム12の点群データとが記憶部52に記憶されている。尚、ロボットアーム12の点群データの第1密度、第2密度及び第3密度はそれぞれ、第1物体モデル71A、第2物体モデル71B及び第3物体モデル71Cの第1密度、第2密度及び第3密度と略同じである。
【0043】
装置設定部55は、記憶部52からロボットアーム12の点群データを読み出し、読み出された点群データを、経路生成部56によって生成された中間位置に配置する。こうして、装置設定部55は、ロボットアーム12の装置モデル72を設定する。このとき、装置設定部55は、記憶部52から読み出す点群データを変更することによって、装置モデル72の密度を変更することができる。さらに、装置設定部55は、ロボットアーム12の部分ごとに異なる密度の点群データを読み出すことができる。装置設定部55は、ロボットアーム12の全体に亘って密度が均一な装置モデル72を生成することもできる。以下、最も高い点群の密度が第1密度の装置モデル72を「第1装置モデル72A」と称し、最も高い点群の密度が第2密度の装置モデル72を「第2装置モデル72B」と称し、最も高い点群の密度が第3密度の装置モデル72を「第3装置モデル72C」と称する。第1装置モデル72A、第2装置モデル72B及び第3装置モデル72Cのそれぞれを区別しない場合には、単に「装置モデル72」と称する。図4は、ロボットアーム12の全体が第1密度の点群データで形成された第1装置モデル72Aを示している。
【0044】
干渉判定部57は、物体モデル71と装置モデル72との距離に基づいて、経路に沿って移動した後の(即ち、生成された中間位置に位置する)装置モデル72と物体モデル71との干渉判定を行う。ここで、物体モデル71及び装置モデル72はそれぞれ点群モデルなので、物体モデル71と装置モデル72との距離は、物体モデル71の点群に含まれる点と装置モデル72の点群に含まれる点との距離となる。干渉判定部57は、密度が低い点群モデルから順番に用いて干渉判定を行う。干渉判定部57は、密度が低い物体モデル71及び装置モデル72を用いて干渉判定を行い、干渉の可能性が無ければ干渉判定を終了し、干渉の可能性があると判定した場合には物体モデル71及び装置モデル72の少なくとも一方の点群の密度を高くして、再び干渉判定を行う。
【0045】
具体的には、干渉判定部57は、物体モデル71と装置モデル72との最短距離であるモデル間距離が所定の安全閾値以下の場合に、物体モデル71と装置モデル72との干渉の可能性があると判定する。一方、干渉判定部57は、モデル間距離が安全閾値よりも大きい場合に、物体モデル71と装置モデル72との干渉の可能性がないと判定する。さらに、干渉判定部57は、干渉の可能性がないと判定した場合、モデル間距離から安全閾値を減じた値である余裕距離を求める。
【0046】
ここで、物体モデル71及び装置モデル72のそれぞれにおいて互いに最も接近する部分がモデル間距離、即ち、最短距離を形成する部分である。この例では、物体モデル71及び装置モデル72は点群モデルであるので、物体モデル71及び装置モデル72のそれぞれにおいて互いに最も接近する2つの点がモデル間距離を形成する。これらの点を「最接近点」と称する。つまり、物体モデル71の最接近点と装置モデル72の最接近点とでモデル間距離が形成される。
【0047】
さらに、モデル間距離が安全閾値以下の場合には、干渉判定部57は、モデル間距離が安全閾値よりも小さな干渉閾値以下か否かを判定する。干渉判定部57は、モデル間距離が干渉閾値以下の場合に、物体モデル71と装置モデル72とが干渉すると判定する。
【0048】
つまり、干渉判定部57は、物体モデル71と装置モデル72との距離に基づいて、干渉の可能性あり、干渉の可能性なし、及び、干渉するの何れであるかを判定する。そして、干渉の可能性ありの場合には、干渉判定部57は、物体モデル71及び装置モデル72の少なくとも一方の点群の密度を高くして、同様の干渉判定を行う。
【0049】
例えば、干渉判定部57は、まず第1物体モデル71Aと第1装置モデル72Aとの干渉判定を行う。干渉の可能性があれば、干渉判定部57は、次に第2物体モデル71Bと第2装置モデル72Bとの干渉判定を行う。それでも干渉の可能性があれば、干渉判定部57は、さらに第3物体モデル71Cと第3装置モデル72Cとの干渉判定を行う。
【0050】
このとき、第2物体モデル71B及び第2装置モデル72Bのそれぞれは、全体が第2密度となっていなくてもよい。つまり、第2物体モデル71Bのうち最接近点を含む一部の点群だけが第2密度となり、他の部分は第1密度であってもよい。第2装置モデル72Bのうち最接近点を含む一部の点群だけが第2密度となり、他の部分は第1密度であってもよい。同様に、第3物体モデル71Cと第3装置モデル72Cとの干渉判定においても、第3物体モデル71Cのうち最接近点を含む一部の点群だけが第3密度となり、他の部分は第1密度又は第2密度であってもよい。第3装置モデル72Cのうち最接近点を含む一部の点群だけが第3密度となり、他の部分は第1密度又は第2密度であってもよい。
【0051】
尚、干渉判定部57は、第1物体モデル71Aと第1装置モデル72Aとの干渉判定において、干渉の可能性がない、又は、干渉すると判定した場合には、干渉判定を終了する。第2物体モデル71Bと第2装置モデル72Bとの干渉判定においても同様である。第3物体モデル71Cと第3装置モデル72Cとの干渉判定においても同様である。
【0052】
また、最も密度が高い物体モデル71(即ち、第3物体モデル71C)と装置モデル72と(即ち、第3装置モデル72C)の干渉判定においては、干渉判定部57は、干渉閾値による判定のみを行う。すなわち、干渉判定部57は、第3物体モデル71Cと第3装置モデル72Cとのモデル間距離が干渉閾値以下の場合には干渉すると判定し、第3物体モデル71Cと第3装置モデル72Cとのモデル間距離が干渉閾値よりも大きい場合には干渉の可能性なしと判定する。
【0053】
さらに、干渉判定のための安全閾値は、点群モデルに応じて、即ち、点群の密度に応じて変更され得る。例えば、点群モデルの点群の密度が高いほど、安全閾値が小さく設定される。この例では、第1物体モデル71Aと第1装置モデル72Aの干渉判定のための安全閾値である第1安全閾値は、第2物体モデル71Bと第2装置モデル72Bの干渉判定のための安全閾値である第2安全閾値よりも大きい。
【0054】
一方、干渉判定のための干渉閾値は、点群の密度が変わっても同じであってもよい。この例では、第1物体モデル71Aと第1装置モデル72Aとの干渉判定、第2物体モデル71Bと第2装置モデル72Bとの干渉判定、及び、第3物体モデル71Cと第3装置モデル72Cとの干渉判定のそれぞれにおける干渉閾値は、同じである。
【0055】
尚、干渉判定において点群モデルの密度を変更する際には、物体モデル71及び装置モデル72の一方だけの密度を変更してもよい。例えば、第1物体モデル71A及び第1装置モデル72Aから点群モデルの密度を上げる場合に、第1物体モデル71Aだけを第2物体モデル71Bに変更して、第1装置モデル72Aはそのままであってもよい。物体モデル71及び装置モデル72の少なくとも一方の点群の密度を高くする限り、様々な密度の物体モデル71と装置モデル72との組み合わせで干渉判定を行ってもよい。
【0056】
経路生成部56は、干渉の可能性がないと干渉判定部57によって判定された場合に、次の中間位置、即ち、次の経路を生成する。一方、経路生成部56は、干渉すると干渉判定部57によって判定された場合には、中間位置、即ち、経路を変更する。経路生成部56は、次の中間位置又は変更後の中間位置に対しても干渉判定部57による干渉判定を受ける。
【0057】
さらに、経路生成部56は、中間位置(即ち、経路)を生成する場合、今回の中間位置に繋がる前の中間位置の余裕距離が今回の中間位置の装置モデル72の移動量よりも大きいときには、今回の中間位置に対する干渉判定を省略して、即ち、スキップして、次の中間位置を生成する。つまり、前の中間位置の干渉判定におけるモデル間距離が今回の中間位置への装置モデル72の移動量に比べて十分に大きい場合には、経路生成部56は、今回の中間位置について干渉判定部57による干渉判定を受けることなく、次の中間位置を生成する。
【0058】
経路生成部56は、このような処理を繰り返すことによって、開始位置から目標位置までの中間位置、即ち、経路を段階的に生成する。経路生成部56は、開始位置から目標位置までの経路の生成が完了すると、生成された経路の情報を動作指令部58へ出力する。
【0059】
動作指令部58は、経路生成部56から出力される経路の情報に応じた指令値を作成し、作成された指令値をロボット制御装置2へ出力する。
【0060】
ロボット制御装置2は、動作指令部58からの指令値に基づいてサーボモータ15を駆動する。このとき、ロボット制御装置2は、エンコーダ15aの検出結果に基づいてサーボモータ15への供給電流をフィードバック制御する。これにより、ロボットアーム12が開始位置から目標位置まで、経路生成部56によって生成された経路に沿って移動する。
【0061】
続いて、このように構成されたロボットシステム100の動作について説明する。図5は、制御装置5によるロボットアーム12の動作制御を示すフローチャートである。ロボットアーム12がコンテナ91内から所定の物体Aを取り出し、その物体Aを載置台まで搬送するピックアンドプレース動作について説明する。制御装置5は、ピックアンドプレース動作をロボットアーム12が物体Aを取りに行くまでの第1動作とロボットアーム12が物体Aをコンテナ91から載置台まで搬出する第2動作とに分けてロボットアーム12に実行させる。この動作制御は、制御部51が、記憶部52から動作制御プログラム61をメモリ53に読み出して展開することによって実行される。
【0062】
まず、制御部51は、ロボットアーム12が物体Aを取りに行くまでの第1動作を実行させる。制御部51は、ステップS1において、三次元ビジョンセンサ4を介して空間情報を取得する。三次元ビジョンセンサ4は、コンテナ91及び載置台の上方から、コンテナ91、載置台及びコンテナ91内の物体の位置及び形状を計測する。三次元ビジョンセンサ4は、コンテナ91、載置台及びコンテナ91内の物体の位置及び形状を点群データの形式で制御装置5へ出力する。
【0063】
次に、ステップS2において、制御部51は、ロボットアーム12の目標位置を取得する。具体的には、経路生成部56は、まず三次元ビジョンセンサ4の空間情報に基づいて物体Aの位置を検出する。そして、経路生成部56は、検出された位置に配置された物体Aを他の物体に干渉することなく把持する状態のロボットアーム12の位置を求め、その位置を目標位置として設定する。
【0064】
続いて、ステップS3において、制御部51は、ロボットアーム12の開始位置を取得する。具体的には、経路生成部56は、各エンコーダ15aの検出結果に基づいてロボットアーム12の現在位置を求め、その現在位置を開始位置として設定する。経路生成部56は、各エンコーダ15aの検出結果から各関節の回転角を得ることができる。ロボットアーム12の各リンク及びハンドの寸法は既知である。そのため、経路生成部56は、各関節の回転角と各リンク及びハンドの寸法とに基づいて、ロボットアーム12の各部分の位置を求めることができる。
【0065】
次に、ステップS4において、経路生成部56は、開始位置から目標位置までのロボットアーム12の経路を生成する。ステップS4では、経路生成処理が実行され、経路が生成される。
【0066】
ステップS5において、制御部51は、ロボットアーム12に動作を実行させる。具体的には、動作指令部58は、経路生成部56から出力された経路に沿ってロボットアーム12を移動させるための指令値に生成し、その指令値をロボット制御装置2へ出力する。ロボット制御装置2は、指令値に基づいて、サーボモータ15を制御して、ロボットアーム12を動作させる。ロボットアーム12は、経路に沿って移動する。
【0067】
制御部51は、ステップS6において、目標位置が最終目標位置か否かを判定する。つまり、ピックアンドプレース動作のように、動作が分割され、複数の目標位置が含まれている場合がある。ステップS6では、今回の目標位置が最終目標位置であるか否か、即ち、次に設定されるべき目標位置が残っているか否かが判定される。今回の処理では第1動作の完了後には第2動作が残っているので、今回の目標位置は最終目標位置ではないと判定される。
【0068】
今回の目標位置が最終目標位置の場合には、制御部51は、ロボットアーム12の動作制御を終了する。尚、目標位置が1つだけの場合には、当然ながら、今回の目標位置が最終目標位置となる。
【0069】
今回の目標位置が最終目標位置でない場合、制御部51は、ステップS2へ戻り、ステップS2からの処理を繰り返す。ステップS2において、次の動作の目標位置が新たに設定され、ステップS3以降の処理が実行される。今回の処理では、制御部51は、第2動作のロボットアーム12の目標位置を新たな目標位置として設定する。具体的には、経路生成部56は、他の物体に干渉することなく物体Aを載置台に載置する状態のロボットアーム12の位置を求め、その位置を新たな目標位置として設定する。
【0070】
こうして、ロボットアーム12の目標位置が更新される。そして、新たな目標位置に関して、ステップS3からステップS6の処理が繰り返される。今回の処理では、ロボットアーム12は、最終的に第2動作の目標位置まで移動し、物体Aを載置台に載置する。
【0071】
ロボットアーム12が新たな目標位置に到達した場合には、制御部51は、再びステップS7において、目標位置が最終目標位置か否かを判定する。目標位置が最終目標位置となるまで、前述の処理が繰り返される。今回の処理では、第2動作の目標位置が最終目標位置であるので、制御部51は、ロボットアーム12の動作制御を終了する。
【0072】
続いて、経路生成処理について説明する。図6は、制御装置5によるロボットアーム12の経路生成処理を示すフローチャートである。経路生成処理は、制御部51が、記憶部52から経路生成プログラム62をメモリ53に読み出して展開することによって実行される。
【0073】
まず、経路生成部56は、ステップsb1において、ロボットアーム12の経路を生成する。経路生成処理における最初のステップsb1においては、経路生成部56は、開始位置から最初に経由する中間位置を生成する。経路生成部56は、前述の如く、中間位置をランダム又は所定のルール(制約)に従って生成する。中間位置の生成は、中間位置までの経路の生成とみなすことができる。以下、「今回の」中間位置又は経路という場合には、このステップsb1において生成された最新の中間位置及び経路を指す。
【0074】
次に、物体設定部54は、ステップsb2において、ロボットアーム12の配置空間に含まれる物体の物体モデル71であって最も密度の低い物体モデル71である第1物体モデル71Aを生成する。第1物体モデル71Aの全てが第1密度の点群で形成されている。この例では、物体設定部54は、コンテナ91、載置台及びコンテナ91内の物体のそれぞれの第1物体モデル71Aを生成する。
【0075】
また、装置設定部55は、ステップsb3において、配置空間におけるロボットアーム12の装置モデル72であって最も密度の低い装置モデル72である第1装置モデル72Aを生成する。第1装置モデル72Aの全てが第1密度の点群で形成されている。このとき、装置設定部55は、今回の中間位置に位置するロボットアーム12の装置モデル72を生成する。
【0076】
次に、ステップsb4において、干渉判定部57は、干渉判定をスキップするか否かを判定する。具体的には、干渉判定部57は、今回の中間位置に繋がる前の中間位置の余裕距離が記憶部52に記憶されている場合には、余裕距離が今回の中間位置の第1装置モデル72Aの移動量よりも大きいか否かを判定する。経路生成処理における最初のステップsb4においては、記憶部52に前の中間位置の余裕距離が記憶されていないので、干渉判定部57は、干渉判定をスキップしないと判定する。ステップsb4の詳細な処理については後述する。
【0077】
干渉判定をスキップしない場合には、干渉判定部57は、ステップsb5において、第1物体モデル71Aと第1装置モデル72Aとのモデル間距離が第1安全閾値以下であるか否かを判定する。第1安全閾値は、第1物体モデル71A及び第1装置モデル72Aの密度において、第1物体モデル71Aと第1装置モデル72Aとが干渉しないと推定できるモデル間距離である。基本的には、干渉判定部57は、第1物体モデル71Aに含まれる点と第1装置モデル72Aに含まれる点との全ての組み合わせについて2点間の距離を演算し、2点間の最短距離、即ち、モデル間距離を求める。干渉判定部57は、求めたモデル間距離が第1安全閾値以下か否かを判定する。ただし、何れかの2点間の距離が第1安全閾値以下となる場合には、干渉判定部57は、全ての2点間の距離の演算が完了していなくても、モデル間距離が第1安全閾値以下であると判定することができる。
【0078】
このとき、記憶部52に後述する注目部分が保存されている場合には、干渉判定部57は、第1物体モデル71Aに含まれる点と第1装置モデル72Aに含まれる点のうち注目部分に対応する点を優先的に、即ち、注目部分に対応する点から先に2点間の距離を演算する。注目部分は、干渉の可能性がある部分であり、2点間の距離が第1安全閾値以下となる可能性が他の部分に比べて高い。そのため、モデル間距離が第1安全閾値以下か否かの判定が早く終わり、2点間の距離の演算負荷を低減できる場合がある。
【0079】
この例では、干渉判定部57は、ロボットアーム12の複数のリンクのそれぞれについてモデル間距離を求め、リンクごとにモデル間距離と第1安全閾値とを比較する。ここでのリンクには、ハンド14も含まれる。つまり、第1リンク12a、第2リンク12b、第3リンク12c、第4リンク12d、第5リンク12e及びハンド14のそれぞれにおいて、モデル間距離が求められ、モデル間距離が第1安全閾値以下であるか否かが判定される。干渉判定部57は、複数のリンクの少なくとも1つのリンクのモデル間距離が第1安全閾値以下か否かを判定する。尚、第1安全閾値は、複数のリンクで同じ値であってもよいし、リンクごとに異なっていてもよい。
【0080】
さらに、干渉判定部57は、複数のリンクのうちロボットアーム12の先端側のリンクから順に、モデル間距離を求め、求められたモデル間距離と第1安全閾値とを比較する。この場合、干渉判定部57は、先端側のリンクから順にモデル間距離と第1安全閾値とを比較し、何れか1つのリンクのモデル間距離が第1安全閾値以下となる場合には、残りのリンクについてモデル間距離の演算等を行わなくても、複数のリンクの少なくとも1つのリンクのモデル間距離が第1安全閾値以下であると判定することができる。
【0081】
尚、詳しくは後述するが、干渉判定を省略するリンクが記憶部52に保存されている場合には、干渉判定部57は、そのリンクの干渉判定(即ち、モデル間距離の演算及びモデル間距離と安全閾値との比較等)を行わない。
【0082】
モデル間距離が第1安全閾値よりも大きい場合には、干渉判定部57は、第1物体モデル71Aと第1装置モデル72Aとの干渉の可能性がないと判定する。干渉の可能性がないと判定されると、今回の中間位置は、開始位置から目標位置までの間の一の中間位置、即ち、一の経路として確定される。このとき、干渉判定部57は、モデル間距離から第1安全閾値を減じた値を余裕距離とし、記憶部52に保存する。これにより、今回の中間位置、即ち、経路に対する干渉判定が完了する。
【0083】
リンクごとにモデル間距離を求める例では、干渉判定部57は、リンクごとにモデル間距離と第1安全閾値とを比較しているので、複数のリンクの全てのリンクのモデル間距離が第1安全閾値よりも大きい場合に、干渉の可能性がないと判定する。干渉判定部57は、リンクのそれぞれについて余裕距離を求め、リンクごとの余裕距離を記憶部52に保存する。
【0084】
その後、経路生成部56は、ステップsb13において、経路が目標位置に到達したか否かを判定する。具体的には、経路生成部56は、今回の中間位置が目標位置の1つ手前の中間位置か否かを判定する。今回の中間位置が目標位置の1つ手前の中間位置である場合には、経路が目標位置に到達したと判定して、経路生成部56は、図5に示すロボットアーム12の動作制御のフロー(即ち、ステップS5)へ戻る。一方、今回の中間位置が目標位置の1つ手前の中間位置でない場合には、経路生成部56は、ステップsb1へ戻り、次の中間位置を生成する。
【0085】
ステップsb1では、経路生成部56は、確定した中間位置(以下、「前の中間位置」と称する)に続く次の中間位置、即ち、経路を生成する。その後、ステップsb2において、第1物体モデル71Aが設定される。物体設定部54は、既に生成されている物体モデル71が第1物体モデル71Aである場合には、その第1物体モデル71Aをそのまま用いる。続くステップsb3において、装置設定部55は、新たな中間位置に位置するロボットアーム12の第1装置モデル72Aを生成する。
【0086】
次のステップsb4においては、経路生成部56は、干渉判定をスキップするか否かを判定する。経路生成部56は、今回の中間位置に繋がる前の中間位置での余裕距離が記憶部52に記憶されている場合には、余裕距離が今回の中間位置への第1装置モデル72Aの移動量よりも大きいか否かを判定する。今回の中間位置への第1装置モデル72Aの移動量は、第1装置モデル72Aが前の中間位置から今回の中間位置へ移動するときの、前の中間位置における第1装置モデル72Aの最接近点(即ち、第1物体モデル71Aに最も接近した部分)の移動量である。
【0087】
余裕距離が第1装置モデル72Aの移動量よりも大きい場合には、干渉判定が省略され、即ち、干渉判定がスキップされる。経路生成部56は、ステップsb13において、経路が目標位置に到達したか否かを判定する。経路が目標位置に到達した場合には、経路生成部56は、図5に示すロボットアーム12の動作制御のフロー(即ち、ステップS5)へ戻る。一方、経路が目標位置に到達していない場合には、経路生成部56は、ステップsb1へ戻り、次の中間位置を生成する。このように、経路生成部56は、今回の中間位置に対する干渉判定をスキップして、今回の中間位置を確定させ、その後の処理を実行する。
【0088】
余裕距離が今回の中間位置への第1装置モデル72Aの移動量よりも大きい場合には、今回の中間位置に位置する第1装置モデル72Aに対する干渉判定においても、モデル間距離が第1安全距離よりも大きくなる可能性が高い。つまり、干渉判定をスキップしない場合には、ステップsb5においてモデル間距離の算出が行われた後にステップsb13へ進む処理が実行されると予測される。そのため、干渉判定部57が干渉判定をスキップすることによって、今回の中間位置におけるモデル間距離の算出を省略することができる。
【0089】
干渉判定をスキップした後に、ステップsb1,sb2,sb3を経て再びステップsb4へ戻ってきた場合には、前の中間位置での余裕距離が記憶部52に記憶されていないので、干渉判定部57は、ステップsb5において、第1物体モデル71Aと新しい中間位置における第1装置モデル72Aとのモデル間距離を算出し、モデル間距離が第1安全閾値以下か否かを判定する。モデル間距離が第1安全閾値よりも大きい場合には、前述のように、干渉判定部57は、干渉の可能性がないと判定し、今回の中間位置を確定させ、今回の余裕距離を記憶部52に保存する。処理はステップsb1へ戻り、経路生成部56は、次の中間位置を生成する。
【0090】
物体から離れた開始位置からロボットアーム12の経路が生成される場合には、第1装置モデル72Aがいずれかの第1物体モデル71Aに接近するまでは、前述の処理が繰り返され、開始位置から目標位置に向かって中間位置、即ち、経路が順次生成されていく。やがて、第1装置モデル72Aが第1物体モデル71Aに接近すると、モデル間距離が第1安全閾値以下となり得る。図7は、第1装置モデル72Aが第1物体モデル71Aに接近した状態を示す模式図である。図7では、コンテナ91の第1物体モデル71A及びロボットアーム12の第1装置モデル72Aが示されている。
【0091】
尚、リンクごとにモデル間距離を求める例では、経路生成部56は、ステップsb4において、経路に対する干渉判定を省略するか、即ち、スキップするか否かをリンクごとに判定する。つまり、経路生成部56は、余裕距離が今回の中間位置への第1装置モデル72Aの移動量よりも大きいか否かを複数のリンクのそれぞれについて判定する。今回の中間位置への第1装置モデル72Aの移動量は、各リンクの最接近点の移動量である。全てのリンクにおいて余裕距離が第1装置モデル72Aの移動量よりも大きい場合には、ロボットアーム12の全体として干渉判定が省略、即ち、スキップされ、経路生成部56は、ステップsb13へ進む。一方、全てのリンクではなく一部のリンクにおいて余裕距離が第1装置モデル72Aの移動量よりも大きい場合には、経路生成部56は、ロボットアーム12の全体としての干渉判定は省略しない。この場合、経路生成部56は、干渉判定を省略するリンクを記憶部52に保存する。その後、ステップsb5において、干渉判定部57は、干渉判定を省略するリンクが記憶部52に保存されている場合には、そのリンクの干渉判定(即ち、モデル間距離の演算及びモデル間距離と安全閾値との比較等)を省略する。ロボットアーム12においては、リンクごとに可動範囲が異なるため、物体と干渉する可能性もリンクごとに異なる。そのため、モデル間距離が十分にあるために物体との干渉の可能性が低いリンクについては干渉判定が省略され、それ以外のリンクについてのみ干渉判定が行われる。これにより、モデル間距離の演算等の負荷が低減される。
【0092】
ステップsb5においてモデル間距離が第1安全閾値以下の場合には、干渉判定部57は、第1物体モデル71Aと第1装置モデル72Aとの干渉の可能性があると判定する。干渉判定部57は、第1物体モデル71A及び第1装置モデル72Aにおいて、それぞれの最接近点を含む所定の範囲の部分を注目部分として記憶部52に保存する。つまり、記憶部52には、第1物体モデル71Aにおける注目部分と第1装置モデル72Aにおける注目部分との1組の注目部分が保存される。最接近点は、干渉の可能性があると判定された部分とみなすことができる。尚、何れかの2点間の距離が第1安全閾値以下となる場合には、干渉判定部57は、第1物体モデル71A及び第1装置モデル72Aにおいて、距離が第1安全閾値以下である2点のそれぞれを含む所定の範囲の部分を1組の注目部分として記憶部52に保存する。
【0093】
リンクごとにモデル間距離を求める例では、干渉判定部57は、リンクごとにモデル間距離と第1安全閾値とを比較しているので、複数のリンクの少なくとも1つのリンクのモデル間距離が第1安全閾値以下の場合に、干渉の可能性があると判定する。そして、モデル間距離が第1安全閾値以下となるリンクの最接近点を含む所定の範囲の部分とそれに対応する、第1物体モデル71Aの最接近点を含む所定の範囲の部分とが1組の注目部分として記憶部52に保存される。このとき、モデル間距離が第1安全閾値以下となるリンクが複数存在する場合には、モデル間距離が第1安全閾値以下となる複数のリンクのそれぞれにおける最接近点を含む所定の範囲の部分とそれらに対応する第1物体モデル71Aの最接近点を含む所定の範囲の部分とが注目部分として記憶部52に保存される。つまり、複数組の注目部分が記憶部52に保存される。
【0094】
モデル間距離が第1安全閾値以下の場合には、干渉判定部57は、ステップsb6において、モデル間距離が干渉閾値以下か否かを判定する。干渉閾値は、第1安全閾値よりも小さい値である。干渉閾値は、第2物体モデル71B及び第2装置モデル72Bによる干渉判定、並びに、第3物体モデル71C及び第3装置モデル72Cによる干渉判定において用いられる干渉閾値と共通である。干渉閾値は、第3物体モデル71C及び第3装置モデル72Cの密度において第3物体モデル71Cと第3装置モデル72Cとが干渉すると推定できるモデル間距離である。
【0095】
モデル間距離が干渉閾値以下である場合には、干渉判定部57は、第1物体モデル71Aと第1装置モデル72Aとが干渉すると判定する。尚、何れかの2点間の距離が干渉閾値以下となる場合には、干渉判定部57は、全ての2点間の距離の演算が完了していなくても、モデル間距離が干渉閾値以下であると判定することができる。これにより、今回の中間位置、即ち、経路に対する干渉判定を終了する。
【0096】
経路生成部56は、ステップsb7において、ステップsb1において生成された中間位置を変更する。経路生成部56は、少なくとも装置モデル72が物体モデル71から遠ざかるような中間位置を再生成してもよい。その後、処理は、ステップsb2へ戻る。ステップsb2において、物体設定部54は、既に生成されている物体モデル71が第1物体モデル71Aである場合には、その第1物体モデル71Aをそのまま用いる。続くステップsb3において、装置設定部55は、変更後の中間位置に位置するロボットアーム12の第1装置モデル72Aを生成する。干渉判定部57は、ステップsb7の経路変更を経た後の最初のステップsb4においては、干渉判定をスキップしないと判定する。その後、干渉判定部57は、前述のように、モデル間距離が第1安全閾値以下であるかの判定を行い(ステップsb5)、必要であれば、モデル間距離が干渉閾値以下であるかの判定を行う(ステップsb6)。
【0097】
一方、モデル間距離が干渉閾値よりも大きい場合には、ステップsb8において、物体設定部54及び装置設定部55はそれぞれ、物体モデル71及び装置モデル72の密度を1段階だけ上昇させる。ステップsb8に至るのは、モデル間距離が干渉閾値よりも大きく且つ第1安全閾値以下の場合である。つまり、第1物体モデル71Aと第1装置モデル72Aとが干渉しているとも、干渉していないとも判定できず、干渉の可能性があるとしか判定できない場合である。そのため、干渉判定部57は、密度が1段階高い物体モデル71及び装置モデル72を用いてより詳細に干渉判定を行う。具体的には、物体設定部54は、第1物体モデル71Aをより密度が高い第2物体モデル71Bに変更し、装置設定部55は、第1装置モデル72Aをより密度が高い第2装置モデル72Bに変更する。尚、第2装置モデル72Bの位置は、第1装置モデル72Aの位置と同じである。図8は、図7における第1物体モデル71A及び第1装置モデル72Aが第2物体モデル71B及び第2装置モデル72Bに変更された状態を示す模式図である。
【0098】
このとき、物体設定部54は、物体モデル71のうち注目部分の点群の密度を高くする。物体モデル71の注目部分は、ステップsb5の干渉判定において干渉の可能性があると判定された部分である最接近点を含む部分であり、記憶部52に保存されている。この例では、物体設定部54は、図8に示すように、コンテナ91のうち注目部分である、壁の一部91aを第2密度の点群で形成し、それ以外の部分を第1密度の点群で形成している。
【0099】
同様に、装置設定部55は、装置モデル72のうち注目部分の点群の密度を高くする。装置モデル72の注目部分は、ステップsb5の干渉判定において干渉の可能性があると判定された部分である最接近点を含む部分であり、記憶部52に保存されている。図8の例では、装置設定部55は、ロボットアーム12のうち注目部分である、第4リンク12dの一部12fを第2密度の点群で形成し、それ以外の部分を第1密度の点群で形成している。
【0100】
尚、ロボットアーム12の複数のリンクにおいてモデル間距離が干渉閾値より大きく且つ第1安全閾値以下である場合には、物体設定部54は、物体モデル71のうち複数の注目部分の点群の密度を高くし、装置設定部55は、装置モデル72のうち複数の注目部分の点群の密度を高くする。
【0101】
そして、干渉判定部57は、ステップsb9において、第2物体モデル71Bと第2装置モデル72Bとのモデル間距離が第2安全閾値以下であるか否かを判定する。
【0102】
第2安全閾値は、第2物体モデル71B及び第2装置モデル72Bの密度において、第2物体モデル71Bと第2装置モデル72Bとが干渉しないと推定できるモデル間距離である。第2安全閾値は、第1安全閾値よりも小さい値であって、干渉閾値よりも大きい値である。つまり、第2安全閾値は、第1物体モデル71A及び第1装置モデル72Aよりも高い密度の第2物体モデル71B及び第2装置モデル72Bの干渉の可能性を判定するための閾値なので、より精細な判定を行うべく第1安全閾値よりも小さく設定されている。
【0103】
干渉判定部57は、第2物体モデル71Bに含まれる点と第2装置モデル72Bに含まれる点との2点間の距離を演算し、モデル間距離を求める。このとき、第2物体モデル71B及び第2装置モデル72Bに含まれる点のうち2点間の距離の演算が行われるのは、第2密度の点群、即ち、注目部分に含まれる点である。第2物体モデル71B及び第2装置モデル72Bに含まれる点のうち第2密度でない点群の点については2点間の距離の演算は行われない。第2物体モデル71B及び第2装置モデル72Bのうち注目部分は、干渉の可能性があると判定された部分であるためである。前述のような2点間の距離の演算を行うことによって、演算量を低減することができる。この例では、干渉判定部57は、第2物体モデル71Bのうちコンテナ91の壁の一部91aに含まれる点と第2装置モデル72Bのうち第4リンク12dの一部12fに含まれる点との2点間の距離を演算する。
【0104】
干渉判定部57は、第2物体モデル71B及び第2装置モデル72Bにおいて、それぞれの最接近点を含む所定の範囲の部分を注目部分として更新して、記憶部52に保存する。
【0105】
モデル間距離が第2安全閾値よりも大きい場合には、干渉判定部57は、第2物体モデル71Bと第2装置モデル72Bとの干渉の可能性がないと判定する。干渉の可能性がないと判定されると、今回の中間位置は、開始位置から目標位置までの間の一の中間位置、即ち、一の経路として確定される。このとき、干渉判定部57は、モデル間距離から第2安全閾値を減じた値を余裕距離とし、記憶部52に保存する。これにより、今回の中間位置、即ち、経路に対する干渉判定が完了する。
【0106】
その後、経路生成部56は、ステップsb13において、経路が目標位置に到達したか否かを判定する。経路が目標位置に到達した場合には、経路生成部56は、図5に示すロボットアーム12の動作制御のフロー(即ち、ステップS5)へ戻る。一方、経路が目標位置に到達していない場合には、経路生成部56は、ステップsb1へ戻り、次の中間位置を生成する。
【0107】
一方、モデル間距離が第2安全閾値以下の場合には、干渉判定部57は、第2物体モデル71Bと第2装置モデル72Bとの干渉の可能性があると判定する。尚、何れかの2点間の距離が第2安全閾値以下となる場合には、干渉判定部57は、全ての2点間の距離の演算が完了していなくても、モデル間距離が第2安全閾値以下であると判定することができる。そのような場合には、干渉判定部57は、第2物体モデル71B及び第2装置モデル72Bにおいて、距離が第2安全閾値以下である2点のそれぞれを含む所定の範囲の部分を注目部分として更新して記憶部52に保存する。
【0108】
モデル間距離が第2安全閾値以下の場合には、干渉判定部57は、ステップsb10において、モデル間距離が干渉閾値以下か否かを判定する。干渉閾値は、前述の如く、ステップsb6における判定の場合と同じ値である。
【0109】
モデル間距離が干渉閾値以下である場合には、干渉判定部57は、第2物体モデル71Bと第2装置モデル72Bとが干渉すると判定する。尚、何れかの2点間の距離が干渉閾値以下となる場合には、干渉判定部57は、全ての2点間の距離の演算が完了していなくても、モデル間距離が干渉閾値以下であると判定することができる。これにより、今回の中間位置、即ち、経路に対する干渉判定を終了する。
【0110】
経路生成部56は、ステップsb7において、ステップsb1において生成された中間位置を変更する。ステップsb7以降の処理は、第1物体モデル71A及び第1装置モデル72Aの干渉判定においてモデル間距離が干渉閾値以下であった場合と同様である。尚、ステップsb7の後はステップsb2,sb3へ戻るので、変更後の中間位置に対して、第1物体モデル71A及び第1装置モデル72Aから干渉判定が行われる。
【0111】
一方、モデル間距離が干渉閾値よりも大きい場合には、ステップsb11において、物体設定部54及び装置設定部55はそれぞれ、物体モデル71及び装置モデル72の密度を1段階だけ上昇させる。ステップsb11に至るのは、モデル間距離が干渉閾値よりも大きく且つ第2安全閾値以下の場合である。つまり、第2物体モデル71Bと第2装置モデル72Bとが干渉しているとも、干渉していないとも判定できず、干渉の可能性があるとしか判定できない場合である。そのため、干渉判定部57は、密度が1段階高い物体モデル71及び装置モデル72を用いて干渉判定を行う。具体的には、物体設定部54は、第2物体モデル71Bをより密度が高い第3物体モデル71Cに変更し、装置設定部55は、第2装置モデル72Bをより密度が高い第3装置モデル72Cに変更する。尚、第3装置モデル72Cの位置は、第2装置モデル72Bの位置と同じである。図9は、図8における第2物体モデル71B及び第2装置モデル72Bが第3物体モデル71C及び第3装置モデル72Cに変更された状態を示す模式図である。
【0112】
このとき、物体設定部54は、物体モデル71のうち注目部分の点群の密度を高くする。物体モデル71の注目部分は、ステップsb9の干渉判定において干渉の可能性があると判定された部分である最接近点を含む部分であり、記憶部52に保存されている。この例では、物体設定部54は、図9に示すように、コンテナ91のうち注目部分である、壁の一部91aを第3密度の点群で形成し、それ以外の部分を第1密度の点群で形成している。
【0113】
同様に、装置設定部55は、装置モデル72のうち注目部分の点群の密度を高くする。装置モデル72の注目部分は、ステップsb9の干渉判定において干渉の可能性があると判定された部分である最接近点を含む部分であり、記憶部52に保存されている。図9の例では、装置設定部55は、ロボットアーム12のうち注目部分である、第4リンク12dの一部12fを第3密度の点群で形成し、それ以外の部分を第1密度の点群で形成している。
【0114】
そして、干渉判定部57は、ステップsb12において、第3物体モデル71Cと第3装置モデル72Cとのモデル間距離が干渉閾値以下であるか否かを判定する。干渉閾値は、前述の如く、ステップsb6,sb10における判定の場合と同じ値である。
【0115】
干渉判定部57は、第3物体モデル71Cに含まれる点と第3装置モデル72Cに含まれる点との2点間の距離を演算し、モデル間距離を求める。このとき、第3物体モデル71C及び第3装置モデル72Cに含まれる点のうち2点間の距離の演算が行われるのは、第3密度の点群、即ち、注目部分に含まれる点である。第3物体モデル71C及び第3装置モデル72Cに含まれる点のうち第3密度でない点群の点については2点間の距離の演算は行われない。第3物体モデル71C及び第3装置モデル72Cのうち注目部分は、干渉の可能性があると判定された部分であるためである。前述のような2点間の距離の演算を行うことによって、演算量を低減することができる。この例では、干渉判定部57は、第3物体モデル71Cのうちコンテナ91の壁の一部91aに含まれる点と第3装置モデル72Cのうち第4リンク12dの一部12fに含まれる点との2点間の距離を演算する。
【0116】
干渉判定部57は、第3物体モデル71C及び第3装置モデル72Cにおいて、それぞれの最接近点を含む所定の範囲の部分を注目部分として更新して、記憶部52に保存する。
【0117】
モデル間距離が干渉閾値よりも大きい場合には、干渉判定部57は、第3物体モデル71Cと第3装置モデル72Cとの干渉の可能性がないと判定する。干渉の可能性がないと判定されると、今回の中間位置は、開始位置から目標位置までの間の一の中間位置、即ち、一の経路として確定される。このとき、干渉判定部57は、モデル間距離から干渉閾値を減じた値を余裕距離とし、記憶部52に保存する。これにより、今回の中間位置、即ち、経路に対する干渉判定が完了する。
【0118】
その後、経路生成部56は、ステップsb13において、経路が目標位置に到達したか否かを判定する。経路が目標位置に到達した場合には、経路生成部56は、図5に示すロボットアーム12の動作制御のフロー(即ち、ステップS5)へ戻る。一方、経路が目標位置に到達していない場合には、経路生成部56は、ステップsb1へ戻り、次の中間位置を生成する。
【0119】
一方、モデル間距離が干渉閾値以下である場合には、干渉判定部57は、第3物体モデル71Cと第3装置モデル72Cとが干渉すると判定する。尚、何れかの2点間の距離が干渉閾値以下となる場合には、干渉判定部57は、全ての2点間の距離の演算が完了していなくても、モデル間距離が干渉閾値以下であると判定することができる。これにより、今回の中間位置、即ち、経路に対する干渉判定を終了する。
【0120】
経路生成部56は、ステップsb7において、ステップsb1において生成された中間位置を変更する。ステップsb7以降の処理は、第1物体モデル71A及び第1装置モデル72Aの干渉判定においてモデル間距離が干渉閾値以下であった場合と同様である。尚、ステップsb7の後はステップsb2,sb3へ戻るので、変更後の中間位置に対して、第1物体モデル71A及び第1装置モデル72Aから干渉判定が行われる。
【0121】
このように、生成された中間位置、即ち、経路に対して密度の低い物体モデル71及び装置モデル72から順に干渉判定が行われる。具体的には、まず第1物体モデル71A及び第1装置モデル72Aを用いて、モデル間距離が第1安全閾値よりも大きいか、第1安全閾値以下で且つ干渉閾値よりも大きいか、又は、干渉閾値以下かが判定される。モデル間距離が第1安全閾値よりも大きい場合には、生成された経路では干渉の可能性がないと判定され、次の経路が生成される。モデル間距離が干渉閾値以下の場合には、生成された経路では干渉が生じると判定され、経路が変更される。モデル間距離が第1安全閾値以下で且つ干渉閾値よりも大きい場合には、干渉の可能性があると判定される。
【0122】
干渉の可能性があると判定された場合は、干渉の有無をより詳細に判定するために、密度が1段階高い物体モデル71及び装置モデル72を用いて干渉判定が行われる。つまり、第2物体モデル71B及び第2装置モデル72Bを用いて、モデル間距離が第2安全閾値よりも大きいか、第2安全閾値以下で且つ干渉閾値よりも大きいか、又は、干渉閾値以下かが判定される。モデル間距離が第2安全閾値よりも大きい場合には、生成された経路では干渉の可能性がないと判定され、次の経路が生成される。モデル間距離が干渉閾値以下の場合には、生成された経路では干渉が生じると判定され、経路が変更される。モデル間距離が第2安全閾値以下で且つ干渉閾値よりも大きい場合には、干渉の可能性があると判定される。
【0123】
干渉の可能性があると判定された場合、干渉の有無をより詳細に判定するために、密度がさらに1段階高い物体モデル71及び装置モデル72を用いて干渉判定が行われる。つまり、第3物体モデル71C及び第3装置モデル72Cを用いて、モデル間距離が干渉閾値よりも大きいか、又は、干渉閾値以下かが判定される。第3物体モデル71C及び第3装置モデル72Cは、最も密度が高いモデルなので、モデル間距離が干渉閾値以下か否かだけが判定される。モデル間距離が干渉閾値よりも大きい場合には、生成された経路では干渉の可能性がないと判定され、次の経路が生成される。モデル間距離が干渉閾値以下の場合には、生成された経路では干渉が生じると判定され、経路が変更される。
【0124】
このような干渉判定は、物体モデル71と装置モデル72とのモデル間距離に基づいて行われる。モデル間距離は、物体モデル71に含まれる点と装置モデル72に含まれる点との距離を演算することによって求められる。そのため、点群モデルに含まれる点の個数が増えるほど演算量が増大し、演算時間が長くなる。
【0125】
それに対し、経路生成装置3は、生成された経路に対して密度が低い第1物体モデル71A及び第1装置モデル72Aを用いて干渉判定を行い、干渉の可能性が無ければ干渉判定を終了して経路を確定し、干渉の可能性があると判定された場合には密度が高い第2物体モデル71B及び第2装置モデル72Bに変更して再び干渉判定を行う。これによれば、密度の低い物体モデル71及び装置モデル72から順に用いて干渉判定が行われるため、密度の低い第1物体モデル71A及び第1装置モデル72Aを用いた干渉判定によって干渉の有無がわかると、第1物体モデル71Aに含まれる点と第1装置モデル72Aに含まれる点との距離の演算量が低減される。その一方で、密度の低い物体モデル71を用いると、干渉判定の精度が低下する。それに対し、経路生成装置3は、第1物体モデル71A及び第1装置モデル72Aを用いた干渉判定によって干渉の有無が判定できない場合には、干渉の可能性ありと判定して、第1物体モデル71A及び第1装置モデル72Aから密度が高い第2物体モデル71B及び第2装置モデル72Bに変更して再び干渉判定を行う。より密度が高い第2物体モデル71B及び第2装置モデル72Bを用いることによってより高い精度で干渉判定を行うことができる。このように、経路生成装置3の干渉判定によれば、干渉判定の時間の短縮と精度の向上とを両立させることができる。
【0126】
この例では、経路生成装置3は、物体モデル71の密度を3段階に設定している。具体的には、経路生成装置3は、密度の異なる第1物体モデル71A、第2物体モデル71B及び第3物体モデル71C、並びに、第1装置モデル72A、第2装置モデル72B及び第3装置モデル72Cを密度の低い順に用いて干渉判定を行う。これにより、干渉判定の時間の短縮と精度の向上とのバランスを段階的に取ることができる。
【0127】
それに加えて、経路生成装置3においては、物体モデル71及び装置モデル72の両方が点群モデルで形成される。これにより、物体モデル71と装置モデル72との距離の演算は、2点間の距離の演算になる。その結果、物体モデル71と装置モデル72との距離の演算が単純化される。
【0128】
さらに、経路生成装置3は、装置モデル72の密度を物体モデル71の密度に合わせて変更する。具体的には、装置モデル72は、順番に高くなる第1密度、第2密度及び第3密度の点群モデルによって形成され得る。演算量の低減を優先すべく第1物体モデル71Aを用いて干渉判定が行われるときには、最高密度が第1密度の第1装置モデル72Aが用いられる。密度が最も低い第1物体モデル71Aが用いられることに加え、密度が最も低い第1装置モデル72Aが用いられることによって、第1物体モデル71Aに含まれる点と第1装置モデル72Aに含まれる点との2点間の距離の演算量を低減することができる。干渉判定の精度の向上を優先すべく第3物体モデル71Cを用いて干渉判定が行われるときには、最高密度が第3密度の第3装置モデル72Cが用いられる。密度が最も高い第3物体モデル71Cが用いられることに加え、密度が最も高い第3装置モデル72Cが用いられることによって、第3物体モデル71Cと第3装置モデル72Cとの干渉をより高精度に判定することができる。演算量の低減と干渉判定の精度の向上とのバランスを取るべく第2物体モデル71Bを用いて干渉判定が行われるときには、最高密度が第2密度の第2装置モデル72Bが用いられる。密度が中間の第2物体モデル71Bが用いられることに加え、密度が中間の第2装置モデル72Bが用いられることによって、演算負荷を低減しつつ干渉判定の精度を向上させることができる。このように、装置モデル72の密度の増減の傾向と物体モデル71の密度の増減の傾向とを一致させることによって、干渉判定の時間の短縮と精度の向上とを両立が実現しやすくなる。
【0129】
以上のように、ロボットアーム12(動作装置)の経路を生成する経路生成装置3は、ロボットアーム12が配置された配置空間に含まれる物体のモデルである物体モデル71を設定する物体設定部54と、配置空間におけるロボットアーム12のモデルである装置モデル72を設定する装置設定部55と、ロボットアーム12の経路を段階的に生成する経路生成部56と、物体モデル71と装置モデル72との距離に基づいて、物体モデル71と経路に沿って移動した後の装置モデル72との干渉判定を行う干渉判定部57とを備え、物体モデル71及び装置モデル72の少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると干渉判定部57によって判定された場合には、物体設定部54及び装置設定部55の少なくとも一方は、点群モデルの点群の密度を高くし、干渉判定部57は、点群の密度が高くなった点群モデルを用いて干渉判定を再び行い、経路生成部56は、干渉の可能性がないと干渉判定部57によって判定された場合には次の経路を生成する。
【0130】
換言すると、ロボットアーム12(動作装置)の経路を生成する経路生成方法は、ロボットアーム12が配置された配置空間に含まれる物体のモデルである物体モデル71を設定することと、配置空間におけるロボットアーム12のモデルである装置モデル72を設定することと、ロボットアーム12の経路を段階的に生成することと、物体モデル71と装置モデル72との距離に基づいて、物体モデル71と経路に沿って移動した後の装置モデル72との干渉判定を行うこととを含み、物体モデル71及び装置モデル72の少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると干渉判定によって判定された場合には、物体モデル71を設定すること及び装置モデル72を設定することの少なくとも一方において、点群モデルの点群の密度を高くし、干渉判定を行うことにおいて、点群の密度が高くなった点群モデルを用いて干渉判定を再び行い、経路を生成することにおいては、干渉の可能性がないと干渉判定によって判定された場合には次の経路を生成する。
【0131】
また、経路生成プログラム62は、ロボットアーム12(動作装置)の動作を生成するためにコンピュータに、ロボットアーム12が配置された配置空間に含まれる物体のモデルである物体モデル71を設定する機能と、配置空間におけるロボットアーム12のモデルである装置モデル72を設定する機能と、ロボットアーム12の経路を段階的に生成する機能と、物体モデル71と装置モデル72との距離に基づいて、物体モデル71と経路に沿って移動した後の装置モデル72との干渉判定を行う機能とを実現させ、物体モデル71及び装置モデル72の少なくとも一方は、点群で形成された点群モデルであり、干渉の可能性があると干渉判定によって判定された場合には、物体モデル71を設定する機能及び装置モデル72を設定する機能の少なくとも一方は、点群モデルの点群の密度を高くし、干渉判定を行う機能は、点群の密度が高くなった点群モデルを用いて干渉判定を再び行い、経路を生成する機能は、干渉の可能性がないと前記干渉判定によって判定された場合には次の経路を生成する。
【0132】
これらの構成によれば、ロボットアーム12の経路が段階的に生成される。経路が生成されると、物体モデル71と経路に沿って移動した後の装置モデル72との干渉判定が行われる。干渉判定は、物体モデル71と装置モデル72との距離に基づいて行われる。このとき、物体モデル71及び装置モデル72の少なくとも一方は、点群モデルである。干渉判定の結果、干渉の可能性があると判定された場合には、点群モデルの点群の密度が高くされ、干渉判定が再び行われる。干渉の可能性がないと判定された場合には、次の経路が生成される。このように、まずは密度の比較的低い点群モデルを用いて干渉判定が行われる。干渉判定は物体モデル71と装置モデル72との距離に基づいて行われるため、密度の低い点群モデルを用いた干渉判定では距離の演算負荷が小さい。密度の低い点群モデルを用いた干渉判定において干渉の可能性がないと判定される場合もあり、そのような場合には距離の演算負荷が低減される。一方、密度の低い点群モデルを用いた干渉判定において干渉の可能性があると判定された場合には、密度の高い点群モデルを用いて干渉判定が再び行われる。点群モデルの密度が高くなることによって、干渉の有無をより詳細に判定することができる。その結果、距離の演算負荷の低減と干渉判定の精度の向上とを両立させることができる。
【0133】
尚、物体モデル71及び装置モデル72の少なくとも一方が点群モデルであるので、物体モデル71及び装置モデル72の両方が点群モデルであってもよいし、物体モデル71だけが点群モデルであってもよいし、装置モデル72だけが点群モデルであってもよい。
【0134】
物体設定部54及び装置設定部55の少なくとも一方は、干渉の可能性があると干渉判定部57によって判定された場合には、干渉判定において干渉の可能性があると判定された部分を含む、点群モデルの一部の点群の密度を高くする。
【0135】
この構成によれば、物体設定部54及び装置設定部55の少なくとも一方、即ち、物体設定部54及び装置設定部55のうち点群モデルを設定する方は、干渉の可能性があると判定された場合には、点群モデルの全部の点群の密度を高くするのではなく、干渉判定において干渉の可能性があると判定された部分を含む、点群モデルの一部の点群の密度を高くする。これにより、物体設定部54及び装置設定部55の少なくとも一方が点群モデルの密度を高くする際の処理量を低減することができる。
【0136】
また、干渉判定部57は、物体モデル71と装置モデル72との最短距離であるモデル間距離が所定の安全閾値以下の場合に、干渉の可能性があると判定し、モデル間距離が安全閾値よりも大きい場合に、干渉の可能性がないと判定する。
【0137】
この構成によれば、物体モデル71と装置モデル72とのモデル間距離が安全閾値以下か否かによって干渉の可能性の有無が判定される。
【0138】
さらに、干渉判定部57は、モデル間距離が安全閾値よりも小さな干渉閾値以下の場合に、干渉すると判定し、経路生成部56は、干渉すると干渉判定部57によって判定された場合には経路を変更する。
【0139】
この構成によれば、干渉判定部57は、モデル間距離に基づいて、干渉の可能性なし、干渉の可能性あり、及び、干渉するの3つの状態を判定する。具体的には、モデル間距離が安全閾値よりも大きい場合には、干渉の可能性がないと判定され、モデル間距離が安全閾値以下であって且つ干渉閾値よりも大きい場合には、干渉の可能性があると判定され、モデル間距離が干渉閾値以下の場合には、干渉すると判定される。
【0140】
尚、干渉の可能性がないと判定された場合には次の経路が生成され、干渉すると判定された場合には経路が変更され、干渉の可能性があると判定された場合には密度のより高い点群モデルを用いて干渉判定が再度行われる。このような処理が繰り返されることによって、経路が段階的に生成される。
【0141】
安全閾値は、点群モデルの点群の密度が高いほど小さくなるように設定される。
【0142】
この構成によれば、点群モデルの点群の密度に応じた適切な安全閾値を用いて干渉判定を行うことができる。つまり、点群モデルの密度が低い場合には、点群モデルが精細ではなく、このときには安全閾値が比較的大きく設定される。これにより、干渉するにもかかわらず、干渉しないと誤判定してしまうことを防止することができる。一方、点群モデルの密度が高い場合には、点群モデルが精細であり、このときには安全閾値が比較的小さく設定される。点群モデルが精細なので、安全閾値を比較的小さくしても、干渉の可能性の有無を正確に判定することができる。
【0143】
また、動作装置としてのロボットアーム12は、複数のリンクと、複数のリンクを連結する複数の関節とを有し、干渉判定部57は、複数のリンクのそれぞれについてモデル間距離を求め、複数のリンクの少なくとも1つのリンクのモデル間距離が安全閾値以下の場合に、干渉の可能性があると判定し、複数のリンクの全てのリンクのモデル間距離が安全閾値よりも大きい場合に、干渉の可能性がないと判定する。
【0144】
この構成によれば、ロボットアーム12のリンクごとにモデル間距離が求められ、リンクごとにモデル間距離と安全閾値との比較が行われ、リンクごとに干渉の可能性の有無が判定される。
【0145】
さらに、干渉判定部57は、複数のリンクのうちロボットアーム12の先端側のリンクから順に、モデル間距離を求め、求められたモデル間距離と安全閾値とを比較する。
【0146】
この構成によれば、ロボットアーム12の先端側に位置するリンクから順に、干渉の可能性の有無が判定される。ロボットアーム12においては、先端側のリンクほど可動範囲が大きいので、先端側のリンクほど物体との干渉の可能性が高い。干渉判定部57は、モデル間距離が安全閾値以下のリンクが1つでもあれば、干渉の可能性があると判定する。つまり、複数のリンクにおいてモデル間距離が安全閾値以下のリンクが1つでも見つかれば、残りのリンクについてはモデル間距離の演算等を省略することができる。先端側のリンクから順に干渉の可能性の有無を判定することによって、干渉の可能性があるリンクを早期に発見することができ、モデル間距離の演算等の負荷を低減できる可能性が高まる。
【0147】
また、干渉判定部57は、干渉の可能性がないと判定した場合、モデル間距離から安全閾値を減じた値である余裕距離を求め、経路生成部56は、経路を生成する場合、今回の経路に繋がる前の経路の余裕距離が今回の経路の装置モデル72の移動量よりも大きいときには、今回の経路に対する干渉判定を省略する。
【0148】
この構成によれば、経路生成部56が新たな経路を生成したときに、その経路に沿った装置モデル72の移動量よりも前の経路に対する干渉判定における余裕距離が大きいときには、今回の経路に対して干渉判定を省略して次の経路を生成する。今回の経路に沿って装置モデル72が移動しても、物体モデル71と装置モデル72とのモデル間距離は安全閾値よりも大きくなる可能性が高い。これにより、干渉判定がスキップされるので、干渉判定に関する演算負荷が低減され、全体的な処理が簡略化される。
【0149】
さらに、動作装置としてのロボットアーム12は、複数のリンクと、複数のリンクを連結する複数の関節とを有し、干渉判定部57は、複数のリンクのそれぞれについてモデル間距離を求め、複数のリンクの少なくとも1つのリンクのモデル間距離が所定の安全閾値以下の場合に、干渉の可能性があると判定し、複数のリンクの全てのリンクのモデル間距離が安全閾値よりも大きい場合に、干渉の可能性がないと判定し、複数のリンクのそれぞれについて余裕距離を求め、経路生成部56は、経路を生成する場合、今回の経路に対する干渉判定を省略するか否かを複数のリンクごとに判定する。
【0150】
この構成によれば、干渉判定に関する演算負荷をより低減することができる。つまり、動作装置としてのロボットアーム12の全体で干渉判定を省略するか否かが判定される構成では、ロボットアーム12に干渉判定を省略可能なリンクが含まれていても干渉判定を省略可能でないリンクが含まれていれば、ロボットアーム12としては干渉判定を省略しない。一方、リンクごとに干渉判定を省略するかが判定される構成では、ロボットアーム12に干渉判定を省略可能なリンクと干渉判定を省略可能でないリンクとが含まれている場合に、干渉判定を省略可能なリンクの干渉判定を省略し、干渉判定を省略可能できないリンクだけを干渉判定することができる。これにより、干渉判定に関する演算負荷をより低減することができる。
【0151】
また、物体モデル71及び装置モデル72のうち少なくとも物体モデル71は、点群モデルである。
【0152】
この構成によれば、配置空間における未知な物体に対しても点群モデルを用いた干渉判定を容易に実現できる。詳しくは、通常、装置モデル72を点群モデルで形成する場合は、装置モデル72の点群データを予め準備、即ち、保存しておくことが多い。そのため、装置モデル72を点群モデルで形成する場合には、点群データを予め準備しておく必要がある。それに対し、配置空間における物体の情報は、通常、三次元ビジョンセンサ4等の物体情報を取得する装置によって取得されることが多い。このような装置によれば、物体の点群データを容易に取得することができる。そのため、装置モデル72を点群モデルで形成する場合には、点群データを予め準備しおく必要がなく、その場で三次元ビジョンセンサ4等によって点群データを取得することができる。これにより、未知な物体に対しても点群モデルを用いた干渉判定を容易に実現できる。
【0153】
さらに、物体モデル71及び装置モデル72は両方とも、点群モデルである。
【0154】
この構成によれば、物体モデル71と装置モデル72との距離は、物体モデル71に含まれる点と装置モデル72に含まれる点との距離になる。つまり、距離の演算は、2点間の距離の演算となり、演算自体は簡単となる。その一方で、物体モデル71及び装置モデル72に含まれる点の個数が増加すると、演算負荷が増大する。それに対し、前述のように、密度の低い点群モデルから順番に用いて干渉判定を行うことによって、演算負荷が低減される。
【0155】
さらに、干渉の可能性があると干渉判定部57によって判定された場合には、物体設定部54は、物体モデル71の点群の密度を高くし、装置設定部55は、装置モデル72の点群の密度を高くし、干渉判定部57は、点群の密度が高くなった装置モデル72と点群の密度が高くなった物体モデル71との干渉判定を行う。
【0156】
この構成によれば、干渉判定において干渉の可能性があると判定された場合には、物体モデル71及び装置モデル72の両方の点群の密度が高くされる。つまり、演算負荷の低減を図るために物体モデル71の密度が低ときには装置モデル72の密度も低いので、演算負荷の低減が促進される。一方、干渉判定の精度の向上を図るために物体モデル71密度が高いときには装置モデル72の密度も高いので、干渉判定の精度の向上が促進される。
【0157】
また、物体設定部54は、干渉判定において干渉の可能性があると判定された部分を含む、物体モデル71の一部の点群の密度を高くし、装置設定部55は、干渉判定において干渉の可能性があると判定された部分を含む、装置モデル72の一部の点群の密度を高くする。
【0158】
この構成によれば、物体設定部54は、干渉の可能性があると判定された場合には、物体モデル71の全部の点群の密度を高くするのではなく、干渉判定において干渉の可能性があると判定された部分を含む、物体モデル71の一部の点群の密度を高くする。これにより、物体設定部54が物体モデル71の密度を高くする際の処理量を低減することができる。同様に、装置設定部55は、干渉の可能性があると判定された場合には、装置モデル72の全部の点群の密度を高くするのではなく、干渉判定において干渉の可能性があると判定された部分を含む、装置モデル72の一部の点群の密度を高くする。これにより、装置設定部55が装置モデル72の密度を高くする際の処理量を低減することができる。
【0159】
《その他の実施形態》
以上のように、本出願において開示する技術の例示として、前記実施形態を説明した。しかしながら、本開示における技術は、これに限定されず、適宜、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、前記実施形態で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。また、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、前記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
【0160】
例えば、動作装置は、ロボットアーム12及びロボット1に限定されない。動作を行う装置であれば、任意の装置が動作装置の対象となり得る。例えば、動作装置は、自走式のロボットなど、ロボットアームを備えないロボットであってもよい。また、動作装置は、ドローン等の移動体であってもよい。また、ロボット1は、産業用ロボットに限定されない。
【0161】
また、動作装置は、ロボットアーム12ではなく、ハンド14の指14aであってもよい。
【0162】
物体設定部54が生成する物体モデル71の基となる点群データは、三次元ビジョンセンサ4から出力される点群データに限定されない。物体設定部54は、例えば、RGB-Dカメラから出力されるRGB-D画像から点群データを生成してもよい。また、物体設定部54は、RGB-D画像の他に、ステレオカメラから出力されるRGB画像から点群データを生成してもよいし、デプス画像、ボクセル等に基づいて点群データを生成してもよい。
【0163】
さらには、物体設定部54は、センサやカメラ等のような装置から出力されるデータに基づいて点群データを生成する構成に限定されず、予め取得され、記憶部52又は他の装置に記憶されている点群データに基づいて物体モデル71を生成してもよい。
【0164】
物体モデル71及び装置モデル72の一方は、点群モデルでなくてもよい。例えば、物体設定部54は、物体モデル71を点群モデルで生成する一方、装置設定部55は、装置モデル72を点群モデル以外のモデルによって生成してもよい。逆に、物体設定部54は、物体モデル71を点群モデル以外のモデルによって生成する一方、装置設定部55は、装置モデル72を点群モデルで生成してもよい。点群モデル以外のモデルの例としては、装置モデル72が点群モデル以外のモデルである場合、装置設定部55は、実際の動作装置(この例では、ロボットアーム12)と同様の外表面を有する装置モデル72を生成してもよい。あるいは、装置設定部55は、実際の動作装置の外形を円柱や多角形に近似して形成した装置モデル72、又は、ポリゴンで形成した装置モデル72等であってもよい。この場合、物体モデルに含まれる点と装置モデルとの距離は、物体モデルに含まれる点と装置モデル72を形成する面までの距離となる。物体設定部54が点群モデル以外のモデルを生成する場合も同様である。
【0165】
物体設定部54は、物体モデル71の密度を3段階で変更しているが、これに限定されるものではない。物体設定部54は、物体モデル71の密度を2段階、又は、4段階以上に変更してもよい。物体設定部54は、物体モデル71の密度を変更する場合に、物体モデル71のうち注目部分を含む一部だけの密度ではなく、物体モデル71の全体の密度を変更してもよい。
【0166】
装置設定部55は、装置モデル72の密度を3段階で変更しているが、これに限定されるものではない。装置設定部55は、装置モデル72の密度を2段階、又は、4段階以上に変更してもよい。また、装置モデル72の第1密度、第2密度及び第3密度はそれぞれ、物体モデル71の第1密度、第2密度及び第3密度と同程度でなくてもよい。装置設定部55は、装置モデル72の密度を変更する場合に、装置モデル72のうち注目部分を含むリンクだけの密度ではなく、装置モデル72の全体、即ち、ロボットアーム12の全体の密度を変更してもよい。あるいは、装置設定部55は、装置モデル72の密度を変更する場合に、注目部分を含むリンクの全体の密度ではなく、注目部分を含むリンクのうち注目部分を含む一部だけの密度を変更してもよい。
【0167】
また、干渉判定において干渉の可能性があると判定された場合には、少なくとも物体モデル71の密度が変更されればよく、装置モデル72の密度の変更は必須ではない。
【0168】
動作装置の経路は、前述のピックアンドプレース動作における経路に限定されない。本技術は、動作装置の様々な動作における経路の生成に適用することができる。
【0169】
経路の開始位置は、エンコーダ15aの検出結果によって取得されているが、これに限定されない。目標位置は、三次元ビジョンセンサ4からの空間情報を画像認識技術によって画像認識することによって取得されているが、これに限定されない。開始位置又は目標位置は、外部からの入力を受け付けることによって、制御部51が取得してもよい。例えば、制御装置5がタッチパネル等の操作入力部を有し、タッチパネルに表示された配置空間の画像からユーザが開始位置及び/又は目標位置を選択してもよい。あるいは、開始位置及び/又は目標位置は、予め決められ、記憶部52等に記憶されていてもよい。
【0170】
安全閾値は、物体モデル71の点群の密度が高いほど小さくなるように設定されているが、これに限定されない。つまり、第1安全閾値は、第2安全閾値よりも大きいことは必須ではない。例えば、第1安全閾値と第2安全閾値とは、同じ値であってもよい。
【0171】
干渉閾値は、異なる密度の物体モデル71の干渉判定において同じ値であるが、これに限定されない。例えば、干渉閾値は、物体モデル71の点群の密度が高いほど小さくなるように設定されてもよい。
【0172】
前述の経路生成処理のステップsb4のスキップにおいては、余裕距離が今回の中間位置への第1装置モデル72Aの移動量よりも大きい場合には、干渉判定をスキップしている。この今回の中間位置への第1装置モデル72Aの移動量は、第1装置モデル72Aが前の中間位置から今回の中間位置へ移動するときの、前の第1装置モデル72Aの最接近点の移動量であるが、これに限定されない。このスキップの判定における第1装置モデル72Aの移動量は、第1装置モデル72Aの各部(例えば、複数の関節及びハンド14の指先)のうちの最大移動量を用いてもよい。あるいは、中間位置を生成するルールとして、装置モデル72の各部(複数の関節及びハンド14の指先)のそれぞれの移動量の上限値が設定されている場合には、該上限値を用いてもよい。
【0173】
また、ステップsb4の干渉判定のスキップは、次の中間位置に対してだけでなく、次回以降の複数の中間位置の干渉判定をスキップしてもよい。例えば、余裕距離が次回以降の複数の中間位置への第1装置モデル72Aの移動量よりも大きい場合には、それら複数の中間位置に対する干渉判定をスキップしてもよい。
【0174】
尚、ステップsb4の干渉判定のスキップの処理は省略されてもよい。
【0175】
前述の経路生成処理において、物体モデル71の密度が2段階に変更される場合には、ステップsb9,sb11,sb12が省略される。つまり、第2物体モデル71Bと第2装置モデル72Bとのモデル間距離が干渉閾値以下か否かが判定される。モデル間距離が第2安全閾値以下か否かは判定されない。モデル間距離が干渉閾値以下の場合には、ステップsb7において中間位置が変更される。モデル間距離が干渉閾値よりも大きい場合には、ステップsb13において目標位置に到達したか否かが判定される。
【0176】
また、経路生成処理において、物体モデル71の密度が4段階以上に変更される場合には、第3物体モデル71C及び第3装置モデル72Cの干渉判定においても、モデル間距離が干渉閾値以下か否かの判定の前に、モデル間距離が安全閾値、即ち、第3安全閾値以下か否かの判定がされる。そして、最高密度の物体モデル71と装置モデル72との干渉判定においては、モデル間距離が安全閾値以下か否かの判定が行われず、モデル間距離が干渉閾値か否かの判定が行われる。
【0177】
前述のフローチャートでは、制御装置5は、開始位置から目標位置までの段階的な経路を全て生成してからロボットアーム12の移動を開始しているが、これに限定されない。制御装置5は、開始位置から目標位置まで段階的に生成される経路の1つ1つが生成され確定したごとにロボットアーム12をその経路に沿って移動させてもよい。
【0178】
また、前述のフローチャートでは、所期の処理を実現できる限り、ステップの順番を入れ替えたり、複数のステップを並行に処理したり、ステップを省略したり、ステップを追加したりしてもよい。
【0179】
本明細書で開示する要素の機能は、開示された機能を実行するよう構成またはプログラムされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(Application Specific Integrated Circuits)、従来の回路、および/または、それらの組み合わせ、を含む回路または処理回路を使用して実行できる。プロセッサは、トランジスタやその他の回路を含むため、処理回路または回路と見なされる。本開示において、回路、ユニット、または手段は、列挙された機能を実行するハードウェアであるか、または、列挙された機能を実行するようにプログラムされたハードウェアである。ハードウェアは、本明細書に開示されているハードウェアであってもよいし、あるいは、列挙された機能を実行するようにプログラムまたは構成されているその他の既知のハードウェアであってもよい。ハードウェアが回路の一種と考えられるプロセッサである場合、回路、手段、またはユニットはハードウェアとソフトウェアの組み合わせであり、ソフトウェアはハードウェアおよび/またはプロセッサの構成に使用される。
【符号の説明】
【0180】
100 ロボットシステム
1 ロボット
12 ロボットアーム(動作装置)
3 経路生成装置
54 物体設定部
55 装置設定部
56 経路生成部
57 干渉判定部
62 経路生成プログラム
71 物体モデル
72 装置モデル
図1
図2
図3
図4
図5
図6
図7
図8
図9