(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025008203
(43)【公開日】2025-01-20
(54)【発明の名称】操作対象物を自動的に操作するためのシステム、方法、およびプログラム
(51)【国際特許分類】
G05B 17/02 20060101AFI20250109BHJP
G06Q 50/08 20120101ALI20250109BHJP
E02F 9/20 20060101ALI20250109BHJP
【FI】
G05B17/02
G06Q50/08
E02F9/20 Q
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023110160
(22)【出願日】2023-07-04
(71)【出願人】
【識別番号】514028042
【氏名又は名称】株式会社アラヤ
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100107489
【弁理士】
【氏名又は名称】大塩 竹志
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】シモン ロベル ミシェル ビエノ
(72)【発明者】
【氏名】松本 慶太
(72)【発明者】
【氏名】福田 雄太
(72)【発明者】
【氏名】原口 将征
【テーマコード(参考)】
2D003
5H004
5L049
5L050
【Fターム(参考)】
2D003AA01
2D003AB03
2D003BA03
2D003DA04
2D003DB04
2D003DB05
2D003DB08
5H004GA05
5H004GB16
5H004HA07
5H004HB07
5H004JA03
5H004JB06
5H004KD62
5L049CC07
5L050CC07
(57)【要約】
【課題】操作対象物を自動的に操作するためのシステム等を提供すること
【解決手段】本発明のシステムは、前記操作対象物の初期状態を示す初期情報を取得する取得手段であって、前記操作対象物の一連の操作が行われているときの前記操作対象物の複数の状態のそれぞれについての前記操作対象物の状態を示す複数の情報をさらに取得する取得手段と、前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションするシミュレーション手段と、前記操作対象物への操作信号を生成する生成手段であって、前記生成手段は、前記操作対象物の状態を示す複数の情報のうちの1つと、前記操作シナリオとに基づいて、前記操作信号を生成することを前記一連の操作が完了するまで繰り返す、生成手段とを備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
操作対象物を自動的に操作するためのシステムであって、
前記操作対象物の初期状態を示す初期情報を取得する取得手段であって、前記操作対象物の一連の操作が行われているときの前記操作対象物の複数の状態のそれぞれについての前記操作対象物の状態を示す複数の情報をさらに取得する取得手段と、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションするシミュレーション手段であって、前記シミュレーション手段は、操作シナリオを生成するように構成されており、前記操作シナリオは、前記操作対象物の一連の操作が行われているときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、シミュレーション手段と、
前記操作対象物への操作信号を生成する生成手段であって、前記生成手段は、前記操作対象物の状態を示す複数の情報のうちの1つと、前記操作シナリオとに基づいて、前記操作信号を生成することを前記一連の操作が完了するまで繰り返す、生成手段と
を備えるシステム。
【請求項2】
前記一連の操作は、少なくとも第1の時間区分に行われる第1の操作と第2の時間区分に行われる第2の操作とを含み、
前記受信手段は、前記第1の時間区分における前記操作対象物の初期状態を示す第1の初期情報を受信し、
前記シミュレーション手段は、第1の初期情報に基づいて、前記第1の操作のための第1の操作シナリオを生成し、
前記生成手段は、前記第1の時間区分に取得された前記操作対象物の状態を示す複数の情報のうちの1つと、前記第1の操作シナリオとに基づいて、前記第1の操作のための第1の操作信号を生成することを前記第1の時間区分が終了するまで繰り返し、
前記受信手段は、前記第2の時間区分における前記操作対象物の初期状態を示す第2の初期情報を受信し、
前記シミュレーション手段は、第2の初期情報に基づいて、前記第2の操作のための第2の操作シナリオを生成し、
前記生成手段は、前記第2の時間区分に取得された前記操作対象物の状態を示す複数の情報のうちの1つと、前記第2の操作シナリオとに基づいて、前記第2の操作のための第2の操作信号を生成することを前記第2の時間区分が終了するまで繰り返す、請求項1に記載のシステム。
【請求項3】
前記第1の時間区分と前記第2の時間区分とは、部分的に重複している、請求項2に記載のシステム。
【請求項4】
前記シミュレーション手段は、
(a)前記初期情報が示す状態の前記操作対象物に次のアクションを行わせるための操作信号を推定することと、
(b)前記推定された操作信号で操作された後の前記操作対象物の状態を推定することと、
(c)前記推定された状態の前記操作対象物に次のアクションを行わせるための操作信号を推定することと、
(d)前記一連の操作が完了した状態になるまで、前記(b)~前記(c)を繰り返すことと
を行うことによって、前記操作シナリオを生成するように構成されている、請求項1に記載のシステム。
【請求項5】
前記シミュレーション手段は、機械学習モデルと、前記操作対象物のシミュレータとを備え、
前記機械学習モデルが、前記(a)および前記(c)を行い、前記機械学習モデルは、前記機械学習モデルに前記操作対象物の状態を示す情報を入力すると、前記状態の前記操作対象物に次のアクションを行わせるための操作信号を出力することができるように、前記操作対象物の状態を示す情報と操作信号との関係を学習しており、
前記シミュレータが、前記(b)を行う、請求項4に記載のシステム。
【請求項6】
前記シミュレーション手段は、機械学習モデルを備え、
前記機械学習モデルは、前記機械学習モデルに前記操作対象物の状態を示す情報を入力すると、前記状態の前記操作対象物に次のアクションを行わせるための操作信号と前記次のアクションを行った後の前記操作対象物の状態を示す情報とを出力することができるように、前記操作対象物の状態を示す情報と操作信号との関係を学習している、請求項4に記載のシステム。
【請求項7】
前記操作シナリオを修正するための修正手段をさらに備え、前記修正手段は、ユーザによる入力に基づいて、または、前記操作シナリオが所定のルールに反していることに応答して、前記操作シナリオを修正する、請求項1に記載のシステム。
【請求項8】
前記生成手段は、
前記取得手段によって取得された情報が示す状態と、前記操作シナリオに規定される状態との差異を決定することと、
前記差異が閾値以上であるか否かを判定することと
を行う、請求項1に記載のシステム。
【請求項9】
前記状態を示す情報は、前記操作対象物の関節角度、前記操作対象物の位置情報、前記操作対象物のLidar情報、前記操作対象物の画像情報のうちの少なくとも1つを含む、請求項1に記載のシステム。
【請求項10】
前記操作対象物は、建設機械である、請求項1に記載のシステム。
【請求項11】
操作対象物を自動的に操作するための方法であって、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと、
前記操作対象物の一連の操作が行われているときに、
(i)前記操作対象物の状態を示す情報を受信することと、
(ii)前記取得された情報と、前記操作シナリオとに基づいて、前記操作対象物への操作信号を生成することと
を前記一連の操作が完了するまで繰り返すことと
を含む方法。
【請求項12】
操作対象物を自動的に操作するためのプログラムであって、前記プログラムは、プロセッサを備えるコンピュータにおいて実行され、前記プログラムは、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと、
前記操作対象物の一連の操作が行われているときに、
(i)前記操作対象物の状態を示す情報を受信することと、
(ii)前記取得された情報と、前記操作シナリオとに基づいて、前記操作対象物への操作信号を生成することと
を前記一連の操作が完了するまで繰り返すことと
を含む処理を前記プロセッサに行わせる、プログラム。
【請求項13】
操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのシステムであって、
前記操作対象物の初期状態を示す初期情報を受信する受信手段と、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションするシミュレーション手段であって、前記シミュレーション手段は、操作シナリオを生成するように構成されており、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、シミュレーション手段と
を備え、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、システム。
【請求項14】
操作対象物を自動的に操作するために用いられる操作シナリオを生成するための方法であって、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと
を含み、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、方法。
【請求項15】
操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのプログラムであって、前記プログラムは、プロセッサを備えるコンピュータにおいて実行され、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと
を含む処理を前記プロセッサに行わせ、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、操作対象物を自動的に操作するためのシステム、方法、およびプログラムに関する。本発明はまた、操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのシステム等にも関する。
【背景技術】
【0002】
ロボットや機械(建設機械)の自動化は、一般的に模倣学習やオフライン強化学習で行われている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、操作対象物の滑らかな動きを達成することができるように、操作対象物を自動的に操作するためのシステム等を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、操作対象物を自動的に操作するためのシステム等を提供し、このシステムは、操作シナリオを生成し、操作シナリオに従って、操作対象物を操作する。
【0006】
本発明は、例えば、以下の項目を提供する。
(項目1)
操作対象物を自動的に操作するためのシステムであって、
前記操作対象物の初期状態を示す初期情報を取得する取得手段であって、前記操作対象物の一連の操作が行われているときの前記操作対象物の複数の状態のそれぞれについての前記操作対象物の状態を示す複数の情報をさらに取得する取得手段と、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションするシミュレーション手段であって、前記シミュレーション手段は、操作シナリオを生成するように構成されており、前記操作シナリオは、前記操作対象物の一連の操作が行われているときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、シミュレーション手段と、
前記操作対象物への操作信号を生成する生成手段であって、前記生成手段は、前記操作対象物の状態を示す複数の情報のうちの1つと、前記操作シナリオとに基づいて、前記操作信号を生成することを前記一連の操作が完了するまで繰り返す、生成手段と
を備えるシステム。
(項目2)
前記一連の操作は、少なくとも第1の時間区分に行われる第1の操作と第2の時間区分に行われる第2の操作とを含み、
前記受信手段は、前記第1の時間区分における前記操作対象物の初期状態を示す第1の初期情報を受信し、
前記シミュレーション手段は、第1の初期情報に基づいて、前記第1の操作のための第1の操作シナリオを生成し、
前記生成手段は、前記第1の時間区分に取得された前記操作対象物の状態を示す複数の情報のうちの1つと、前記第1の操作シナリオとに基づいて、前記第1の操作のための第1の操作信号を生成することを前記第1の時間区分が終了するまで繰り返し、
前記受信手段は、前記第2の時間区分における前記操作対象物の初期状態を示す第2の初期情報を受信し、
前記シミュレーション手段は、第2の初期情報に基づいて、前記第2の操作のための第2の操作シナリオを生成し、
前記生成手段は、前記第2の時間区分に取得された前記操作対象物の状態を示す複数の情報のうちの1つと、前記第2の操作シナリオとに基づいて、前記第2の操作のための第2の操作信号を生成することを前記第2の時間区分が終了するまで繰り返す、上記項目に記載のシステム。
(項目3)
前記第1の時間区分と前記第2の時間区分とは、部分的に重複している、上記項目のいずれか一項記載のシステム。
(項目4)
前記シミュレーション手段は、
(a)前記初期情報が示す状態の前記操作対象物に次のアクションを行わせるための操作信号を推定することと、
(b)前記推定された操作信号で操作された後の前記操作対象物の状態を推定することと、
(c)前記推定された状態の前記操作対象物に次のアクションを行わせるための操作信号を推定することと、
(d)前記一連の操作が完了した状態になるまで、前記(b)~前記(c)を繰り返すことと
を行うことによって、前記操作シナリオを生成するように構成されている、上記項目のいずれか一項に記載のシステム。
(項目5)
前記シミュレーション手段は、機械学習モデルと、前記操作対象物のシミュレータとを備え、
前記機械学習モデルが、前記(a)および前記(c)を行い、前記機械学習モデルは、前記機械学習モデルに前記操作対象物の状態を示す情報を入力すると、前記状態の前記操作対象物に次のアクションを行わせるための操作信号を出力することができるように、前記操作対象物の状態を示す情報と操作信号との関係を学習しており、
前記シミュレータが、前記(b)を行う、上記項目のいずれか一項に記載のシステム。
(項目6)
前記シミュレーション手段は、機械学習モデルを備え、
前記機械学習モデルは、前記機械学習モデルに前記操作対象物の状態を示す情報を入力すると、前記状態の前記操作対象物に次のアクションを行わせるための操作信号と前記次のアクションを行った後の前記操作対象物の状態を示す情報とを出力することができるように、前記操作対象物の状態を示す情報と操作信号との関係を学習している、上記項目のいずれか一項に記載のシステム。
(項目7)
前記操作シナリオを修正するための修正手段をさらに備え、前記修正手段は、ユーザによる入力に基づいて、または、前記操作シナリオが所定のルールに反していることに応答して、前記操作シナリオを修正する、上記項目のいずれか一項に記載のシステム。
(項目8)
前記生成手段は、
前記取得手段によって取得された情報が示す状態と、前記操作シナリオに規定される状態との差異を決定することと、
前記差異が閾値以上であるか否かを判定することと
を行う、上記項目のいずれか一項に記載のシステム。
(項目9)
前記状態を示す情報は、前記操作対象物の関節角度、前記操作対象物の位置情報、前記操作対象物のLidar情報、前記操作対象物の画像情報のうちの少なくとも1つを含む、上記項目のいずれか一項に記載のシステム。
(項目10)
前記操作対象物は、建設機械である、上記項目のいずれか一項に記載のシステム。
(項目11)
操作対象物を自動的に操作するための方法であって、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと、
前記操作対象物の一連の操作が行われているときに、
(i)前記操作対象物の状態を示す情報を受信することと、
(ii)前記取得された情報と、前記操作シナリオとに基づいて、前記操作対象物への操作信号を生成することと
を前記一連の操作が完了するまで繰り返すことと
を含む方法。
(項目11A)
上記項目のいずれか一項に記載の特徴を含む、項目11に記載の方法。
(項目12)
操作対象物を自動的に操作するためのプログラムであって、前記プログラムは、プロセッサを備えるコンピュータにおいて実行され、前記プログラムは、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと、
前記操作対象物の一連の操作が行われているときに、
(i)前記操作対象物の状態を示す情報を受信することと、
(ii)前記取得された情報と、前記操作シナリオとに基づいて、前記操作対象物への操作信号を生成することと
を前記一連の操作が完了するまで繰り返すことと
を含む処理を前記プロセッサに行わせる、プログラム。
(項目12A)
上記項目のいずれか一項に記載の特徴を含む、項目12に記載のプログラム。
(項目13)
操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのシステムであって、
前記操作対象物の初期状態を示す初期情報を受信する受信手段と、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションするシミュレーション手段であって、前記シミュレーション手段は、操作シナリオを生成するように構成されており、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、シミュレーション手段と
を備え、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、システム。
(項目13A)
上記項目のいずれか一項に記載の特徴を含む、項目13に記載のシステム。
(項目14)
操作対象物を自動的に操作するために用いられる操作シナリオを生成するための方法であって、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと
を含み、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、方法。
(項目14A)
上記項目のいずれか一項に記載の特徴を含む、項目14に記載の方法。
(項目15)
操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのプログラムであって、前記プログラムは、プロセッサを備えるコンピュータにおいて実行され、
前記操作対象物の初期状態を示す初期情報を受信することと、
前記初期情報に基づいて、前記操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成することであって、前記操作シナリオは、前記操作対象物の一連の操作が行われるときに前記操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の前記操作対象物に次のアクションを行わせるための操作信号とを関連付けている、ことと
を含む処理を前記プロセッサに行わせ、前記操作シナリオは、前記操作対象物の状態を示す情報に基づいて前記操作対象物への操作信号を生成するために用いられる、プログラム。
(項目15A)
上記項目のいずれか一項に記載の特徴を含む、項目15に記載のプログラム。
【発明の効果】
【0007】
本発明によれば、操作対象物を自動的に操作するためのシステム等が提供され、滑らかな動きで操作対象物を自動的に操作することができる。
【図面の簡単な説明】
【0008】
【
図1】操作シナリオを利用して建設機械を自動的に操作するフローの一例を示す図
【
図2A】操作対象物を自動的に操作するためのシステム100の構成の一例を示す図
【
図2B】システム100の代替実施形態であるシステム100’の構成の一例を示す図
【
図3】シミュレーション手段120によって生成された操作シナリオのデータ構成の一例を示す図
【
図4A】第1の実施形態におけるシミュレーション手段120を備えるシステムのブロック図
【
図4B】第2の実施形態におけるシミュレーション手段120を備えるシステムのブロック図
【
図5】システム100を実装する情報処理装置200の構成の一例を示す図
【
図6】操作対象物を自動的に操作するためのシステム100における処理600の一例を示すフローチャート
【
図7】一連の操作に複数の操作が含まれることを概念的に示す図
【
図8】一連の操作が少なくとも第1の操作と第2の操作とを含む場合のシステム100における処理800の一例を示すフローチャート
【発明を実施するための形態】
【0009】
(定義)
本明細書において、「操作対象物」とは、操作の対象となる物体をいい、「操作対象物」は、例えば、ロボットまたは建設機械である。「操作対象物」は、好ましくは、人間が乗り込むことなく、無人で操作され得る物体であり得る。
【0010】
本明細書において、「一連の操作」とは、或るアクションを操作対象物に行わせるためになされる複数の操作をいう。例えば、操作対象物に部材を持ち上げさせるとき、(1)操作対象物のアームを部材まで動かすことと、(2)操作対象物のアームに部材を把持させることと、(3)操作対象物のアームを上に上げることとが行われる必要があり、操作対象物に部材を持ち上げさせるための一連の操作は、(1)~(3)のための操作を含む。一連の操作は、好ましくは、第1の時間区分に行われる第1の操作と第2の時間区分に行われる第2の操作を含む。
【0011】
本明細書において、「アクション」とは、状態を変化させる任意の作用をいい、動作のみならず、モードを変える等の外見には表れない作用も含む。
【0012】
本明細書において、「初期情報」とは、操作対象物の初期状態を示す情報であり、「初期状態」とは、対応する操作シナリオが生成される直前の状態をいう。例えば、一連の操作のために複数の操作シナリオが生成される場合、少なくとも、複数の操作シナリオのうちの第1の操作シナリオが生成される直前の第1の初期状態と、複数の操作シナリオのうちの第2の操作シナリオが生成される直前の第2の初期状態とが存在する。
【0013】
1.建設機械の自動操作
本発明の発明者は、AIを用いて建設機械を自動的に操作するための仕組みの開発に取り組んでいる。ここで、AIとは、“Artificial Intelligence”の略語であり、人間の知能(もしくは、人間の知能を凌駕する知能)を人工的にコンピュータシステム上に実装するための技術、または、そのような技術が実装されたコンピュータシステムをいう。
【0014】
発明者は、AIが建設機械の状態を示すセンサ信号から建設機械の状態を把握し、リアルタイムで操作信号を出力するのでは、操作信号にタイムラグやノイズが生じやすく、建設機械を滑らかに動かすことができないという課題を見出した。発明者は、鋭意研究の結果、この課題に対処することができる仕組みを開発した。
【0015】
この仕組みでは、建設機械の状態を示すセンサ信号からリアルタイムでAIが操作信号を出力するのではなく、建設機械の初期状態からAIが操作シナリオを生成し、生成された操作シナリオに従って、建設機械の操作信号を出力する。操作シナリオは、建設機械に特定の動作を行わせるときになされる理想的な操作を規定するものであり、操作シナリオに従って建設機械を制御することで、建設機械の滑らかな動きを実現することができるのである。
【0016】
図1は、操作シナリオを利用して建設機械を自動的に操作するフローの一例を示す。本例では、建設機械として、バックホー10を例に、一連の操作として、バックホー10に地面を掘削させるための操作を例に説明する。バックホー10には、バックホー10の状態を検知するためのセンサがバックホー10に装着されているか、または、バックホー10の周囲に配置されているものとする。センサは、例えば、バックホー10の関節角度を検知するセンサ、バックホー10の全体または一部の位置情報を検知するセンサ、バックホー10の姿勢を撮影するカメラ、バックホー10の姿勢を検知するLidar等であり得る。
【0017】
始めに、センサが、バックホー10の初期状態を検知し、検知された初期状態を示す初期情報を取得する。
【0018】
次いで、ステップS1では、取得された初期情報がシステム100に入力される。これにより、システム100では、初期情報に基づいて操作シナリオが生成されることになる。
【0019】
具体的には、初期情報は、システム100のシミュレーション手段120に入力される。シミュレーション手段120は、バックホー10のアクションをシミュレーションすることにより、操作シナリオを生成する機能を有している。これにより、シミュレーション手段120は、初期情報に基づいて、初期状態から地面を掘削する最終状態までバックホー10を動かすための操作を規定する操作シナリオを生成する。
【0020】
初期状態から地面を掘削する最終状態まで、第1の状態~第nの状態を経るとすると、この操作シナリオは、例えば、初期状態から第1の状態までバックホー10を動かすための第1の操作信号と第1の状態とを関連付け、第1の状態から第2の状態までバックホー10を動かすための第2の操作信号と第2の状態とを関連付け、・・・第n-1の状態から第nの状態までバックホー10を動かすための第nの信号と第nの状態とを関連付けている。これにより、バックホー10の現在の状態が分かれば、操作シナリオを参照することで、現在の状態から次の状態までバックホー10を動かすための操作信号を出力することができる。ここで、次の状態とは、最終状態までのアクションにおいてバックホー10が取り得る状態のうち、バックホー10の現在の状態の次に取る状態である。
【0021】
シミュレーション手段120によって生成された操作シナリオは、生成手段130に渡され、生成手段130が、操作シナリオを参照することで、現在の状態から次の状態までバックホー10を動かすための操作信号を生成することになる。
【0022】
ステップS2では、生成された操作信号がバックホー10に提供され、バックホー10は、操作信号に従って自動的に動くことになる。
【0023】
次いで、センサが、バックホー10が自動的に動いた後の状態を検知し、検知された状態を示す情報を取得する。
【0024】
次いで、ステップS3では、取得された情報がシステム100に入力され、システム100の生成手段130に提供される。生成手段130は、操作シナリオを参照することで、現在の状態から次の状態までバックホー10を動かすための操作信号を生成することになる。
【0025】
ステップS4では、生成された操作信号がバックホー10に提供され、バックホー10は、操作信号に従って自動的に動くことになる。
【0026】
バックホー10が最終状態となるまで、ステップS3~ステップS4を繰り返すことにより、バックホー10は、自動的に地面を掘削することになる。
【0027】
このように、操作シナリオを参照してバックホー10を操作することにより、AIがリアルタイムで操作信号を出力することに比べて、計算による遅延なく、操作対象物の滑らかな動きを実現することができる。
【0028】
なお、上述した例では、バックホー10を自動的に操作することを説明したが、自動的に操作される対象は、バックホー等の建設機械に限定されない。状態を検出し、その状態に基づいて動作を制御することができる限り、任意の操作対象物を自動的に操作することができる。
【0029】
操作対象物を自動的に操作することは、例えば、後述する、操作対象物を自動的に操作するためのシステム100によって実装され得る。
【0030】
2.操作対象物を自動的に操作するためのシステムの構成
図2Aは、操作対象物を自動的に操作するためのシステム100の構成の一例を示す。
【0031】
システム100は、取得手段110と、シミュレーション手段120と、生成手段130とを備える。
【0032】
取得手段110は、操作対象物の状態を示す情報を取得するように構成されている。取得手段110は、シミュレーション手段120が操作シナリオを生成する前に、操作対象物の初期状態を示す初期情報を取得することができる。さらに、取得手段110は、シミュレーション手段120が操作シナリオを生成した後に、操作対象物の状態を示す情報を取得することができる。操作対象物の状態を示す情報は、操作対象物の一連の操作が行われているときの操作対象物の複数の状態のそれぞれについて取得される。例えば、取得手段110は、操作シナリオを生成した後に、操作対象物の一連の操作が開始されたときの状態を示す情報、一連の操作のうちの第1の操作が行われた後の状態を示す情報、一連の操作のうちの第2の操作が行われた後の状態を示す情報、・・・を取得することができる。
【0033】
取得手段110は、操作対象物の状態を示す情報として、操作対象物の関節角度、操作対象物の位置情報、操作対象物のLidar情報、操作対象物の画像情報のうちの少なくとも1つを取得することができる。操作対象物の関節角度は、例えば、操作対象物が有する関節の全ての関節の角度であってもよいし、一部の関節の角度であってもよく、好ましくは、一連の操作において稼働する部位に関連する関節の角度であり得る。操作対象物の位置情報は、例えば、操作対象物全体の位置情報であってもよいし、一部の位置情報であってもよく、好ましくは、一連の操作において稼働する部位の位置情報であり得る。操作対象物のLidar情報は、点群データであり得、例えば、操作対象物全体のLidar情報であってもよいし、一部のLidar情報であってもよいし、操作対象物の周辺のLidar情報であってもよく、好ましくは、一連の操作において稼働する部位のLidar情報であり得る。操作対象物の画像情報は、例えば、操作対象物全体の画像情報であってもよいし、一部の画像情報であってもよく、好ましくは、一連の操作において稼働する部位の画像情報であり得る。
【0034】
好ましい実施形態では、取得手段110は、操作対象物の状態を示す情報として、操作対象物の各関節の角度情報と、操作対象物の周辺の点群データとの組み合わせを取得する。これは、操作対象物の状態に加えて、周辺の状態も正確に取得することが可能になるという点で好ましい。これは、例えば、角度センサおよびLidarによって達成され得る。
【0035】
取得手段110によって取得された初期情報は、シミュレーション手段120に渡される。また、操作シナリオが生成された後に取得手段110によって取得された情報は、生成手段130に渡される。
【0036】
シミュレーション手段120は、取得手段110によって取得された初期情報に基づいて、操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成するように構成されている。操作シナリオは、操作対象物の一連の操作が行われるときに操作対象物が取り得る複数の状態を示す情報とそれぞれの状態の操作対象物に次のアクションを行わせるための操作信号とを関連付けるものであり、この操作シナリオを生成するために、シミュレーション手段120は、或る状態の操作対象物に次のアクションを行わせるための操作信号を推定することと、当該アクション後の操作対象物の状態を推定することとを繰り返すことにより、一連の操作における複数の状態とそれぞれの状態に対応する操作信号とを推定する。
【0037】
具体的には、シミュレーション手段120は、(a)初期情報が示す初期状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(b)推定された操作信号で操作された後の操作対象物の状態を推定するステップと、(c)推定された状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(d)一連の操作が完了した状態になるまで、(b)~(c)を繰り返すステップとを行うことによって、操作シナリオを生成することができる。これにより生成される操作シナリオでは、初期状態と、初期状態の操作対象物を操作するための第1の操作信号とが関連付けられ、第1の操作信号で操作された後の第2の状態と、第2の状態の操作対象物を操作するための第2の操作信号とが関連付けられ、第2の操作信号で操作された後の第3の状態と、第3の状態の操作対象物を操作するための第3の操作信号とが関連付けられ、・・・第n-1の操作信号で操作された後の第nの状態と、第nの状態の操作対象物を操作するための第nの操作信号とが関連付けられることになる。
【0038】
第1の実施形態において、シミュレーション手段120は、機械学習モデルと、操作対象物のシミュレータとを備えることができる。
【0039】
本実施形態において、機械学習モデルは、操作対象物の状態を示す情報を入力すると、当該状態の操作対象物に次のアクションを行わせるための操作信号を出力することができるように、操作対象物の状態を示す情報と操作信号との関係を学習したモデルである。機械学習モデルは、操作対象物の状態を示す情報を入力すると、当該状態の操作対象物に次のアクションを行わせるための操作信号を出力することができる限り、任意のモデルであり得、学習手法も、任意の手法であり得る。例えば、機械学習モデルは、ニューラルネットワークをベースにしたモデルであってもよいし、他のアルゴリズムをベースにしたモデルであってもよい。入力に用いられる情報に適したモデル(例えば、関節角度等の数値入力に適したモデル、画像入力に適したモデル等)を利用することが好ましい。例えば、学習手法は、模倣学習、強化学習、オフライン強化学習等であり得る。典型的には、学習済モデルは、人間が操作対象物を操作したときのデータ(状態,操作信号)を時系列で取得し、それらのデータを用いて、(状態)を入力用学習データとし、(操作信号)を出力用学習データとして、模倣学習によってニューラルネットワークを学習させることによって構築されたモデルであり得る。
【0040】
シミュレータは、操作信号を入力されると、操作信号に従った操作対象物のアクションをシミュレーションすることができ、アクション後の操作対象物の状態を示す情報を出力する。シミュレータは、取得手段110によって取得される情報と同じ種類の情報を出力する。シミュレータは、例えば、操作対象物の最低限のアクションをシミュレーションするシミュレータであってもよいし、より正確で複雑なアクションをシミュレーションするシミュレータであってもよい。本発明の手法では、シミュレータを利用した操作シナリオの生成を操作対象物の操作前に行うため、シミュレータの計算速度が遅くとも、操作シナリオのリアルタイム実行には影響しないという利点がある。従って、複雑なシミュレータを利用することも可能となる。
【0041】
本実施形態では、機械学習モデルが、上記の(a)、(c)のステップを行い、シミュレータが、上記の(b)のステップを行うことになる。すなわち、初期状態を示す初期情報が機械学習モデルに入力されると、機械学習モデルが、初期状態の操作対象物に次のアクションを行わせるための第1の操作信号を推定して出力する。出力された第1の操作信号がシミュレータに入力されると、シミュレータが、第1の操作信号に従った操作対象物のアクションをシミュレーションし、アクション後の操作対象物の状態(第2の状態)を示す情報を出力する。出力された第2の状態を示す情報が機械学習モデルに入力されると、機械学習モデルが、第2の状態の操作対象物に次のアクションを行わせるための第2の操作信号を推定して出力する。出力された第2の操作信号がシミュレータに入力されると、シミュレータが、第2の操作信号に従った操作対象物のアクションをシミュレーションし、アクション後の操作対象物の状態(第3の状態)を示す情報を出力する。これらのステップを、一連の操作が完了するまで繰り返すことにより、一連の操作のための操作シナリオが生成され得る。
【0042】
第2の実施形態において、シミュレーション手段120は、機械学習モデルを備えることができる。
【0043】
本実施形態において、機械学習モデルは、操作対象の状態を示す情報を入力すると、当該状態の操作対象物に次のアクションを行わせるための操作信号と、当該次のアクションを行った後の操作対象物の状態を示す情報とを出力することができるように、操作対象物の状態を示す情報と操作信号との関係を学習したモデルである。機械学習モデルは、操作対象物の状態を示す情報を入力すると、当該状態の操作対象物に次のアクションを行わせるための操作信号と、当該次のアクションを行った後の操作対象物の状態を示す情報とを出力することができる限り、任意のモデルであり得、学習手法も、任意の手法であり得る。例えば、機械学習モデルは、ニューラルネットワークをベースにしたモデルであってもよいし、畳み込みニューラルネットワークをベースにしたモデルであってもよいし、他のアルゴリズムをベースにしたモデルであってもよい。入力に用いられる情報に適したモデル(例えば、関節角度等の数値入力に適したモデル、画像入力に適したモデル等)を利用することが好ましい。例えば、学習手法は、模倣学習、強化学習、オフライン強化学習等であり得る。典型的には、学習済モデルは、人間が操作対象物を操作したときのデータ(状態,操作信号)を時系列で取得し、それらのデータを(状態,(操作信号、次の状態))の組に編成し、編成されたデータを用いて、(状態)を入力用学習データとし、(操作信号、次の状態)を出力用学習データとして、模倣学習によってニューラルネットワークを学習させることによって構築されたモデルであり得る。人間が操作対象物を操作したときのデータ(状態,操作信号)は、本実施形態においても、上述した実施形態においても利用されることができ、2つの実施形態のために別々にデータを取得する必要がない。
【0044】
本発明の手法では、機械学習モデルを利用した操作シナリオの生成を操作対象物の操作前に行うため、機械学習モデルの計算速度が遅くとも、操作シナリオのリアルタイム実行には影響しないという利点がある。従って、複雑な機械学習モデルを利用することも可能となる。
【0045】
本実施形態では、機械学習モデルが、上記の(a)~(c)のステップを行うことになる。すなわち、初期状態を示す初期情報が機械学習モデルに入力されると、機械学習モデルが、初期状態の操作対象物に次のアクションを行わせるための第1の操作信号を推定し、第1の操作信号に従った操作対象物のアクション後の操作対象物の第2の状態を示す情報を推定し、第1の操作信号および第2の状態を示す情報を出力する。出力された第2の状態を示す情報が機械学習モデルに入力されると、機械学習モデルが、第2の状態の操作対象物に次のアクションを行わせるための第2の操作信号を推定し、第2の操作信号に従った操作対象物のアクション後の操作対象物の第3の状態を示す情報を推定し、第2の操作信号および第3の状態を示す情報を出力する。これらのステップを、一連の操作が完了するまで繰り返すことにより、一連の操作のための操作シナリオが生成され得る。
【0046】
図3は、シミュレーション手段120によって生成された操作シナリオのデータ構成の一例を示す。本例では、操作対象物に地面を掘削する動作を行わせるための一連の操作のための操作シナリオの例を示す。
【0047】
操作シナリオでは、操作対象物の状態と、その状態の操作対象物に次のアクションを行わせるための操作信号とが関連付けられている。例えば、基部から延びるブームと、ブームから延びるアームと、アームの先端のバケットとを備えるバックホーが操作対象物である場合、アクションは、バックホーをそれぞれの関節周りに動かすアクションであり得、例えば、ブームの上げ下げ(基部とブームとの間の関節角度の変更)、アームの上げ下げ(ブームとアームとの間の関節角度の変更)、バケットの回転(アームとバケットとの間の関節角度の変更)のうちの1つまたは組み合わせによって達成され得るアクションであり得る。例えば、バックホーに関する操作シナリオでは、第1の状態(すなわち、基部とブームとの間の関節角度がα1であり、ブームとアームとの関節角度がβ1であり、アームとバケットとの間の関節角度がγ1にある状態)と、第1の状態のバックホーが地面を掘削するための第1のアクション(すなわち、バケットが地面に接触するようにバケットを下げるために、基部とブームとの関節角度をα2にすること)を行わせるための第1の操作信号とが関連付けられ、第1のアクションの結果の第2の状態(すなわち、基部とブームとの間の関節角度がα2であり、ブームとアームとの関節角度がβ1であり、アームとバケットとの間の関節角度がγ1にある状態)と、第2の状態のバックホーが地面を掘削するための第2のアクション(すなわち、バケットが地面をえぐるようにアームを動かすために、ブームとアームとの間の関節角度をβ2にすること)を行わせるための第2の操作信号とが関連付けられ、第2のアクションの結果の第3の状態(すなわち、基部とブームとの間の関節角度がα2であり、ブームとアームとの関節角度がβ2であり、アームとバケットとの間の関節角度がγ1にある状態)と、第3の状態のバックホーが地面を掘削するための第3のアクション(すなわち、バケットが土をすくうようにバケットを動かすために、アームとバケットとの関節角度をγ2にすること)を行わせるための第3の操作信号とが関連付けられている。
【0048】
第1の実施形態および第2の実施形態の両方において、生成された操作シナリオは、生成手段130に渡される。
【0049】
再度
図2Aを参照して、生成手段130は、取得手段110によって取得された操作対象物の状態を示す情報と、シミュレーション手段120によって生成された操作シナリオとに基づいて、操作信号を生成するように構成されている。生成手段130は、操作シナリオを参照し、操作シナリオにおいて、取得手段110によって取得された情報が示す状態に対応する操作信号を生成することができる。
【0050】
生成手段130は、取得手段110によって取得された複数の情報のそれぞれに対して、操作信号を生成することができ、これを一連の操作が完了するまで繰り返すことができる。生成手段130によって生成された一連の操作信号により、操作対象物は、自動的に操作されることができる。
【0051】
例えば、取得手段110によって取得された情報が示す操作対象物の状態と、操作シナリオに規定される状態との間に差異がある場合、生成手段130は、以下の処理を行うことができる。
【0052】
差異が所定の閾値よりも小さい場合、生成手段130は、差異を無視できると判断し、操作シナリオに規定される状態に対応する操作信号を生成することができる。この場合、差異の原因が、ノイズであるか、わずかなタイムラグであると判断され、ノイズであれば操作シナリオ通りに操作対象物を操作できているとみなすことができ、わずかなタイムラグであれば、次のアクションでそのタイムラグを吸収することができるからである。
【0053】
差異が所定の閾値以上である場合、生成手段130は、操作シナリオの実現に失敗したと判断し、操作信号を生成しないようにすることができる。生成手段130は、操作信号を生成することなく、操作対象物の動作を非常停止するか、または、操作シナリオを生成し直すことができる。具体的には、差異が所定の閾値以上となった状態を初期状態として、シミュレーション手段120によって操作シナリオを生成し、新たに生成された操作シナリオに従って、生成手段130が操作信号を生成することができる。差異が所定の閾値以上である場合に非常停止するか、操作シナリオを生成し直すかは、システム100の運用前にユーザが設定することが好ましい。
【0054】
このように、システム100では、操作シナリオのとおりに操作対象物を操作できなかった場合であっても、適切に対処することができる。なお、所定の閾値は、システム100またはユーザが適宜設定することができ、所定の閾値が大きすぎると操作シナリオの実行精度が悪くなる一方で、所定の閾値が小さすぎると操作シナリオの完遂率が悪くなり得る。
【0055】
図2Bは、システム100の代替実施形態であるシステム100’の構成の一例を示す。システム100’は、修正手段140を備えることを除いて、システム100の構成と同一の構成を有する。従って、ここでは、システム100と同一の構成についての詳細な説明は省略する。
【0056】
修正手段140は、シミュレーション手段120によって生成された操作シナリオを修正するように構成されている。
【0057】
修正手段140は、例えば、ユーザによる入力に基づいて、操作シナリオを修正することができる。修正手段140は、例えば、ユーザによる入力が示すとおりに操作シナリオを修正することができる。例えば、シミュレーション手段120によって生成された操作シナリオが生成手段130に提供される前にユーザに提示され、ユーザは操作シナリオを確認し、必要に応じて修正のための入力をシステム100に入力することができる。
【0058】
あるいは、修正手段140は、シミュレーション手段120によって生成された操作シナリオが所定のルールに反しているか否かを判定することができ、操作シナリオが所定のルールに反していると判定したことに応答して、操作シナリオを修正することができる。所定のルールは、例えば、操作対象物の部位の可動域が所定の範囲内であること、操作対象物が所定の禁止区域に侵入していないこと等であり得る。所定のルールに反していた場合、修正手段140は、所定のルールに反しないように操作シナリオを修正することができる。
【0059】
修正された操作シナリオは、生成手段130に提供され、生成手段130は、上述したように、操作シナリオに基づいて、操作信号を生成することができる。
【0060】
図4Aは、第1の実施形態におけるシミュレーション手段120を備えるシステムのブロック図を示す。
【0061】
初めに、取得手段110が、操作対象物10の初期状態を示す初期情報を取得する。取得手段110は、例えば、角度センサ、Lidar等であり得る。取得手段110によって取得された初期情報は、シミュレーション手段120に提供される。
【0062】
次いで、シミュレーション手段120が、操作シナリオを生成することになる。初期情報は、まず、学習済モデルに提供される。学習済モデルは、初期情報が入力されると、初期情報が示す状態の操作対象物に次のアクションを行わせるための操作信号を出力する。次のアクションを行わせるための操作信号は、次いで、シミュレータに提供される。シミュレータは、操作対象物のアクションをシミュレーションすることができ、入力された操作信号に従って操作対象物がアクションを実行することをシミュレーションする。これにより、アクションが実行された後の操作対象物の状態の推定値が出力され、状態の推定値は学習済モデルに提供される。学習済モデルは、状態の推定値が入力されると、その状態の操作対象物に次のアクションを行わせるための操作信号を出力する。これを繰り返すことにより、状態の推定値と対応する操作信号とが蓄積され、これらを関連付けるものとして操作シナリオが生成される。
【0063】
生成された操作シナリオは、生成手段130に提供される。
【0064】
操作シナリオが生成されると、操作対象物10の操作が開始される。まず、取得手段110が、操作対象物10の現在の状態を示す情報を取得する。次いで、取得手段110は、その情報を生成手段130に提供する。
【0065】
生成手段130は、操作シナリオを参照し、現在の状態の操作対象物10に次のアクションを実行させるための操作信号を生成する。生成された操作信号は操作対象物10に提供され、操作対象物10は、これに従ってアクションを実行する。
【0066】
アクションを実行した後、操作対象物10の状態が変化するため、取得手段110は、再度、操作対象物10の現在の状態を示す情報を取得し、その情報を生成手段130に提供する。生成手段130は、その情報と操作シナリオとに基づいて操作信号を生成し、操作対象物10は、その操作信号に従って、アクションを実行する。
【0067】
一連の操作が完了するまでこのプロセスを繰り返すことにより、操作対象物10は、一連の操作によるアクションを完了することができる。
【0068】
図4Bは、第2の実施形態におけるシミュレーション手段120を備えるシステムのブロック図を示す。
【0069】
初めに、取得手段110が、操作対象物10の初期状態を示す初期情報を取得する。取得手段110は、例えば、角度センサ、Lidar等であり得る。取得手段110によって取得された初期情報は、シミュレーション手段120に提供される。
【0070】
次いで、シミュレーション手段120が、操作シナリオを生成することになる。初期情報は、学習済モデルに提供される。学習済モデルは、初期情報が入力されると、初期情報が示す状態の操作対象物に次のアクションを行わせるための操作信号と、そのアクションが実行された後の操作対象物の状態の推定値とを出力する。出力された状態の推定値は、学習済モデルに入力される。学習済モデルは、状態の推定値が入力されると、その状態の操作対象物に次のアクションを行わせるための操作信号と、そのアクションが実行された後の操作対象物の状態の推定値とを出力する。これを繰り返すことにより、状態の推定値と対応する操作信号とが蓄積され、これらを関連付けるものとして操作シナリオが生成される。
【0071】
生成された操作シナリオは、生成手段130に提供される。その後のプロセスは、
図4Aを参照して上述したものと同一である。
【0072】
上述したシステム100、100’は、例えば、操作対象物と通信する情報処理装置200において実装されることができる。以下では、システム100について説明するが、同様の説明がシステム100’についても当てはまる。
【0073】
図5は、システム100を実装する情報処理装置200の構成の一例を示す。
【0074】
情報処理装置200は、通信インターフェース部210と、メモリ部220と、プロセッサ部230とを備える。情報処理装置200は、データベース部300に接続されている。情報処理装置200は、操作対象物(本例では、バックホー10)に通信可能に接続されている。
【0075】
操作対象物10には、取得手段110として、センサが装着され得るか、あるいは、操作対象物10の周囲に、取得手段110として、センサが配置され得る。センサは、例えば、操作対象物10の関節角度を検知するセンサ、操作対象物10の全体または一部の位置情報を検知するセンサ、操作対象物10の姿勢を撮影するカメラ、操作対象物10の姿勢を検知するLIDAR等であり得る。
【0076】
取得手段110によって取得された操作対象物の状態を示す情報は、情報処理装置200に提供される。
【0077】
通信インターフェース部210は、情報処理装置200と操作対象物10との間の通信を制御する。また、通信インターフェース部210は、データベース部300との通信も制御する。情報処理装置200のプロセッサ部230は、通信インターフェース部210を介して、情報処理装置200の外部から情報を受信することが可能であり、情報処理装置200の外部に情報を送信することが可能である。情報処理装置200のプロセッサ部230は、通信インターフェース部210を介して、操作対象物10から操作対象物10の状態を示す情報を受信することが可能であり、操作対象物10に操作信号を送信することが可能である。通信インターフェース部210は、任意の方法で通信を制御し得る。
【0078】
メモリ部220には、情報処理装置200の処理の実行に必要とされるプログラムやそのプログラムの実行に必要とされるデータ等が記憶されている。例えば、操作対象物を自動的に操作するためのプログラム(例えば、後述する
図6および
図8に示される処理を実現するプログラム)または操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのプログラム(例えば、後述する
図6および
図8に示される処理のステップS602を実現するプログラム)の一部または全部が格納されている。ここで、プログラムをどのようにしてメモリ部220に記憶するかは問わない。例えば、プログラムは、メモリ部220にプリインストールされていてもよい。あるいは、プログラムは、ネットワークを経由してダウンロードされることによってメモリ部220にインストールされるようにしてもよい。プログラムは、コンピュータ読み取り可能な有形記憶媒体上に記憶されてもよい。メモリ部220は、任意の記憶手段によって実装され得る。
【0079】
プロセッサ部230は、情報処理装置200全体の動作を制御する。プロセッサ部230は、メモリ部220に記憶されているプログラムを読み出し、そのプログラムを実行する。これにより、情報処理装置200を所望のステップを実行する装置として機能させることが可能である。プロセッサ部230は、単一のプロセッサによって実装されてもよいし、複数のプロセッサによって実装されてもよい。
【0080】
データベース部300には、生成された操作シナリオが格納され得る。
【0081】
本発明のシステム100のシミュレーション手段120および生成手段130は、プロセッサ部230によって実装されることができる。
【0082】
図5に示される例では、情報処理装置200の各構成要素がサーバ装置200内に設けられているが、本発明はこれに限定されない。情報処理装置200の各構成要素のいずれかが情報処理装置200の外部に設けられることも可能である。例えば、メモリ部220、プロセッサ部230のそれぞれが別々のハードウェア部品で構成されている場合には、各ハードウェア部品が任意のネットワークを介して接続されてもよい。このとき、ネットワークの種類は問わない。各ハードウェア部品は、例えば、LANを介して接続されてもよいし、無線接続されてもよいし、有線接続されてもよい。
【0083】
図5に示される例では、データベース部300は、情報処理装置200の外部に設けられているが、本発明はこれに限定されない。データベース部300を情報処理装置200の内部に設けることも可能である。このとき、データベース部300は、メモリ部220を実装する記憶手段と同一の記憶手段によって実装されてもよいし、メモリ部220を実装する記憶手段とは別の記憶手段によって実装されてもよい。いずれにせよ、データベース部300は、情報処理装置200のための格納部として構成される。データベース部300の構成は、特定のハードウェア構成に限定されない。
【0084】
情報処理装置200は、特定のハードウェア構成には限定されない。例えば、プロセッサ部230をデジタル回路ではなくアナログ回路によって構成することも本発明の範囲内である。情報処理装置200の構成は、その機能を実現できる限りにおいて上述したものに限定されない。
【0085】
なお、上述した例では、システム100が、取得手段110と、シミュレーション手段120と、生成手段130とを備えることを説明したが、シミュレーション手段120が単独で、本発明の主題となり得る。すなわち、シミュレーション手段120は、操作対象物を自動的に操作するために用いられる操作シナリオを生成するためのシステムとしてみなされることができる。このとき、シミュレーション手段120は、操作対象物の初期状態を示す初期情報を受信刷る受信手段を備え、受信手段によって受信された情報に基づいて、操作対象物のアクションをシミュレーションすることにより操作シナリオを生成する。この操作シナリオは、上述したように、生成手段130によって、操作対象物の状態を示す情報に基づいて、操作対象物への操作信号を生成するために用いられることになる。生成手段130は、シミュレーション手段120と同じ情報処理装置内にあってもよいし、別の情報処理装置内にあってもよい。
【0086】
3.操作対象物を自動的に操作するためシステム100における処理
図6は、操作対象物を自動的に操作するためのシステム100における処理600の一例を示すフローチャートである。処理600は、例えば、情報処理装置200のプロセッサ部230において実行される。
【0087】
まず、取得手段110が、操作対象物10の初期状態を示す初期情報を取得する。取得手段110は、操作対象物の状態を示す情報として、操作対象物の関節角度、操作対象物の位置情報、操作対象物のLidar情報、操作対象物の画像情報のうちの少なくとも1つを取得することができる。取得手段110からの情報は、通信インターフェース部210を介してプロセッサ部230に渡される。
【0088】
ステップS601では、プロセッサ部230が、取得手段110によって取得された初期情報を受信する。
【0089】
ステップS602では、プロセッサ部230が、初期情報に基づいて、操作対象物のアクションをシミュレーションすることにより、操作シナリオを生成する。プロセッサ部230は、具体的には、(a)ステップS601で受信された初期情報が示す初期状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(b)推定された操作信号で操作された後の操作対象物の状態を推定するステップと、(c)推定された状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(d)一連の操作が完了した状態になるまで、(b)~(c)を繰り返すステップとを行うことによって、操作シナリオを生成することができる。
【0090】
ステップS603では、プロセッサ部230が、ステップS602で生成された操作シナリオを参照して、操作対象物の一連の操作を行う。具体的には、まず、取得手段110が、一連の操作を開始する前または一連の操作を開始したときの操作対象物の状態を示す情報を取得し、プロセッサ部230が、操作対象物の状態を示す情報を取得手段110から受信する。次いで、プロセッサ部230が、取得された情報と操作シナリオとに基づいて、操作対象物への操作信号を生成する。これを、一連の操作が完了するまで繰り返す。
【0091】
取得された情報と操作シナリオとに基づいて操作対象物への操作信号を生成するとき、プロセッサ部230は、取得された情報が示す状態と、操作シナリオに規定される状態とを比較し、操作シナリオに規定される状態のうちの同一または最も類似する状態を特定する。次いで、プロセッサ部230は、取得された情報が示す状態と操作シナリオ内の特定された状態との差異が所定の閾値を超えるか否かを判定する。差異が所定の閾値を超えない場合には、プロセッサ部230は、操作シナリオにおいて特定された状態に関連付けられた操作信号を識別し、これを出力する。これにより、操作対象物は、操作信号に従ってアクションを行うことになる。差異が所定の閾値以上である場合には、プロセッサ部230は、一連の操作を非常停止するか、あるいは、ステップS602に戻り、操作シナリオを生成し直すことができる。現実の操作対象物の状態と操作シナリオに規定される状態との乖離が大きく、現在の操作シナリオを利用することができないと判断されるからである。操作シナリオを生成し直す場合、取得された情報を初期情報としてステップS602を行うことになる。
【0092】
操作シナリオを参照して操作対象物を操作することで、AIがリアルタイムで操作信号を出力することに比べて、計算による遅延なく、操作対象物の滑らかな動きを実現することができる。例えば、操作対象物としてバックホーを操作するときに、AIがリアルタイムで操作信号を出力する場合、計算による遅延や、ノイズによるズレ等に起因して、ブーム、アーム、および/またはバケットは、運動と停止とを繰り返すようなカクカクした動きとなった。これに対して、本発明の操作シナリオに従って操作信号を出力する場合、ブーム、アーム、および/またはバケットは、操作シナリオどおりの動きをすることになるため、ブーム、アーム、および/またはバケットの連続的な滑らかな動きを達成することができた。
【0093】
例えば、一連の操作の各操作は、典型的には、1秒毎に1回行われ得るが、1秒毎に数回、数秒毎に1回の間隔で行われるようにしてもよい。
【0094】
生成される操作シナリオの長さは、操作対象物に応じて、および/または、操作対象物が置かれる環境に応じて、変更することができる。操作シナリオが長くなり得る場合には、一連の操作に対して複数の操作シナリオを用いることができる。
【0095】
例えば、一連の操作は、少なくとも第1の時間区分に行われる第1の操作と第2の時間区分に行われる第2の操作とを含むようにすることができる。後述する例では、第1の操作と第2の操作とを例に説明するが、第3の時間区分に行われる第3の操作、第4の時間区分に行われる第4の操作、・・・等、任意の数の操作が、一連の操作に含まれ得ることに留意すべきである。時間区分は、例えば、所定の時間間隔で区分されたもの(例えば、10秒毎)であってもよいし、意味を成すサブタスクで区分されたもの(例えば、サブタスクA:バケットを掘削場所に移動させる、サブタスクB:掘削を行う、サブタスクC:バケットを持ち上げる等)であってもよい。
【0096】
一連の操作に含まれる複数の操作のそれぞれに対して操作シナリオを生成し、対応する操作シナリオを参照して、それぞれの操作を実施することができる。複数の操作のそれぞれの操作シナリオは、それぞれの操作が開始されるときの操作対象物の状態を示す情報を初期情報として、生成されることができる。例えば、0~10秒の第1の操作と、10~20秒の第2の操作とが行われる場合、第1の操作の開始時(0秒)の操作対象物の状態を示す情報に基づいて第1の操作シナリオが生成され、第1の操作シナリオに従って第1の操作が行われ、第2の操作の開始時(10秒)の操作対象物の状態を示す情報に基づいて第2の操作シナリオが生成され、第2の操作シナリオに従って第2の操作が行われる。
【0097】
ただし、上述の例では、10秒時に操作シナリオを生成するための計算時間等の影響により、操作対象物の動きの滑らかさが失われる可能性が有る。計算時間が十分に短ければ問題ないが、計算時間が長いと、断続的な動きになる可能性が有る。従って、第1の操作の時間区分と第2の操作の時間区分とが部分的に重複するようにすることが好ましい。例えば、第1の操作を0~10秒とし、第2の操作を9~20秒とし、第2の操作シナリオを第2の操作の開始時(9秒)の操作対象物の状態を示す情報に基づいて生成することができる。そして、第1の操作の終了時(10秒)に第2の操作に切り替え、第2の操作シナリオに従って操作を行うようにすることができる。これにより。計算時間による影響を低減または排除することができ、操作対象物の滑らかな動きを確実にすることができる。
【0098】
図7は、一連の操作に複数の操作が含まれることを概念的に示す図である。
【0099】
例えば、地面を掘削するために、バックホーを操作して地面にバケットを接触させるための一連の操作を例に説明する。この一連の操作は、時刻t0から時刻tnまで行われる。
【0100】
例えば、時刻t0における初期状態から、時刻t2のアームの関節角度を大きくした状態までの操作を第1の操作とし、時刻t2の前の時刻t1から時刻t4までを第2の操作とする。このように、第1の操作のための時間区分(t0~t2)と第2の操作のための時間区分(t1~t4)は、部分的に重複することになる。第2の操作シナリオを時刻t1の情報に基づいて生成することで、第2の操作シナリオを計算する時間の影響を低減または排除することができ、操作対象物の滑らかな動きを確実にすることができる。
【0101】
図8は、一連の操作が少なくとも第1の操作と第2の操作とを含む場合のシステム100における処理800の一例を示すフローチャートである。処理800は、例えば、情報処理装置200のプロセッサ部230において実行される。
【0102】
まず、第1の操作の開始時の操作対象物の状態を示す第1の初期情報が、取得手段110によって取得される。
【0103】
ステップS801では、プロセッサ部230が、第1の初期情報を受信する。
【0104】
ステップS802では、プロセッサ部230が、第1の初期情報に基づいて、第1の操作のための第1の操作シナリオを生成する。プロセッサ部230は、具体的には、(a)ステップS801で受信された第1の初期情報が示す初期状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(b)推定された操作信号で操作された後の操作対象物の状態を推定するステップと、(c)推定された状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(d)第1の操作が完了した状態になるまで、(b)~(c)を繰り返すステップとを行うことによって、第1の操作シナリオを生成することができる。
【0105】
ステップS803では、プロセッサ部230が、ステップS802で生成された第1の操作シナリオを参照して、操作対象物の第1の操作を行う。具体的には、まず、取得手段110が、第1の操作を開始するときの操作対象物の状態を示す情報を取得し、プロセッサ部230が、操作対象物の状態を示す情報を取得手段110から受信する。次いで、プロセッサ部230が、取得された情報と第1の操作シナリオとに基づいて、操作対象物への操作信号を生成する。これを、第1の操作が完了するまで繰り返す。
【0106】
次いで、第2の操作の開始時の操作対象物の状態を示す第2の初期情報が、取得手段110によって取得される。第1の操作の時間区分と第2の操作の時間区分とが部分的に重複している場合には、第1の操作中に第2の初期情報が取得されることになる。
【0107】
ステップS804では、プロセッサ部230が、第2の初期情報を受信する。
【0108】
ステップS805では、プロセッサ部230が、第2の初期情報に基づいて、第2の操作のための第2の操作シナリオを生成する。プロセッサ部230は、具体的には、(a)ステップS804で受信された第2の初期情報が示す初期状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(b)推定された操作信号で操作された後の操作対象物の状態を推定するステップと、(c)推定された状態の操作対象物に次のアクションを行わせるための操作信号を推定するステップと、(d)第2の操作が完了した状態になるまで、(b)~(c)を繰り返すステップとを行うことによって、第2の操作シナリオを生成することができる。
【0109】
ステップS806では、プロセッサ部230が、ステップS805で生成された第2の操作シナリオを参照して、操作対象物の第2の操作を行う。具体的には、まず、取得手段110が、第2の操作を開始するときの操作対象物の状態を示す情報を取得し、プロセッサ部230が、操作対象物の状態を示す情報を取得手段110から受信する。次いで、プロセッサ部230が、取得された情報と第2の操作シナリオとに基づいて、操作対象物への操作信号を生成する。これを、第2の操作が完了するまで繰り返す。
【0110】
このようにして、複数の操作シナリオに従って、一連の操作を実施することができる。
【0111】
なお、上述した例では、特定の順序で各ステップが行われることを説明したが、各ステップが行われる順序は示されるものに限定されない。各ステップは、論理的に可能な任意の順序で行われることができる。例えば、ステップS803の前またはステップS803の途中にステップS804またはステップS805を行うようにしてもよい。
【0112】
図6および
図8を参照して上述した例では、
図6および
図8に示される各ステップの処理は、プロセッサ部230およびメモリ部220に格納されたプログラム、または、プロセッサ部330およびメモリ部320に格納されたプログラムよって実現することが説明されたが、本発明はこれに限定されない。
図6および
図8に示される各ステップの処理のうちの少なくとも1つは、制御回路などのハードウェア構成によって実現されてもよい。
【0113】
本発明は、上述した実施形態に限定されるものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。
【産業上の利用可能性】
【0114】
本発明は、操作対象物の滑らかな動きを達成することができるように、操作対象物を自動的に操作するためのシステム等を提供するものとして有用である。
【符号の説明】
【0115】
10 バックホー
100、100’ システム
110 取得手段
120 シミュレーション手段
130 生成手段
140 修正手段