(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167643
(43)【公開日】2023-11-24
(54)【発明の名称】ロボット動作計画支援システム、ロボット動作計画支援方法、およびコンピュータプログラム
(51)【国際特許分類】
B25J 9/22 20060101AFI20231116BHJP
【FI】
B25J9/22
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022078971
(22)【出願日】2022-05-12
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】504147243
【氏名又は名称】国立大学法人 岡山大学
(71)【出願人】
【識別番号】521432650
【氏名又は名称】技術研究組合産業用ロボット次世代基礎技術研究機構
(74)【代理人】
【識別番号】100125117
【弁理士】
【氏名又は名称】坂田 泰弘
(74)【代理人】
【識別番号】100086933
【弁理士】
【氏名又は名称】久保 幸雄
(72)【発明者】
【氏名】板東 巧真
(72)【発明者】
【氏名】西 竜志
(72)【発明者】
【氏名】馬場 裕康
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707BS12
3C707JU16
3C707LV14
3C707LW03
3C707LW08
3C707MT02
(57)【要約】
【課題】ロボットに特定の作業を行わせる際の能率のよい手順を従来よりも容易に選ぶことができるようにオペレータを支援する。
【解決手段】特定の作業をロボットに行わせる際の複数通りの手順それぞれを示す手順データをコンピュータに対して与える。手順データは、例えば、オペレータがロボットを手動で動かすなどして与えられる。コンピュータは、これらの手順データに基づいてαアルゴリズムに従ってペトリネット7を生成する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
特定の作業をロボットに行わせる際の複数通りの手順それぞれを示す手順データを取得する手順データ取得手段と、
前記複数通りの手順それぞれの前記手順データに基づいて前記作業のプロセスモデルを生成するプロセスモデル生成手段と、
を有することを特徴とするロボット動作計画支援システム。
【請求項2】
前記プロセスモデルにおいて初期のノードから目標のノードへ至るまでに取り得る複数通りの経路の全部または一部のうちの所定の要件を満たす経路を前記作業に適した適格経路として選出する適格経路選出手段、
を有する、
請求項1に記載のロボット動作計画支援システム。
【請求項3】
前記適格経路選出手段は、前記複数通りの経路のうちのN通りの経路をランダムに選択し、当該N通りの経路のうちの前記ロボットによる所要時間または所要コストが最も短い経路を前記適格経路として選出する、
請求項2に記載のロボット動作計画支援システム。
【請求項4】
前記プロセスモデル生成手段は、αアルゴリズムによってペトリネットを前記プロセスモデルとして生成し、
前記適格経路選出手段は、前記ペトリネットの中の、分岐を有するプレースにおいてランダムにトークンを進ませることによって前記N通りの経路を選択する、
請求項3に記載のロボット動作計画支援システム。
【請求項5】
前記手順データ取得手段は、前記複数通りの手順それぞれの前記手順データとして、当該手順を構成する各ステップの完了時刻を示すデータを取得し、
前記適格経路選出手段は、前記各ステップのうちの連続する2つのステップの前記完了時刻同士の差に基づいて前記N通りの経路それぞれの前記所要時間を算出する、
請求項3または請求項4に記載のロボット動作計画支援システム。
【請求項6】
前記適格経路に従って前記ロボットを動作させるシミュレーションを行うことによって前記作業を完了させることができるか否かを検証する検証手段、
を有する、
請求項2ないし請求項4のいずれかに記載のロボット動作計画支援システム。
【請求項7】
前記適格経路選出手段は、前記ロボットとは異なる第二のロボットに前記作業を行わせるのに適した第二の適格経路として、前記複数通りの経路のうちのN通りの経路をランダムに選択し、当該N通りの経路のうちの当該第二のロボットによる所要時間または所要コストが最も短い経路を選出する、
請求項2に記載のロボット動作計画支援システム。
【請求項8】
特定の作業をロボットに行わせる際の複数通りの手順それぞれを示す手順データをコンピュータへ与え、
前記複数通りの手順それぞれの前記手順データに基づいて前記作業のプロセスモデルを生成する処理を前記コンピュータに実行させる、
ことを特徴とするロボット動作計画支援方法。
【請求項9】
特定の作業をロボットに行わせるための動作計画を支援するコンピュータに用いられるコンピュータプログラムであって、
前記コンピュータに、
前記作業を前記ロボットに行わせる際の複数通りの手順それぞれを示す手順データを取得する処理を実行させ、
前記複数通りの手順それぞれの前記手順データに基づいて前記作業のプロセスモデルを生成する処理を実行させる、
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットに作業を実行させる際の動作計画を支援する技術に関する。
【背景技術】
【0002】
従来、自動車、機械、電気機器、電子機器、食品、化粧品、および医薬品などの製品を大量にかつ高速に生産するために、産業用ロボットなどのロボットが用いられている。ロボットによって省人化および省力化が図られてきたが、需要者のニーズに応じて多種多様な製品が次々に開発されており、製品ごとに専用のロボットを導入するとコストが嵩んでしまう。
【0003】
そこで、汎用性のあるロボットが導入され、製品ごとに応じた作業をロボットに実行させている。この際に、人間(オペレータ)がロボットに直接触ってまたは操作端末で動かすことによって作業の手順をロボットに教示してプログラムを用意する「ティーチング・プレイバック」という手法が広く採用されている。ティーチング・プレイバックは、「オンラインティーチング」または「プレイバック式ティーチング」などと呼ばれることがある。
【0004】
しかし、ロボットを動作させる際に製品に応じたプログラムを予め指定する必要があり、また、ロボットはプログラムの通りに動作するに過ぎない。すなわち、状況に応じてロボットが自律的に最適な動作を選択することは、容易でない。
【0005】
また、作業の工程が複雑であるほどオペレータにとって教示が困難になる。すなわち、ティーチング・プレイバックは、熟練したオペレータが行わざるを得ない。
【0006】
そこで、非特許文献1、2に記載されるような、ロボットをペトリネットによって制御するシステムが提案されている。ペトリネットは、ロボットに行わせる作業の流れをグラフィカルにモデル化したものである。したがって、ペトリネットを用いればロボットの制御の容易化を図ることができる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】安田元一,“ペトリネットに基づく産業用ロボットシステムの制御",第51回自動制御連合講演会 pp.974-975, (2008),https://www.jstage.jst.go.jp/article/jacc/51/0/51_0_213/_pdf
【非特許文献2】船見洋祐, 工藤亨, 渡部慶二, “ペトリネットを用いたロボットシステムの制御”, 計測自動制御学会東北支部第170 回研究集会, pp. 1-8, (1997),https://www.topic.ad.jp/sice/htdocs/papers/170/170-6.pdf
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、1つの特定の作業であっても何通りもの手順を取り得る。例えば、別々の位置にある第一のワークおよび第二のワークを所定の位置へ移動させる作業の手順として、第一のワークを所定の位置へ移動させてから第二のワークを所定の位置へ移動させるという手順、および、第一のワークを第二のワークの上に載せてから両ワークを一緒に所定の位置へ移動させるという手順など、複数の手順がある。
【0009】
できるだけ能率よく作業をロボットに行わせるためには、できるだけ最適に近い手順を選択する必要がある。
【0010】
本発明は、このような課題に鑑み、ロボットに特定の作業を行わせる際の能率のよい手順を従来よりも容易に選ぶことができるようにオペレータを支援することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一形態に係るロボット動作計画支援システムは、特定の作業をロボットに行わせる際の複数通りの手順それぞれを示す手順データを取得する手順データ取得手段と、前記複数通りの手順それぞれの前記手順データに基づいて前記作業のプロセスモデルを生成するプロセスモデル生成手段と、を有する。
【0012】
好ましくは、前記プロセスモデルにおいて初期のノードから目標のノードへ至るまでに取り得る複数通りの経路の全部または一部のうちの所定の要件を満たす経路を前記作業に適した適格経路として選出する適格経路選出手段、を有する。
【0013】
または、前記適格経路選出手段は、前記複数通りの経路のうちのN通りの経路をランダムに選択し、当該N通りの経路のうちの前記ロボットによる所要時間や所要コストが最も小さい経路を前記適格経路として選出する
または、前記プロセスモデル生成手段は、αアルゴリズムによってペトリネットを前記プロセスモデルとして生成し、前記動作計画決定手段は、前記ペトリネットの中の、分岐を有するプレースにおいてランダムにトークンを進ませることによって複数通りの経路とタイミングを生成しこれらの経路の中から適格経路を選択する。
【発明の効果】
【0014】
本発明によると、ロボットに特定の作業を行わせる際の能率のよい手順をオペレータが従来よりも容易に選ぶことができる。
【図面の簡単な説明】
【0015】
【
図1】動作計画最適化システム1の全体的な構成の例を示す図である。
【
図2】ロボットの機構モデルおよび制御モデルの例を示す図である。
【
図3】コンピュータのハードウェア構成の例を示す図である。
【
図4】コンピュータの機能的構成の例を示す図である。
【
図5】第一のワークおよび第二のワークの移動の例を示す図である。
【
図8】分岐を複数有するペトリネットの例を示す図である。
【
図9】動作計画プログラムのよる全体的な処理の流れの例を説明するフローチャートである。
【発明を実施するための形態】
【0016】
〔1.システムの全体構成〕
図1は、動作計画最適化システム1の全体的な構成の例を示す図である。
図2は、ロボット3の機構モデルおよび制御モデルの例を示す図である。
図3は、コンピュータ2のハードウェア構成の例を示す図である。
図4は、コンピュータ2の機能的構成の例を示す図である。
【0017】
動作計画最適化システム1は、ロボットの動作計画の最適化を図るためのシステムであって、
図1に示すように、コンピュータ2およびロボット3によって構成される。
【0018】
ロボット3は、最適な動作計画を算出する対象のロボットである。以下、水平面に設置される6軸ロボットがロボット3である場合を例に説明する。
【0019】
ロボット3は、
図1または
図2に示すように、ベース30、第一のアーム311、第二のアーム312、第三のアーム313、第四のアーム314、第五のアーム315、ツール32、第一の駆動ユニット331、第二の駆動ユニット332、第三の駆動ユニット333、第四の駆動ユニット334、第五の駆動ユニット335、第六の駆動ユニット336、コントローラ34、および通信インタフェース35などによって構成される。なお、
図2において、点線は、有線または無線の通信路を表わしている。
【0020】
ベース30は、本実施形態では、水平面に設置される。第一のアーム311は、その基端部がベース30に支持されており、ベース30の設置面(水平面)に垂直な第一の軸391を回転軸として回転する。第一の駆動ユニット331は、モータ、減速機、および角度センサなどによって構成され、第一のアーム311を回転させる。なお、第二の駆動ユニット332ないし第六の駆動ユニット336も、第一の駆動ユニット331と同様に、モータ、減速機、および角度センサなどによって構成される。
【0021】
第二のアーム312は、その基端部が第一のアーム311の先端部に支持されており、第一の軸391および第二のアーム312の長手方向の両方に垂直な第二の軸392を振り軸として旋回する。第二の駆動ユニット332は、第二のアーム312を旋回させる。
【0022】
第三のアーム313は、その基端部が第二のアーム312の先端部に支持されており、第二の軸392に平行な第三の軸393を振り軸として旋回する。第三の駆動ユニット333は、第三のアーム313を旋回させる。
【0023】
第四のアーム314は、その基端部が第三のアーム313の先端部に支持されており、第三のアーム313の長手方向に平行な第四の軸394を回転軸として回転する。第四の駆動ユニット334は、第四のアーム314を回転させる。
【0024】
第五のアーム315は、その基端部が第四のアーム314の先端部に支持されており、第四の軸394に垂直な第五の軸395を振り軸として旋回する。第五の駆動ユニット335は、第五のアーム315を旋回させる。
【0025】
ツール32は、その基端部が第五のアーム315の先端部に支持されており、第五のアーム315の長手方向に平行な第六の軸396を回転軸として回転する。第六の駆動ユニット336は、ツール32を回転させる。また、ツール32は、複数本の指からなるハンド(手)およびハンドを開閉させるモータなどを有しており、物体を拾い上げたり離したりする。
【0026】
第一の駆動ユニット331の角度センサは、第一のアーム311の、ベース30の座標系における基準の姿勢と現在の姿勢とがなす角度θ1を検出する。つまり、第一のアーム311が基準の姿勢からどれだけ回転したのかを検出する。第二の駆動ユニット332の角度センサは、第一のアーム311と第二のアーム312とがなす角度θ2を検出する。
【0027】
第三の駆動ユニット333の角度センサは、第二のアーム312と第三のアーム313とがなす角度θ3を検出する。第四の駆動ユニット334の角度センサは、第四のアーム314の、第三のアーム313の座標系における基準の姿勢と現在の姿勢とがなす角度θ4を検出する。つまり、第四のアーム314が基準の姿勢からどれだけ回転したのかを検出する。
【0028】
第五の駆動ユニット335の角度センサは、第四のアーム314と第五のアーム315とがなす角度θ5を検出する。第六の駆動ユニット336の角度センサは、ツール32の、第五のアーム315の座標系における基準の姿勢と現在の姿勢とがなす角度θ6を検出する。つまり、ツール32が基準の姿勢からどれだけ回転したのかを検出する。
【0029】
そして、第一の駆動ユニット331ないし第六の駆動ユニット336それぞれの角度センサは、検出した角度θ1~θ6を、通信インタフェース35を介してコンピュータ2へ送信する。ロボット3の姿勢は、ベース30に対する第一のアーム311の姿勢、第一のアーム311に対する第二のアーム312の姿勢、第二のアーム312に対する第三のアーム313の姿勢、第三のアーム313に対する第四のアーム314、第四のアーム314に対する第五のアーム315の姿勢、および第五のアーム315に対するツール32の姿勢によって決まる。したがって、ロボット3の姿勢は、角度θ1~θ6によって特定される。
【0030】
コントローラ34は、第一のアーム311ないし第五のアーム315およびツール32がコンピュータ2からの指令の通りの姿勢になるように第一の駆動ユニット331ないし第六の駆動ユニット336を制御する。また、コンピュータ2からの指令の通りにツール32のハンドが開閉するようにツール32のモータなどを制御する。
【0031】
通信インタフェース35は、USB(Universal Serial Bus)アダプタもしくはNIC(Network Interface Card)などの有線の規格のインタフェース装置またはBluetoothアダプタもしくはWi-Fiアダプタなどの無線の規格の通信装置であって、コンピュータ2との間でデータを送受信する。
【0032】
コンピュータ2は、ロボット3の最適な動作計画をプロセスマイニングによって算出する。以下、コンピュータ2としてラップトップ型のパーソナルコンピュータが用いられる場合を例に説明する。
【0033】
コンピュータ2は、
図3に示すように、メインプロセッサ20、RAM(Random Access Memory)21、ROM(Read Only Memory)22、補助記憶装置23、通信インタフェース24、ディスプレイ25、キーボード26、およびポインティングデバイス27などによって構成される。
【0034】
ROM22または補助記憶装置23には、オペレーティングシステムのほか動作計画プログラム40などのコンピュータプログラムがインストールされている。
【0035】
RAM21は、コンピュータ2のメインメモリである。RAM21には、適宜、動作計画プログラム40などのコンピュータプログラムがロードされる。
【0036】
メインプロセッサ20は、RAM21にロードされたコンピュータプログラムを実行する。メインプロセッサ20として、GPU(Graphics Processing Unit)またはCPU(Central Processing Unit)などが用いられる。
【0037】
通信インタフェース24は、ロボット3との間でデータの送受信を行う。通信インタフェース24として、ロボット3で採用される規格の通信装置が用いられる。
【0038】
ディスプレイ25は、コマンドもしくはデータを入力するための画面またはメインプロセッサ20による演算の結果を表わす画面などを表示する。
【0039】
キーボード26およびポインティングデバイス27は、コマンドまたはデータなどをオペレータが入力するための入力装置である。
【0040】
動作計画プログラム40によると、
図4に示す作業ログ取得部401、作業ログ記憶部402、識別子付与部403、イベントログ生成部404、ペトリネット生成部405、ペトリネット記憶部406、最適動作計画決定部407、動作検証部408、および動作プログラム生成部409などの機能が実現される。そして、次の5つのサービスが提供され、ロボット3の動作計画の最適化が図られる。
・ロボット3のイベントログの取得
・ペトリネットの生成
・ペトリネットシミュレーションによる最適動作計画の決定
・動作プログラムの生成
・ロボット3への動作プログラムの実装
以下、作業ログ取得部401ないし動作プログラム生成部409の各機能および5つの各サービスについて順次、説明する。
【0041】
〔2. 各部の処理〕
〔2.1 ロボット3のイベントログの取得〕
【0042】
(1)生データの収集
図5は、第一のワーク51および第二のワーク52の移動の例を示す図である。
図6は、作業ログ61、62の例を示す図である。
【0043】
作業ログ取得部401は、特定の作業を様々な手順でロボット3が実行した際の作業ログを取得する。以下、第一のワーク51および第二のワーク52をそれぞれ第一の位置および第二の位置から第三の位置へ移動させる作業を例に、作業ログの収集について説明する。
【0044】
この作業を達成するための手順として、様々な手順が考えられる。第一のワーク51および第二のワーク52の移動の仕方だけでも、複数通りある。例えば、
図5(A)または
図5(B)に示すように第一のワーク51および第二のワーク52を移動させることができる。
図5(A)に示すように第一のワーク51を第三の位置へ移動させてから第二のワーク52を第三の位置へ移動させる場合に、ロボット3は、例えば次のように動作する。
#01:初期姿勢を取る
#02:ツール32のハンドで第一のワーク51をピックする(拾い上げる)姿勢を取る
#03:ハンドを閉じて第一のワーク51をピックする
#04:第一のワーク51を第一の位置から第二の位置へ中継する姿勢を取る
#05:第一のワーク51を第二のワーク52上へプレースする(置く)姿勢を取る
#06:ハンドを開いて第一のワーク51を第二のワーク52上へプレースする
#07:第一のワーク51および第二のワーク52をピックする姿勢を取る
#08:両ワークをピックする
#09:両ワークを第二の位置から第三の位置へ中継する姿勢を取る
#10:両ワークを第三の位置へプレースする姿勢を取る
#11:ハンドを開いて両ワークを第三の位置へプレースする
#12:動作終了姿勢を取る
なお、本実施形態では、初期姿勢において、ツール32のハンドが開いた状態であるものとする。ステップ#04、#09の「中継する姿勢」は、ワークを移動元(中継前の位置)から移動先(中継後の位置)へ移動させる際にツール32が中継位置を通過するときの姿勢である。中継位置は、移動元と移動先とを結ぶ直線上のちょうど真ん中の位置であってもよいし、移動元と移動先との間に障害物がある場合は障害物を避けるために障害物の上空の位置であってもよい。後述するステップ#24、#27、#30においても、同様である。
【0045】
または、
図5(B)に示すように第一のワーク51を第二のワーク52の上に載せて両ワークを一緒に第三の位置へ移動させる場合に、ロボット3は、例えば次のように動作する。
#21:初期姿勢を取る
#22:ツール32のハンドで第一のワーク51をピックする姿勢を取る
#23:ハンドを閉じて第一のワーク51をピックする
#24:第一のワーク51を第一の位置から第三の位置へ中継する姿勢を取る
#25:第一のワーク51を第三の位置へプレースする姿勢を取る
#26:ハンドを開いて第一のワーク51を第三の位置へプレースする
#27:ツール32を第三の位置から第二の位置へ移動させる姿勢(中継姿勢)を取る
#28:ハンドで第二のワーク52をピックする姿勢を取る
#29:ハンドを閉じて第二のワーク52をピックする
#30:第二のワーク52を第二の位置から第三の位置へ中継する姿勢を取る
#31:第二のワーク52を第三の位置へプレースする姿勢を取る
#32:ハンドを開いて第二のワーク52を第三の位置へプレースする
#33:動作終了姿勢を取る
ところで、第一のワーク51および第二のワーク52をステップ#01~#12の手順およびステップ#21~#33の手順以外の手順で移動させることもできる。例えば、第一のワーク51よりも先に第二のワーク52を移動させてもよい。または、第四の位置に一時的に第一のワーク51および第二のワーク52を置き、両ワークを一緒に第四の位置から第三の位置へ移動させてもよい。また、障害物の避け方も、複数あり得る。例えば、ツール32が障害物の上を跨ぐような姿勢を取ってもよいし、障害物の横を迂回するような姿勢を取ってもよい。
【0046】
したがって、2つのワークを所定の位置(第三の位置)へ移動させる作業の手順は、上記のステップ#01~#12の手順およびステップ#21~#33の手順の2通りだけでなく、何通りにもなり得る。しかし、本実施形態では、説明の簡単のため、ステップ#01~#12の手順およびステップ#21~#33の手順の2通りについて作業ログを取得する場合を例に説明する。
【0047】
オペレータは、ステップ#01~#12それぞれにおけるロボット3の動作をロボット3へ教示し、作業ログ取得部401は、そのときにロボット3から得られる情報などを取得し、作業ログとして作業ログ記憶部402に記憶させる。同様に、オペレータは、ステップ#21~#33それぞれにおけるロボット3の動作をロボット3へ教示し、作業ログ取得部401は、そのときにロボット3から得られる情報などを取得し、作業ログとして作業ログ記憶部402に記憶させる。教示の仕方は、従来のオンラインティーチングの場合と同様であり、オペレータがロボット3の各部に直接触れて動かすことによって(つまり、手動で)教示してもよいし、操作端末から指令を与えて動かすことによって教示してもよい。
【0048】
例えば、オペレータは、ステップ#01~#12の手順による作業の各ステップを次のように教示し、作業ログ取得部401は、次のように作業ログを取得する。
【0049】
オペレータは、ステップ#01の動作の教示のために、ロボット3に初期姿勢を取らせる。そして、動作タイプとして「pose」をコンピュータ2または操作端末などへ入力する。
【0050】
すると、作業ログ取得部401は、初期姿勢を取った時点の角度θ
1~θ
6をロボット3に検出させて取得する。そして、初期姿勢を取った時点の時刻を完了時刻として示し、取得した角度θ
1~θ
6をパラメータとして示し、かつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる(
図6(A)参照)。
【0051】
オペレータは、ステップ#02の動作の教示のために、ツール32で第一のワーク51をピックできる姿勢をロボット3に取らせる。そして、動作タイプとして「pose」を入力する。
【0052】
すると、作業ログ取得部401は、ステップ#10の場合と同様に、この姿勢を取った時点の角度θ1~θ6をロボット3に検出させて取得する。そして、この時点の時刻を完了時刻として示し、取得した角度θ1~θ6をパラメータとして示し、かつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる。
【0053】
オペレータは、ステップ#03の動作の教示のために、第一のワーク51をピックするようにツール32のハンドを閉じさせる。そして、動作タイプとして「grasp」を入力する。
【0054】
すると、作業ログ取得部401は、ハンドが閉じた時点の時刻を完了時刻として示しかつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる。なお、ツール32のハンドの閉じ加減を示す値がパラメータとして動作データに示されるようにしてもよい。以下、同様である。
【0055】
オペレータは、ステップ#04の動作の教示のために、ツール32が第二の位置への中継位置に配置される姿勢をロボット3に取らせる。そして、動作タイプとして「pose」を入力する。
【0056】
すると、ステップ#01、#02の場合と同様に、作業ログ取得部401は、この姿勢を取った時点の角度θ1~θ6をロボット3に検出させて取得する。そして、この時点の時刻を完了時刻として示し、取得した角度θ1~θ6をパラメータとして示し、かつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる。
【0057】
オペレータは、ステップ#05の動作の教示のために、ロボット3に、第二のワーク52の上に第一のワーク51を置くことができる姿勢を取らせる。そして、動作タイプとして「pose」を入力する。
【0058】
すると、ステップ#01、#02、#04の場合と同様に、作業ログ取得部401は、この姿勢を取った時点の角度θ1~θ6をロボット3に検出させて取得する。そして、この時点の時刻を完了時刻として示し、取得した角度θ1~θ6をパラメータとして示し、かつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる。
【0059】
オペレータは、ステップ#06の動作の教示のために、第一のワーク51をプレースするようにツール32のハンドを開かせる。そして、動作タイプとして「release」を入力する。
【0060】
すると、作業ログ取得部401は、ハンドが開いた時点の時刻を完了時刻として示しかつ入力された動作タイプを示す動作データを生成し、作業ログ記憶部402に記憶させる。
【0061】
動作タイプをオペレータが入力する代わりに、ロボット3の動きに基づいて作業ログ取得部401が動作タイプを判別してもよい。例えば、オペレータがロボット3を動かすのを止めたら、「pose」と判別する。または、オペレータが閉じる方向へツール32のハンドを動かしたら「grasp」と判別する。または、オペレータが開く方向へツール32のハンドを動かしたら「release」と判別する。
【0062】
ステップ#06以降についても同様の要領で、オペレータはロボット3へ動作を教示し、作業ログ取得部401は、動作データを生成して作業ログ記憶部402に記憶させる。これにより、
図6(A)に示すような12個の動作データが作業ログ記憶部402に記憶される。これらの動作データの集合が、ステップ#01~#12の手順に係る作業ログ61である。なお、「識別子」は、ペトリネットの生成のために後に付与されるものである。動作データが生成された時点において、識別子はNullである。
【0063】
また、ステップ#21~#33の手順による作業についても同様の要領で、オペレータはロボット3へ教示し、作業ログ取得部401は動作データを生成して作業ログ記憶部402に記憶させる。これにより、
図6(B)に示すような13個の動作データが作業ログ記憶部402に記憶される。これらの動作データの集合が、ステップ#21~#33の手順に係る作業ログ62である。
【0064】
なお、オペレータは、ロボット3の各部を動かす代わりにロボット3のシミュレータへ動作(姿勢、開閉など)を入力することによって、作業を教示してもよい。そして、作業ログ取得部401は、シミュレータに入力された動作に基づいて角度θ1~θ6または動作タイプを判別することによって動作データを生成してもよい。さらに、入力された通りにロボット3の動作をシミュレータ上でシミュレートし、各ステップの動作の完了した時刻を完了時刻として動作データに示されるようにしてもよい。
【0065】
(2)データの加工
識別子付与部403およびイベントログ生成部404は、作業ログ記憶部402に記憶されたデータをペトリネットの生成のために加工する。以下、
図6に示す作業ログ61、62を加工する場合を例に、識別子付与部403およびイベントログ生成部404の処理について説明する。
【0066】
識別子付与部403は、作業ログ61に含まれる動作データそれぞれが表わす動作および作業ログ62に含まれる動作データそれぞれが表わす動作に対してユニークな識別子を付与する。ただし、同一の動作に対しては同一の識別子を付与する。例えば、次のように識別子を付与する。
【0067】
識別子付与部403は、作業ログ61に含まれる動作データそれぞれが表わす動作に対してユニークな識別子を1つずつ付与する。すなわち、作業ログ61には12個の動作データが含まれるので、12個の動作それぞれに対して、「a」、「b」、「c」、…、「j」、「k」、「l」という識別子を付与する。
【0068】
さらに、識別子付与部403は、作業ログ62に含まれる動作データそれぞれが表わす動作のうちの、作業ログ61に含まれるいずれかの動作データが表わす動作と同一であるものを選出する。具体的には、動作タイプおよび動作時の姿勢が同一であるものを選出する。そして、選出した動作の識別子を付与する。
【0069】
例えば、完了時刻T21(ステップ#21)での動作は、動作タイプが「pose」であり、かつ、角度(θ1,θ2,θ3,θ4,θ5,θ6)が(θ1_21,θ2_21,θ3_21,θ4_21,θ5_21,θ6_21)である姿勢のものである。一方、完了時刻T01(ステップ#01)での動作は、動作タイプが「pose」であり、かつ、角度(θ1,θ2,θ3,θ4,θ5,θ6)が(θ1_01,θ2_01,θ3_01,θ4_01,θ5_01,θ6_01)である姿勢のものである。
【0070】
つまり、完了時刻T21での動作タイプは、完了時刻T01での動作タイプと同一である。したがって、完了時刻T21での姿勢が完了時刻T01での姿勢と同一であれば、完了時刻T01での動作と同一の動作として、完了時刻T21での動作が選出される。
【0071】
しかし、オペレータがロボット3を動かして作業ログを取得する場合は、両完了時刻で同一の姿勢を取らせたつもりでも、若干のズレを生じることがある。
【0072】
そこで、識別子付与部403は、角度θ1_01と角度θ1_21との差の絶対値、角度θ2_01と角度θ2_21との差の絶対値、角度θ3_01と角度θ3_21との差の絶対値、角度θ4_01と角度θ4_21との差の絶対値、角度θ5_01と角度θ5_21との差の絶対値、および角度θ6_01と角度θ6_21との差の絶対値がいずれも、同一であると許容可能な範囲内の値であれば、完了時刻T21での姿勢および完了時刻T01での姿勢を同一と見做す。以下、両姿勢を同一であると見做した場合を例に説明する。したがって、識別子付与部403は、完了時刻T21の動作と同一の動作として完了時刻T01の動作を選出する。そして、完了時刻T21の動作に対して、完了時刻T01の動作の識別子を付与する。本例では、「a」を与える。
【0073】
完了時刻T22以降の各動作についても同様の方法で、作業ログ61に示される各動作の動作タイプおよび姿勢と比較することによって、同一であるものを選出し、識別子を付与する。ただし、動作タイプが「grasp」または「release」である動作の姿勢は、動作タイプが「pose」である直近の動作の動作データのパラメータによって表わされている。例えば、完了時刻T03の動作の姿勢は、完了時刻T02の動作データのパラメータによって表わされている。
【0074】
以下、さらに、完了時刻T
22、T
23、T
28、T
29、T
30、T
31、T
32、およびT
33それぞれの動作と同一の動作として、完了時刻T
02、T
03、T
07、T
08、T
09、T
10、T
11、およびT
12それぞれの動作が選出され、
図6(B)に示す通りに識別子が付与された場合を例に説明する。
【0075】
また、識別子付与部403は、作業ログ62に含まれる動作データに示される動作のうち、作業ログ61に含まれる動作データに示されるいずれの動作とも同一でないものに対して、ユニークな識別子を付与する。以下、完了時刻T
24~T
27の各動作が完了時刻T
01~T
12のいずれの動作とも同一でない場合を例に説明する。したがって、識別子付与部403は、
図6(B)に示すように、完了時刻T
24~T
27の各動作に対してユニークな識別子を付与する。
【0076】
ところで、後述するように本実施形態ではαアルゴリズムが用いられる。αアルゴリズムにおいて、各ステップの動作は「タスク」に対応している。そこで、以下、各ステップの動作を「タスク」と記載することがある。
【0077】
イベントログ生成部404は、作業ログ61および作業ログ62ならびに識別子付与部403によって付与された識別子に基づいてイベントログLを生成する。イベントログLは、
{(a,b,c,d,e,f,g,h,i,j,k,l),(a,b,c,n,o,p,m,g,h,i,j,k,l)}
を表わす。このうちの(a,b,c,d,e,f,g,h,i,j,k,l)は、作業ログ61に含まれる動作データに示される各タスク(動作)の識別子を時刻順に並べたものである。また、(a,b,c,n,o,p,m,g,h,i,j,k,l)は、作業ログ62に含まれる動作データに示される各タスクの識別子を時刻順に並べたものである。
【0078】
イベントログLの中の直列経路を
A={a,b,c} B={d,e,f} C={n,o,p,m} D={g,h,i,j,k,l} のように纏めると、イベントログLを{(A,B,D),(A,C,D)}と表わすことができる。
【0079】
〔2.2 ペトリネットの生成〕
図7は、ペトリネット7の例を示す図である。
【0080】
ペトリネット生成部405は、αアルゴリズムに基づいてイベントログLの中のタスク同士の順序関係からモデル構成要素を出力することによって、
図7のようなペトリネット7を生成する。ペトリネット7は、ペトリネット記憶部406に記憶される。
【0081】
αアルゴリズムは、プロセスモデルとしてペトリネット(ペトリネットモデル)を生成するためのプロセスマイニングの公知のアルゴリズムであって、次の公知文献1、2に説明されている。また、αアルゴリズムをコンピュータプログラムに実装する方法の一例が公知文献3に説明されている。
〔公知文献1〕W. van der Aalst, T. Weijters, L. Maruster, “Workflow mining: discovering process models from event logs", IEEE Transactions on Knowledge and Data Engineering, Vol. 16, No. 9, pp. 1128-1142, (2004).
〔公知文献2〕飯島正, 田端啓一, 斎藤忍, “プロセスマイニング・サーベイ(第04 回:アルゴリズム(1) )", 情報システム学会誌, Vol. 13, No. 1, pp. 43-45, (2017). https://www.issj.net/journal/jissj/Vol13_No1_Open/A4V13N1.pdf
〔公知文献3〕"Python でプロセスマイニングのα アルゴリズムを実装して理解する", https://ownsearch-and-study.xyz/2019/11/06/python-processmining-alpha-implementation/
ペトリネット7は、同時並行、非同期、分散、並列、決定論的、および確率論的なシステムを表わすための数学的モデルであって、条件を表わすプレースおよび事象を表わすトランジションの2種類のノードを有する二部有向グラフである。または、離散事象システムのモデルであると、言える。
図7において、円形のノードがプレースであり、長方形のノードがトランジションである。プレースとトランジションとは、アークによって結ばれる。アークは矢印を有する線分によって表わされている。このように、プレース、トランジション、およびアークによってペトリネット7の構造が特定される。
【0082】
プレースの中の黒点は、トークンである。p4のプレースからアークが複数(2つ)伸びているが、これは、トークンが複数になるのではなく、トークンが1つにのみ選択的に進むことを表わしている。なお、
図7には示されていないが、トランジションから複数のアークが延びている場合は、トークンが複数になり、それぞれの接続先のプレースへトークンが1つずつ進む。
【0083】
ペトリネット生成部405は、αアルゴリズムに基づいてイベントログLからプレース、トランジション、およびアークそれぞれの集合をP
L、T
L、およびF
Lを算出する。本例では、P
L、T
L、およびF
Lが
P
L=[[A,{B,C}],[{B,C},D],i
L,o
L]
T
L={A,B,C,D}
F
L=[A[A,{B,C}],[[A,{B,C}]B],[[A,{B,C}]C],[B[{B,C},D]],
[C[{B,C},D], [[{B,C},D],D],[i
L,A],[D,o
L]]]
のように算出される。P
L、T
L、およびF
Lに基づいてペトリネット7を
図7のように描画することができる。また、次に説明するペトリネットシミュレーションにおいて、ペトリネット7は、M
T×M
Pの接続行列によって表わされて使用される。「M
T」および「M
P」は、それぞれ、ペトリネット7のトランジションおよびプレースの個数であって、
図7の例では、ともに「16」である。
【0084】
ペトリネット7は、
図7のように画像化されてディスプレイ25によって表示される。または、プリンタによって印刷される。
【0085】
〔2.3 ペトリネットシミュレーションによる最適動作計画の決定〕
最適動作計画決定部407は、ロボット3に行わせる作業の最適な動作計画を決定する。以下、第一のワーク51および第二のワーク52をそれぞれ第一の位置および第二の位置から第三の位置へ移動させる作業の最適な動作計画を決定する場合を例に、最適動作計画決定部407の処理を説明する。
【0086】
最適動作計画決定部407は、ペトリネット7の中から初期トークンおよび目標トークンそれぞれの位置をp1のプレースおよびp16のプレースとする発火系列をN通り、ランダムに選択する。
【0087】
具体的には、最適動作計画決定部407は、p1のプレースの位置にトークンを置き、ペトリネットの発火則に従ってトークンをp16のプレースまで遷移させる。その途中で、複数のアークに分岐するプレースにトークンが達するごとに、これらのアークのうちのいずれか1つをランダムに選択し、選択したアークの接続先のトランジションへトークンを進める。このような遷移を1回行うことによって、1つの発火系列を取得できる。このような遷移を繰り返し行うことによって、N通りの発火系列を取得し選択することができる。発火系列は、初期のプレースから目標のプレースまでの経路であると、言える。なお、Nは、2以上の整数である。コンピュータ2のスペックまたは処理時間に余裕がある場合は、全通りの発火系列を取得し選択してもよい。
【0088】
本実施形態では、
図7に示すように、アークが分岐するプレースがp4のプレース、1つだけであり、かつ、分岐数が2である。したがって、最多で2通りの発火系列が選択される。以下、{A,B,D}の発火系列および{A,C,D}の発火系列の2つが選択された場合を例に説明する。
【0089】
最適動作計画決定部407は、選択した発火系列それぞれについて、ペトリネットの発火則に従ってトークンの遷移を検証するとともにトークンがp1に置かれてからp16に到達するまでに要する所要時間(以下、「総発火遷移時間」と記載する。)を算出する。
【0090】
総発火遷移時間を算出するために、発火系列の中の各トランジションの発火遷移時間を知っておく必要である。そこで、本実施形態では、各トランジションの発火遷移時間が次のように定められる。
【0091】
ワークを拾い上げる動作に対応するトランジション(「grasp」のタスク)の発火遷移時間は、所定の時間Taである。同様に、ワークを置く動作に対応するトランジション(「release」のタスク)の発火遷移時間を所定の時間Tbである。時間Ta、Tbとも例えば「1秒」のように同じ長さであってもよいし、異なる長さであってもよい。
【0092】
また、角度θ
1~θ
6によって特定される姿勢を取る動作に対応するトランジション(「pose」のタスク)の発火遷移時間は、そのタスクが完了した時刻とそのタスクの直近のタスクが完了した時刻との差である。例えば、「b」のトランジションの発火遷移時間は、「b」のトランジションのタスクの完了時刻T
02(
図6参照)とその直前のトランジションすなわち「a」のトランジションのタスクの完了時刻T
01との差、「T
02-T
01」である。ただし、1番目のトランジションの発火遷移時間は、そのトランジションのタスクの時刻と作業の開始時刻との差である。例えば、ステップ#01~#12の作業の開始時刻がT
00であれば、「a」のトランジションの発火遷移時間は、「T
01-T
00」である。
【0093】
作業ログ61および作業ログ62のどちらに基づいても発火遷移時間を算出することができるトランジションがあるが、このような場合は、どちらに基づいてもよい。例えば、「b」のトランジションの発火遷移時間は、「T02-T01」であってもよいし、「T22-T21」であってもよい。ただし、どちらか一方を統一して用いるのが望ましい。
【0094】
そして、最適動作計画決定部407は、総発火遷移時間が最も短い発火系列を最適発火系列として選出し、最適発火系列によって特定される動作の手順が作業の最適な動作計画であると決定(推定)する。
【0095】
最適動作計画決定部407は、{A,B,D}の発火系列の総発火遷移時間として(a,b,c,d,e,f,g,h,i,j,k,l)の各トランジションの発火遷移時間の合計を算出し、{A,C,D}の発火系列の総発火遷移時間として(a,b,c,n,o,p,m,g,h,i,j,k,l)の各トランジションの発火遷移時間の合計を算出する。そして、総発火遷移時間が短いほうを最適発火系列として選出する。
【0096】
なお、本実施形態では、{A,B,D}の発火系列も{A,C,D}の発火系列も、オペレータが作業ログ61または作業ログ62を取得するためにロボット3を動かした手順と一致するので、最適発火系列もどちらかの手順に一致する。
【0097】
図8は、分岐を複数有するペトリネット71の例を示す図である。
【0098】
しかし、例えば、(a
0,b
1,c
0,d
1,e
0,f
1,g
0,h
1,i
0,j
1,k
0)の作業ログおよび(a
0,b
2,c
0,d
2,e
0,f
2,g
0,h
2,i
0,j
2,k
0)の作業ログに基づいてペトリネットを生成すると、
図8のようなペトリネット71が得られる。ペトリネット71には2つに分かれる分岐が3つ含まれているので、発火系列が2の3乗、すなわち8通りある。したがって、どちらの作業ログにも一致しない発火系列が最適発火系列であることがあり得る。イベントログに含まれる作業ログの個数が増えまたは作業ログの中の分岐が増えると発火系列のパターンが指数関数的に増える傾向が見られる。
【0099】
〔2.4 動作プログラムの生成〕
動作検証部408は、モデルの整合性を検証するシミュレータであって、最適動作計画決定部407が選出した最適発火系列に従ってロボット3が作業を完了できるか否かなどをシミュレーションによって検証する。例えば、{A,C,D}の発火系列が最適発火系列として選出された場合は、(a,b,c,n,o,p,m,g,h,i,j,k,l)の各トランジションに対応するタスク(動作)をロボット3が行うことによって仕様の通りに作業を完了できるか否かを検証する。
【0100】
特に、
図8に示したように、ペトリネットから選択可能な発火系列の個数が作業ログの個数よりも多い場合は、最適発火系列がいずれの作業ログの手順とも一致しないことがある。そこで、動作検証部408によって最適発火系列に基づいてロボット3による作業をシミュレーションして検証することが重要である。また、後述するように、ペトリネット7を他の作業または他のロボットへ適用することがある。このような場合も、作業をシミュレーションして検証することが重要である。
【0101】
動作プログラム生成部409は、最適発火系列に基づいて仕様通りにロボット3に作業を行わせることができることが動作検証部408によって検証されたら、最適発火系列に従ってロボット3を動作させるための動作プログラム80を生成する。なお、動作プログラム80は、第一のワーク51および第二のワーク52をロボット3がより確実に移動させることができるようにチューニングされる。
【0102】
〔2.5 ロボット3への動作プログラムの実装〕
コンピュータ2は、動作プログラム80に基づいてロボット3を制御することによって、ロボット3に作業を行わせることができる。
【0103】
〔3.全体的な処理の流れおよび本実施形態による効果〕
図9は、動作計画プログラム40のよる全体的な処理の流れの例を説明するフローチャートである。
【0104】
次に、動作計画プログラム40によるコンピュータ2の全体的な処理の流れを、フローチャートを参照しながら説明する。コンピュータ2は、動作計画プログラム40に基づいて、
図9に示す手順で処理を実行する。
【0105】
オペレータは、特定の目的のための作業の手順を複数通り、ロボット3に教示する。コンピュータ2は、各手順のデータを作業ログとして取得し(
図9の#101)、イベントログを生成する(#102)。そして、イベントログに基づいてペトリネットを生成する(#103)。
【0106】
さらに、コンピュータ2は、ペトリネットに基づいてN通りの発火系列を選択し、発火系列それぞれの総発火遷移時間を算出し、総発火遷移時間の最も短い発火系列を最適発火系列として選出する(#104)。最適発火系列に従ってロボット3の作業をシミュレーションすることによって動作検証を行う(#105)。
【0107】
そして、動作検証に成功したら、コンピュータ2は、最適発火系列に従ってロボット3を動作させるための動作プログラム80を生成し(#106)、ロボット3へ適用する(#107)。ロボット3は、動作プログラム80に基づいて制御され、特定の目的のための作業を行う。
【0108】
本実施形態によると、作業ログ61、62に基づいて特定の作業のペトリネット7が動作計画最適化システム1によって生成される。そしてペトリネット7は、
図7に例示したように、特定の作業を完了させるために取ることのできる複数の発火系列(経路)を1つのグラフとして視覚的に表わすことができる。よって、オペレータは、ペトリネット7を参考することによって、能率のよい手順を従来よりも容易に選ぶことができる。
【0109】
さらに、ペトリネット7の中から最適発火系列が選出され、ロボット3での実行可能性が検証され、ロボット3に適用される。よって、オペレータは、複数の発火系列の中から状況に応じて能率のよい手順をさらに容易に選ぶことができる。
【0110】
〔4.変形例および応用例〕
図10は、発火系列72の例を示す図である。
【0111】
本実施形態では、
図7に示したように、トークンが1つしか用いられないペトリネットを例に説明したが、トークンが複数用いられるペトリネットであっても、本発明を適用することができる。最適動作計画決定部407(
図4参照)は、この場合も、発火則に従ってトークンが発火系列の初期のプレースから目標のプレースまで遷移するのに要する時間を総発火遷移時間として算出すればよい。例えば、
図10に示すような発火系列72がペトリネットから選択された場合は、総発火遷移時間を次のように算出すればよい。
【0112】
発火系列72において、トークンは、トランジションt1で2つになり、それぞれ、プレースp2、p4へ進む。そして、プレースp6で合流する。最適動作計画決定部407は、トランジションt1の発火遷移時間T1と、トランジションt2の発火遷移時間T2およびトランジションt3の発火遷移時間T3のうち長いほうの発火遷移時間と、トランジションt4の発火遷移時間T4との合計を、発火系列72の総発火遷移時間として算出する。つまり、T1+T2+T4およびT1+T3+T4のうち長いほうを総発火遷移時間として算出する。
【0113】
例えば、トランジションt2は、ワークをツール32のハンドでピックする姿勢を取るタスクに対応し、トランジションt3は、ツール32のカメラでワークを撮影しワークに不具合がないことを確認するタスクに対応する。
【0114】
ペトリネット7は、第一のワーク51および第二のワーク52をそれぞれ第一の位置および第二の位置から第三の位置へ移動させる作業の動作計画の最適化のために生成されたが、ペトリネット7を他の作業のために適用することができる。例えば、第一のワーク51および第二のワーク52をそれぞれ第四の位置および第五の位置から第六の位置へ移動させる作業の動作計画の最適化のために用いてもよい。
【0115】
この場合は、それぞれの位置でロボット3が取る姿勢に合わせて作業ログ61、62(
図6参照)のパラメータを変更する。さらに、各ステップの動作時刻を変更する。姿勢および動作時刻は、手動でロボット3を動かすことによって求めてもよいし、シミュレータによって求めてもよい。または、変換用の数式に代入することによって求めてもよい。作業ログ変更手段(図示しない)が実現されるように動作計画プログラム40を構成し、パラメータおよび動作時刻の変更を作業ログ変更手段によって行えばよい。
【0116】
そして、最適動作計画決定部407は、変更後のパラメータおよび動作時刻に基づいてN通りの発火系列それぞれの総発火遷移時間を算出し、最適発火系列を選出する。
【0117】
または、ペトリネット7を、ロボット3以外のロボットに同様の作業を行わせる際の最適動作計画のために使用してもよい。この場合も、それぞれの位置でそのロボットが取る姿勢に合わせて作業ログ61、62(
図6参照)のパラメータを変更し、さらに各ステップの動作時刻を変更すればよい。そして、最適動作計画決定部407は、変更後のパラメータおよび動作時刻に基づいてN通りの発火系列それぞれの総発火遷移時間を算出し、最適発火系列を選出すればよい。
【0118】
このように、ペトリネット7は、ロボット3における他の作業または他のロボットにおける作業のために用途を拡張することができる。
【0119】
本実施形態では、2つの作業ログ61、62に基づいてペトリネット7を生成する場合を例に説明したが、3つ以上の作業ログに基づいて生成してもよい。
【0120】
本実施形態では、それぞれ異なる位置にある2つのワークを移動させる作業をロボット3に行わせるための動作計画の最適化を行う場合を例に説明したが、組立てまたは加工などの作業を行わせるための動作計画の最適化を行う場合にも、本発明を適用することができる。
【0121】
本実施形態では、最適動作計画決定部407は、総発火遷移時間が最も短い発火系列を最適発火系列として選出したが、要求に係る時間以内に総発火遷移時間が納まる発火系列を複数選出してオペレータに提示し、これらの発火系列の中からオペレータに最適発火系列を選択させてもよい。
【0122】
ペトリネット7のデータをコンピュータ2から他のコンピュータへ出力し、当該他のコンピュータがペトリネット7を使用してロボットの動作計画の最適化を行ってもよい。
【0123】
本実施形態では、ロボット3が6軸ロボットである場合を例に説明したが、7軸以上の多関節ロボットである場合、双腕型ロボットである場合、スカラロボットである場合、またはパラレルリンクロボットである場合にも、本発明を適用することができる。
本実施形態では、総発火遷移時間すなわち所要時間が最も短い発火系列を最適発火系列として選出したが、他の指標に基づいて選出してもよい。例えば、姿勢の変化に要する消費電力量の最も少ない発火系列またはツール32の移動距離の最も短い発火系列を最適発火系列として選出してもよい。または、総発火遷移時間、消費電力量、および移動距離などに基づいて総合的な移動コストを算出し、移動コストの最も低い発火系列を最適発火系列として選出してもよい。
【0124】
その他、動作計画最適化システム1、コンピュータ2、ロボット3の全体または各部の構成、処理の内容、処理の順序、データの構成、発火遷移時間の決め方などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【0125】
1 動作計画最適化システム
3 ロボット
401 作業ログ取得部(手順データ取得手段)
405 ペトリネット生成部(プロセスモデル生成手段)
407 最適動作計画決定部(適格経路選出手段)
408 動作検証部(検証手段)
61 作業ログ(手順データ)
62 作業ログ(手順データ)
7 ペトリネット(プロセスモデル)