(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024034217
(43)【公開日】2024-03-13
(54)【発明の名称】ロボットの動作経路を生成する装置、方法およびプログラム
(51)【国際特許分類】
B25J 9/22 20060101AFI20240306BHJP
G05B 19/4093 20060101ALI20240306BHJP
【FI】
B25J9/22 A
G05B19/4093 E
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022138315
(22)【出願日】2022-08-31
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】大城 篤志
【テーマコード(参考)】
3C269
3C707
【Fターム(参考)】
3C269AB33
3C269BB14
3C269QE10
3C269SA17
3C707BS12
3C707JU03
3C707KS11
3C707KS36
3C707KT03
3C707KT09
3C707LS15
3C707LV19
3C707MS06
3C707MS08
(57)【要約】
【課題】ロボットの動作中のリスクアセスメントが容易となる方法を提供する。
【解決手段】ロボットの動作経路を生成する方法は、第1~第3のステップを備える。第1のステップは、ロボットの動作中における、ロボットの位置毎の、ロボットとロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得するステップである。第2のステップは、ロボットの1以上の経路候補を生成するステップである。第3のステップは、ユーザインターフェイスに、1以上の経路候補とリスクマップとを重ねて表示させるステップである。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロボットの動作経路を生成する装置であって、
前記ロボットの動作中における、前記ロボットの位置毎の、前記ロボットと前記ロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得する取得部と、
前記ロボットの1以上の経路候補を生成する生成部と、を備え、
前記生成部は、前記1以上の経路候補と前記リスクマップとが重ねて表示される画面を示すデータを提供する、装置。
【請求項2】
前記1以上の経路候補は、複数の経路候補を含み、
前記複数の経路候補の中から1つの経路候補の選択を受け付け、前記1つの経路候補を前記ロボットの動作経路として決定する決定部をさらに備える、請求項1に記載の装置。
【請求項3】
前記生成部は、前記リスクマップに基づいて、前記複数の経路候補の各々について、前記物体との干渉のリスクの度合いを評価し、
前記画面は、前記生成部による評価結果を含む、請求項2に記載の装置。
【請求項4】
前記画面において、前記ロボットを含む実空間に対応する3次元仮想空間上に、前記1以上の経路候補と前記リスクマップとが重ねて表示される、請求項1から3のいずれか1項に記載の装置。
【請求項5】
ロボットの動作経路を生成する方法であって、
前記ロボットの動作中における、前記ロボットの位置毎の、前記ロボットと前記ロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得するステップと、
前記ロボットの1以上の経路候補を生成するステップと、
ユーザインターフェイスに、前記1以上の経路候補と前記リスクマップとを重ねて表示させるステップと、を備える方法。
【請求項6】
ロボットの動作経路を生成する方法をコンピュータに実行させるプログラムであって、
前記方法は、
前記ロボットの動作中における、前記ロボットの位置毎の、前記ロボットと前記ロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得するステップと、
前記ロボットの1以上の経路候補を生成するステップと、
前記1以上の経路候補と前記リスクマップとが重ねて表示される画面を示すデータを提供するステップと、を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットの動作経路を生成する装置、方法およびプログラムに関する。
【背景技術】
【0002】
近年、FA(Factory Automation)分野において、人とロボットとが協調して作業する協調作業システムの開発が進められている。例えば、「Justinas Miseikis、他3名、「Multi 3D camera mapping for predictive and reflexive robot manipulator trajectory estimation」、2016 IEEE Symposium Series on Computational Intelligence (SSCI)」(非特許文献1)は、ロボットの動作中において、周囲の物体との干渉を回避するように自動的に経路を生成する技術を開示している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Justinas Miseikis、他3名、「Multi 3D camera mapping for predictive and reflexive robot manipulator trajectory estimation」、2016 IEEE Symposium Series on Computational Intelligence (SSCI)
【非特許文献2】Mohammad Safeea、他2名、"On-line collision avoidance for collaborative robot manipulators by adjusting off-line generated paths: An industrial use case"、Robotics and Autonomous Systems、Elsevier、2019、119、pp.278-288
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1の記載の技術では、周囲の物体とロボットとの干渉が回避される。しかしながら、ユーザは、ロボットと物体との干渉のリスクの程度を把握できない。そのため、ロボットの動作中のリスクアセスメントが困難となる。
【0005】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、ロボットの動作中のリスクアセスメントが容易となる装置、方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
本開示の一例によれば、ロボットの動作経路を生成する装置は、取得部と、生成部と、を備える。取得部は、ロボットの動作中における、ロボットの位置毎の、ロボットとロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得する。生成部は、ロボットの1以上の経路候補を生成する。生成部は、1以上の経路候補とリスクマップとが重ねて表示される画面を示すデータを提供する。
【0007】
この開示によれば、ユーザは、提供されたデータによって示される画面を確認することにより、生成された1以上の動作経路に沿ってロボットを動作させたときの物体との干渉のリスクの程度を容易に把握できる。そのため、生成された動作経路に沿ってロボットを動作させたときのリスクアセスメントが容易となる。
【0008】
上述の開示において、1以上の経路候補は、複数の経路候補を含む。装置は、複数の経路候補の中から1つの経路候補の選択を受け付け、当該1つの経路候補をロボットの動作経路として決定する決定部をさらに備える。
【0009】
この開示によれば、ユーザは、複数の経路候補の中から、物体との干渉のリスクの低い経路候補を動作経路として選択できる。
【0010】
上述の開示において、生成部は、リスクマップに基づいて、複数の経路候補の各々について、物体との干渉のリスクの度合いを評価する。上記の画面は、生成部による評価結果を含む。
【0011】
この開示によれば、ユーザは、提供されたデータによって示される画面を確認することにより、複数の経路候補の各々について、物体との干渉のリスクの度合いを把握できる。
【0012】
上述の開示の上記の画面において、ロボットを含む実空間に対応する3次元仮想空間上に、1以上の経路候補とリスクマップとが重ねて表示される。
【0013】
この開示によれば、ユーザは、提供されたデータによって示される画面を確認することにより、ロボットの物体との干渉のリスクの空間分布を把握しやすくなる。
【0014】
本開示の一例によれば、ロボットの動作経路を生成する方法は、第1~第3のステップを備える。第1のステップは、ロボットの動作中における、ロボットの位置毎の、ロボットとロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得するステップである。第2のステップは、ロボットの1以上の経路候補を生成するステップである。第3のステップは、ユーザインターフェイスに、1以上の経路候補とリスクマップとを重ねて表示させるステップである。
【0015】
本開示の一例によれば、プログラムは、ロボットの動作経路を生成する方法をコンピュータに実行させる。当該方法は、ロボットの動作中における、ロボットの位置毎の、ロボットと前記ロボットの周囲に存在する物体との干渉のリスクを示すリスクマップを取得するステップと、ロボットの1以上の経路候補を生成するステップと、1以上の経路候補とリスクマップとが重ねて表示される画面を示すデータを提供するステップと、を含む。
【0016】
これらの開示によっても、生成された動作経路に沿ってロボットを動作させたときのリスクアセスメントが容易となる。
【発明の効果】
【0017】
本開示によれば、ロボットの動作中のリスクアセスメントが容易となる。
【図面の簡単な説明】
【0018】
【
図1】実施の形態に係るシステムにおける、ロボットの動作経路を生成する方法の概要を示す図である。
【
図2】実施の形態に係るシステムの具体例を示す図である。
【
図3】制御装置および端末のハードウェア構成を示す模式図である。
【
図4】演算処理回路の機能構成の一例を示す図である。
【
図7】RRTアルゴリズムを用いて生成された複数の経路候補の一例を示す図である。
【
図8】動作区間を設定するための設定画面の一例を示す図である。
【
図9】教示データに基づく経路候補の確認画面の一例を示す図である。
【
図10】複数の経路候補の中から1つの経路候補の選択を促す選択画面の一例を示す図である。
【
図11】オフライン期間における制御装置の処理の流れを示すフローチャートである。
【
図12】
図11に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
【
図13】オンライン期間におけるロボットの制御処理の流れを示すフローチャートである。
【
図14】オンライン期間におけるリスクマップの取得処理の流れを示すフローチャートである。
【
図15】広い範囲を初期動作区間として指定したときの設定画面の一例を示す図である。
【
図16】初期動作区間を複数の動作区間に分割するときの設定画面の一例を示す図である。
【発明を実施するための形態】
【0019】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。以下で説明される各変形例は、適宜選択的に組み合わされてもよい。
【0020】
§1 適用例
図1は、実施の形態に係るシステムにおける、ロボットの動作経路を生成する方法の概要を示す図である。
図1に示されるように、システム1は、ユーザインターフェイス504と、ロボット200と、を備える。システム1は、例えば、工場等の生産現場に設けられる。特に、システム1は、人とロボット200とが協調して作業を行なう生産現場に好適である。
【0021】
ロボット200は、例えば、多関節ロボット、ドローン、自律走行ロボットなどの自律型ロボットを含む。
【0022】
図1に示されるように、システム1において実行される方法は、以下のステップ(1)~(3)を含む。
【0023】
ステップ(1)は、ロボット200の動作中における、ロボット200の位置毎の、ロボット200とロボット200の周囲に存在する物体との干渉のリスクを示すリスクマップ80を取得するステップである。物体には、例えば人が含まれる。
【0024】
ステップ(2)は、ロボット200の動作区間について、1以上の経路候補を生成するステップである。経路候補は、ユーザからの教示によって生成されてもよいし、公知の技術を用いて自動的に生成されてもよい。
図1に示す例では、経路候補40a~40cが生成されている。
【0025】
ステップ(3)は、ユーザインターフェイス504に、1以上の経路候補(経路候補40a~40c)とリスクマップ80とを重ねて表示させるステップである。リスクマップ80は、リスクに応じた濃度の空間分布を示す形式で表示される。
【0026】
本実施の形態によれば、ユーザは、生成された1以上の動作経路に沿ってロボット200を動作させたときの物体との干渉のリスクの程度を容易に把握できる。そのため、生成された動作経路に沿ってロボット200を動作させたときのリスクアセスメントが容易となる。
【0027】
§2 具体例
<システムの具体例>
以下、ロボット200として多関節ロボットを有するシステムについて説明する。ただし、上述したように、ロボット200は、多関節ロボットに限定されず、他のタイプのロボットであってもよい。
【0028】
図2は、実施の形態に係るシステムの具体例を示す図である。
図2に示すシステム1は、制御装置100と、ロボット200と、複数のセンシングデバイス300と、端末500と、を備える。
【0029】
制御装置100は、ロボット200の動作経路を生成する機能と、ロボット200の動作を制御する機能とを有する。制御装置100は、複数のセンシングデバイス300と通信可能に接続される。制御装置100は、例えばGigE Vision(登録商標)またはUSB(Universal Serial Bus)を用いて、複数のセンシングデバイス300と通信する。
【0030】
センシングデバイス300は、ロボット200が存在する空間に配置され、当該空間における物体の位置を検知するデバイスである。物体には、ロボット200、ロボット200の周囲に存在する静的物体(例えば、机、壁など)、およびロボット200の周囲において移動可能な動的物体(例えば、人)が含まれる。センシングデバイス300は、例えばRGB-Dカメラまたはレーザレンジファインダであり、視野の点群データを生成する。空間において死角がないように、例えば4つ以上のセンシングデバイス300が互いに異なる位置に配置されることが好ましい。
【0031】
ロボット200は、マニピュレータ202と、マニピュレータコントローラ204と、を含む。
【0032】
マニピュレータ202は、6つの関節20_1~20_6を有するアーム220を有する。アーム220の先端部には、エンドエフェクタ230が取り付けられる。アーム220の先端部の中心は、ツールセンターポイント(TCP)と称される。
【0033】
マニピュレータコントローラ204は、制御装置100からの指令に従って、マニピュレータ202の動作を制御する。
【0034】
端末500は、例えばデスクトップ型コンピュータ、ノート型コンピュータ、スマートフォン、タブレットなどによって構成され、制御装置100と通信可能である。端末500は、制御装置100から提供された情報を受信し、当該情報を表示する。さらに、端末500は、ユーザからの指示を受け付け、当該指示を制御装置100に送信する。
【0035】
<制御装置および端末のハードウェア構成>
図3は、制御装置および端末のハードウェア構成を示す模式図である。制御装置100は、典型的には、汎用的なコンピュータアーキテクチャに従う構造を有する。
【0036】
図3に示されるように、制御装置100は、演算処理回路120と、フィールドネットワークコントローラ130と、を含む。
【0037】
演算処理回路120は、ロボット200の動作経路の生成およびロボット200の動作制御に必要な演算を実行する。一例として、演算処理回路120は、プロセッサ121と、メインメモリ122と、ストレージ123と、インターフェイス回路124とを含む。
【0038】
プロセッサ121は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)などで構成され、ロボット200の動作経路の生成およびロボット200の動作制御のための演算を実行する。メインメモリ122は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ123は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。インターフェイス回路124は、ロボット200との間でデータをやり取りする。
【0039】
ストレージ123には、ロボット200の動作経路の生成およびロボット200の動作制御に関するシステムプログラム140が格納される。システムプログラム140は、ロボット200の動作経路の生成に係る演算を実行する命令、ロボット200の動作制御に係る演算を実行する命令、および、ロボット200との間のインターフェイスに係る命令を含む。さらに、システムプログラム140は、ウェブページを提供するサービスプログラムを含む。
【0040】
ストレージ123には、さらに、形状データ141と経路データ142と静的物体データ143とが格納される。形状データ141は、ロボット200の形状を示し、ロボットモデルが表示される画面の生成のために使用される。経路データ142は、生成された動作経路を示すデータであり、プロセッサ121がシステムプログラム140を実行することにより生成される。経路データ142は、動作経路上の複数の点の通過順序と、当該複数の点におけるマニピュレータ202が取るべき位置および姿勢と、を示す。静的物体データ143は、ロボット200の周囲に存在する静的物体の位置を示すデータであり、プロセッサ121がシステムプログラム140を実行することにより生成される。
【0041】
フィールドネットワークコントローラ130は、フィールドネットワークを介して、主として、センシングデバイス300との間でデータをやり取りする。
【0042】
端末500は、典型的には、汎用的なコンピュータアーキテクチャに従う構造を有する。
図3に示されるように、端末500は、プロセッサ501と、メインメモリ502と、ストレージ503と、ユーザインターフェイス504と、を含む。
【0043】
プロセッサ501は、例えばCPU、MPUなどで構成され、各種の情報処理を実行する。メインメモリ502は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ503は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ503には、ウェブサーバから提供されたウェブページを表示するためのブラウザ530が格納される。
【0044】
ユーザインターフェイス504は、例えば、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイなどのディスプレイと、キーボード、マウス、タッチパッドなどの入力装置と、を含む。
【0045】
<演算処理回路の機能構成>
図4は、演算処理回路の機能構成の一例を示す図である。
図4に示されるように、演算処理回路120は、オクトマップ取得部10と、キャリブレーション部11と、制御部12と、リスクマップ取得部13と、動作区間設定部14と、生成部15と、決定部16と、キャリブレーション部16と、を備える。オクトマップ取得部10、キャリブレーション部11、制御部12、リスクマップ取得部13、動作区間設定部14、生成部15、および決定部16は、
図3に示すプロセッサ121がシステムプログラム140を実行することにより実現される。
【0046】
制御部12およびリスクマップ取得部13は、ロボット200を動作させる期間(以下、「オンライン期間」と称する。)において、以下に記す処理を実行する。キャリブレーション部11、動作区間設定部14、生成部15、および決定部16は、ロボット200を動作させない期間(以下、「オフライン期間」と称する。)において、以下に記す処理を実行する。オクトマップ取得部10は、オンライン期間およびオフライン期間の両方において、以下に記す処理を実行する。
【0047】
なお、オフライン期間およびオンライン期間は、交互に繰り返される。例えば、オフライン期間において一旦動作経路が決定され、次のオンライン期間において当該動作経路に従ってロボット200を動作させる。その後、何らかの理由で動作経路の見直しが必要になると、再度オフライン期間において動作経路が決定され、次のオンライン期間において当該動作経路に従ってロボット200を動作させる。
【0048】
(オクトマップ取得部)
オクトマップ取得部10は、一定周期毎にオクトマップを取得する。オクトマップは、ロボット200の配置される空間において物体が占有する領域を示す占有領域情報である。
【0049】
具体的には、オクトマップ取得部10は、複数のセンシングデバイス300から点群データを取得する。各センシングデバイス300から取得する点群データは、当該センシングデバイス300の座標系(以下、「カメラ座標系」と称する。)で表される。そのため、オクトマップ取得部10は、各センシングデバイス300から取得した点群データを、カメラ座標系からロボット200の座標系(以下、「ロボット座標系」と称する。)に変換する。カメラ座標系からロボット座標系に変換するための変換行列は、センシングデバイス300毎に予め実施されるキャリブレーションによって作成される。取得した全ての点群データを使用すると、コンピューティング負荷が大きくなる。そのため、オクトマップ取得部10は、点群データからオクトマップを生成する。
【0050】
図5は、オクトマップの一例を示す図である。
図5に示されるように、オクトマップ50は、空間を区分けすることにより得られる、3次元立方体形状の複数のボクセル51の各々における物体の占有率を示す。物体には、ロボット200とロボット200の周囲の静的物体および動的物体とが含まれ得る。オクトマップ取得部10は、点群データにボクセル51を導入し、ボクセル51毎の占有率を計算する。占有率は、例えば0.00~100の値で示される。点群データからオクトマップ50を生成する手法として、公知の技術(例えば非特許文献1に記載の技術)を用いることができる。このようにして、オクトマップ取得部10は、各周期のオクトマップ50を取得する。
【0051】
(キャリブレーション部)
キャリブレーション部11は、オフライン期間の一部であるキャリブレーション期間において得られたオクトマップ50に基づいて、以下の条件a~cを満たすボクセル群を、ロボット200の周囲に存在する静的物体が占めるボクセル群として特定する。
条件a:占有率が予め定められた閾値以上である。
条件b:キャリブレーション期間において、占有率の時間変化が基準値よりも小さい。
条件c:条件a,bを満たすボクセルが予め定められた個数以上連結している。
キャリブレーション期間は、ロボット200の周囲に動的物体が存在しない期間として予め設定される。
【0052】
キャリブレーション部11は、特定したボクセル群の位置を示すデータを静的物体データ143として生成し、生成した静的物体データ143をストレージ123に格納する。
【0053】
(制御部)
制御部12は、オンライン期間において、オクトマップ50に基づいてロボット200の動作を決定し、決定した動作に応じた指令をロボット200に出力する。
【0054】
制御部12は、オンライン期間において、一定周期毎のオクトマップ50に基づいて、ロボット200の周囲に存在する物体の位置を特定する。具体的には、制御部12は、占有率が予め定められた閾値以上であるボクセル51の位置を物体の位置として特定する。制御部12は、特定した位置のうち、静的物体データ143によって示される位置と異なる位置の物体を動的物体として特定する。
【0055】
制御部12は、非特許文献2に記載の技術を用いて、動的物体から遠ざかろうとする排斥ポテンシャルと、経路データ142によって示される動作経路に沿って移動しようとする親和ポテンシャルとを用いて、ロボット200を制御する。
【0056】
制御部12は、マニピュレータ202における周囲の動的物体(例えば人)に最も近い点の排斥速度ベクトルvcp,repを計算する。排斥速度ベクトルvcp,repの単位ベクトルsは、以下の式(1)で表される。
【0057】
【0058】
式(1)において、r1は、マニピュレータ202における周囲の動的物体に最も近い点の位置ベクトルである。r2は、動的物体におけるマニピュレータ202に最も近い点の位置ベクトルである。そのため、単位ベクトルsの方向は、動的物体からマニピュレータ202に向かう。
【0059】
排斥速度ベクトルvcp,repの大きさ|vcp,rep|は、マニピュレータ202と動的物体との最短距離dminから計算される速度vrep1と、マニピュレータ202と動的物体との相対速度に応じて計算される速度vrep2と、の和(vrep1+vrep2)に1次遅れ系の伝達関数γ(=1-exp(-t/τ))を乗じることにより計算される(|vcp,rep|=(vrep1+vrep2)×γ)。
【0060】
速度vrep1は、以下の式(2)に従って計算される。式(2)において、k1は定数である。dcrは、マニピュレータ202の周囲に設定される進入禁止ゾーンの幅であり、予め定められる。d0は、オフセット距離であり、以下の式(3)に従って定められる。式(3)において、d1は、定数であり、人が危険と感じる距離に応じて予め定められる。cvは定数である。vrelは、マニピュレータ202と動的物体との相対速度である。マニピュレータ202と動的物体との距離が増大している場合、vrelが正となり、マニピュレータ202と物体との距離が減少している場合、vrelが負となる。
【0061】
【0062】
速度vrep2は、以下の式(4)に従って計算される。式(4)において、k2は定数である。cは、マニピュレータ202と動的物体との最短距離dminに応じて変化する係数である。例えば、cは、最短距離dminが予め定められた閾値L1未満である場合に1であり、最短距離dminが予め定められた閾値L2(>L1)を超える場合に0であり、最短距離dminが閾値L1~L2の範囲内である場合に最短距離dminが大きくなるに従って1から0に変化するように予め定められる。
【0063】
【0064】
このようにして計算された排斥速度ベクトルvcp,repは、動的物体から遠ざかる方向に向かい、その大きさは、マニピュレータ202と動的物体との距離が小さい程大きくなる。そのため、排斥速度ベクトルvcp,repは、動的物体から遠ざかろうとする排斥ポテンシャルを表している。
【0065】
さらに、制御部12は、エンドエフェクタ230の親和速度ベクトルve,attを計算する。親和速度ベクトルve,attは、以下の式(5)で表される。
ve,att=β(ψp+ψi) ・・(5)
式(5)において、ψpは比例項であり、ψiは積分項である。
【0066】
比例項ψpは、以下の式(6)で表される。
ψp=-Kpe ・・(6)
式(6)において、Kpは比例係数である。eは、エンドエフェクタ230上の点(例えばツールセンターポイント)を始点とし、動作経路上の次に通過すべき点を終点とする位置偏差ベクトルである。
【0067】
積分項ψiは、以下の式(7)に従って、位置偏差ベクトルeを積分することにより更新される。Kiは積分係数である。すなわち、最短距離dminと進入禁止ゾーンの幅dcrとの差がオフセット距離d0よりも大きい期間については、位置偏差ベクトルeの積分値と-Kiとの積だけ積分項ψiが更新され、それ以外の期間では、積分項ψiは更新されない。なお、初期の積分項ψiは0である。
【0068】
【0069】
βは、マニピュレータ202と動的物体との最短距離dmin、マニピュレータ202の周囲に設定される進入禁止ゾーンの幅dcrおよびオフセット距離d0を以下の式(8)に代入することにより計算される。
【0070】
【0071】
このようにして計算された親和速度ベクトルve,attは、動作経路上の次に通過すべき点に向かい、その大きさは、マニピュレータ202と動的物体との距離が大きい程大きくなる。そのため、親和速度ベクトルve,attは、動作経路に沿って移動しようとする親和ポテンシャルを表している。
【0072】
制御部12は、上記のようにして計算した排斥速度ベクトルvcp,repと以下の式(9)とを用いて、マニピュレータ202の関節20_1~20_6の速度ベクトルqrepを計算する。さらに、制御部12は、上記のようにして計算した親和速度ベクトルve,attと以下の式(10)とを用いて、マニピュレータ202の関節20_1~20_6の速度ベクトルqattを計算する。
【0073】
【0074】
式(9)において、Jcpは、マニピュレータ202における周囲の動的物体に最も近い点のヤコビアン行列である。式(10)において、Jeは、エンドエフェクタ230上の点(例えばツールセンターポイント)におけるヤコビアン行列である。λは、ダンピング定数であり、Iは、単位行列である。
【0075】
制御部12は、以下の式(11)に従って、速度ベクトルqrepと速度ベクトルqattとの合成ベクトルqを計算する。そして、制御部12は、合成ベクトルqに従って、マニピュレータ202の各関節の位置および回転角度に関する指令を生成し、生成した指令をマニピュレータコントローラ204に出力する。
【0076】
【0077】
合成ベクトルqに従って生成された指令が出力されることにより、マニピュレータ202と動的物体との距離が大きく保たれている場合、速度ベクトルqrepの成分が相対的に小さくなり、速度ベクトルqattの成分が相対的に大きくなる。これにより、マニピュレータ202は、動作経路に沿って移動する。以下、動作経路に沿ったマニピュレータ202の移動動作を「平準動作」と称する。
【0078】
マニピュレータ202に動的物体が近づくと、速度ベクトルqrepの成分が相対的に大きくなり、速度ベクトルqattの成分が相対的に小さくなる。これにより、マニピュレータ202は、動作経路から外れ、動的物体から遠ざかるように移動する。その結果、マニピュレータ202と動的物体との干渉が回避される。以下、動的物体から遠ざかるマニピュレータ202の移動動作を「干渉回避動作」と称する。
【0079】
その後、動的物体がマニピュレータ202から離れると、速度ベクトルqrepの成分が相対的に小さくなり、速度ベクトルqattの成分が相対的に大きくなる。これにより、マニピュレータ202は、動作経路に向かって移動した後、動作経路に沿って移動する。以下、動作経路に向かうマニピュレータ202の移動動作を「帰還動作」と称する。
【0080】
ただし、制御部12は、ロボット200の現在の動作区間が後述する「Inactive」グループに属する場合、速度ベクトルqrepを0に設定し、マニピュレータ202が平準動作のみを行なうように制御する。言い換えると、制御部12は、ロボット200の現在の動作区間が後述する「Inactive」グループに属する場合、マニピュレータ202の干渉回避動作を無効にする。一方、制御部12は、ロボット200の現在の動作区間が後述する「Active」グループに属する場合、速度ベクトルqrepを0に設定せず、マニピュレータ202の干渉回避動作を有効にする。
【0081】
また、上記の干渉回避動作が繰り返されると、マニピュレータ202が周囲の静的物体と干渉する可能性がある。そこで、静的物体との干渉を回避するため、制御部12は、上記の処理と並行して、以下の処理を行なう。
【0082】
制御部12は、一定周期毎に、静的物体データ143によって示される位置に存在する静的物体とマニピュレータ202との最短距離を計算する。制御部12は、静的物体とマニピュレータ202との最短距離が予め定められた閾値Th1以下であり、かつ、後述するリスク尤度qrisk_likelihoodが予め定められた閾値Th2を超えることに応じて、関節20_1~20_6の全ての停止させるための指令を生成し、生成した指令をマニピュレータコントローラ204に出力する。これにより、マニピュレータ202は停止する。以下、マニピュレータ202が停止する動作を「停止動作」と称する。
【0083】
(リスクマップ取得部)
リスクマップ取得部13は、ロボット200の動作中における、ロボット200のツールセンターポイントの位置毎の、ロボット200とロボット200の周囲に存在する物体との干渉のリスクを示すリスクマップMap(ptcp,Irisk)を取得する。
【0084】
リスクマップMap(ptcp,Irisk)は、ロボット200を含む空間に配列された複数のボクセルptcpの各々について、当該ボクセルptcpにロボット200のツールセンターポイントが位置するときのリスク値Iriskを示す。リスクマップMap(ptcp,Irisk)のボクセルptcpのサイズは、オクトマップ50のボクセル51のサイズと同じであってもよいし、異なっていてもよい。各ボクセルptcpは、xyz座標によって特定される。
【0085】
リスクマップ取得部13は、ロボット200の周囲に人が存在しないタイミング(例えばロボット200の動作開始前のタイミング)のオクトマップ50に基づいて、初期のリスクマップMap(ptcp,Irisk)を生成する。ロボット200の周囲に人が存在しないため、オクトマップ50において、静的物体が占有する領域のボクセル51のみ高い占有率を示す。リスクマップ取得部13は、静的物体が占有する領域に位置するボクセルptcpのリスク値Iriskが0.97を示し、残りのボクセルptcpのリスク値Iriskが0を示すように、初期のリスクマップMap(ptcp,Irisk)を生成する。
【0086】
リスクマップ取得部13は、ロボット200の動作中において、所定期間(例えば、数時間、1日、数日、1週間、数週間、1ヶ月、数ヶ月など)毎にリスクマップMap(ptcp,Irisk)を更新する。
【0087】
リスクマップ取得部13は、所定期間において計算された速度ベクトルqrepに基づいて、以下のようにしてリスクマップMap(ptcp,Irisk)を更新する。
【0088】
まず、リスクマップ取得部13は、所定期間において、速度ベクトルqrepが計算されるたびに、以下の式(12)に従ってリスク尤度qrisk_likelihoodを計算する。
【0089】
【0090】
式(12)において、jは、関節20_1~20_6を特定するための変数であり、1~6の整数である。qj
repは、速度ベクトルqrepのうち関節20_jの角速度成分である。qj
maxは、関節20_jが取りうる最大角速度である。上述したように、速度ベクトルqrepは、動的物体から遠ざかろうとする排斥ポテンシャルに応じて求められた排斥速度ベクトルvcp,repと、マニピュレータ202における周囲の動的物体に最も近い点のヤコビアン行列Jcpとを用いて計算される。そのため、リスク尤度qrisk_likelihoodが大きいほど、動的物体との干渉のリスクが大きい。
【0091】
リスクマップ取得部13は、複数のボクセルptcpの各々について、当該ボクセルptcpにツールセンターポイントが位置するときのリスク尤度qrisk_likelihoodの所定期間の積算値を示すリスク尤度マップMap(ptcp,qrisk_likelihood)を生成する。
【0092】
次に、リスクマップ取得部13は、以下の式(13)に従ってリスク尤度マップMap(ptcp,qrisk_likelihood)を正規化することにより、正規化後マップMap(ptcp,Ratiorisk)を生成する。式(13)において、qrisk_likelihood_kは、k番目のボクセルptcp_kのリスク尤度qrisk_likelihoodである。Nは、ボクセルptcpの総数である。
【0093】
【0094】
ロボット200の動作中において、ツールセンターポイントは、全てのボクセルptcpを通過するわけではない。そのため、正規化後マップMap(ptcp,Ratiorisk)において、あるボクセルptcpのRatioriskが0.8であるのに対し、隣のボクセルptcpのRatioriskが0であり得る。これは、あるボクセルptcpにツールセンターポイントが位置したときの速度ベクトルqrepが大きな値であったにもかかわらず、隣のボクセルptcpをツールセンターポイントが一度も通過しなかったためである。仮に隣のボクセルptcpにツールセンターポイントが位置した場合、速度ベクトルqrepは、比較的大きな値をとることが予想される。そこで、リスクマップ取得部13は、正規化後マップMap(ptcp,Ratiorisk)に対して膨張処理を施し、膨張処理後マップMap(ptcp,infRatiorisk)を生成する。
【0095】
図6は、膨張処理を説明する図である。
図6に示されるように、1ボクセルのサイズを標準偏差とする正規分布に従いリスクが広がっていると仮定して、各ボクセルp
tcpのRatio
riskの影響分を周辺のボクセルp
tcpのRatio
riskに加算する膨張処理が実施される。
【0096】
リスクマップ取得部13は、所定期間毎に、以下の式(14)に従って、膨張処理後マップMap(ptcp,infRatiorisk)を用いてリスクマップMap(ptcp,Irisk)を更新する。
【0097】
【0098】
式(14)において、logOdsは対数オッズ関数であり、以下の式(15),(16)に従って計算される。inv_logOdsは、対数オッズの逆変換関数であり、以下の式(17)に従って計算される。
【0099】
【0100】
(動作区間設定部)
動作区間設定部14は、オフライン期間において、端末500からの指示に応じて、ロボット200の1以上の動作区間を設定する。具体的には、動作区間設定部14は、1以上の動作区間を設定するための設定画面を示す画面データを端末500に送信する。当該設定画面は、ウェブページとして提供される。すなわち、当該画面データは、HTML(HyperText Markup Language)データであり、端末500が有するブラウザ530によって処理される。これにより、設定画面が端末500のユーザインターフェイス504に表示される。設定画面は、1以上の動作区間の指定を受け付ける。動作区間設定部14は、設定画面が受け付けた指定に従って、1以上の動作区間を設定する。
【0101】
各動作区間は、開始点、終了点、および、ツールセンターポイントが取りうる位置の範囲(以下、「動作可能範囲」と称する。)によって定義される。開始点および終了点は、ロボット200のツールセンターポイントの位置を定義付けるXYZ座標およびツールセンターポイントの姿勢を定義付けるオイラー角(Rx,Ry,Rz)によって表される。オイラー角は、予め定められた基準姿勢に対する、XYZ軸の各軸を中心とする回転角度を示す。
【0102】
なお、複数の動作区間(第1~第M動作区間(Mは2以上の整数))が設定される場合、第k動作区間(kは1~M-1の整数)の終了点は、第k+1動作区間の開始点と同一である。
【0103】
さらに、動作区間設定部14は、1以上の動作区間の各々が「Selectable」グループおよび「By Teaching」グループのいずれに属するかの指定の入力を促す画面(ウェブページ)を示す画面データを端末500に送信する。当該画面データは、HTMLデータであり、端末500が有するブラウザ530によって処理される。これにより、端末500は、当該画面を表示し、1以上の動作区間の各々について上記の指定を受け付ける。後述するように、「Selectable」グループに属する各動作区間について複数の動作経路が自動的に生成され、「By Teaching」グループに属する各動作区間におけるロボットの動作を定義付ける教示データの入力が促される。そのため、ユーザは、動作経路の設定のための手間を考慮して、1以上の動作区間の各々の属するグループを指定すればよい。
【0104】
さらに、動作区間設定部14は、1以上の動作区間の各々が「Active」グループおよび「Inactive」グループのいずれに属するかの指定の入力を促す画面(ウェブページ)を示す画面データを端末500に送信する。当該画面データは、HTMLデータであり、端末500が有するブラウザ530によって処理される。これにより、端末500は、当該画面を表示し、1以上の動作区間の各々について上記の指定を受け付ける。上述したように、「Inactive」グループに属する動作区間では、ロボット200と物体との干渉を回避するための干渉回避動作が無効に設定される。一方、「Active」グループに属する動作区間では、ロボット200と物体との干渉を回避するための干渉回避動作が有効に設定される。例えば、ユーザは、制限時間内に完了すべき動作をロボット200に実行させる必要がある動作区間を「Inactive」グループに設定すればよい。これにより、干渉回避動作が実行されることによって動作時間が制限時間を超えるという不具合の発生を防止できる。
【0105】
動作区間設定部14は、画面への入力に応じて、各動作区間が属するグループを設定する。
【0106】
(生成部)
生成部15は、「Selectable」グループに属する各動作区間について、ロボット200の複数の経路候補を生成する。生成部15は、最新のオクトマップ50を用いて、ロボット200が物体と干渉しないように複数の経路候補を生成する。例えば、生成部15は、確率的手法を用いて複数の経路候補を生成する。確率的手法として、RRT(Rapidly-Exploring Random Tree)アルゴリズム、確率的ロードマップ(Probabilistic Road Map:PRM)法などが挙げられる。
【0107】
図7は、RRTアルゴリズムを用いて生成された複数の経路候補の一例を示す図である。RRTアルゴリズムでは、開始点Psおよび終了点Peが与えられたとき、経路計画の演算を行なう空間内にランダムに点を配置し、作業条件を満たす点同士を結ぶことにより、経路が生成される。作業条件は、予め定められており、少なくとも、ロボット200が取りうる位置姿勢であるという条件、オクトマップ50において占有率が閾値未満であるという条件、動作可能範囲に含まれるという条件を含む。
図7に示す例では、物体占有領域5は、オクトマップ50において占有率が閾値以上のボクセル群の領域である。すなわち、物体占有領域5は、物体が存在しているとみなされる領域である。
図7に示されるように、物体占有領域5を避けるように、開始点Psと終了点Peとを繋ぐ複数の経路候補40a~40cが生成される。
【0108】
なお、確率的手法によって、所定数(例えば3~5個)を超える経路が生成可能である場合、生成部15は、移動距離または移動時間が短い上位所定数の経路候補を生成すればよい。
【0109】
生成部15は、複数の経路候補の中から1つの経路候補の選択を促す選択画面(ウェブページ)を示す画面データを端末500に送信する。当該画面データは、HTMLデータであり、端末500が有するブラウザ530によって処理される。これにより、端末500は、選択画面を表示する。選択画面において、生成した複数の経路候補と最新のリスクマップMap(ptcp,Irisk)とが重ねて表示される。これにより、ユーザは、複数の経路候補のうち物体との干渉のリスクの低い経路候補を選択しやすくなる。
【0110】
さらに、生成部15は、複数の経路候補の各々を評価してもよい。評価結果は、例えば、経路候補に沿ってロボット200を移動させるときのツールセンターポイントの移動距離および移動時間の少なくとも1つを示す。あるいは、評価結果は、リスクマップMap(ptcp,Irisk)に基づいて求められる、物体との干渉のリスクの度合いを示してもよい。当該度合いは、例えば、経路候補が通過するボクセルptcpのリスク値Iriskの総和によって表される。
【0111】
生成部15は、複数の経路候補の各々を評価した場合、選択画面に評価結果を含ませる。これにより、ユーザは、移動距離、移動時間または干渉のリスクの度合いを考慮して、複数の経路候補の中から1つの経路候補を選択できる。
【0112】
生成部15は、「By Teaching」グループに属する各動作区間について、当該動作区間におけるロボットの動作を定義付ける教示データの入力を促す画面(ウェブページ)を示す画面データを端末500に送信する。当該画面データは、HTMLデータであり、端末500が有するブラウザ530によって処理される。これにより、端末500は、当該画面を表示する。そして、端末500は、教示データの入力を受け付ける。教示データは、経路上の全ての点における、ツールセンターポイントの位置姿勢を示す。生成部15は、端末500によって受け付けられた教示データに基づいて、対応する動作区間における1つの経路候補を生成する。
【0113】
生成部15は教示データに基づいて生成した1つの経路候補と最新のリスクマップMap(ptcp,Irisk)とが重ねて表示される画面(ウェブページ)を示す画面データを端末500に送信してもよい。これにより、端末500は、当該画面を表示する。ユーザは、当該画面を確認することにより、教示データに対応する経路候補に従ってロボット200を動作させたときの、物体との干渉のリスクを容易に把握できる。その結果、ユーザは、教示データの見直しの要否を容易に判断できる。
【0114】
(決定部)
決定部16は、端末500のユーザインターフェイス504への操作に応じて、「Selectable」グループに属する各動作区間について、選択画面において選択された1つの経路候補を、当該動作区間の動作経路として決定する。
【0115】
決定部16は、端末500のユーザインターフェイス504への操作に応じて、「By Teaching」グループに属する各動作区間について、教示データに基づいて生成された1つの経路候補を、対応する動作区間におけるロボット200の動作経路として決定する。
【0116】
複数の動作区間(第1~第M動作区間)が生成される場合、決定部16は、第1~第M動作区間について決定した動作経路を順に繋ぐことにより得られる経路を第1動作区間の開始点から第M動作区間の終了点までの全体経路として決定する。
【0117】
決定部16は、生成した動作経路を示す経路データ142を生成し、生成した経路データ142をストレージ123に格納する。
【0118】
<ユーザインターフェイスの画面例>
図8は、動作区間を設定するための設定画面の一例を示す図である。
図8には、第3動作区間SEC3を設定するときの設定画面60が示される。設定画面60は、ウェブページとしてプロセッサ121によって生成され、端末500のユーザインターフェイス504に表示される。
図8に示されるように、設定画面60は、表示エリア61と、入力欄62,63と、ボタン64,65と、を含む。
【0119】
表示エリア61には、ロボット200が配置される実空間に対応する3次元仮想空間が表示される。表示エリア61には、形状データ141に基づいて生成されるロボットモデル70が表示される。
【0120】
ボタン64は、新たな動作区間を追加するときに使用される。ボタン64が押下されたことに応じて、プロセッサ121は、表示エリア61に新たな動作区間(
図8に示す例では、第3動作区間SEC3)を定義する立方体モデル72が含まれるように、設定画面60を更新する。立方体モデル72は、新たな動作区間においてツールセンターポイントが取りうる位置の範囲(動作可能範囲)を表す。設定画面60は、立方体モデル72の位置およびサイズの変更指示を受け付けることができる。ただし、1つ前の動作区間(
図8に示す例では、第2動作区間SEC2)が設定されている場合、当該1つ前の動作区間の終了点が表面に位置するという制約を満たすように、立方体モデル72の位置およびサイズの変更指示を受け付ける。プロセッサ121は、当該変更指示に応じて設定画面60を更新し、表示エリア61における立方体モデル72の位置およびサイズを変更する。
【0121】
ボタン65は、動作区間の設定を終了するときに使用される。ボタン65が押下されたことに応じて、プロセッサ121は、動作区間の設定処理を終了する。
【0122】
プロセッサ121は、表示エリア61において、静的物体データ143によって示される位置に仮想物体モデル73を配置する。仮想物体モデル73は、静的物体のモデルである。これにより、ユーザは、立方体モデル72で表される動作区間とロボット200の周囲に存在する静的物体との位置関係を把握できる。
【0123】
なお、プロセッサ121は、立方体モデル72と重なり合う仮想物体モデル73のみを表示エリア61に配置してもよい。
【0124】
設定画面60は、立方体モデル72の表面において、新たな動作区間の開始点72sおよび終了点72eの指定を受け付ける。ただし、1つ前の動作区間(
図9に示す例では、第2動作区間SEC2)が設定されている場合、当該1つ前の動作区間の終了点が新たな動作区間の開始点72sとして決定されるため、設定画面60は、終了点72eのみ受け付ける。
【0125】
開始点72sおよび終了点72eは、ロボット200のツールセンターポイントの位置を定義付けるXYZ座標およびツールセンターポイントの位置を定義付けるオイラー角(Rx,Ry,Rz)によって表される。オイラー角は、予め定められた基準姿勢に対する、XYZ軸の各軸を中心とする回転角度を示す。
【0126】
プロセッサ121は、設定画面60が立方体モデル72の表面上の点の指定を受け付けると、ツールセンターポイントが指定された点にロボットモデル70が位置するように設定画面60を更新する。さらに、プロセッサ121は、設定画面60がロボットモデル70の姿勢の変更指示を受け付けると、ロボットモデル70が当該変更指示に応じた姿勢となるように設定画面60を更新する。ユーザは、新たな動作区間の終了点72eに対応する点を指定するとともに、終了点72eの姿勢と一致するようにロボットモデル70の姿勢の変更指示を入力すればよい。プロセッサ121は、設定画面60への入力に従って、新たな動作区間の終了点72eを設定する。
【0127】
なお、1つ前の動作区間が設定されていない場合、プロセッサ121は、終了点72eの設定方法と同様の設定方法に従って、新たな動作区間の開始点72sを設定すればよい。
【0128】
入力欄62は、動作区間が「Active」グループおよび「Inactive」グループのいずれに属するかの指定を入力するために使用される。プロセッサ121は、入力欄62への入力に従って、動作区間が「Active」グループおよび「Inactive」グループのいずれに属するかを決定する。
【0129】
入力欄63は、動作区間が「Selectable」グループおよび「By Teaching」グループのいずれに属するかの指定を入力するために使用される。プロセッサ121は、入力欄63への入力に従って、動作区間が「Selectable」グループおよび「By Teaching」グループのいずれに属するかを決定する。
【0130】
動作区間が「By Teaching」グループに属する旨の指定が入力されると、プロセッサ121は、当該動作区間におけるマニピュレータ202の動作を定義付ける教示データの入力を促す画面(図示しない)を示す画面データを端末500に送信する。これにより、端末500は、当該画面をユーザインターフェイス504に表示し、教示データの入力を受け付ける。
【0131】
プロセッサ121は、端末500が受け付けた教示データに基づいて、対応する動作区間の経路候補を生成し、生成した経路候補の確認画面を示す画面データを端末500に送信する。これにより、端末500は、確認画面をユーザインターフェイス504に表示する。
【0132】
図9は、教示データに基づく経路候補の確認画面の一例を示す図である。
図9に示す確認画面60Aは、
図8に示す設定画面60と同様に表示エリア61を含む。確認画面60Aは、さらに、ボタン66,67を含む。
【0133】
図9に示されるように、表示エリア61において、ロボット200が配置される実空間に対応する3次元仮想空間上に、教示データに基づく経路候補42とリスクマップMap(p
tcp,I
risk)とが重ねて表示される。リスクマップMap(p
tcp,I
risk)は、リスク値I
riskに応じた濃度の空間分布を示す形式で表示される。これにより、ユーザは、教示データに基づく経路候補に沿ってロボット200を動作させたときの、物体との干渉のリスクの大小を把握し、教示データの適否を判断できる。
【0134】
プロセッサ121は、経路候補42がクリックされたことに応じて、ロボットモデル70が経路候補42に沿って移動するように確認画面60Aを生成する。これにより、ユーザは、経路候補42に沿ったロボット200の動作を把握しやすくなる。
【0135】
ボタン66は、教示データを再設定するときに使用される。ボタン66が押下されると、プロセッサ121は、教示データの再入力を促す画面(図示しない)を示す画面データを端末500に送信するこれにより、端末500は、当該画面をユーザインターフェイス504に表示する。そして、プロセッサ121は、新たな教示データに基づいて、経路候補を生成し、生成した経路候補に基づいて、確認画面60Aを更新する。
【0136】
ボタン67は、経路候補を動作経路として設定するときに使用される。ボタン67が押下されると、プロセッサ121は、最新の経路候補を、対応する動作区間の動作経路として決定する。
【0137】
動作区間が「Selectable」グループに属する旨の指定が入力されると、プロセッサ121は、当該動作区間の開始点72sと終了点72eとを繋ぎ、かつ、立方体モデル72内を通過する複数の経路候補を生成する。そして、プロセッサ121は、複数の経路候補を示し、かつ、複数の経路候補の中から1つの経路候補の選択を促す選択画面を示す画面データを端末500に送信するこれにより、端末500は、選択画面をユーザインターフェイス504に表示する。
【0138】
図10は、複数の経路候補の中から1つの経路候補の選択を促す選択画面の一例を示す図である。
図10に示す選択画面60Bは、
図9に示す設定画面60と同様に表示エリア61を含む。選択画面60Bは、さらに、ラジオボタン68と、表示欄69と、ボタン75と、を含む。
【0139】
図10に示されるように、表示エリア61において、ロボット200が配置される実空間に対応する3次元仮想空間上に、経路候補40a~40cとリスクマップMap(p
tcp,I
risk)とが重ねて表示される。リスクマップMap(p
tcp,I
risk)は、リスク値I
riskに応じた濃度の空間分布を示す形式で表示される。これにより、ユーザは、経路候補40a~40cの各々に沿ってロボット200を動作させたときの、物体との干渉のリスクの大小を把握でき、当該リスクを考慮して1つの経路候補を選択できる。
【0140】
プロセッサ121は、経路候補40a~40cのいずれかがクリックされたことに応じて、ロボットモデル70がクリックされた経路候補に沿って移動するように選択画面60Bを生成する。これにより、ユーザは、各経路候補に沿ったロボット200の動作を把握しやすくなる。
【0141】
表示欄69には、経路候補40a~40cの評価結果が表示される。上述したように、評価結果は、例えば、移動距離、移動時間および干渉のリスクの度合いの少なくとも1つを示す。
【0142】
ラジオボタン68は、経路候補40a~40cの中から1つの経路候補を選択するために使用される。プロセッサ121は、表示エリア61において、ラジオボタン68によって選択された経路候補(
図10では経路候補40a)が実線で表され、残りの経路候補(
図10では経路候補40b,40c)が破線で表されるように、選択画面60Bを更新する。
【0143】
ボタン75は、経路候補の選択を確定するために使用される。プロセッサ121は、ボタン75が押下されたときにラジオボタン68によって選択されている経路候補を、対象の動作区間の動作経路として決定する。
【0144】
なお、表示エリア61において、各動作区間の動作経路の表示形式は、「Active」グループおよび「Inactive」グループのうち当該動作区間が属するグループに応じて異なることが好ましい。例えば、「Active」グループに属する動作区間の動作経路が緑色で表示され、「Inactive」グループに属する動作区間の動作経路が赤色で表示される。
【0145】
<制御装置の処理の流れ>
(オフライン期間)
図11は、オフライン期間における制御装置の処理の流れを示すフローチャートである。
【0146】
まず、プロセッサ121は、動作区間の指定を受け付けた否かを判断する(ステップS1)。例えば、プロセッサ121は、端末500に提供している設定画面60(
図8参照)のボタン64が押下された場合に動作区間の指定を受け付けたと判断する。動作区間の指定を受け付けていない場合(ステップS1でNO)、処理はステップS1に戻る。
【0147】
動作区間の指定を受け付けた場合(ステップS1でYES)、プロセッサ121は、設定画面60への入力に応じて、動作区間が属するグループを決定する(ステップS2)。次に、プロセッサ121は、設定画面60への入力に応じて、動作区間の動作経路を決定する(ステップS3)。
【0148】
次に、プロセッサ121は、次の動作区間の指定を受け付けたか否かを判断する(ステップS4)。例えば、プロセッサ121は、
図8に示す設定画面60のボタン64が押下された場合に次の動作区間の指定を受け付けたと判断する。次の動作区間の指定を受け付けた場合(ステップS4でYES)、処理はステップS2に戻る。
【0149】
次の動作区間の指定を受け付けていない場合(ステップS4でNO)、プロセッサ121は、終了指示を受け付けたか否かを判断する(ステップS5)。例えば、プロセッサ121は、
図8に示す設定画面60のボタン65が押下された場合に終了指示を受け付けたと判断する。
【0150】
終了指示を受け付けていない場合(ステップS5でNO)、処理はステップS4に戻る。終了指示を受け付けた場合(ステップS5でYES)、処理は終了する。
【0151】
図12は、
図11に示すステップS3のサブルーチンの処理の流れを示すフローチャートである。
【0152】
プロセッサ121は、設定された1以上の動作区間のうちの1つの動作区間を選択する(ステップS11)。
【0153】
次に、プロセッサ121は、選択された動作区間が「Selectable」グループおよび「By Teaching」グループのいずれに属するかを判別する(ステップS12)。
【0154】
ステップS12において動作区間が「Selectable」グループに属すると判別された場合、プロセッサ121は、選択された動作区間について複数の経路候補を生成する(ステップS13)。さらに、プロセッサ121は、生成した複数の経路候補の各々を評価する(ステップS14)。
【0155】
次に、プロセッサ121は、複数の経路候補とリスクマップMap(ptcp,Irisk)とが重ねて表示される選択画面を提供する(ステップS15)。提供された選択画面は、例えば端末500のユーザインターフェイス504に表示される。このとき、プロセッサ121は、評価結果も選択画面に含める。プロセッサ121は、選択画面を介して、複数の経路候補の中から1つの経路候補の選択を受け付ける(ステップS16)。
【0156】
次に、プロセッサ121は、選択された1つの経路候補を、対象の動作区間の動作経路として決定する(ステップS17)。
【0157】
ステップS12において動作区間が「By Teaching」グループに属すると判別された場合、プロセッサ121は、マニピュレータ202の動作を定義付ける教示データの入力を促す画面を提供し、教示データを受け付ける(ステップS18)。
【0158】
次に、プロセッサ121は、教示データに基づいて、選択された動作区間の経路候補を生成し、生成した経路候補とリスクマップMap(ptcp,Irisk)とが重ねて表示される確認画面を提供する(ステップS19)。提供された確認画面は、例えば端末500のユーザインターフェイス504に表示される。
【0159】
プロセッサ121は、経路候補の再設定の指示および動作経路を決定する旨の指示のいずれを受け付けたか判別する(ステップS20)。例えば、プロセッサ121は、
図10に示す確認画面60Aのボタン66が押下された場合に、経路候補の再設定の指示を受け付けたと判別し、ボタン67が押下された場合に、動作経路を決定する旨の指示を受け付けたと判別する。ステップS20において再設定の指示を受け付けたと判別された場合、処理はステップS18に戻る。
【0160】
ステップS20において動作経路を決定する旨の指示を受け付けたと判別された場合、プロセッサ121は、最新の教示データに基づいて生成された経路候補を、対象の動作区間の動作経路として決定する(ステップS21)。
【0161】
ステップS17またはステップS21の後、プロセッサ121は、残りの動作区間が存在するか否かを判定する(ステップS22)。
【0162】
残りの動作区間が存在する場合(ステップS22でYES)、処理はステップS11に戻る。残りの動作区間が存在しない場合(ステップS22でNO)、処理は
図11に示すステップS4に移る。
【0163】
(オンライン期間)
図13は、オンライン期間におけるロボットの制御処理の流れを示すフローチャートである。まず、プロセッサ121は、動作経路上の次に通過すべき点を決定する(ステップS31)。
【0164】
次に、プロセッサ121は、静的物体とマニピュレータ202との最短距離が閾値Th1以下であるか否かを判断する(ステップS32)。
【0165】
静的物体とマニピュレータ202との最短距離が閾値Th1を超える場合(ステップS32でNO)、プロセッサ121は、現在の動作区間が「Inactive」グループに属するか否かを判断する(ステップS33)。現在の動作区間が「Active」グループに属する場合(ステップS33でNO)、処理はステップS35に移る。現在の動作区間が「Inactive」グループに属する場合(ステップS33でYES)、プロセッサ121は、速度ベクトルqrepを0に設定する(ステップS34)。その後、処理はステップS35に移る。
【0166】
ステップS35において、プロセッサ121は、上記の合成ベクトルqを計算する。次に、プロセッサ121は、合成ベクトルqに応じた指令を生成し、生成した指令をロボット200に出力する(ステップS36)。
【0167】
静的物体とマニピュレータ202との最短距離が閾値Th1以下である場合(ステップS32でYES)、プロセッサ121は、動的物体との干渉リスクが基準より大きいか否かを判断する(ステップS37)。例えば、プロセッサ121は、リスク尤度qrisk_likelihoodが閾値Th2を超える場合に、動的物体との干渉リスクが基準より大きいと判断する。動的物体との干渉リスクが基準以下であることは、動作経路に沿って移動しようとする親和ポテンシャルが動的物体から遠ざかろうとする排斥ポテンシャルよりも大きいことを意味する。そのため、合成ベクトルqに応じた指令に従った動作は、帰還動作または平準動作となる。そこで、動的物体との干渉リスクが基準以下である場合(ステップS37でNO)、処理はステップS33に移る。
【0168】
動的物体との干渉リスクが基準より大きい場合(ステップS37でYES)、プロセッサ121は、停止動作を行なうための指令を生成し、生成した指令をロボット200に出力する(ステップS38)。
【0169】
ステップS36またはステップS38の後、プロセッサ121は、ロボット200が最後の動作区間の終了点に到着したか否かを判断する(ステップS39)。最後の動作区間の終了点に到達していない場合(ステップS39でNOの場合)、処理はステップS31に戻る。最後の動作区間の終了点に到達した場合(ステップS39でYESの場合)、処理は終了する。
【0170】
図14は、オンライン期間におけるリスクマップの取得処理の流れを示すフローチャートである。
【0171】
まず、プロセッサ121は、ロボット200の周囲に人が存在しないタイミング(例えばロボット200の動作開始前のタイミング)のオクトマップ50に基づいて、初期のリスクマップMap(ptcp,Irisk)を生成する(ステップS41)。
【0172】
次に、プロセッサ121は、ロボット200の動作が終了したか否かを判断する(ステップS42)。ロボット200の動作が終了した場合(ステップS42でYES)、処理は終了する。
【0173】
ロボットの動作が終了していない場合(ステップS42でNO)、プロセッサ121は、干渉回避動作の実行のために計算された速度ベクトルqrepを蓄積する(ステップS43)。
【0174】
プロセッサ121は、初期のリスクマップMap(ptcp,Irisk)の生成およびリスクマップMap(ptcp,Irisk)の前回の更新のうちの遅い方から所定期間経過したか否かを判断する(ステップS44)。所定期間経過していない場合(ステップS44でNO)、処理はステップS42に戻る。
【0175】
所定期間経過した場合(ステップS44でYES)、プロセッサ121は、所定期間に蓄積された速度ベクトルqrepに基づいて、リスクマップMap(ptcp,Irisk)を更新する(ステップS45)。ステップS44の後、処理はステップS42に戻る。
【0176】
<変形例>
(変形例1)
プロセッサ121は、各動作区間について決定された動作経路の調整を受け付けてもよい。例えば、プロセッサ121は、各動作区間の動作経路が表示され、動作経路上の任意の点の移動操作を受け付けるための画面(ウェブページ)を示す画面データを端末500に送信してもよい。プロセッサ121は、当該画面に対する移動操作に応じて、動作経路を変更すればよい。このとき、プロセッサ121は、動作経路とリスクマップMap(ptcp,Irisk)とが重ねて表示されるように当該画面を生成することが好ましい。
【0177】
(変形例2)
プロセッサ121は、1つの動作区間を2以上の動作区間に分割する指示を受け付けてもよい。例えば、プロセッサ121は、分割面の指定を受け付けるための画面(ウェブページ)を示す画面データを端末500に送信する。プロセッサ121は、当該画面において指定された分割面で動作区間を分割する。
【0178】
ロボット200の動作経路の設定に慣れていないユーザにとって、出発点から目的点までの広い範囲について複数の動作区間を適切に指定することが困難である。このようなユーザは、出発点から目的点までの広い範囲を初期動作区間として指定するとともに、当該初期動作区間を「Selectable」グループに属するように指定する。
【0179】
図15は、広い範囲を初期動作区間として指定したときの設定画面の一例を示す図である。
図15に示す設定画面60Cの表示エリア61には、初期動作区間SEC1に対応する立方体モデル72の表面に指定された開始点72sおよび終了点72eを繋ぐ経路候補40d~40fとリスクマップMap(p
tcp,I
risk)とが重ねて表示される。ユーザは、ラジオボタン68を操作することにより、経路候補40d~40fの中から1つを選択する。これにより、初期動作区間SEC1に対して動作経路が決定される。
【0180】
ユーザは、決定された動作経路を確認しながら、初期動作区間SEC1を複数の動作区間に分割すればよい。例えば、ユーザは、動作経路において進行方向が変化する箇所を通るように分割面を指定すればよい。これにより、動作の内容が変化するタイミングで動作区間を異ならせることができる。
【0181】
図16は、初期動作区間を複数の動作区間に分割するときの設定画面の一例を示す図である。
図16に示す設定画面60Dの表示エリア61では、初期動作区間SEC1を3つに分割するための分割面77(1),77(2)が指定されている。プロセッサ121は、指定された分割面77(1),77(2)に従って、初期動作区間SEC1を動作区間SEC1(1),SEC1(2),SEC1(3)に分割する。動作区間SEC1(1)~SEC1(3)の動作可能範囲は、立方体モデル72(1)~72(3)によってそれぞれ表される。さらに、プロセッサ121は、指定された分割面77(1),77(2)に従って、初期動作区間SEC1に対して決定された動作経路を動作経路44(1)~44(3)に分割する。動作経路44(1)~44(3)は、動作区間SEC1(1)~SEC1(3)にそれぞれ属する。
【0182】
変形例2には変形例1が組合わされてもよい。例えば、設定画面60Dは、調整対象区間を選択するための入力欄76を含む。ユーザは、調整対象となる動作区間を入力欄76に入力する。
図16に示す例では、動作区間SEC1(1)が調整対象として選択されている。調整対象として選択された動作区間SEC1(1)には、リスクマップMap(p
tcp,I
risk)が重ねて表示される。
【0183】
設定画面60Dは、調整対象として選択された動作区間の動作経路(
図16では、動作区間SEC1(1)の動作経路44(1))上の点の移動操作を受け付ける。例えば、ユーザは、動作経路44(1)上の任意の点をドラッグして移動すればよい。プロセッサ121は、当該移動操作に応じて、動作経路を変更する。これにより、ロボット200の動作経路の設定に慣れていないユーザであっても、簡易な操作で動作経路を設定することができる。
【0184】
設定画面60Dは、ボタン78を含む。ボタン78が押下されたことにより、プロセッサ121は、調整後の動作経路に従って経路データ142を生成し、生成した経路データ142をストレージ123に格納する。
【0185】
なお、設定画面60Dは、分割により得られた2以上の動作区間の各々について、「Active」グループおよび「Inactive」グループのいずれに属するかの指定を受け付けてもよい。プロセッサ121は、当該指定に従って、分割により得られた2以上の動作区間の各々が「Active」グループおよび「Inactive」グループのいずれに属するかを決定する。
【0186】
(変形例3)
制御部12として動作するプロセッサ121は、オンライン期間において、ロボット200の現状の動作が平準動作、干渉回避動作、帰還動作および停止動作のいずれであるのかを示す動作状況情報を生成し、生成した情報を出力してもよい。生成された情報は、端末500に出力されてもよいし、図示しないインジケーターに出力されてもよい。これにより、ユーザは、当該情報を確認することにより、ロボット200の現状の動作状況を把握できる。
【0187】
プロセッサ121は、リスクマップMap(ptcp,Irisk)の更新のために算出されるリスク尤度qrisk_likelihoodと、マニピュレータ202と静的物体との最短距離とを用いて、動作状況情報を生成すればよい。
【0188】
例えば、プロセッサ121は、リスク尤度qrisk_likelihoodが閾値Th2以下であり、かつ、ロボット200が動作経路上に存在することに応じて、ロボット200の現状の動作が平準動作であることを示す動作状況情報を生成する。
【0189】
プロセッサ121は、リスク尤度qrisk_likelihoodが閾値Th2を超え、かつ、静的物体とマニピュレータ202との最短距離が閾値Th1を超えることに応じて、ロボット200の現状の動作が干渉回避動作であることを示す動作状況情報を生成する。
【0190】
プロセッサ121は、リスク尤度qrisk_likelihoodが閾値Th2を超え、かつ、静的物体とマニピュレータ202との最短距離が閾値Th1以下であることに応じて、ロボット200の現状の動作が停止動作であることを示す動作状況情報を生成する。
【0191】
プロセッサ121は、リスク尤度qrisk_likelihoodが閾値Th2以下であり、かつ、ロボット200が動作経路上に存在しないことに応じて、ロボット200の現状の動作が帰還動作であることを示す動作状況情報を生成する。
【0192】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0193】
(構成1)
ロボット(200)の動作経路を生成する装置(100)であって、
前記ロボット(200)の動作中における、前記ロボット(200)の位置毎の、前記ロボット(200)と前記ロボット(200)の周囲に存在する物体との干渉のリスクを示すリスクマップ(80)を取得する取得部(13,121)と、
前記ロボットの1以上の経路候補(40a~40f,42)を生成する生成部(15,121)と、を備え、
前記生成部(15,121)は、前記1以上の経路候補(40a~40f,42)と前記リスクマップ(80)とが重ねて表示される画面(60A~60D)を示すデータを提供する、装置(100)。
【0194】
(構成2)
前記1以上の経路候補(40a~40f,42)は、複数の経路候補(40a~40f)を含み、
前記ユーザインターフェイス(110)は、前記複数の経路候補の中から1つの経路候補の選択を受け付け、
前記装置(100)は、
前記1つの経路候補を前記ロボット(200)の動作経路として決定する決定部(16,121)をさらに備える、構成1に記載の装置(100)。
【0195】
(構成3)
前記生成部(15,121)は、前記リスクマップ(80)に基づいて、前記複数の経路候補(40a~40f)の各々について、前記物体との干渉のリスクの度合いを評価し、
前記画面は、前記生成部(15,121)による評価結果を含む、構成2に記載の装置(100)。
【0196】
(構成4)
前記画面(60A~60D)において、前記ロボット(200)を含む実空間に対応する3次元仮想空間上に、前記1以上の経路候補と前記リスクマップ(80)とが重ねて表示される、構成1から3のいずれかに記載の装置(100)。
【0197】
(構成5)
ロボット(200)の動作経路を生成する方法であって、
前記ロボット(200)の動作中における、前記ロボット(200)の位置毎の、前記ロボット(200)と前記ロボット(200)の周囲に存在する物体との干渉のリスクを示すリスクマップ(80)を取得するステップと、
前記ロボット(200)の1以上の経路候補を生成するステップと、
ユーザインターフェイス(504)に、前記1以上の経路候補(40a~40f,42)と前記リスクマップ(80)とを重ねて表示させるステップと、を備える方法。
【0198】
(構成6)
ロボット(200)の動作経路を生成する方法をコンピュータ(121)に実行させるプログラム(140)であって、
前記方法は、
前記ロボット(200)の動作中における、前記ロボット(200)の位置毎の、前記ロボット(200)と前記ロボット(200)の周囲に存在する物体との干渉のリスクを示すリスクマップ(80)を取得するステップと、
前記ロボット(200)の1以上の経路候補(40a~40f,42)を生成するステップと、
前記1以上の経路候補(40a~40f,42)と前記リスクマップ(80)とが重ねて表示される画面(60A~60D)を示すデータを提供するステップと、を含む、プログラム(140)。
【0199】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0200】
1 システム、5 物体占有領域、10 オクトマップ取得部、11 キャリブレーション部、12 制御部、13 リスクマップ取得部、14 動作区間設定部、15 生成部、16 決定部、20_1~20_6 関節、40a~40f,42 経路候補、44(1)~44(3) 動作経路、50 オクトマップ、51 ボクセル、60,60C,60D 設定画面、60A 確認画面、60B 選択画面、61 表示エリア、62,63,76 入力欄、64~67,75,78 ボタン、68 ラジオボタン、69 表示欄、70 ロボットモデル、72 立方体モデル、72e,Pe 終了点、72s,Ps 開始点、73 仮想物体モデル、77(1),77(2) 分割面、80 リスクマップ、100 制御装置、120 演算処理回路、121,501 プロセッサ、122,502 メインメモリ、123,503 ストレージ、124 インターフェイス回路、130 フィールドネットワークコントローラ、140 システムプログラム、141 形状データ、142 経路データ、143 静的物体データ、200 ロボット、202 マニピュレータ、204 マニピュレータコントローラ、220 アーム、230 エンドエフェクタ、300 センシングデバイス、500 端末、504 ユーザインターフェイス、530 ブラウザ。