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

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

▶ 国立大学法人 岡山大学の特許一覧 ▶ 技術研究組合産業用ロボット次世代基礎技術研究機構の特許一覧

特開2023-167644ロボット制御システム、ロボット制御方法、およびコンピュータプログラム
<>
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図1
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図2
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図3
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図4
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図5
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図6
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図7
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図8
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図9
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図10
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図11
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図12
  • 特開-ロボット制御システム、ロボット制御方法、およびコンピュータプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167644
(43)【公開日】2023-11-24
(54)【発明の名称】ロボット制御システム、ロボット制御方法、およびコンピュータプログラム
(51)【国際特許分類】
   B25J 19/06 20060101AFI20231116BHJP
   B25J 9/16 20060101ALI20231116BHJP
【FI】
B25J19/06
B25J9/16
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022078972
(22)【出願日】2022-05-12
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】504147243
【氏名又は名称】国立大学法人 岡山大学
(71)【出願人】
【識別番号】521432650
【氏名又は名称】技術研究組合産業用ロボット次世代基礎技術研究機構
(74)【代理人】
【識別番号】100125117
【弁理士】
【氏名又は名称】坂田 泰弘
(74)【代理人】
【識別番号】100086933
【弁理士】
【氏名又は名称】久保 幸雄
(72)【発明者】
【氏名】川部 知也
(72)【発明者】
【氏名】西 竜志
(72)【発明者】
【氏名】馬場 裕康
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS01
3C707AS06
3C707BS12
3C707BT05
3C707CT05
3C707CV08
3C707CW08
3C707CX01
3C707CX03
3C707CY01
3C707DS01
3C707ES01
3C707JS02
3C707JS07
3C707KV01
3C707LV02
3C707LV12
3C707LV13
3C707LV14
3C707LW12
3C707MS08
3C707MT06
(57)【要約】
【課題】ロボット同士の衝突を従来よりも柔軟に回避しながら最適性をある程度保つ軌道の生成をできるようにする。
【解決手段】複数の行動それぞれについて第一のロボットのツールと第二のロボットとの衝突を回避する適格性を表わすテーブルを、強化学習アルゴリズムに基づく学習処理を実行することによって学習する機械学習部407と、複数の行動のうちのツールと第二のロボットとが接近している際に衝突を回避するのに最適である適格行動をモデルに基づいて推論する最適経路推論部408と、ツールと第二のロボットとが接近していない場合に、第一の標準経路51に沿ってツールが移動するように第一のロボットを制御し、ツールと第二のロボットとが接近している場合に、最適経路推論部408によって推論された適格行動を実行するように第一のロボット3Aを制御する、ロボット制御部404と、をサーバ2に設ける。
【選択図】図4
【特許請求の範囲】
【請求項1】
複数の行動それぞれについてロボットの全部分または一部分である移動対象と物体との衝突を回避する適格性を表わすモデルを、強化学習アルゴリズムに基づく学習処理を実行することによって学習する学習手段と、
前記複数の行動のうちの前記移動対象と前記物体とが接近している際に前記衝突を回避するのに最適である適格行動を前記モデルに基づいて推論する推論手段と、
前記移動対象と前記物体とが接近していない場合に、予め算出された経路に沿って前記移動対象が移動するように前記ロボットを制御し、前記移動対象と前記物体とが接近している場合に、前記推論手段によって推論された前記適格行動を実行するように前記ロボットを制御する、制御手段と、
を有することを特徴とするロボット制御システム。
【請求項2】
前記複数の行動のそれぞれは、互いに異なる方向への移動または停止である、
請求項1に記載のロボット制御システム。
【請求項3】
前記学習手段は、前記移動対象と前記物体とが接近している場合に、前記学習処理を実行する、
請求項1または請求項2に記載のロボット制御システム。
【請求項4】
前記モデルは、前記移動対象と前記物体との位置関係の複数の状態それぞれについて前記複数の行動それぞれのQ値を前記適格性として表わし、
前記学習手段は、前記ロボットと前記物体とが接近し、かつ、前記複数の状態のうちの前記ロボットと前記物体とのカレントの状態について前記Q値が未だ学習されていない場合に、Q学習アルゴリズムを前記強化学習アルゴリズムとして用いて前記学習処理を実行する、
請求項1または請求項2に記載のロボット制御システム。
【請求項5】
前記移動対象と前記物体とが接近しているか否かを判別する判別手段、を有し、
前記移動対象は、前記ロボットのアームおよび前記アームの先端に設けられるツールであり、
前記判別手段は、前記ツールの周囲の所定の領域に前記物体が存在すれば前記移動対象と前記物体とが接近していると判別し、存在しなければ接近していないと判別する、
請求項4に記載のロボット制御システム。
【請求項6】
前記所定の領域は、前記ツールを包含する第一の領域と前記第一の領域を囲う複数の第二の領域とを有し、
前記複数の状態のそれぞれは、前記第一の領域および前記複数の第二の領域それぞれが前記物体と交わっているか否かである、
請求項5に記載のロボット制御システム。
【請求項7】
前記複数の行動のそれぞれは、前記第一の領域および前記複数の第二の領域のうちのいずれかの方向への移動または停止である、
請求項6に記載のロボット制御システム。
【請求項8】
前記物体は、前記ロボットと協同して作業を行う第二のロボットであり、
判別手段は、前記移動対象と前記第二のロボットとが接近しているか否かを、前記第二のロボットの予め算出された第二の経路に基づいて判別する、
請求項5に記載のロボット制御システム。
【請求項9】
強化学習アルゴリズムに基づいて学習された、複数の行動それぞれについてロボットの全部分または一部分である移動対象と物体との衝突を回避する適格性を表わすモデルに基づいて、前記複数の行動のうちの前記移動対象と前記物体とが接近している際に前記衝突を回避するのに最適である適格行動を推論する推論手段と、
前記移動対象と前記物体とが接近していない場合に、予め算出された経路に沿って前記移動対象が移動するように前記ロボットを制御し、前記移動対象と前記物体とが接近している場合に、前記推論手段によって推論された前記適格行動を実行するように前記ロボットを制御する、制御手段と、
を有することを特徴とするロボット制御システム。
【請求項10】
ロボットの全部分または一部分である移動対象と物体とが接近していない場合に、予め算出された経路に沿って前記移動対象が移動するように前記ロボットを制御し、
前記移動対象と前記物体とが接近している場合に、複数の行動それぞれについて前記移動対象と物体との衝突を回避する適格性を表わすモデルを、強化学習アルゴリズムに基づく機械学習によって学習し、前記複数の行動の中から前記移動対象と前記物体とが接近している際に前記衝突を回避するのに最適である適格行動を前記モデルに基づいて推論し、推論した前記適格行動を実行するように前記ロボットを制御する、
ことを特徴とするロボット制御方法。
【請求項11】
ロボットを制御するコンピュータに用いられるコンピュータプログラムであって、
前記コンピュータに、
強化学習アルゴリズムに基づいて学習された、複数の行動それぞれについて前記ロボットの全部分または一部分である移動対象と物体との衝突を回避する適格性を表わすモデルに基づいて、前記複数の行動の中から前記移動対象と前記物体とが接近している際に前記衝突を回避するのに最適である適格行動を推論する推論処理を実行させ、
前記移動対象と前記物体とが接近していない場合に、予め算出された経路に沿って前記移動対象が移動するように前記ロボットを制御する第一の制御処理を実行させ、
前記移動対象と前記物体とが接近している場合に、前記推論処理によって推論された前記適格行動を実行するように前記ロボットを制御する第二の制御処理を実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数台のロボット同士の衝突を回避しながら最適性をある程度保った軌道の生成技術に関する。
【背景技術】
【0002】
従来、自動車、機械、電気機器、電子機器、食品、化粧品、および医薬品などの製品を大量にかつ高速に生産するために、産業用ロボットなどのロボットが用いられている。ロボットによって省人化および省力化が図られている。また、同一の空間に複数台のロボットを配置し、これらのロボットに作業を行わせることがある。これらのロボットに対して目標姿勢が与えられたとき、互いのロボット同士の衝突を回避しながら、できるだけ効率の良い軌道生成を実現する技術が従来、提案されている。
【0003】
特許文献1に記載される方法は、第1の作業領域有する第1のロボットと、第2の作業領域を有する第2のロボットとを備えるロボットシステムにおいて2つのロボット間の衝突を効率良く回避するための方法である。第1の作業領域は、第2の作業領域と重複し、それによって重複作業領域を画定し、第1のロボットによって実行される第1のロボットの動作に関連する第1の動作情報を提供するステップと、第1の動作情報を取り出すステップと、複数の第2のロボットの動作に関し、第2のロボットの動作が第1のロボットおよび第2のロボット間の衝突のリスクを伴うかどうかを決定するステップと、を有する。第2のロボットの動作が第1のロボットおよび第2のロボット間の衝突のリスクを伴うと決定した場合は、利用可能なロボットの中から他のロボットを第2のロボットとして選択し、第1の動作情報を提供するステップおよびリスクを伴うかどうかを決定するステップをやり直す。そして、リスクを伴わないと決定した場合は、第2のロボットの動作を実行する。
【0004】
非特許文献1に記載される方法は、複数台のロボットそれぞれのアームの軌道生成を行い、その経路上の位置をパラメータとしたグラフを作成して速度の調整を行いながら互いに干渉し合わない軌道を取得する。
【0005】
特許文献2に記載される方法によると、複数のロボットアームの軌道の始点および終点を含む動作指令リストを生成し、動作指令リストに基づき各々の軌道生成を行う順序を決定する。動作指令リスト中の特定のロボットアームに関し、始点および終点に基づき、障害物メモリに他のロボットアームの軌道生成に関して登録された障害物空間を回避するよう、軌道生成を行う。そして、生成軌道で当該ロボットアームを動作させた際、当該アームの躯体によって掃引される掃引空間を、他のロボットアームが回避すべき障害物空間として障害物メモリに追加する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第6556245号公報
【特許文献2】特開2019-193975号公報
【非特許文献】
【0007】
【非特許文献1】G. Sanchez and J.-C. Latombe, "On delaying collision checking in PRM planning: Application to multi-robot coordination" International Journal of Robotics Research, vol.21, no.1, pp.5-26, 2002
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、需要者のニーズに応じて多種多様な製品が次々に開発されており、製品ごとに専用のロボットを導入するとコストが嵩んでしまう。そこで、汎用性のあるロボットが導入され、製品ごとに応じた作業をロボットに実行させている。
【0009】
上述の従来の方法は、ロボット同士の想定される衝突を回避することが可能であるが、予期せぬ事態への柔軟な対応が困難である。例えば、一方のロボットの動作に遅延が生じた場合に対応することが困難である。つまり、従来の方法は、汎用性に乏しく、動作遅延が生じた際にでも衝突を回避しながら、効率良い動作計画を実現することは難しい。また、従来の学習手法ですべての衝突に対する回避方策を学習するためには多大な学習時間と動作計画時間を必要とする。さらに、ロボットの形状が複雑になった場合、あるいはロボットの台数が増加した場合、衝突を回避しながらロボットの目標姿勢までの軌道を最適化するのに、多大な計算時間を必要とする。
【0010】
本発明は、このような問題点に鑑み、ロボット同士の衝突を従来よりも柔軟に回避しながらも最適性をある程度保った動作計画を実現できるようにすることを、目的とする。
【課題を解決するための手段】
【0011】
本発明の一形態に係るロボット制御システムは、複数の行動それぞれについてロボットの全部分または一部分である移動対象と物体との衝突を回避する適格性を表わすモデルを、強化学習アルゴリズムに基づく学習処理を実行することによって学習する学習手段と、前記複数の行動のうちの前記移動対象と前記物体とが接近している際に前記衝突を回避するのに最適である適格行動を前記モデルに基づいて推論する推論手段と、前記移動対象と前記物体とが接近していない場合に、予め算出された経路に沿って前記移動対象移動対象が移動するように前記ロボットを制御し、前記移動対象と前記物体とが接近している場合に、前記推論手段によって推論された前記適格行動を実行するように前記ロボットを制御する、制御手段と、を有する。
【0012】
好ましくは、前記複数の行動のそれぞれは、互いに異なる方向への移動または停止である。
【0013】
または、前記モデルは、前記移動対象と前記物体との位置関係の複数の状態それぞれについて前記複数の行動それぞれのQ値を前記適格性として表わし、前記学習手段は、前記ロボットと前記物体とが接近し、かつ、前記複数の状態のうちの前記ロボットと前記物体とのカレントの状態について前記Q値が未だ学習されていない場合に、Q学習アルゴリズムを前記強化学習アルゴリズムとして用いて前記学習処理を実行する。
【発明の効果】
【0014】
本発明によると、複数台のロボットが目標姿勢に到達するまでの準最適軌道を効率よく探索しながら、ロボット同士の衝突を従来よりも柔軟に回避することができる。具体的には、一方のロボットが故障あるいは動作遅延を生じる、といった予期せぬ事態が発生した場合でも、ロボットアーム同士の衝突を回避しながら最適性をある程度保った軌道生成を実現することができる。
【図面の簡単な説明】
【0015】
図1】ロボットシステムの全体的な処理の流れの例を説明するフローチャートである。
図2】ロボットの機構モデルおよび制御モデルの例を示す図である。
図3】サーバのハードウェア構成の例を示す図である。
図4】サーバの機能的構成の例を示す図である。
図5】第一のロボットおよび第二のロボットの初期姿勢および目標姿勢の例を示す図である。
図6】RRT(Rapidly-Exploring Random Trees)アルゴリズムによる経路探索の処理の流れの例を説明するフローチャートである。
図7】第一のロボットおよび第二のロボットそれぞれの移動中の姿勢の例を示す図である。
図8】監視領域の例を示す斜視図である。
図9】監視領域を真上、真横、および真下それぞれから見た様子の例を示す図である。
図10】監視領域それぞれの中心のベクトルを示す図である。
図11】ルックアップテーブルの例を示す図である。
図12】Q学習アルゴリズムによる機械学習の処理の流れの例を説明するフローチャートである。
図13】動作計画プログラムのよる全体的な処理の流れの例を説明するフローチャートである。
【発明を実施するための形態】
【0016】
〔1.システムの全体構成〕
図1は、ロボットシステム1の全体的な処理の流れの例を説明するフローチャートである。図2は、ロボット3の機構モデルおよび制御モデルの例を示す図である。図3は、サーバ2のハードウェア構成の例を示す図である。図4は、サーバ2の機能的構成の例を示す図である。
【0017】
ロボットシステム1は、図1に示すようにサーバ2および複数台のロボット3などによって構成され、これらのロボット3が協同してワークに対して処理を施すことによって製品を生産する。
【0018】
ロボット3は、図1または図2に示すように、ベース30、第一のアーム311、第二のアーム312、第三のアーム313、第四のアーム314、第五のアーム315、ツール32、第一の駆動ユニット331、第二の駆動ユニット332、第三の駆動ユニット333、第四の駆動ユニット334、第五の駆動ユニット335、第六の駆動ユニット336、コントローラ34、および通信インタフェース35などによって構成される。なお、図2において、点線は、有線または無線の通信路を表わしている。矢印付きの実線は、動力の伝達を表わしている。
【0019】
ベース30は、本実施形態では、水平面に設置される。第一のアーム311は、その基端部がベース30に支持されており、ベース30の設置面に垂直な第一の軸391を回転軸として回転する。第一の駆動ユニット331は、モータ、減速機、および角度センサなどによって構成され、第一のアーム311を回転させる。なお、第二の駆動ユニット332ないし第六の駆動ユニット336も、第一の駆動ユニット331と同様に、モータ、減速機、および角度センサなどによって構成される。
【0020】
第二のアーム312は、その基端部が第一のアーム311の先端部に支持されており、第一の軸391および第二のアーム312の長手方向の両方に垂直な第二の軸392を振り軸として旋回する。第二の駆動ユニット332は、第二のアーム312を旋回させる。
【0021】
第三のアーム313は、その基端部が第二のアーム312の先端部に支持されており、第二の軸392に平行な第三の軸393を振り軸として旋回する。第三の駆動ユニット333は、第三のアーム313を旋回させる。
【0022】
第四のアーム314は、その基端部が第三のアーム313の先端部に支持されており、第三のアーム313の長手方向に平行な第四の軸394を回転軸として回転する。第四の駆動ユニット334は、第四のアーム314を回転させる。
【0023】
第五のアーム315は、その基端部が第四のアーム314の先端部に支持されており、第四の軸394に垂直な第五の軸395を振り軸として旋回する。第五の駆動ユニット335は、第五のアーム315を旋回させる。
【0024】
ツール32は、その基端部が第五のアーム315の先端部に支持されており、第五のアーム315の長手方向に平行な第六の軸396を回転軸として回転する。第六の駆動ユニット336は、ツール32を回転させる。作業に応じてハンドまたはネジ締結装置などがツール32として使用される。
【0025】
第一の駆動ユニット331の角度センサは、第一のアーム311の、ベース30の座標系における基準の姿勢と現在の姿勢とがなす角度θを検出する。つまり、第一のアーム311が基準の姿勢からどれだけ回転したのかを検出する。第二の駆動ユニット332の角度センサは、第一のアーム311と第二のアーム312とがなす角度θを検出する。
【0026】
第三の駆動ユニット333の角度センサは、第二のアーム312と第三のアーム313とがなす角度θを検出する。第四の駆動ユニット334の角度センサは、第四のアーム314の、第三のアーム313の座標系における基準の姿勢と現在の姿勢とがなす角度θを検出する。つまり、第四のアーム314が基準の姿勢からどれだけ回転したのかを検出する。
【0027】
第五の駆動ユニット335の角度センサは、第四のアーム314と第五のアーム315とがなす角度θを検出する。第六の駆動ユニット336の角度センサは、ツール32の、第五のアーム315の座標系における基準の姿勢と現在の姿勢とがなす角度θを検出する。つまり、ツール32が基準の姿勢からどれだけ回転したのかを検出する。
【0028】
そして、第一の駆動ユニット331ないし第六の駆動ユニット336それぞれの角度センサは、検出した角度θ~θを、通信インタフェース35を介してサーバ2へ送信する。なお、第一のアーム311ないし第五のアーム315それぞれのリンク部分の長さおよびツール32の長さはいずれも一定(不変)なので、角度θ~θが分かればロボット3の姿勢が一意に定まる。
【0029】
通信インタフェース35は、USB(Universal Serial Bus)アダプタもしくはNIC(Network Interface Card)などの有線の規格のインタフェース装置またはBluetoothアダプタもしくはWi-Fiアダプタなどの無線の規格の通信装置であって、サーバ2との間でデータを送受信する。
【0030】
コントローラ34は、第一のアーム311ないし第五のアーム315およびツール32がサーバ2から通信インタフェース35が受信した指令の通りの姿勢になるように第一の駆動ユニット331ないし第六の駆動ユニット336を制御する。または、指令の通りに動作するようにツール32を制御する。
【0031】
サーバ2は、ワークへの処理のために、複数台のロボット3それぞれに所定の姿勢を取らせる。この際に、これらのロボット3同士の衝突の回避を図る。以下、サーバ2としてラップトップ型のパーソナルコンピュータが用いられる場合を例に説明する。
【0032】
サーバ2は、図3に示すように、メインプロセッサ20、RAM(Random Access Memory)21、ROM(Read Only Memory)22、補助記憶装置23、通信インタフェース24、ディスプレイ25、キーボード26、およびポインティングデバイス27などによって構成される。
【0033】
ROM22または補助記憶装置23には、オペレーティングシステムのほか動作計画プログラム40などのコンピュータプログラムがインストールされている。
【0034】
RAM21は、サーバ2のメインメモリである。RAM21には、適宜、動作計画プログラム40などのコンピュータプログラムがロードされる。
【0035】
メインプロセッサ20は、RAM21にロードされたコンピュータプログラムを実行する。メインプロセッサ20として、GPU(Graphics Processing Unit)またはCPU(Central Processing Unit)などが用いられる。
【0036】
通信インタフェース24は、ロボット3との間でデータの送受信を行う。通信インタフェース24として、ロボット3で採用される規格の通信装置が用いられる。
【0037】
ディスプレイ25は、コマンドもしくはデータを入力するための画面またはメインプロセッサ20による演算の結果を表わす画面などを表示する。
【0038】
キーボード26およびポインティングデバイス27は、コマンドまたはデータなどをオペレータが入力するための入力装置である。
【0039】
動作計画プログラム40によると、図4に示す初期条件記憶部401、動作計画部402、経路記憶部403、ロボット制御部404、状態判別部405、テーブル記憶部406、機械学習部407、および最適経路推論部408などの機能が実現される。これらの機能によると、複数台のロボット3それぞれの経路(軌道)がRRT*(Rapidly-exploring Random Tree star)アルゴリズムで探索され、それぞれの経路に則して各ロボット3が制御される。さらに、衝突を回避するために経路の変更が強化学習によって実行される。
【0040】
以下、ワークへ加工を施すために2台のロボット3が使用される場合を例に、図4に示す各部および各ロボット3の処理について説明する。
【0041】
2台のロボット3をそれぞれ「第一のロボット3A」および「第二のロボット3B」と区別して記載することがある。同様に、第一のロボット3Aのベース30、ツール32、および角度θ~θなどをそれぞれ「ベース30A」、「ツール32A」、および「角度θ1_A~θ6_A」などと記載し、第二のロボット3Bのベース30、ツール32、および角度θ~θなどをそれぞれ「ベース30B」、「ツール32B」、および「角度θ1_B~θ6_B」などと記載することがある。
【0042】
〔2. 初期のデータの記憶〕
図5は、第一のロボット3Aおよび第二のロボット3Bの初期姿勢および目標姿勢の例を示す図である。
【0043】
初期条件記憶部401(図4参照)には、第一のロボット3Aおよび第二のロボット3Bに関する初期条件などに関する情報として、図5(A)または図5(B)に示す第一の設置位置PO_Aおよび第二の設置位置PO_Bそれぞれの、作業空間10における座標、ならびに第一の初期姿勢FS_A、第二の初期姿勢FS_B、第一の目標姿勢FG_A、および第二の目標姿勢FG_Bを表わす情報のほか、第一のロボット3Aの各リンクの長さ、ツール32Aの長さ、第二のロボット3Bの各リンクの長さ、およびツール32Bの長さなどが記憶されている。
【0044】
作業空間10は、第一のロボット3Aおよび第二のロボット3Bが存在する空間である。第一の設置位置PO_Aおよび第二の設置位置PO_Bは、それぞれ、第一のロボット3Aのベース30Aおよび第二のロボット3Bのベース30Bが設置されている位置である。
【0045】
第一の初期姿勢FS_Aおよび第二の初期姿勢FS_Bは、それぞれ、第一のロボット3Aおよび第二のロボット3Bそれぞれの初期姿勢であって、次のように特定される。オペレータが所定の指令を入力すると、第一のロボット3Aの6つの角度センサによって角度θ1_A~θ6_Aが検出されサーバ2へ送信される。これらの角度θ1_A~θ6_Aが第一の初期姿勢FS_Aを表わしている。同様に、第二のロボット3Bの6つの角度センサによって角度θ1_B~θ6_Bが検出されサーバ2へ送信される。これらの角度θ1_B~θ6_Bが第二の初期姿勢FS_Bを表わしている。
【0046】
第一の目標姿勢FG_Aおよび第二の目標姿勢FG_Bは、それぞれ、第一のロボット3Aおよび第二のロボット3Bそれぞれの目標姿勢であって、第一の目標姿勢FG_Aのときの角度θ1_A~θ6_Aおよび第二の目標姿勢FG_Bのときの角度θ1_B~θ6_Bをオペレータが入力することによって指定される。これらの角度を直接入力するのではなく、手動で第一の目標姿勢FG_Aおよび第二の目標姿勢FG_Bをそれぞれ第一のロボット3Aおよび第二のロボット3Bに取らせ、角度θ1_A~θ6_Aおよび角度θ1_B~θ6_Bを検知させることによって取得してもよい。
【0047】
そのほか、第一のロボット3Aのベース30A、第一のアーム311Aないし第五のアーム315A、およびツール32Aそれぞれのパーツの三次元形状ならびに第二のロボット3Bのベース30B、第一のアーム311Bないし第五のアーム315B、およびツール32Bそれぞれのパーツの三次元形状が初期条件記憶部401に記憶されている。
【0048】
〔3. ロボット3の制御〕
オペレータがスタートの指令をサーバ2へ入力すると、第一のロボット3Aを第一の初期姿勢FS_Aから第一の目標姿勢FG_Aへ変化させかつ第二のロボット3Bを第二の初期姿勢FS_Bから第一の目標姿勢FG_Bへ変化させる処理が動作計画部402ないし最適経路推論部408によって行われる。
【0049】
〔3.1 標準の経路に則した移動〕
図6は、RRTアルゴリズムによる経路探索の処理の流れの例を説明するフローチャートである。図7は、第一のロボット3Aおよび第二のロボット3Bそれぞれの移動中の姿勢の例を示す図である。
【0050】
動作計画部402(図4参照)は、第一の標準経路51および第二の標準経路52をRRT*アルゴリズムによって探索する。
【0051】
第一の標準経路51は、第一のロボット3Aを第一の初期姿勢FS_Aから第一の目標姿勢FG_Aへ変化させる際のツール32Aの経路である。第二の標準経路52は、第二のロボット3Bを第二の初期姿勢FS_Bから第二の目標姿勢FG_Bへ変化させる際のツール32Bの経路である。
【0052】
RRT*アルゴリズムは、経路探索手法の1つであって、RRTアルゴリズムを拡張したものである。
【0053】
RRTアルゴリズムおよびRRT*アルゴリズムは、ともに、初期の位置(1番目のノード)から目標の位置(目標のノード)までの経路を、障害物に当たらないように枝(線分)を繋ぎながら探索するアルゴリズムである。
【0054】
RRTアルゴリズムによると、図6に示す手順で経路が探索される。コンピュータは、1番目のノードをノードリストへ追加する(#901)。追加したノードから目標のノードの方向へ一定の距離D以下の真っ直ぐな枝を障害物に当たることなく伸ばすことができれば(#902でYes)、その枝をノードリストへ追加し(#908)、RRTアルゴリズムを終了する。なお、ステップ#902は、ノードがノードリストへ追加されるごとに行われる。
【0055】
このように枝を伸ばすことができない場合は(#902でNo)、コンピュータは、作業空間10の任意の点を1つランダムにサンプリングする(#903)。以下、サンプリングした点を「サンプル点」と記載する。ノードリストに格納されているノードの中からサンプル点に最も近いノードを親ノードとして選出する(#904)。親ノードからサンプル点の方向へ距離Dの真っ直ぐな枝を伸ばす(#905)。
【0056】
その枝が障害物に当たれば(#906でYes)、コンピュータは、ステップ#903に戻って、作業空間10の任意の点のサンプリングなどをやり直す。
【0057】
一方、その枝が障害物に当たらなければ(#906でNo)、コンピュータは、親ノードをその枝とともにノードリストへ追加する(#907)。そして、追加したノードから目標のノードに届くように距離D以下の真っ直ぐな枝を障害物に当たることなく伸ばすことができれば(#902でYes)、その枝をノードリストへ追加し(#908)、RRTアルゴリズムを終了する。動作計画部402は、目標のノードに届く枝が得られるまで、ステップ#903~#907の処理を繰り返し実行する。
【0058】
このような処理を実行することによって、1番目のノードと目標のノードとが1本または複数本の枝によって連結される。これらの連結された枝が、探索結果つまり目的の経路である。RRTアルゴリズムは、このようにシンプルである。しかし、最適性の保証がない。
【0059】
一方、RRT*アルゴリズムによると、ステップ#907において新たなノードを追加する際に、コンピュータは、新たなノードと親ノードとを結ぶ枝だけでなく、新たなノードと親ノードの近隣の各ノードとを結ぶ枝(ただし、障害物に当たらない枝)にも注目する。そして、これらの枝のうち移動コストの最も低い枝を選出し、ノードリストへ追加する。また、1番目のノードと目標のノードとが1本または複数本の枝によって連結された後も、探索を継続してもよい。すると、移動コストがさらに低い枝が見つかり経路が改善されることがある。
【0060】
つまり、RRT*アルゴリズムによると、新たなノードが追加されるごとに既存のノードへの最短の枝が計算されるので、RRTアルゴリズムよりも移動コストの低い経路を見つけることができる。また、新たなノードの追加を無限に続けると必ず最短の経路が得られる。しかし、最短の経路が得られたか否かを判別することが困難であり、かつ、新たなノードの追加の回数が多くなるほど処理の時間が長くなるので、探索の時間またはステップ数の上限を決めてRRT*アルゴリズムによる処理を実行するのが望ましい。
【0061】
動作計画部402は、RRT*アルゴリズムによる第一の標準経路51および第二の標準経路52の探索に際して、作業空間10に実在する物体(例えば、ワーク)を障害物として取り扱う。第一の標準経路51を探索する際は、さらに、第一のロボット3Aのアームの関節角度の可動範囲外を障害物と見做す。同様に、第二の標準経路52を探索する際は、第二のロボット3Bのアームの関節角度の可動範囲外を障害物と見做す。障害物に関する情報も、初期条件記憶部401に予め記憶させておけばよい。
【0062】
第一の標準経路51および第二の標準経路52は、動作計画部402によって得られると、経路記憶部403に記憶される。
【0063】
ロボットの制御用のソフトウェアであるROS(Robot Operating System)にパッケージされているツールの1つである「MoveIt!」によってRRT*アルゴリズムに基づく経路探索を行うことができる。そこで、動作計画部402をこのツールによって実現してもよい。
【0064】
ところで、第一の標準経路51および第二の標準経路52はいずれも、第一のロボット3Aが第一の初期姿勢FS_Aでありかつ第二のロボット3Bが第二の初期姿勢FS_Bであるときに探索される。したがって、その後、第二のロボット3Bの姿勢が変化すると、第一の標準経路51に基づいて第一のロボット3Aの姿勢を変化させた際に、第一のロボット3Aが第二のロボット3Bに衝突することがある。第一のロボット3Aの姿勢が変化した場合も同様である。両ロボット3の衝突を回避する方法については、後述する。
【0065】
スタートの指令が入力されると、原則として、動作計画部402は、第一の標準経路51を上述の方法で算出するが、過去に第一のロボット3Aの同一の初期姿勢と目標姿勢との組合せについて第一の標準経路51を算出したことがある場合は、算出するのをスキップし、経路記憶部403に記憶されている、その第一の標準経路51が後述の各処理で用いられるようにしてもよい。第二の標準経路52についても同様である。
【0066】
ロボット制御部404は、第一のロボット3Aおよび第二のロボット3Bを次のように制御する。
【0067】
第一のロボット3Aが第一の通常状態であるときは、ロボット制御部404は、第一の標準経路51に沿ってツール32Aが移動するように第一のロボット3Aを制御する。しかし、第一の要回避状態であるときは、最適経路推論部408によって推論される方向へツール32Aが移動するように第一のロボット3Aを制御する。最適経路推論部408の処理については、後述する。
【0068】
第一の要回避状態とは、図7のように、ツール32Aが第二のロボット3Bに接触しそうなくらいに接近しており衝突を回避する必要のある状態である。第一の通常状態とは、ツール32Aが第二のロボット3Bにあまり接近しておらず回避する必要のない状態である。第一の通常状態であるか第一の要回避状態であるかは、後述するように、状態判別部405によって判別される。
【0069】
同様に、第二のロボット3Bが第二の通常状態であるときは、ロボット制御部404は、第二の標準経路52に沿ってツール32Bが移動するように第二のロボット3Bを制御し、第二の要回避状態であるときは、最適経路推論部408によって推論される方向へツール32Bが移動するように第二のロボット3Bを制御する。第二の要回避状態とは、ツール32Bが第一のロボット3Aに接触しそうなくらいに接近しており衝突を回避する必要のある状態であり、第二の通常状態とは、ツール32Bが第一のロボット3Aにあまり接近しておらず回避する必要のない状態である。
【0070】
ロボット制御部404は、そのほか、ツール32A、32Bによってワークへの加工を行うように第一のロボット3Aまたは第二のロボット3Bへ与える。
【0071】
〔3.2 状態の判別〕
図8は、監視領域M1_A~M13_Aの例を示す斜視図である。図9は、監視領域M1_A~M13_Aを真上、真横、および真下それぞれから見た様子の例を示す図である。図10は、監視領域M1_A~M13_Aそれぞれの中心のベクトルを示す図である。
【0072】
状態判別部405(図4参照)は、スタートの指令が入力されると、第一のロボット3Aの姿勢が第一の目標姿勢FG_Aになるまでリアルタイムで第一のロボット3Aが第一の要回避状態であるか第一の通常状態であるかを判別し続ける。第一の要回避状態である場合は、さらに、接近状態を判別し続ける。接近状態は、ツール32Aと他ロボット領域とがどのように接近しているかの状態であって、監視領域M1_A~M13_Aのそれぞれが他ロボット領域に交わっているか否かによって表わされる。したがって、接近状態は、213通りある。また、接近状態は、ツール32Aと他ロボット領域との相対的な位置関係を表わしていると、言える。
【0073】
同様に、状態判別部405は、第二のロボット3Bの姿勢が第二の目標姿勢FG_Bになるまでリアルタイムで第二のロボット3Bが第二の要回避状態であるか第二の通常状態であるかを判別し続け、第二の要回避状態である場合は接近状態を判別し続ける。以下、第一のロボット3Aが第一の要回避状態であるか第一の通常状態であるかを判別する方法および接近状態を判別する方法について説明する。
【0074】
状態判別部405は、第一のロボット3Aの姿勢が第一の目標姿勢FG_Aになるまでリアルタイムで第一の監視位置PM_A図8または図9に示す13個の監視領域M1_A~M13_Aそれぞれの位置、および他ロボット領域の位置などを検出する。なお、監視領域M1_A、M2_A、M3_A、…、M13_Aには、それぞれ、監視領域番号として「1」、「2」、「3」、…、「13」が付されている。
【0075】
第一の監視位置PM_Aは、ツール32Aの、作業空間10における位置であって(図5参照)、第一のロボット3Aの現在の姿勢および第一の設置位置PO_Aなどに基づいて特定することができる。現在の姿勢は、第一のロボット3Aからリアルタイムで角度θ1_A~θ6_Aを取得することによって特定することができる。または、第一のロボット3Aの動作をシミュレーションすることによって特定してもよい。
【0076】
監視領域M13_Aは、中心が第一の監視位置PM_Aでありかつ半径長が長さLである球形の3次元領域である。
【0077】
監視領域M7_A~M9_Aは、監視領域M13_Aと同様に半径長が長さLである球形の3次元領域である。図9(A)に示すように、監視領域M7_A~M9_Aは、監視領域M13_Aの上部を囲むように水平に並んでおり、かつ、4つの監視領域M13_A、M7_A~M9_Aは、互いに接している。
【0078】
監視領域M1_A~M6_Aは、監視領域M13_Aと同様に半径長が長さLである球形の3次元領域である。図9(B)に示すように、監視領域M1_A~M6_Aは、監視領域M13_Aに接しながら監視領域M13_Aの真横を囲むように水平に並んでいる。
【0079】
監視領域M10_A~M12_Aは、監視領域M13_Aと同様に半径長が長さLである球形の3次元領域である。図9(C)に示すように、監視領域M10_A~M12_Aは、監視領域M1_Aの下部を囲むように水平に並んでおり、かつ、4つの監視領域M10_A~M13_Aは、互いに接している。
【0080】
長さLは、ツール32Aが監視領域M13_Aにちょうど納まる程度に設定されている。または、ツール32Aの径方向の断面が監視領域M13_Aにちょうど納まる程度に設定されている。
【0081】
ツール32Aが移動するのに伴って作業空間10における第一の監視位置PM_Aが変化するので、監視領域M1_A~M13_Aそれぞれの、作業空間10における位置も変わる。第一の監視位置PM_Aから監視領域M1_A~M13_Aそれぞれの中心への方向ベクトルは、長さLが例えば0.05メートルである場合は、図10に示す通りである。長さLは、使用するロボットアームの径によって変更する。また、長さLを変更することでどの程度余裕をもって衝突回避を行うかを調整することができる。
【0082】
他ロボット領域は、作業領域の中の他のロボット3(本例では、第二のロボット3B)が占める領域であって、第二のロボット3Bの現在の姿勢および第二のロボット3Bの各パーツの三次元形状によって特定することができる。第二のロボット3Bの姿勢も、第一のロボット3Aの姿勢と同様、第二のロボット3Bからリアルタイムで角度θ1_B~θ6_Bを取得することによって特定してもよいし、第二のロボット3Bの動作をシミュレーションすることによって特定してもよい。
【0083】
状態判別部405は、監視領域M1_A~M13_Aのうちのいずれかが他ロボット領域に交わっている場合に第一のロボット3Aが第一の要回避状態であると判別し、交わっていない場合に第一の通常状態であると判別する。
【0084】
さらに、第一の要回避状態である場合に、状態判別部405は、その接近状態を判別する。つまり、監視領域M1_A~M13_Aのそれぞれが他ロボット領域に交わっているか否かを判別する。
【0085】
状態判別部405は、同様の方法によって、第二のロボット3Bが第二の要回避状態であるか第二の通常状態であるかを判別し、接近状態を判別する。
【0086】
〔3.3 強化学習および回避経路の推論〕
図11は、ルックアップテーブル60の例を示す図である。図12は、Q学習アルゴリズムによる機械学習の処理の流れの例を説明するフローチャートである。
【0087】
上述の通り、ロボット制御部404(図4参照)は、第一の要回避状態であるときに、第二のロボット3Bとの衝突を回避するようにツール32Aを移動させる。同様に、第二の要回避状態であるときに、第一のロボット3Aとの衝突を回避するようにツール32Bを移動させる。このような回避のための行動は、強化学習アルゴリズムの1つであるQ学習アルゴリズムの機械学習によって得られたモデルであるルックアップテーブル(Qテーブル)に基づいて推論される。
【0088】
以下、第一のロボット3Aを制御する場合を例に、機械学習および行動の推論それぞれの処理について、説明する。これらの処理は、テーブル記憶部406、機械学習部407、および最適経路推論部408(図4参照)によって行われる。
【0089】
テーブル記憶部406には、予め、図11に示すルックアップテーブル(Qテーブル)60が記憶されている。
【0090】
ルックアップテーブル60において、「状態」は、ツール32Aと他のロボットとの接近状態、すなわち、監視領域M1_A~M13_Aそれぞれが他ロボット領域と交わっているか否かの状態であって、(b,b,b,…,b13)によって表わされる。b=1、であれば、監視領域Mi_Aが他ロボット領域と交わっていることを表わし、b=0、であれば、交わっていることを表わす。ただし、1≦i≦13、である。
【0091】
「行動」は、第一の監視位置PM_Aから13個の監視領域M1_A~M13_Aそれぞれの中心のうちの任意の1つへの方向を進行方向とするツール32Aの移動である。移動の距離は一定の距離Dである。よって、監視領域M1_Aの中心の方向への距離Dのツール32Aの移動、監視領域M2_Aの中心の方向への距離Dのツール32Aの移動、…、監視領域M13_Aの中心の方向への距離Dのツール32Aの移動のように、13通りの行動がある。ただし、監視領域M13_Aの中心は第一の監視位置PM_Aと重なるので、監視領域M13_Aの中心の方向への移動は実質的にストップ(停止)であると、言える。
【0092】
したがって、行動と状態との組合せが13×213通りある。そして、ルックアップテーブル60には、組合せごとにQ値が1つずつ示されている。なお、これらのQ値の初期値は所定の値(例えば、ゼロ)である。
【0093】
機械学習部407は、行動決定部471、状態遷移演算部472、報酬算出部473、およびテーブル更新部474によって構成され、図12に示す手順でQ学習アルゴリズムによる機械学習を行う。なお、行動決定部471およびテーブル更新部474がエージェントに相当し、状態遷移演算部472および報酬算出部473が環境に相当し、ルックアップテーブル60が方策に相当する。
【0094】
行動決定部471は、状態sを、第一のロボット3Aが第一の要回避状態になった時点の接近状態に設定する(図12の#701)。つまり、初期化を行う。そして、状態sにおいて第一のロボット3Aに実行させる行動aを上述の13通りの行動の中から決定する(#702)。行動aを単にランダムに決定してもよいが、εグリーディ方策またはソフトマックス手法などによって決定してもよい。
【0095】
状態遷移演算部472は、状態sにおいて第一のロボット3Aが行動aを実行するのをシミュレーションし(#703)、実行後に13個の監視領域M1_A~M13_Aのうちどの監視領域が他ロボット領域と交わっているか(状態s’)を観察(判別)するとともに、第一の監視位置PM_Aと他ロボット領域との距離dを算出する(#704)。なお、他ロボット領域は、ステップ#703において第二のロボット3Bの動作をシミュレーションすることによって求めることができる。
【0096】
報酬算出部473は、状態遷移演算部472によって判別された状態s'および算出された距離dに対応する報酬rを、次の報酬規定に基づいて算出する(#705)。
【0097】
<報酬規定>
・r=-3:他ロボットが本ロボットのツール32の近くにあり、かつ、本ロボットがストップした場合
・r=-2:他ロボットが本ロボットのツール32の近くにあり、かつ、本ロボットがRRT*アルゴリズムによる経路を離脱した場合
・r=-1:他ロボットが本ロボットのツール32の近くにあり、かつ、本ロボットが上記2つ以外の結果に至った場合(例えば、他ロボットが本ロボットのツール32の近くにあり、かつ、RRT*アルゴリズムによる経路の通りに移動できた場合)
・r=2:他ロボットが本ロボットのツール32から遠くにあり、かつ、本ロボットがRRT*アルゴリズムによる経路の通りの移動できた場合
・r=0:他ロボットが本ロボットのツール32から遠くにあり、かつ、本ロボットがRRT*アルゴリズムによる経路を離脱した場合
・r=1:他ロボットが本ロボットのツール32から遠くにあり、かつ、本ロボットが上記2つ以外の結果に至った場合(例えば、他ロボットが本ロボットのツール32から遠くにあり、かつ、本ロボットがストップした場合)

本例では、第一のロボット3Aが本ロボットであり、第二のロボット3Bが他ロボットである。他ロボットが近くにあるか遠くにあるかは、距離dが所定の距離D以上であるか否かによって判別すればよい。すなわち、距離dが距離D以上である場合は遠くにあると判別し、距離D未満である場合は近くにあると判別すればよい。
【0098】
また、RRT*アルゴリズムによる経路は、動作計画部402によって得られた本ロボットの経路であって、本例では、第一のロボット3Aの経路すなわち第一の標準経路51である。なお、上述の通り、本例では、行動aに係る移動方向が13通りしかないので、第一の標準経路51に完全に一致するようにツール32Aが移動することは、稀である。そこで、行動aによる移動後の位置と第一の標準経路51とのズレが所定の距離D以下である場合は、RRT*アルゴリズムによる経路(第一の標準経路51)の通りに移動できたと判別してもよい。
【0099】
そして、テーブル更新部474は、次の(1)式に基づいて今回のQ値(行動評価値)を算出し(#706)、次の(2)式に基づいてルックアップテーブル60を更新する(#707)。
π(s,a)=Eπ[R|s=s,a=a] …… (1)
ただし、
【数1】

である。γは割引率であって、0<γ<1、である。rは、行動aを実行した結果に応じて与えられる報酬である。
【数2】

そして、状態s’が、13個の監視領域M1_A~M13_Aのいずれかが他ロボット領域と交わる状態であれば、つまり、第一のロボット3Aが第一の要回避状態であれば(#708でYes)、状態s’を状態sに設定し(#709)、ステップ#702~#707の各処理を実行する。
【0100】
一方、状態s’が、13個の監視領域M1_A~M13_Aのいずれも他ロボット領域と交わらない状態であれば、つまり、第一のロボット3Aが第一の通常状態であれば(#708でNo)、他ロボット領域を回避できた状態すなわち最終状態であると考えられるので(#709)、ステップ#701~#708の一連の処理(エピソード)が終了する。
【0101】
行動決定部471ないしテーブル更新部474は、終了の要件が満たされない間(#710でNo、エピソードを繰り返し実行する。終了の要件が満たされたら(#710でYes)、今回の機械学習を終了する。終了の要件は、例えば、エピソードの実行回数が所定の回数に達することである。または、ルックアップテーブル60の中の、ステップ#701において状態sとして設定した接近状態(第一のロボット3Aが第一の要回避状態になった時点の接近状態)に対応する各Q値が、一定程度または完全に収束することである。
【0102】
最適経路推論部408は、機械学習部407による機械学習が終了すると、最適な行動すなわちツール32Aの最適な移動方向をルックアップテーブル60に基づいて推論する。具体的には、213通りの接近状態のうち現在の接近状態に対応する行をルックアップテーブル60の中から検索し、その行に示される13個のQ値のうち最も大きいQ値に対応する行動を特定する。特定した行動に係る方向が最適な移動方向であると推論される。
【0103】
そして、ロボット制御部404は、最適経路推論部408によって推論された最適な方向へ距離Dだけツール32Aが移動するように第一のロボット3Aを制御する。
【0104】
移動後、第一のロボット3Aが第一の要回避状態であると状態判別部405によって判別されたら、上述の方法で、機械学習部407によって機械学習が行われ、最適経路推論部408によってツール32Aの最適な移動方向が推論される。そして、ロボット制御部404は、推論された最適な方向へ距離Dだけツール32Aが移動するように第一のロボット3Aを制御する。
【0105】
一方、第一のロボット3Aが第一の通常状態であると判別されたら、ロボット制御部404は、ツール32Aが第一の標準経路51へ戻って第一の標準経路51に沿って移動するように第一のロボット3Aを制御する。ただし、第一の標準経路51へ戻る途中でまたは戻った後に、第一の要回避状態であると再び判別されたら、機械学習部407および最適経路推論部408によって上述の処理が行われ、推論された最適な方向へ距離Dだけツール32Aが移動するように第一のロボット3Aが制御される。
【0106】
このように、サーバ2は、第一のロボット3Aが第一の通常状態であれば第一の標準経路51に沿ってツール32Aが移動するように第一のロボット3Aを制御する。一方、第一の要回避状態であれば機械学習を行い最適な移動方向を推論し、推論した移動方向へツール32Aが移動するように第一のロボット3Aを制御する。
【0107】
そして、第一のロボット3Aが目標姿勢に達すると、ロボット制御部404は、ワークへの加工などをツール32Aに行わせる。
【0108】
なお、ルックアップテーブル60は、1回の機械学習が行われると、213通りの状態のうちの一部分の状態に係るQ値が主に改善(更新)される。つまり、機械学習を行うごとに、徐々にルックアップテーブル60が全体的に完成していく。
【0109】
また、ステップ#701において状態sとして設定した接近状態の各Q値が一定程度に収束しまたは完全に収束するまでエピソードを繰り返し実行する場合は、機械学習の回数が増えるに連れて徐々に他の接近状態の各Q値の収束しやすくなり、1回の機械学習における処理数が減る。よって、機械学習に要する時間が短くなる。最終的には、機械学習を経ずにルックアップテーブル60に基づいて推論することができるようになる。
【0110】
状態判別部405によって判別された接近状態の各Q値がルックアップテーブル60において既に収束していれば(つまり、学習済であれば)、機械学習部407による機械学習の処理をスキップし、最適経路推論部408が最適な移動方向を推論してもよい。
【0111】
機械学習部407および最適経路推論部408は、同様の方法で機械学習を行うことによって第二のロボット3Bのためのルックアップテーブルを改善(更新)し、そのルックアップテーブルに基づいてツール32Bの最適な移動方向を推論する。そして、ロボット制御部404は、推論された移動方向へツール32Bが移動するように第二のロボット3Bを制御する。
【0112】
〔4. 全体的な処理の流れおよび本実施形態による効果〕
図13は、動作計画プログラム40のよる全体的な処理の流れの例を説明するフローチャートである。
【0113】
次に、動作計画プログラム40によるサーバ2の全体的な処理の流れを、第一のロボット3Aおよび第二のロボット3Bを制御する場合を例に、フローチャートを参照しながら説明する。サーバ2は、動作計画プログラム40に基づいて、図13に示す手順で処理を実行する。
【0114】
サーバ2は、第一のロボット3Aおよび第二のロボット3Bそれぞれの第一の標準経路51および第二の標準経路52をRRT*アルゴリズムによって生成する(図13の#101)。
【0115】
サーバ2は、第一のロボット3Aおよび第二のロボット3Bそれぞれの状態を監視し始めるとともに、第一のロボット3Aが第一の要回避状態である間は、どのような接近状態であるかを判別し、第二のロボット3Bが第二の要回避状態である間は、どのような接近状態であるかを判別する(#102)。
【0116】
第一のロボット3Aが第一の通常状態であれば(#103でYes)、サーバ2は、第一の標準経路51に沿ってツール32Aが移動するように第一のロボット3Aを制御する(#104)。なお、後述のステップ#108の処理の結果、第一の通常状態に戻った場合は、ツール32Aが第一の標準経路51へ戻るように第一のロボット3Aを制御する。
【0117】
同様に、第二のロボット3Bが第二の通常状態であれば(#103でYes)、サーバ2は、第一の標準経路51に沿ってツール32Aが移動するように第一のロボット3Aを制御する(#104)。
【0118】
一方、第一のロボット3Aが第一の要回避状態であれば(#103でNo)、サーバ2は、現時点における接近状態に対応するQ値がルックアップテーブル60において改善済すなわち学習済でなければ(#105でNo)、機械学習を行うことによってこれらのQ値を改善する(#106)。機械学習の方法は、図12で説明した通りである。学習済であれば(#105でYes)、ステップ#106をスキップする。
【0119】
そして、サーバ2は、ルックアップテーブル60に基づいて最適な進行方向を推論し(#107)、推論した方向へツール32Aが距離Dだけ移動するように第一のロボット3Aを制御する(#108)。
【0120】
サーバ2は、第二のロボット3Bが第二の要回避状態である場合も同様に、第一のロボット3Aが第一の要回避状態である場合と同様の処理を行う(#105~#108)。
【0121】
サーバ2は、第一のロボット3Aの状態に応じてステップ#104の処理およびステップ#105~#108の処理を選択的に実行する。同様に、第二のロボット3Bの状態に応じてステップ#104の処理およびステップ#105~#108の処理を選択的に実行する。
【0122】
そして、第一のロボット3Aが目標姿勢になったら(#109でYes)、必要に応じて加工などを第一のロボット3Aに行わせ、第一のロボット3Aの制御を終了する。同様に、第二のロボット3Bが目標姿勢になったら(#109でYes)、必要に応じて加工などを第二のロボット3Bに行わせ、第二のロボット3Bの制御を終了する。
【0123】
本実施形態によると、ルックアップテーブル60に基づいて推論される最適な進行方向に従って第一のロボット3Aまたは第二のロボット3Bを制御するので、第一のロボット3Aと第二のロボット3Bとの衝突を従来よりも柔軟に回避することができる。
【0124】
〔5.変形例および応用例〕
本実施形態では、Q学習アルゴリズムによってルックアップテーブル60をモデルとして用意したが、他の強化学習アルゴリズムによって他のモデルを用意してもよい。例えば、深層強化学習アルゴリズムによってディープニューラルネットワークをモデルとして生成してもよい。
【0125】
本実施形態では、第一のロボット3Aおよび第二のロボット3Bが所定の位置に設置されていたが、少なくともいずれか一方が移動する場合にも、本発明を適用することができる。
【0126】
本実施形態では、第一のロボット3Aおよび第二のロボット3Bの両方を、衝突が回避されるように制御したが、いずれか一方のみを制御してもよい。または、アームを有するロボット以外の動的な物体(例えば、ベルトコンベア上のワーク、自動運転される運搬用ワゴン、ドローン、人間など)との衝突を回避するようにロボット3を制御してもよい。
【0127】
本実施形態では、ロボット3が2台、作業空間10に存在する場合を例に説明したが、3台以上存在する場合にも、本発明を適用することができる。
【0128】
ルックアップテーブル60をサーバ2から他のコンピュータへ出力し、他のコンピュータにおいて複数台のロボットを互いに衝突しないように制御するために使用してもよい。
【0129】
本実施形態では、監視領域M1_A~M13_Aの形状が球であったが、他の形状であってもよい。例えば、正六角柱であってもよい。また、監視領域の個数は、13個よりも少なくてもよいし、多くてもよい。また、監視領域を、ロボット3のツール32以外の部位に設けてもよい。
【0130】
本実施形態では、ルックアップテーブル60において、状態として213通りの接近状態を用いた。つまり、監視領域M1_A~M13_Aのそれぞれが他ロボット領域に交わっているか否かの状態を用いた。しかし、他の状態を用いてもよい。
【0131】
例えば、監視領域M1_A~M13_Aのそれぞれが他ロボット領域に交わっているか否かの第一の状態と、次の時刻において監視領域M1_A~M13_Aのそれぞれが他ロボット領域に交わっているか否かの第二の状態と、次の時刻において監視領域M1_A~M13_Aのうち第一の標準経路51に最も近い監視領域の識別子と、を組み合わせたものを用いてもよい。この場合は、第一の状態を表わすために13ビットが必要であり、第二の状態を表わすために13ビットが必要であり、識別子を表わすために4ビットが必要である。したがって、全部で30ビットが必要である。よって、ルックアップテーブル60には、230通りの状態それぞれについて、13通りの行動のQ値が含まれる。
【0132】
この場合に、最適経路推論部408は、これらの第一の状態、第二の状態、および識別子を取得し、最適な行動を推論する。
【0133】
本実施形態では、報酬算出部473は、上述の報酬規定に基づいて報酬rを算出したが、他の報酬規定に基づいて算出してもよい。例えば、上述の報酬規定に、さらに、本ロボットが他ロボットに衝突する場合に「-10」を報酬として与える、という条件を加えてもよい。
【0134】
本実施形態では、機械学習部407は、他ロボット領域を回避できたことをエピソードが終了する条件として用いたが(図12の#710参照)、さらに、ツール32が他ロボット領域と重なったことも終了する条件として用いてもよい。
【0135】
本実施形態では、状態判別部405は、第一の通常状態であるか第一の要回避状態であるか、および、接近状態のタイプを、シミュレーションの結果に基づいて判別したが、ツール32Aに近接センサを備えておき、近接センサによる検出結果に基づいて判別してもよい。または、外部、あるいはロボットアーム自体に取り付けたカメラ画像の情報をもとに状態空間を定義し、衝突回避を判別してもよい。
【0136】
本実施形態では、ロボット3が6軸ロボットである場合を例に説明したが、7軸以上の多関節ロボットである場合または双腕型ロボットである場合にも、本発明を適用することができる。
【0137】
その他、ロボットシステム1、サーバ2、ロボット3の全体または各部の構成、処理の内容、処理の順序などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【0138】
2 サーバ(ロボット制御システム)
3 ロボット
311 第一のアーム(移動対象、アーム)
312 第二のアーム(移動対象、アーム)
313 第三のアーム(移動対象、アーム)
314 第四のアーム(移動対象、アーム)
315 第五のアーム(移動対象、アーム)
32 ツール(移動対象)
3A 第一のロボット(ロボット)
3B 第二のロボット(ロボット、物体、第二のロボット)
404 ロボット制御部(制御手段)
405 状態判別部(判別手段)
407 機械学習部(学習手段)
408 最適経路推論部(推論手段)
51 第一の標準経路(経路)
52 第二の標準経路(第二の経路)
60 ルックアップテーブル(モデル)
1_A~M12_A 監視領域(所定の領域、第二の領域)
13_A 監視領域(所定の領域、第一の領域)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13