(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-23
(45)【発行日】2024-10-31
(54)【発明の名称】ロボットシミュレーション装置、ロボットシミュレーションシステム、および、ロボットシミュレーション方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20241024BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2021173174
(22)【出願日】2021-10-22
【審査請求日】2024-03-12
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】奥野 東
【審査官】牧 初
(56)【参考文献】
【文献】特開平8-63581(JP,A)
【文献】米国特許出願公開第2020/0368906(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
ロボットの動作を規定するシミュレーションの入力パラメータを、入力分布データとして受け付ける分布入力部と、
前記入力分布データに従って入力パラメータの集合を生成する入力生成部と、
生成された入力パラメータごとに、対応する出力パラメータを評価するシミュレーション実行部と、
評価された出力パラメータの集合を積み重ねた出力分布データを推定し、前記出力分布データが収束するまで前記出力分布データを更新する出力分布推定部と、
収束した前記出力分布データを出力する結果出力部とを有することを特徴とする
ロボットシミュレーション装置。
【請求項2】
前記入力生成部は、モンテカルロ法により前記入力分布データに従った乱数を発生させて、その乱数の集合を入力パラメータの集合とし、
前記出力分布推定部は、評価された出力パラメータの集合を積み重ねたヒストグラムからカーネル密度推定法により前記出力分布データを推定することを特徴とする
請求項1に記載のロボットシミュレーション装置。
【請求項3】
前記ロボットシミュレーション装置は、さらに、シミュレーションDBおよびシミュレーション結果読取部を有しており、
前記シミュレーションDBには、前記シミュレーション実行部によるあらかじめシミュレーションした結果として、過去の入力パラメータと過去の出力パラメータとの対応データが格納されており、
前記シミュレーション実行部による出力パラメータを評価する処理に替えて、前記シミュレーション結果読取部は、今回生成された入力パラメータごとに、対応する出力パラメータを前記シミュレーションDBから読み取る処理を実行することを特徴とする
請求項1に記載のロボットシミュレーション装置。
【請求項4】
前記ロボットシミュレーション装置は、さらに、実験結果読取部、ベイズ推定部、および、実験DBを有しており、
前記実験DBには、過去の入力パラメータと過去の出力パラメータとの対応データの集合が格納されており、
前記ベイズ推定部は、前記実験DBから読み取った対応データの集合から、入力パラメータに対応する出力パラメータの分布データを、ベイズ推定により作成し、
前記シミュレーション実行部による出力パラメータを評価する処理に替えて、前記実験結果読取部は、今回生成された入力パラメータごとに、対応する出力パラメータの分布データを前記ベイズ推定部から読み取る処理を実行し、
前記出力分布推定部は、読み取られた出力パラメータの分布データを積み重ねた前記出力分布データを作成することを特徴とする
請求項1に記載のロボットシミュレーション装置。
【請求項5】
前記ロボットシミュレーション装置は、さらに、作業工程最適化部を有しており、
前記作業工程最適化部は、前記出力分布推定部が作成した前記出力分布データを参照してロボットが実行する各工程の作業時間を変更するとともに、その変更後の作業時間に対して、各工程の順序を組み替える処理、および、各ロボットに工程の割り当てを組み替える処理の少なくとも1つを実行することで、ロボットが実行する各工程の総作業時間を短縮することを特徴とする
請求項1に記載のロボットシミュレーション装置。
【請求項6】
前記シミュレーション実行部は、ロボットの作業時間またはロボットの作業可否を出力パラメータとして評価することを特徴とする
請求項1に記載のロボットシミュレーション装置。
【請求項7】
請求項1ないし請求項6のいずれか1項に記載のロボットシミュレーション装置と、前記分布入力部に対して入力データを送信する手段および前記結果出力部からの出力データを受信する手段を有する入出力装置とを有することを特徴とする
ロボットシミュレーションシステム。
【請求項8】
ロボットシミュレーション装置は、分布入力部と、入力生成部と、シミュレーション実行部と、出力分布推定部と、結果出力部とを有しており、
前記分布入力部は、ロボットの動作を規定するシミュレーションの入力パラメータを、入力分布データとして受け付け、
前記入力生成部は、前記入力分布データに従って入力パラメータの集合を生成し、
前記シミュレーション実行部は、生成された入力パラメータごとに、対応する出力パラメータを評価し、
前記出力分布推定部は、評価された出力パラメータの集合を積み重ねた出力分布データを推定し、前記出力分布データが収束するまで前記出力分布データを更新し、
前記結果出力部は、収束した前記出力分布データを出力することを特徴とする
ロボットシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットシミュレーション装置、ロボットシミュレーションシステム、および、ロボットシミュレーション方法に関する。
【背景技術】
【0002】
作業ロボットを動作させる前に、その作業ロボットの挙動を計算機上でシミュレーションすることにより、実世界での挙動の問題点を事前に発見できる。
【0003】
特許文献1の請求項1には、以下の情報処理装置が記載されている。
柔軟物の重量、長さ、剛性、これらの公差および重力の方向を基に、前記柔軟物の存在範囲を計算し、前記重量、前記長さ、および前記剛性の少なくともいずれかの確率分布を基に、前記存在範囲における前記柔軟物の存在確率を計算する計算部と、
前記存在範囲を表示し、前記存在確率が低い箇所を、前記存在確率が高い箇所と比較して薄く表示する表示装置と、を備えることを特徴とする情報処理装置。
【0004】
特許文献2の請求項1には、以下のロボットの作業動作最適化装置が記載されている。
ロボットと当該ロボットの周辺作業環境とからなるロボット部と、
入力された作業指令に従って前記ロボット部を動作させるロボットコントローラ部と、
前記ロボット部の動作結果を観測し、当該動作結果が適切なものであるかを評価する作業結果評価部と、
前記ロボット部の動作が最も好ましいものになると推定される作業指令の候補を発生させる改良作業指令候補発生部と、
前記改良作業指令候補発生部により発生させた作業指令候補に基づいて、前記ロボットコントローラ部に対して作業指令を出力する作業指示部とを備え、
前記改良作業指令候補発生部は、作業指令の候補を発生させたことによるロボット部の動作状態に対する前記作業結果評価部の評価結果に基づいて新たな作業指令を発生させ、これを繰り返すことで、最適化された作業指令を求めることを特徴とするロボットの作業動作最適化装置。
【0005】
特許文献1により、柔軟物の公差がシミュレーションに反映される。
特許文献2により、ロボット部の動作のシミュレーション結果をもとに、ロボットへの作業指令を最適化できる。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2019-70963号公報
【文献】特開2009-125920号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
災害現場のような未知の環境でのロボット作業では、シミュレーションの入力となる物性値や境界条件などを正確に決めることができない。例えば、災害現場には瓦礫が散乱しており、その瓦礫の数や大きさなどが、実際に現場に行ってはじめてわかることもある。そのため、特許文献1,2のような、多少の公差が発生するものの既知の環境を前提としたシミュレーション技術は、未知の環境に対してはそのまま適用できない。
【0008】
つまり、未知の環境を前提としたシミュレーションでは、シミュレーションの正確性よりも、未知の環境としてどのような環境が発生したとしても、その環境下でロバストな(どのような環境でもある程度妥当な)結果が求められる。このような環境の柔軟性に対応したシミュレーションシステムが求められる。
【0009】
そこで、本発明は、未知の環境に対応したロボットシミュレーションを提供することを主な課題とする。
【課題を解決するための手段】
【0010】
上記の課題を解決するため、本発明のロボットシミュレーション装置は以下の特徴を有する。
本発明は、ロボットの動作を規定するシミュレーションの入力パラメータを、入力分布データとして受け付ける分布入力部と、
前記入力分布データに従って入力パラメータの集合を生成する入力生成部と、
生成された入力パラメータごとに、対応する出力パラメータを評価するシミュレーション実行部と、
評価された出力パラメータの集合を積み重ねた出力分布データを推定し、前記出力分布データが収束するまで前記出力分布データを更新する出力分布推定部と、
収束した前記出力分布データを出力する結果出力部とを有することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【0011】
本発明によれば、未知の環境に対応したロボットシミュレーションを提供することができる。
【図面の簡単な説明】
【0012】
【
図1】本実施形態に関するロボットシミュレーション装置の構成図である。
【
図2】本実施形態に関するシミュレーション実行部の説明図である。
【
図3】本実施形態に関するロボットシミュレーションシステムの構成図である。
【
図4】本実施形態に関するロボットシミュレーション装置の動作を示すフローチャートである。
【
図5】本実施形態に関する分布入力部および実データ入力部の入力画面図である。
【
図6】本実施形態に関する入力分布の一例を示すグラフである。
【
図7】本実施形態に関する入力パラメータの一例を示すグラフである。
【
図8】本実施形態に関するシミュレーションDBの一例を示すテーブルである。
【
図9】本実施形態に関するシミュレーション結果読取部の処理を示すグラフである。
【
図10】本実施形態に関する出力分布推定部が生成するヒストグラムである。
【
図11】本実施形態に関する出力分布推定部が推定する出力分布データである。
【
図12】本実施形態に関する出力分布データの収束評価を示すグラフである。
【
図13】本実施形態に関する実験DBに格納されている実験結果の点群データを示すグラフである。
【
図14】本実施形態に関するベイズ推定部が
図13の実験DBからベイズ推定を行った結果を示すグラフである。
【
図15】本実施形態に関する出力分布推定部が推定する出力分布データの説明図である。
【
図16】本実施形態に関する作業工程最適化部の処理例を示すガントチャートである。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態を説明する。
【0014】
図1は、ロボットシミュレーション装置100の構成図である。
ロボットシミュレーション装置100は、処理部として、分布入力部11Aと、実データ入力部11Bと、分布推定部11Cと、入力生成部12Aと、出力分布推定部13と、シミュレーション実行部14Aと、シミュレーション結果読取部14Bと、実験結果読取部14Dと、ベイズ推定部14Eと、作業工程最適化部15Aと、結果出力部16とを有する。
ロボットシミュレーション装置100の記憶部には、入力分布(入力分布データ)11Dと、入力パラメータ12Bと、シミュレーションDB14Cと、実験DB14Fと、出力分布データ14と、最適工程データ15Bとが格納される。
【0015】
分布入力部11Aは、入力分布11Dの入力を受け付ける。入力分布11Dは、未知の環境の条件に応じてバラツキを与えた入力データである。なお、入力分布11Dの取りうる値の範囲はある程度予測可能だが、今回のシミュレーションを行う未知の環境に対応した正確な値は特定できないものとする。
【0016】
実データ入力部11Bは、入力分布11Dの代わりとして、今回のシミュレーションを行う未知の環境とは別の、想定した環境下において事前に取得した実データ(実測データ)の入力を受け付ける。例えば、瓦礫撤去のシミュレーションであれば、実際の災害現場と近い条件(瓦礫の元の材料、壊れ方など)で瓦礫の模型を作ってみて、その模型の重さを実データとして量って実データ入力部11Bから入力してもよい。一般的には、実データの用意にはコストがかかるので、実データの個数(100個など)は、後記するシミュレーション処理への入力パラメータ12Bの個数(10000個など)よりも少ない。
分布推定部11Cは、実データ入力部11Bが受け付けた実データから、カーネル密度推定法(KDE:Kernel Density Estimation)などにより、入力分布11Dを推定する。
【0017】
入力生成部12Aは、指定した入力分布11Dの確率密度に従って、今回のシミュレーションの入力パラメータ12Bを生成する。この生成処理は、例えば、モンテカルロ法により、乱数を指定回数(例えば1万回)発生させる処理であり、生成された乱数は他の乱数とは異なる値となる。
なお、生成する乱数の個数は多いほど入力分布11Dに近づき精度も向上するが、その反面シミュレーションの計算量も増大してしまう。よって、ユーザは事前に計算機の性能などを考慮して、適切な個数の乱数を生成するよう設定することが望ましい。
【0018】
入力パラメータ12Bは、今回のシミュレーションで使用されるパラメータであり、例えば、災害現場に散乱している瓦礫をロボットが把持する場合、その把持物体の重量や、把持物体の形状や、把持作業を行う地面の摩擦係数や、把持作業を行う屋内の温度などが例示される。これらの入力パラメータ12Bは、今回のシミュレーションの結果である出力分布データ14(作業時間や、作業ロボットが把持する物の重みで転倒するなどの作業の可否など)に影響を及ぼすパラメータである。
【0019】
出力分布推定部13は、入力パラメータ12Bによって示される未知の環境の条件に対して確率的なシミュレーションにより、出力分布データ14のロバストな評価を行う。出力分布推定部13は、確率的なシミュレーションの手段として、以下の(方法1)~(方法3)のいずれかを用いてもよい。
(方法1)シミュレーション実行部14Aは、入力パラメータ12Bを受け、計算機上でシミュレーションを実行して、その結果を出力分布推定部13に返信する。
【0020】
(方法2)シミュレーション結果読取部14Bは、入力パラメータ12Bを受け、シミュレーションDB14Cを参照して、事前に機械学習などで登録されたシミュレーションの結果を読み取って、出力分布推定部13に返信する。そのため、シミュレーション結果読取部14Bは、シミュレーション実行部14Aにより事前に実行されたシミュレーションの入力パラメータ12Bおよびその結果を、シミュレーションDB14Cに登録しておく。
(方法3)実験結果読取部14Dは、入力パラメータ12Bを受け、ベイズ推定部14Eが推定したベイズ推定の分布データを取得し、その分布データを出力分布推定部13に返信する。そのため、ベイズ推定部14Eは、実データ入力部11Bにより事前に入力された実験環境下での実データ(実測データ)と、その実データにおける実験結果とを実験DB14Fに登録しておく。
【0021】
出力分布推定部13は、複数の(10000個など)入力パラメータ12Bそれぞれに対して、(方法1)~(方法3)のいずれかで評価された出力パラメータをもとに、カーネル密度推定法(KDE:Kernel Density Estimation)などにより、評価された出力パラメータの集合を積み重ねた出力分布データ14を推定する。
結果出力部16は、出力分布データ14を画面出力することにより、未知の環境に対応したロバストなシミュレーション結果をユーザに把握させることで、ユーザがロボット作業の工程の検討に活用できる。
【0022】
さらに、出力分布データ14はそのまま画面出力するだけでなく、ロボットの工程計画を最適化するための素材として用いてもよい。
作業工程最適化部15Aは、出力分布データ14を入力として、ロボットの工程計画を初期計画から工程最適化(例:混合整数計画法、A*アルゴリズムなど)を行い、その結果を最適工程データ15Bとする。
この最適化処理とは、例えば、同じ作業を実行する初期計画を起点として、作業の内容は変えずに、個々の作業時間を調整したり、作業間の順序を入れ替えたりすることで、総作業時間を短縮する処理である。
結果出力部16は、出力分布データ14をもとに最適化された最適工程データ15Bをガントチャート形式などで画面出力する。これにより、未知の環境に対応したロバストな複数の作業が存在していても、それらを連携した妥当な作業工程をユーザに把握させることができる。
【0023】
図2は、シミュレーション実行部14Aの説明図である。
シミュレーション実行部14Aは、作業現場に散乱している瓦礫111Aを、作業ロボット111Bが片づける作業をシミュレーションする。このシミュレーション結果としての出力パラメータ(作業時間や作業可否)は、入力パラメータ12Bとして指定される瓦礫111Aの数や大きさなどによって変化する。
つまり、シミュレーション実行部14Aは、生成された入力パラメータ12Bごとに、対応する出力パラメータを評価する。
【0024】
図3は、ロボットシミュレーションシステムの構成図である。
ロボットシミュレーションシステムは、ロボットシミュレーション装置100のコンピュータ900と、入出力装置916とを接続することで構成される。
ロボットシミュレーション装置100は、CPU901と、RAM902と、ROM903と、HDD904と、通信I/F905と、入出力I/F906と、メディアI/F907とを有するコンピュータ900として構成される。
通信I/F905は、外部の通信装置915と接続される。入出力I/F906は、入出力装置916と接続される。メディアI/F907は、記録媒体917からデータを読み書きする。さらに、CPU901は、RAM902に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、各処理部を制御する。そして、このプログラムは、通信回線を介して配布したり、CD-ROM等の記録媒体917に記録して配布したりすることも可能である。
【0025】
図4は、ロボットシミュレーション装置100の動作を示すフローチャートである。
分布入力部11Aは、入力分布11Dの入力を受け付ける(S101)。
入力生成部12Aは、入力パラメータ12Bを生成する(S102)。
【0026】
出力分布推定部13は、シミュレーションの出力を取得する種別により分岐する(S111)。
(方法1)S111で「シミュ(レーション)実行」ならば、出力分布推定部13は、シミュレーション実行部14Aが実行したシミュレーションの出力を取得する(S112;シミュレーション実行)。
(方法2)S111で「シミュ(レーション)取得」ならば、出力分布推定部13は、シミュレーション結果読取部14BがシミュレーションDB14Cから読み取ったシミュレーションの出力を取得する(S113;シミュレーション取得)。
(方法3)S111で「実験取得」ならば、出力分布推定部13は、実験結果読取部14Dが読み取った実験結果(ベイズ推定部14Eの推定結果)を取得する(S114;実験結果取得)。
【0027】
出力分布推定部13は、S112~S114で取得した結果から、出力分布データ14を推定する(S115;出力分布の推定)。
出力分布推定部13は、今回推定した出力分布データ14が収束したか否かを判定する(S116、詳細は
図12)。S116でYesならS121に進み、NoならS111に戻って、再び出力分布データ14を推定する。即ち、出力分布データ14が収束するまで、出力分布推定部13は、出力分布データ14を更新する。
【0028】
結果出力部16は、ユーザが指定した出力結果の種別により分岐する(S121)。出力分布データ14が指定されている場合には(S121で分布)、結果出力部16は、出力分布データ14のグラフを出力する(S122)。
工程の最適化が指定されている場合には(S121で工程)、作業工程最適化部15Aは、出力分布データ14を用いてロボット作業の最適な工程を計算し、その結果を結果出力部16から出力する(S123)。
【0029】
図5は、S101の入力処理に用いられる、分布入力部11Aおよび実データ入力部11Bの入力画面図である。
入力画面121には、1つ以上の入力パラメータ(
図5では2つ)の入力欄と、各入力欄への入力を済ませた後にその入力を確定する「実行」ボタンと、入力を破棄する「終了」ボタンとが含まれる。
各入力欄(入力パラメータ1,2)には、以下の入力欄が含まれる。
・パラメータ名の入力欄:ここでは、入力パラメータ1「把持物体重量」および入力パラメータ2「把持物体大きさ」が入力されている。
・入力データ形式を指定するラジオボタン。ここでは、確率分布名およびそのパラメータ群(平均、標準偏差)のデータ形式か、CSV(Comma-Separated values)ファイルを指定して確率分布を直接指定するデータ形式か、CSVファイルを指定して実データを直接指定するデータ形式か、の3通りから1つを選べる。
また、入力画面121内の確率分布名の入力はプルダウンメニューから1つを選択でき、山なり曲線の正規分布以外にも、一様分布などのさまざまな分布を選択可能である。
【0030】
分布入力部11Aは、入力パラメータ1「把持物体重量」について、確率分布名「正規分布」のデータ形式で入力を受け付ける。
実データ入力部11Bは、入力パラメータ2「把持物体大きさ」について、CSVファイルを指定して実データを直接指定するデータ形式で入力を受け付ける。この場合は、分布推定部11Cは、実データ入力部11Bが受け付けた実データから、カーネル密度推定法などにより、入力分布11Dを推定する。
【0031】
図6は、
図5の入力画面から分布入力部11Aが受け付けた入力分布11Dの一例を示すグラフである。
グラフ131の横軸は入力パラメータ1「把持物体重量」であり、縦軸はその各重量における瓦礫が発生する確率密度を示す。分布入力部11Aは、CSVファイルなどの横軸と縦軸との対応データ132を指定して、グラフ131の確率分布を直接指定するデータ形式を受け付けてもよい。
なお、今回のシミュレーションは、未知の環境を前提とするため、グラフ131は、特定の環境を前提とせず、過去の経験や文献、専門家の意見などから決められている。そのため、グラフ131の横軸は決め打ちで1つの値とはせずに、バラツキを含む分布データとなっている。
【0032】
図7は、入力パラメータ12Bの一例を示すグラフである。
グラフ141の横軸は入力パラメータのデータ番号(No.)であり、縦軸はそのデータ番号に対応する入力パラメータ1「把持物体重量」の数値である。入力生成部12Aは、入力分布11Dに適合する把持物体重量の数値集合(乱数集合)142を生成する。グラフ141は、数値集合142をグラフ化したものである。
【0033】
図8は、シミュレーションDB14Cの一例を示すテーブルである。
シミュレーションDB14Cのテーブル151は、入力パラメータのデータ番号(No.)ごとに、その入力パラメータ(ここでは把持物体の重量)と、その入力パラメータにおけるシミュレーションの実行結果(ここでは、作業時間と作業可否)とを対応付ける。なお、シミュレーションの一般的な傾向として、把持物体の重量が重いほど、作業時間も増える、または、作業否となる。
シミュレーション実行部14Aは、S113でシミュレーション結果読取部14Bに取得させるシミュレーションDB14C内のデータを、事前に作成しておく。
【0034】
図9は、シミュレーション結果読取部14Bの処理を示すグラフである。
グラフ161の横軸は入力パラメータ1「把持物体重量」であり、縦軸はその重量に対応するシミュレーションの実行結果(ここでは、作業時間)である。グラフ161は、曲線グラフになっている。折れ線グラフの各点は、
図8の「重量」および「作業時間」の組み合わせで示す点の座標である。
【0035】
そして、グラフ161の各点の間を補完する曲線は、ここでは1つの入力パラメータのみで分布も連続的なので、シミュレーション実行部14Aは簡単な補間方法(例:スプライン補間)で求めることができる。
一方、多次元の入力パラメータを扱う場合や複雑(非連続)な分布入力パラメータを扱う場合には、ランダムフォレスト等の高度な機械学習での補間方法をシミュレーション実行部14Aに実行させる。分布が不連続や滑らかでない場合は、入力パラメータの少しの違いで出力パラメータは全く違う値になる可能性があるためである。
【0036】
出力分布推定部13は、データ番号(No.)ごとの数値(
図9では「120kg」)をグラフ161に入力し、グラフ161との交点を求め、その交点に対応する出力パラメータの数値(
図9では「350分」)を求める(
図9の矢印を参照)。つまり、入力パラメータ12Bの個数が1000個あれば、出力分布推定部13が求める出力パラメータの個数も1000個となる。なお、
図9では、説明をわかりやすくするために、1種類の入力パラメータから1種類の出力パラメータを求める図示を行った。一方、実際には、入力パラメータの種類も、出力パラメータの種類も複数存在することが多い。
【0037】
図10は、出力分布推定部13が生成するヒストグラムである。
ヒストグラム162の横軸は出力パラメータ(作業時間)であり、縦軸はその作業時間が出力される頻度である。出力分布推定部13は、
図9で求めた出力パラメータの数値(例えば「350分」)ごとに、その頻度を積み上げることでヒストグラム162を生成する。
なお、出力分布推定部13は、(方法1)のシミュレーション実行部14Aの出力と、(方法2)のシミュレーション結果読取部14Bの出力とについては、
図10のようにヒストグラム162を生成する。一方、(方法3)の実験結果読取部14Dの出力については、ヒストグラム162の代わりに、分布を積み上げるグラフを生成する(詳細は
図15)。
【0038】
図11は、出力分布推定部13が推定する出力分布データ14である。
出力分布推定部13は、
図10のような出力分布データ14のヒストグラム162(評価された出力パラメータの集合を積み重ねたヒストグラム)から、カーネル密度推定法などにより、ヒストグラム162の各ピーク付近をなだらかに接続する曲線のグラフ163を生成する。このグラフ163が出力分布データ14の推定結果である。
この出力分布データ14により、例えば作業時間について「未知の環境がどのような環境でも、90%の作業時間が350分までに収まる」のようなロバストな評価ができる。
なお、
図11の例では、グラフ163のピークが1つであるが、別の例ではピークが複数存在することもある。その場合、「作業時間は350分程度の可能性が20%、550分程度の可能性が70%」のような評価ができる。
【0039】
図12は、
図4のS116の一例として、出力分布データ14の収束評価を示すグラフである。
グラフ164の横軸はシミュレーション回数(S112,S113,S114のいずれかを実行した回数であり、モンテカルロ法の回数とも呼ぶ)、縦軸はS116の収束評価値を示す。
出力分布データ14はシミュレーション回数を増やすたびにその形状が更新される。そこで、出力分布推定部13は、前回までのシミュレーション結果の出力分布データ14と、今回までのシミュレーション結果の出力分布データ14とのグラフの形状の差分(KLダイバージェンスなどの収束評価値)を比較する。そして、出力分布推定部13は、その差分が充分に小さくなったら(グラフ164の閾値を下回ったら)、出力分布データ14が収束した(S116でYes)と判定する。
【0040】
以上、
図9~
図12を参照して、(方法1)および(方法2)について出力分布推定部13が出力分布データ14を作成する詳細を説明した。次に、
図13~
図15を参照して、(方法3)について出力分布推定部13が出力分布データ14を作成する詳細を説明する。
図13は、実験DB14Fに格納されている実験結果の点群データを示すグラフである。グラフ171の横軸は入力パラメータ1「把持物体重量」であり、縦軸はその重量に対応する実験結果(ここでは、作業時間)である。
【0041】
図14は、ベイズ推定部14Eが
図13の実験DB14Fからベイズ推定を行った結果を示すグラフである。
ベイズ推定部14Eは、
図13のグラフ171の点群データを読み取り、ベイズ推定により、横軸の入力パラメータ(把持物体重量)と、縦軸の出力パラメータ(作業時間)との関係(回帰)とバラツキを推定するグラフ172を生成する。
【0042】
図14の例では、ベイズ推定部14Eは、点群データの95%が含まれるような上下2本の波線(点P1を通過する波線と、点P3を通過する波線)に挟まれた区間172Wを、バラツキの推定結果とする。この区間172W内の点P2を通過する実線は、点群データの出現頻度がピークと推定される箇所を示す。このように、ベイズ推定を用いることで少ない実測データでも確率分布を評価できる。
そして、出力分布推定部13は、例えば、重量=350kgという1つの入力パラメータに対応する作業時間の出力パラメータを、区間172W内の交点となる箇所「点P1~P2~P3」という範囲として求める。
【0043】
図15は、実験結果読取部14Dが
図14のグラフから読み取った分布をもとに、出力分布推定部13が推定する出力分布データ14の説明図である。
グラフ173の横軸は出力パラメータ(作業時間)であり、縦軸はその出力パラメータが発生する頻度(確率)である。
出力分布推定部13は、
図14で求めた「点P1~P2~P3」という範囲の区間172W内の作業時間(120分がピーク)のバラツキ(点群データの出現頻度)を示す分布曲線173Aを、1回分のシミュレーション結果として出力分布データ14に追加する。この分布曲線173Aは、
図14の重量=350kgという1つの入力パラメータに対応する作業時間の出力パラメータが
図14の縦軸に投影されたものである。
同様に、出力分布推定部13は、各回のシミュレーション結果を出力分布データ14に対して次々と重ね合わせる(足し合わせる)ことにより、出力分布データ14のグラフ173Bを作成する。
【0044】
図16は、
図4のS123の一例として、作業工程最適化部15Aの処理例を示すガントチャートである。
以下、初期計画のガントチャート201、最適化なしのガントチャート202、最適化ありのガントチャート203の順に説明する。各ガントチャート201~203には、瓦礫の解体および把持を担当するロボットR1と、瓦礫の運搬を担当するロボットR2とで、それぞれの作業工程が示される。
【0045】
初期計画のガントチャート201には、シミュレーション結果としての出力分布データ14が反映されておらず、作業工程の遅延リスクの要因となる作業時間のバラツキは未考慮の工程が登録されている。
具体的には、ロボットR1について、A地点の瓦礫解体の工程と、瓦礫をロボットR2に積込む工程と、B地点に移動する工程とが登録されている。ロボットR2について、ロボットR1の瓦礫解体が終わるのを待機する工程と、ロボットR1から瓦礫を積込み待ちする工程と、瓦礫を運搬する工程と、C地点に移動にする工程とが登録されている。
A地点の瓦礫解体の工程などの各工程の作業時間は、事前に登録されている作業時間の平均値Taに基づく。
【0046】
最適化なしのガントチャート202には、シミュレーション結果としての出力分布データ14が各工程の作業時間に反映されている。例えば、A地点の瓦礫解体の工程の作業時間は、事前に登録されている作業時間の平均値Taに加えて、出力分布データ14が示す標準偏差(バラツキ)の時間Tbが加算されている。
同様に、A地点の瓦礫解体の工程以外の作業についても出力分布データ14のバラツキを考慮して変更する必要がある。しかし、
図16では説明を簡単にするために他工程の作業時間は変更しないものとして図示する。
【0047】
最適化なしのガントチャート202は、初期計画のガントチャート201と比べて、各工程の作業時間は多少は長くなったり短くなったりするものの、各工程の順序は変化せず、単純に各工程を後倒ししたものとなる。例えば、ロボットR1の「A地点の瓦礫解体」工程で発生する作業時間のバラツキを考慮する場合には、その後工程となるロボットR2の「積込み待ち」を行うための待機時間も長くなってしまい、ロボットR2のC時点での作業(符号202C)も遅れてしまう。
【0048】
最適化ありのガントチャート203は、最適化なしのガントチャート202から、ロボットR2の工程を一部入れ替えることによって、総作業時間を短縮する最適化を行った。
具体的には、作業工程最適化部15Aは、ロボットR1の「A地点の瓦礫解体」のバラツキが大きい(遅延リスクが高い)ため、ロボットR2の待機時間が長くなることを、最適化なしのガントチャート202から認識する。
【0049】
そして、作業工程最適化部15Aは、ロボットR2の待機時間を有効活用するために、A地点でのロボットR1からの瓦礫の積込み待ち工程を行う前に、「C地点に移動し、そこで既に解体されている瓦礫を運搬して、A地点に戻る」工程を実行する。
これにより、最適化なしのガントチャート202でのC時点での作業(符号202C)が、最適化ありのガントチャート203ではA地点での作業前でのC時点での作業(符号203C)に前倒しされることで、トータルの作業時間が短縮される。
このように、作業工程最適化部15Aは、出力分布データ14のバラツキ(遅延リスク)を考慮して、ロボットが実行する工程の順序を組み替えたり、ロボットへの工程(作業)の割り当てを組み替えたりする「工程最適化」を実行することで、ロボットの作業計画を改善できる。
【0050】
以上説明した本実施形態のロボットシミュレーション装置100は、未知の環境の条件に対して確率的なシミュレーションの入力条件(物性値、境界条件など)にバラツキを持たせた入力分布11Dをもとに、作業時間や作業可否などの出力パラメータを出力分布データ14として評価する。これにより、シミュレーションの入力となる物性値や境界条件などを正確に決めることができない未知な環境であっても、ロバストな評価ができる。
【0051】
また、入力生成部12Aは、入力分布11Dに従った妥当な個数の乱数をモンテカルロ法により生成する。これにより、実用的な計算時間内となるシミュレーション回数を行うことができる。
さらに、シミュレーション実行部14Aがその都度毎回のシミュレーション処理を行う(方法1)の他に、すでに実行されたシミュレーション結果を読み取る(方法2)や、すでに入力された実験結果を読み取る(方法3)を用いることで、シミュレーション回数を抑えて実用的な時間で評価できる。
【0052】
なお、本発明は前記した実施例に限定されるものではなく、さまざまな変形例が含まれる。例えば、前記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【0053】
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)などの記録媒体におくことができる。また、クラウドを活用することもできる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
さらに、各装置を繋ぐ通信手段は、無線LANに限定せず、有線LANやその他の通信手段に変更してもよい。
【符号の説明】
【0054】
11A 分布入力部
11B 実データ入力部
11C 分布推定部
11D 入力分布(入力分布データ)
12A 入力生成部
12B 入力パラメータ
13 出力分布推定部
14 出力分布データ
14A シミュレーション実行部
14B シミュレーション結果読取部
14C シミュレーションDB
14D 実験結果読取部
14E ベイズ推定部
14F 実験DB
15A 作業工程最適化部
15B 最適工程データ
16 結果出力部
100 ロボットシミュレーション装置