(57)【要約】  制御装置が、制御対象機器の動作の制御を機械学習する機械学習部と、前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める回避指令値演算部と、前記回避指令値に基づいて、前記制御対象機器を制御する機器制御部と、を備え、前記機械学習部の機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される。
2020157863.tif 000002
【特許請求の範囲】
【請求項１】
制御対象機器の動作の制御を機械学習する機械学習部と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める回避指令値演算部と、
前記回避指令値に基づいて、前記制御対象機器を制御する機器制御部と、
を備え、
前記機械学習部の機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される、
制御装置。
【請求項２】
前記機械学習部によるパラメータ値の取得と、前記回避指令値演算部による回避指令値の取得とに共通で用いられる制御関数を複数記憶する制御関数記憶部をさらに備え、
前記機械学習部および前記回避指令値演算部は、前記制御関数記憶部が記憶する制御関数のうち何れかを共通で切り替えて使用する、
請求項１に記載の制御装置。
【請求項３】
前記回避指令値演算部は、前記制御対象機器に設定された目標を達成するための条件であって、前記パラメータ値が反映された条件を含む前記制約条件を用いる、
請求項１または請求項２に記載の制御装置。
【請求項４】
前記機械学習部は、前記回避指令値演算部が用いる前記評価関数に含まれるノミナル指令値を求めるための制御関数のパラメータ値を前記機械学習で取得する、
請求項１に記載の制御装置。
【請求項５】
制御対象機器の動作の制御を機械学習する工程と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、
前記回避指令値に基づいて、前記制御対象機器を制御する工程と、
を含み、
前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される、
制御方法。
【請求項６】
コンピュータに、
制御対象機器の動作の制御を機械学習する工程と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、
前記回避指令値に基づいて、前記制御対象機器を制御する工程と、
を実行させるためのプログラムであって、
前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映されるプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御方法および記録媒体に関する。
【背景技術】
【０００２】
制御対象機器の動作を強化学習する際、制御対象機器が障害物に接触することを回避するための技術が提案されている。
例えば、特許文献１に記載の強化学習装置では、強化学習を行う制御パラメータ値算出手段が算出する制御パラメータ値と、仮想外力発生器が算出する仮想外力との和の力ベクトルを制御対象に出力する。仮想外力発生器は、仮想外力の方向を、障害物の表面に対して垂直な方向とし、仮想外力の大きさを、制御対象と障害物との距離の３乗に比例して小さくなるように算出する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】日本国特開２０１２−２０８７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御対象機器が障害物に接触することを回避する動作は、制御対象機器に設定されている目標を達成するための動作との関係では阻害要因となる場合がある。このため、制御対象機器が障害物に接触することを回避する動作の影響をなるべく小さくできることが好ましい。制御対象機器が障害物に接触するか否かの判定結果を制御指令値に反映させることができれば、制御対象機器と障害物とが比較的近い場合でも、制御対象機器が障害物に接触することを回避する動作の影響を比較的小さくできる、あるいは、影響を無くせることが期待される。【０００５】
本発明の目的の一例は、上記の問題を解決することができる制御装置、制御方法および記録媒体を提供することである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、制御装置は、制御対象機器の動作の制御を機械学習する機械学習部と、前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める回避指令値演算部と、前記回避指令値に基づいて、前記制御対象機器を制御する機器制御部と、を備え、前記機械学習部の機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される。【０００７】
本発明の第２の態様によれば、制御方法は、制御対象機器の動作の制御を機械学習する工程と、前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、前記回避指令値に基づいて、前記制御対象機器を制御する工程と、を含み、前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される。【０００８】
本発明の第３の態様によれば、記録媒体は、コンピュータに、制御対象機器の動作の制御を機械学習する工程と、前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、前記回避指令値に基づいて、前記制御対象機器を制御する工程と、を実行させるためのプログラムであって、前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映されるプログラムを記録した記録媒体である。
【発明の効果】
【０００９】
上記した制御装置、制御方法および記録媒体によれば、制御対象機器が障害物に接触するか否かの判定結果を制御指令値に反映させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る制御システムの装置構成の例を示す概略構成図である。
【図２】第１実施形態に係る報酬値演算装置の機能構成の例を示す概略ブロック図である。
【図３】第１実施形態に係る制御装置の機能構成の例を示す概略ブロック図である。
【図４】第１実施形態に係る制御システムにおけるデータの流れの例を示す図である。
【図５】第１実施形態に係る制御装置が制御対象機器に対する制御指令値を取得する処理手順の例を示すフローチャートである。
【図６】第１実施形態に係る機械学習部が制御対象機器に対する制御を機械学習する処理手順の例を示す図である。
【図７】第２実施形態に係る制御装置の機能構成の例を示す概略ブロック図である。
【図８】第２実施形態に係る制御システムにおけるデータの流れの例を示す図である。
【図９】第３実施形態に係る制御装置の構成の例を示す図である。
【図１０】第４実施形態に係る制御方法における処理の手順の例を示す図である。
【図１１】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
＜第１実施形態＞
図１は、第１実施形態に係る制御システムの装置構成の例を示す概略構成図である。図１に示す構成で、制御システム１は、情報取得装置１００と、報酬値演算装置２００と、制御装置３００とを備える。
【００１３】
制御システム１は、制御対象機器９００を制御する。制御システム１は、制御対象機器９００に所望の動作をさせ、かつ、制御対象機器９００が障害物に接触しないように、制御対象機器９００を制御する。
ここでいう所望の動作は、制御対象機器９００に設定されている目標を達成する動作である。ここでいう接触することは、単に触れることに限定されず、ぶつかることを含む。制御対象機器９００が障害物に接触することは、制御対象機器９００の少なくとも一部分が、障害物の少なくとも一部分に接触することである。
【００１４】
以下では、制御対象機器９００が垂直多関節ロボットである場合を例に説明するが、制御システム１の制御対象は、制御指令値に従って動作し、障害物に接触する可能性があるいろいろな機器とすることができる。例えば、制御対象機器９００が、垂直多関節ロボット以外の産業用ロボットであってもよい。
【００１５】
あるいは、制御対象機器９００が、建築用ロボットまたは家事ロボットなど、産業用ロボット以外のロボットであってもよい。特定の用途に限定されず、形状変化を伴ういろいろなロボットを、制御対象機器９００の例とすることができる。
あるいは、制御対象機器９００が、無人搬送車またはドローンなどの移動体であってもよい。また、制御対象機器９００が、制御指令値にて制御可能であれば、自律的に動作する装置であってもよい。
【００１６】
ここでいう障害物は、制御対象機器９００が接触する可能性がある物である。障害物は、特定の種類のものに限定されない。例えば、障害物が、人間、他のロボット、周囲の壁または機械、一時的に置かれた荷物の何れか、あるいはこれらの組み合わせであってもよい。
また、制御対象機器９００自らも障害物として扱われていてもよい。例えば、制御対象機器９００が垂直多関節ロボットであり、その姿勢によってはロボットアームと台座部分とが接触する場合、制御システム１が制御対象機器９００を障害物として扱うことで、ロボットアームと台座部分との接触を回避し得る。
【００１７】
情報取得装置１００は、制御対象機器９００が備えるセンサなど制御対象機器９００を観測するセンサからセンシングデータを取得して、制御対象機器９００の位置および動作を検出する。情報取得装置１００がセンシングデータを取得するセンサは、特定の種類のセンサに限定されない。例えば、情報取得装置１００が、センシングデータから、制御対象機器９００の各関節の、関節角度、関節角速度、関節速度、および、関節加速度のうち何れか、あるいはこれらの組み合わせの情報を取得するようにしてもよい。
【００１８】
情報取得装置１００は、得られた情報に基づいて、制御対象機器９００の位置情報、および、制御対象機器９００の動きを示す情報を生成し送信する。
情報取得装置１００が、制御対象機器９００の位置情報をボクセルデータで送信するようにしてもよい。例えば、情報取得装置１００が制御対象機器９００の表面の位置情報をボクセルデータで送信することで、制御装置３００は、１点ではなく制御対象機器９００の表面と、障害物との位置関係を把握でき、制御対象機器９００と障害物との距離をより正確に把握できる。制御対象機器９００と障害物との距離をより正確に把握できることで、制御装置３００は、制御対象機器９００に障害物を回避させる制御をより高精度に行うことができる。あるいは、情報取得装置１００が、制御対象機器９００の位置情報として、制御対象機器９００に設定されている代表点の座標を送信するようにしてもよい。
【００１９】
情報取得装置１００は、制御対象機器９００の動きを示す情報として、例えば、制御対象機器９００の速度、加速度、角速度、角加速度、またはこれらの組み合わせを送信する。情報取得装置１００が、制御対象機器９００全体の動きを示す情報をボクセルデータで送信するようにしてもよい。あるいは、情報取得装置１００が、制御対象機器９００の代表点の動きを示すデータを送信するようにしてもよい。例えば、情報取得装置１００が、制御対象機器９００の一般化座標ｑと、一般化速度ｑ’とを並べたベクトルを送信するようにしてもよい。
あるいは、情報取得装置１００が、制御対象機器の関節の角速度など、制御対象機器のアクチュエータの動きを示す情報を送信するようにしてもよい。
制御対象機器９００の位置情報と制御対象機器９００の動きを示す情報とを総称して制御対象機器９００の状態情報と称する。
情報取得装置１００は、制御対象機器の状態情報を、報酬値演算装置２００および制御装置３００へ送信する。
【００２０】
また、情報取得装置１００は、障害物の位置を特定する。情報取得装置１００が、障害物の位置を特定する方法として、公知のいろいろな方法を用いることができる。例えば、制御システム１が、例えばデプスカメラ（Depth Camera）またはステレオカメラ（Stereo Camera）など、３次元の情報を得られるカメラを備え、情報取得装置１００が、このカメラの画像に基づいて障害物の３次元位置情報を取得するようにしてもよい。あるいは、制御システム１が、例えば３Ｄ−ＬｉＤＡＲ（3-Dimension Light Detection and Ranging）など、３次元情報を得るための装置を備え、情報取得装置１００が、この装置の測定データに基づいて障害物の３次元位置情報を取得する世にしてもよい。
【００２１】
情報取得装置１００は、障害物の位置情報を送信する。情報取得装置１００が、障害物の位置情報をボクセルデータのデータ形式で送信するようにしてもよい。例えば、情報取得装置１００が障害物の表面の位置情報をボクセルデータで送信することで、制御装置３００は、１点ではなく障害物の表面と、制御対象機器９００との位置関係を把握でき、制御対象機器９００と障害物との距離をより正確に把握できる。制御対象機器９００と障害物との距離をより正確に把握できることで、制御装置３００は、制御対象機器９００に障害物を回避させる制御をより高精度に行うことができる。あるいは、情報取得装置１００が、制御対象機器９００の位置情報として、制御対象機器９００に設定されている代表点の座標を送信するようにしてもよい。
【００２２】
障害物が動く場合、情報取得装置１００が、障害物の位置情報に加えて、障害物の動きを示す情報を送信するようにしてもよい。情報取得装置１００が、障害物の動きを示す情報として、例えば、障害物の速度、加速度、角速度、角加速度、またはこれらの組み合わせを送信するようにしてもよい。情報取得装置１００が、障害物全体の動きを示す情報をボクセルデータで送信するようにしてもよい。あるいは、情報取得装置１００が、障害物の代表点の動きを示すデータを送信するようにしてもよい。例えば、情報取得装置１００が、障害物の一般化座標ｑと、一般化速度ｑ’とを並べたベクトルを送信するようにしてもよい。
障害物の位置情報、あるいは、障害物が動く場合の、障害物の位置情報と障害物の動きを示す情報との組み合わせを、障害物の状態情報と称する。
情報取得装置１００は、障害物の状態情報を制御装置３００へ送信する。
【００２３】
報酬値演算装置２００は、報酬値を算出する。報酬値は、制御装置３００が制御対象機器９００に対する制御を機械学習するために用いられる。ここでいう報酬値は、制御装置３００からの制御指令値に基づいて制御対象機器９００が動作した結果に対する評価を数値で示すものである。例えば、報酬値演算装置２００は、制御対象機器９００の位置および動作を示す情報を入力として、制御対象機器９００に設定されている目標の達成度合いが高いほど報酬値を高く算出する報酬関数を予め記憶しておく。そして、報酬値演算装置２００は、情報取得装置１００から取得する制御対象機器９００の位置および動作を示す情報を報酬関数に入力して報酬値を算出する。
【００２４】
制御装置３００は、制御システム１による制御対象機器９００の制御を実行する。したがって、制御システム１について上述したように、制御装置３００は、制御対象機器９００に所望の動作をさせ、かつ、制御対象機器９００が障害物に接触しないように、制御対象機器９００を制御する。制御装置３００は、情報取得装置１００が送信する情報に基づいて、制御対象機器９００に対する制御指令値を算出し、算出した制御指令値を制御対象機器９００に送信することで制御対象機器９００を制御する。
また、制御装置３００は、制御対象機器９００に対する制御を機械学習する。制御装置３００は、報酬値演算装置２００が算出する報酬値がより大きくなるように、制御対象機器９００に対する制御を機械学習する。
【００２５】
図２は、報酬値演算装置２００の機能構成の例を示す概略ブロック図である。図２に示す構成で、報酬値演算装置２００は、第１通信部２１０と、第１記憶部２８０と、第１制御部２９０とを備える。第１記憶部２８０は、報酬関数記憶部２８１を備える。第１制御部２９０は、報酬値演算部２９１を備える。
第１通信部２１０は、他の装置と通信を行う。特に、第１通信部２１０は、情報取得装置１００が送信する制御対象機器９００の状態情報を受信する。また、第１通信部２１０は、報酬値演算部２９１が算出する報酬値を制御装置３００へ送信する。
【００２６】
第１記憶部２８０は、各種データを記憶する。第１記憶部２８０の機能は、報酬値演算装置２００が備える記憶デバイスを用いて実行される。
報酬関数記憶部２８１は、報酬関数を記憶する。
第１制御部２９０は、報酬値演算装置２００の各部を制御して各種処理を実行する。第１制御部２９０の機能は、報酬値演算装置２００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が、第１記憶部２８０からプログラムを読み出して実行することで実行される。
報酬値演算部２９１は、報酬値を算出する。具体的には、報酬値演算部２９１は、報酬関数記憶部２８１が記憶する報酬関数に、第１通信部２１０が情報取得装置１００から受信する制御対象機器９００の状態情報を入力して報酬値を算出する。
【００２７】
図３は、制御装置３００の機能構成の例を示す概略ブロック図である。図３に示す構成で、制御装置３００は、第２通信部３１０と、第２記憶部３８０と、第２制御部３９０とを備える。第２記憶部３８０は、干渉関数記憶部３８１と、制御関数記憶部３８２と、パラメータ値記憶部３８３とを備える。第２制御部３９０は、干渉関数演算部３９１と、機械学習部３９２と、機器制御部３９５とを備える。機械学習部３９２は、パラメータ値更新部３９３と、安定性判定部３９４とを備える。機器制御部３９５は、回避指令値演算部３９６を備える。
【００２８】
第２通信部３１０は、他の装置と通信を行う。特に、第２通信部３１０は、情報取得装置１００が送信する制御対象機器９００の状態情報および障害物の状態情報を受信する。また、第１通信部２１０は、報酬値演算部２９１が算出する報酬値を制御装置３００へ送信する。また、第２通信部３１０は、機器制御部３９５が算出する制御指令値を制御対象機器９００へ送信する。
【００２９】
第２記憶部３８０は、各種データを記憶する。第２記憶部３８０の機能は、制御装置３００が備える記憶デバイスを用いて実行される。
干渉関数記憶部３８１は、干渉関数を記憶する。干渉関数は、制御対象機器９００が障害物に接触することを防止するために用いられる関数であり、制御対象機器９００と障害物との位置関係に応じた値を示す。干渉関数Ｂは、式（１）のような値をとる。
【００３０】
【数１】
2020157863.tif 000003
【００３１】
式（１）では、ｘは、制御対象機器９００の状態情報を示す。例えば、情報取得装置１００が、制御対象機器９００の表面の位置情報をボクセルデータで送信し、干渉関数演算部３９１が、制御対象機器９００の状態情報を干渉関数Ｂに適用することで、制御対象機器９００と障害物とが最も近い位置における両者の距離を算出するようにしてもよい。
【００３２】
以下では、干渉関数値Ｂ（ｘ）が、制御対象機器９００の状態情報ｘが示す制御対象機器９００の位置と障害物との距離を示すものとする。障害物が複数ある場合は、制御対象機器９００の位置に最も近い障害物との距離を示すものとする。通常、制御対象機器９００は障害物の中には入らないので、制御対象機器９００が障害物の内部に位置する場合の干渉関数値Ｂ（ｘ）は定義されていなくてもよい。
干渉関数値Ｂ（ｘ）により、制御対象機器９００が障害物に接触しているか否か、および、制御対象機器９００と障害物との距離が示される。
【００３３】
制御関数記憶部３８２は、制御関数を記憶する。ここでいう制御関数は、制御対象機器９００に設定されている目標を達成するように、制御対象機器９００に対する制御指令値を算出するための関数である。以下では、制御関数記憶部３８２が制御関数としてリアプノフ関数（Lyapunov Function）を記憶する場合を例に説明する。但し、制御装置３００が制御対象機器９００を制御する方法は、リアプノフ関数を用いる制御方法に限定されない。制御装置３００が制御対象機器９００を制御する方法として、制御パラメータ値を機械学習可能な、公知のいろいろな制御方法を用いることができる。
ここでいう制御パラメータ値は、制御関数に含まれるパラメータの値である。制御パラメータ値は、機器制御部３９５が算出する制御指令値に反映される。
パラメータ値記憶部３８３は、制御パラメータ値を記憶する。
【００３４】
第２制御部３９０は、制御装置３００の各部を制御して各種処理を実行する。第２制御部３９０の機能は、制御装置３００が備えるＣＰＵが第２記憶部３８０からプログラムを読み出して実行することで実行される。
干渉関数演算部３９１は、干渉関数値を算出する。具体的には、干渉関数演算部３９１は、障害物の位置情報に基づいて干渉関数を生成し、干渉関数記憶部３８１に記憶させておく。そして、干渉関数演算部３９１は、干渉関数記憶部３８１が記憶する干渉関数に、第１通信部２１０が情報取得装置１００から受信する制御対象機器９００の状態情報および障害物の状態情報を入力して干渉関数値を算出する。
【００３５】
また、干渉関数演算部３９１は、干渉関数値の経時変化を示す値を算出する。
制御対象機器９００が動作して制御対象機器９００の位置が経時変化することで、干渉関数値Ｂ（ｘ）も経時変化する。この場合、干渉関数演算部３９１は、干渉関数値Ｂ（ｘ）の経時変化を示す値として、制御ステップ間における干渉関数値Ｂ（ｘ）の変化量を算出する。
【００３６】
ここでの制御ステップは、制御装置３００が制御対象機器９００に対して制御指令値を１回送信するための一連の処理のステップである。すなわち、制御装置３００は、周期的な制御ステップ毎に制御対象機器９００に対して制御指令値を送信する。
干渉関数演算部３９１は、今回の制御ステップから次回の制御ステップまでの間の、干渉関数値Ｂ（ｘ）の変化量を予測する。制御ステップ間における干渉関数値の変化量をΔＢ（ｘ，ｕ）と表記する。干渉関数値Ｂ（ｘ）の変化量は制御対象機器９００の位置の変化に依存し、制御対象機器９００の位置の変化は制御指令値ｕに依存するため、制御指令値ｕを明示している。
【００３７】
干渉関数演算部３９１が干渉関数値の変化量をΔＢ（ｘ，ｕ）を算出するために、第２記憶部３８０が、制御対象機器９００の動的モデルを予め記憶しておくようにしてもよい。制御対象機器９００の動的モデルは、制御対象機器９００の状態情報、および、制御指令値の入力を受けて制御対象機器９００がその制御指令値に従う場合の動作を模擬する。
動的モデルが、将来の時点における制御対象機器９００の予測位置の位置情報を出力するようにしてもよい。あるいは、動的モデルが、制御対象機器９００の動作量を出力するようにしてもよい。すなわち、動的モデルが、制御対象機器９００の将来の予測位置から現在位置を減算した差分を出力するようにしてもよい。
動的モデルは、制御指令値ｕの入力に対して、制御対象機器９００の状態情報ｘで示される状態の微分値または差分が求まるモデルであり、例えば状態空間モデルであってもよい。
【００３８】
干渉関数演算部３９１は、動的モデルに制御対象機器９００の位置情報および制御指令値ｕを入力することで、制御対象機器９００の位置の予測値を算出することができる。干渉関数演算部３９１は、制御対象機器９００の位置の予測値に基づいて干渉関数値の予測値を算出することができる。干渉関数演算部３９１は、干渉関数値の予測値から現在値を減算することで、干渉関数値の変化量を算出することができる。
干渉関数演算部３９１が、動的モデルの演算で干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出するようにしてもよい。あるいは、干渉関数演算部３９１が、式（２）を用いて干渉関数値の変化量ΔＢ（ｘ，ｕ）を近似的に算出するようにしてもよい。
【００３９】
【数２】
2020157863.tif 000004
【００４０】
Δｔは、制御ステップ間の時間間隔を示す。Ｂ（ｘ，ｕ）は、干渉関数値を示す。制御指令値ｕを変更すると制御対象機器９００の動作が変わり干渉関数値が変わるので、干渉関数Ｂを制御指令値ｕの関数として表記している。
あるいは、干渉関数演算部３９１が、動的モデルの演算で干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出する方法と、式（２）を用いて干渉関数値の変化量ΔＢ（ｘ，ｕ）を近似的に算出する方法と使い分けるようにしてもよい。例えば、動的モデルの演算で干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出できる場合は、干渉関数演算部３９１が、動的モデルの演算で干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出するようにしてもよい。一方、動的モデルの演算で干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出できない場合、干渉関数演算部３９１が、式（２）を用いて干渉関数値の変化量ΔＢ（ｘ，ｕ）を近似的に算出するようにしてもよい。
【００４１】
機器制御部３９５は、制御対象機器９００に対する制御指令値を算出し、算出した制御指令値を、第２通信部３１０を介して制御対象機器９００へ送信することで、制御対象機器９００を制御する。
機器制御部３９５は、回避指令値演算部３９６にて回避指令値の算出を試みる。回避指令値の算出に成功した場合、機器制御部３９５は、得られた回避指令値を、第２通信部３１０を介して制御対象機器９００へ送信する。一方、回避指令値を得られなかった場合、機器制御部３９５は、制御対象機器９００を減速させる制御指令値を、第２通信部３１０を介して制御対象機器９００へ送信する。
【００４２】
回避指令値演算部３９６は、上記のように回避指令値を求める。回避指令値は、制御対象機器９００に対する制御指令値であって、制御対象機器９００が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である。回避指令値演算部３９６はこのような制約条件および評価関数を用いた最適化問題を解くことで、回避指令値を算出する。制御対象機器９００が障害物に接触しないための十分条件は、制御対象機器９００が障害物に接触しないための条件の例に該当する。
制御装置３００が回避指令値を用いて制御対象機器９００を制御することで、制御対象機器９００が障害物に接触しないように制御できる。
【００４３】
回避指令値演算部３９６が解く最小化問題における制約条件は、３種類の式で示される。３種類の式のうち１種類目は、式（３）のように示される。
【００４４】
【数３】
2020157863.tif 000005
【００４５】
γは、０≦γ＜１の定数である。
γの値によって、制御対象機器９００と障害物とが接触しないための、制御対象機器９００と障害物との間隔の余裕分をどれだけ見込むか調整できる。
通常、制御対象機器９００と障害物とは接触しておらず、Ｂ（ｘ）が、制御対象機器９００と障害物との距離を示す。制御対象機器９００が障害物に接近してΔＢ（ｘ，ｕ）が負の値をとるとき、ΔＢ（ｘ，ｕ）の大きさがγＢ（ｘ）以下である場合に式（３）が成り立つ。
【００４６】
このことから、Ｂ（ｘ）で示される制御対象機器９００と障害物との距離のうち、（１−γ）Ｂ（ｘ）の分は、制御対象機器９００と障害物とが接触しないための余裕分として、制御対象機器９００の動作可能範囲から除外されているといえる。γの値を大きく設定するほど、制御対象機器９００の動作可能範囲が広がる。一方、γの値を小さく設定するほど、制御対象機器９００と障害物とが接触しないための余裕分を大きくとることになり、例えば予期しない外力によって制御対象機器９００が障害物のほうへ押された場合でも、制御対象機器９００が障害物にぶつかりにくい。
【００４７】
式（３）に示されるように、回避指令値演算部３９６は、干渉関数値、および、干渉関数値の経時変化を示す値を用いて回避指令値を求める。
複数の障害物が存在する場合、障害物毎に式（３）の制約条件を設けることができる。これにより、障害物回避制御装置４００は、制御対象機器９００が障害物全体に接触しないよう制御することができる。あるいは、複数の障害物をまとめたものに対して干渉関数を設計してもよい。
【００４８】
式（３）は、制御対象機器９００が今回の制御ステップで障害物に接触していなければ、次の制御ステップでも障害物に接触しないことの十分条件を示す。この点について説明する。
今回の制御ステップをｔで示し、制御ステップｔの次の制御ステップをｔ＋１で示す。制御ステップｔにおける干渉関数値をＢ（ｘｔ）と表記する。
制御ステップｔ＋１における干渉関数値をＢ（ｘｔ＋１）と表記する。Ｂ（ｘｔ＋１）からＢ（ｘｔ）を減算した差分を、ΔＢ（ｘｔ，ｕｔ）と表記する。ΔＢ（ｘｔ，ｕｔ）は、式（４）のように示される。
【００４９】
【数４】
2020157863.tif 000006
【００５０】
また、式（３）より式（５）を得られる。
【００５１】
【数５】
2020157863.tif 000007
【００５２】
式（４）および式（５）より式（６）を得られる。
【００５３】
【数６】
2020157863.tif 000008
【００５４】
０≦γ＜１なので、Ｂｔ（ｘ）＞０の場合、Ｂｔ（ｘ）−γＢｔ（ｘ）≧０であり、Ｂｔ＋１（ｘ）＞０である。従って、制御ステップｔで制御対象機器９００の位置が障害物の外部にあれば、制御ステップｔ＋１でも制御対象機器９００の位置は障害物の外部にある。
全ての制御ステップで式（３）を満たすように最適化問題を解くことで、次の制御ステップだけではなく、次以降の全ての制御ステップで制御対象機器９００が障害物と接触しないように制御できる。
【００５５】
回避指令値演算部３９６が解く最小化問題における制約条件を示す３種類の式のうち２種類目は、式（７）のように示される。
【００５６】
【数７】
2020157863.tif 000009
【００５７】
ｕｉ（ｉは、１≦ｉ≦Ｎの整数）は、例えば、制御対象機器９００の関節毎など、制御対象機器９００の可動部分毎の制御指令値を示すスカラ値である。Ｎは、制御対象機器９００の可動部分の個数を示す。ｉは、可動部分を識別する識別番号である。
識別番号ｉで識別される可動部分をｉ番目の可動部分と表記する。従って、ｕｉは、ｉ番目の可動部分に対する制御指令値である。
【００５８】
ｕｉ＿ｍｉｎ、ｕｉ＿ｍａｘは、それぞれ、制御対象機器９００の仕様により予め定められている、ｕｉの下限値、上限値である。
【００５９】
式（７）は、いずれの制御指令値も、可動部分の仕様により規定される上下限値の範囲内で設定されるという制約条件を示している。可動部分の仕様は、例えば、その可動部分に用いられているアクチュエータの仕様により規定される。
制御指令値ｕは、ｕｉ（ｉ＝１，２，・・・，Ｎ）を纏めてベクトルで表したものである。
【００６０】
回避指令値演算部３９６が解く最小化問題における制約条件を示す３種類の式のうち３種類目は、式（８）のように示される。
【００６１】
【数８】
2020157863.tif 000010
【００６２】
ΔＶはリアプノフ関数値の変化量を示す。リアプノフ関数Ｖは、機械学習部３９２が行う機械学習によって求まる。但し、制御装置３００が用いる制御関数はリアプノフ関数に限定されない。
「ｄ」は、制約条件を緩和して解を得易くするために設けられている。
ｄ＝０として解を得られた場合、その解は、制御対象機器９００に設定される目標を厳密に達成するための制御指令値である。一方、ｄ＝０の場合、解をピンポイントで探索することになり、解を得られないことが懸念される。
そこで、ｄ≧０とすることで、制御指令値に基づく制御対象機器９００の動作結果と目標とのずれを許容して、解の探索範囲を広げることができる。以下では、制御対象機器９００の動作結果と目標とのずれを誤差と称する。「ｄ」の値が大きくなるほど、許容する誤差が大きくなり、解を得易くなる。
【００６３】
回避指令値演算部３９６が解く最適化問題における評価関数（目的関数とも称される）は、式（９）のように示される。
【００６４】
【数９】
2020157863.tif 000011
【００６５】
「ｕ＊」は、この最適化問題の解となる制御指令値を示す。「ａｒｇｍｉｎ」は、引数の値を最小化する関数である。式（３）の場合、「ａｒｇｍｉｎ」は、引数「ｕＴＰｕ＋ｐ・ｄ２」を最小化するような、制御指令値ｕを関数値とする。
ベクトルまたは行列に上付の「Ｔ」は、ベクトルまたは行列の転置を示す。
制御指令値を示すｕ＊およびｕのデータ形式は、同じ次元のベクトルであるとする。これらのベクトルの次元数は、制御装置３００が制御対象機器９００へ送信する制御指令値の次元数と同じとする。
【００６６】
「Ｐ」は、「ｕ＊」の次元数と同じ行数および列数を有する任意の正定値行列とすることができる。例えば、「Ｐ」として単位行列を用いると、制御対象機器９００が無駄な動作をしないよう、制御指令値の大きさをなるべく小さくすることができる。
【００６７】
式９の「ｐ・ｄ２」の項は、式（８）における「ｄ」の大きさを評価するための項である。「ｐ・ｄ２」の「ｐ」は、「ｕＴｕ」と「ｄ２」の重み付けを調整するための重みを示す。「ｐ」は、例えばｐ＞０の定数として設定される。
この最適化問題の解の候補が２つ検出された場合、２つの解の候補の「ｕＴｕ」の項の値が同じであれば、「ｐ・ｄ２」の項の値が小さい方が最適化として採用される。
式（９）は、評価関数の例に該当する。式（９）における最小解となる制御指令値ｕは、制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値の例に該当する。
【００６８】
機械学習部３９２は、制御対象機器９００に対する制御を学習する。具体的には、パラメータ値更新部３９３が、報酬値演算部２９１が算出する報酬値に基づいて制御パラメータ値を更新することで、制御パラメータ値を機械学習する。安定性判定部３９４は、リアプノフ関数を用いて制御の安定性を判定し、パラメータ値更新部３９３は、制御が安定するようにパラメータ値を更新する。
ここで、Ｗを正定なダイアゴナル行列として、リアプノフ関数Ｖは式（１０）のように示される。
【００６９】
【数１０】
2020157863.tif 000012
【００７０】
Ｗの対角要素が制御パラメータの例に該当し、機械学習部３９２は、報酬値が最大となる制御パラメータ値を機械学習する。機械学習部３９２が機械学習で制御パラメータ値を設定することで、リアプノフ関数が得られる。
ここで、制御指令値ｕ＊は、式（１１）のように示される。
【００７１】
【数１１】
2020157863.tif 000013
【００７２】
θは制御パラメータを示す。
また、上記の最適化演算でｕ＊の算出に用いられるΔＢ（ｘ，ｕ）には、制御対象機器９００の動的モデルを示しているといえる。このことから、機械学習部３９２は、ポリシーπをモデルベースで学習しているといえる。
パラメータ値更新部３９３が制御パラメータ値を探索する方法として、例えばベイズ最適化などの最適化ベースの方法、または、実験計画法など、公知の方法を用いることができる。
機械学習部３９２が行う機械学習で、制御対象機器９００の動作のシミュレーションを併用することで、学習速度の向上を図るようにしてもよい。
【００７３】
制御装置３００が、機械学習の際に制御パラメータ値だけでなく、リアプノフ関数等の制御関数も更新するようにしてもよい。例えば、制御関数記憶部３８２が別々の構造の複数のリアプノフ関数を予め記憶しておくようにしてもよい。制御がうまくいかない場合（例えば、図６のステップＳ２１３で、安定性判定部３９４が所定の条件以上に制御が安定しないと判定した場合）、機械学習部３９２が、式（１０）のリアプノフ関数を他のリアプノフ関数に置き換えるようにしてもよい。それに伴い、回避指令値演算部３９６も、式（８）のリアプノフ関数を式（１０）のリアプノフ関数と同じリアプノフ関数に置き換える。
このように、機械学習部３９２と回避指令値演算部３９６とが制御関数を共通で切り替えて使用することで、機械学習部３９２による機械学習の結果を制御パラメータ値だけでなく制御関数にも反映させることができる。これにより、機器制御部３９５による制御対象機器９００の制御の安定化など、制御の向上を図ることができる。
【００７４】
図４は、制御システム１におけるデータの流れの例を示す図である。図４では、障害物に符号９５０を付している。障害物９５０は、上記で説明した障害物と同様である。
情報取得装置１００は、制御対象機器９００のセンサのセンシングデータなど、制御対象機器９００に関する観測データ、および、障害物９５０の撮像画像など障害物９５０に関する観測データを取得する。
【００７５】
情報取得装置１００は、制御対象機器９００に関する観測データに基づいて、制御対象機器９００の状態情報を生成する。具体的には、情報取得装置１００は、制御対象機器９００の位置情報、および、制御対象機器９００の動作を示す情報を生成する。情報取得装置１００は、生成した制御対象機器９００の状態情報を、報酬値演算装置２００および制御装置３００へ送信する。
【００７６】
また、情報取得装置１００は、障害物９５０に関する観測データに基づいて、障害物９５０の状態情報を生成する。具体的には、情報取得装置１００は、障害物９５０の位置情報を生成する。障害物９５０が動く場合、情報取得装置１００は、障害物９５０の位置情報に加えて、障害物９５０の動作を示す情報を生成する。情報取得装置１００は、生成した障害物９５０の状態情報を、制御装置３００へ送信する。
【００７７】
報酬値演算装置２００の報酬値演算部２９１は、制御対象機器９００の状態情報に基づいて報酬値を算出する。報酬値演算部２９１は、算出した報酬値を、第１通信部２１０を介して制御装置３００へ送信する。
制御装置３００の干渉関数演算部３９１は、制御対象機器９００の状態情報および障害物９５０の状態情報に基づいて、干渉関数値Ｂ（ｘ）を算出する。
具体的には、干渉関数演算部３９１は、障害物９５０の状態情報に基づいて干渉関数を求め、第２記憶部３８０に記憶させておく。そして、干渉関数演算部３９１は、制御対象機器の状態情報ｘを干渉関数に入力して、干渉関数値を算出する。
【００７８】
また、干渉関数演算部３９１は、機器制御部３９５が制御指令値を算出するために最適化問題を解く際、制御ステップ間におけるＢ（ｘ）の変化量ΔＢ（ｘ，ｕ）を算出する。干渉関数演算部３９１は、制御対象機器９００の状態情報および障害物９５０の状態情報に加えて、最適化問題の解の候補となる制御指令値ｕに基づいて、干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出する。
【００７９】
干渉関数演算部３９１が干渉関数値の変化量ΔＢ（ｘ，ｕ）を算出するために、例えば、第２記憶部３８０が、制御対象機器９００の動的モデルを記憶しておく。干渉関数演算部３９１は、この動的モデルを用いて、干渉関数値の変化量の予測値を算出し、干渉関数値の変化量の現在値との差分を算出することで、干渉関数値の変化量を算出する。
干渉関数演算部３９１は、干渉関数値Ｂ（ｘ）および干渉関数値の変化量ΔＢ（ｘ、ｕ）を、機器制御部３９５へ出力する。
【００８０】
制御装置３００の機械学習部３９２は、制御対象機器９００の状態情報、および、報酬値に基づいて機械学習を行って制御パラメータ値を算出する。
制御装置３００の機器制御部３９５は、機械学習部３９２が算出する制御パラメータ値を反映させた最適化問題を解くことで、制御対象機器９００に対する制御指令値を算出する。機器制御部３９５は、算出した制御指令値を、第２通信部３１０を介して制御対象機器９００へ送信する。
【００８１】
図５および図６を参照して、制御装置３００の動作について説明する。
図５は、制御装置３００が制御対象機器９００に対する制御指令値を取得する処理手順の例を示すフローチャートである。制御装置３００は、１回の制御ステップで図５のループを１回実行する。
図５の処理で、回避指令値演算部３９６は、機械学習部３９２が算出した制御パラメータ値を最適化問題に反映させる（ステップＳ１１１）。具体的には、回避指令値演算部３９６は、上記の式（１０）で得られるリアプノフ関数を最適化問題に適用する。
【００８２】
次に、回避指令値演算部３９６は、最適化問題の演算を行う（ステップＳ１１２）。そして、回避指令値演算部３９６は、最適化問題の解を得られたか否かを判定する（ステップＳ１１３）。
解を得られたと判定した場合（ステップＳ１１３：ＹＥＳ）、回避指令値演算部３９６は、ｕ＝ｕ＊と算出する（ステップＳ１２１）。すなわち、回避指令値演算部３９６は、最適化問題を解いて得られた制御指令値を、制御対象機器９００へ送信する制御指令値に決定する。
そして、第２通信部３１０が、制御指令値を制御対象機器９００へ送信する（ステップＳ１４１）。
ステップＳ１４１の後、処理がステップＳ１１１へ戻る。
【００８３】
一方、ステップＳ１１３の判定で解を得られなかったと判定した場合（ステップＳ１１３：ＮＯ）、回避指令値演算部３９６は、制御対象機器９００へ送信する制御指令値として、制御対象機器９００を減速させる制御指令値を生成する。
ステップＳ１３１の後、処理がステップＳ１４へ進む。
【００８４】
図６は、機械学習部３９２が制御対象機器９００に対する制御を機械学習する処理手順の例を示す図である。機械学習部３９２は、機械学習の終了条件が成立したと判定するまで、回避指令値演算部３９６が行う図５の処理の前処理として、１回の制御ステップで、ステップＳ２１１からＳ２１４のループを１回実行する。
図６の処理で、機械学習部３９２は、報酬値演算部２９１が算出する報酬値を取得する（ステップＳ２１１）。
【００８５】
そして、パラメータ値更新部３９３は、取得した報酬値、および、制御対象機器９００の状態情報に基づいて、制御パラメータ値を更新する（ステップＳ２１２）。上述したように、ステップＳ２１２での解としての制御パラメータ値の探索方法として、公知の方法を用いることができる。
次に、安定性判定部３９４は、ステップＳ２１２で得られたパラメータ値で制御が安定するか否かを判定する（ステップＳ２１３）。ステップＳ２１３での判定方法として、公知の判定方法を用いることができる。
制御が安定していないと安定性判定部３９４が判定した場合（ステップＳ２１３：ＮＯ）、処理がステップＳ２１２へ戻る。
【００８６】
一方、制御が安定すると安定性判定部３９４が判定した場合（ステップＳ２１３：ＹＥＳ）、機械学習部３９２は、所定の学習終了条件が成立しているか否かを判定する（ステップＳ２１４）。安定性判定部３９４は、例えば、前回の制御パラメータ値と今回の制御パラメータ値とを比較して、制御パラメータ値の変化量の大きさが所定の大きさ以下であることを学習終了条件とする。この場合の学習終了条件は、式（１２）のように示される。
【００８７】
【数１２】
2020157863.tif 000014
【００８８】
｜｜Δθ｜｜は、制御パラメータ値の変化量Δθのノルムを示す。制御パラメータ値の変化量のノルムは、制御パラメータ値の変化量の大きさの例に該当する。
αは、正の定数の閾値である。
学習終了条件が成立していないと機械学習部３９２が判定した場合（ステップＳ２１４：ＮＯ）、処理がステップＳ２１１へ戻る。
一方、学習終了条件が成立していると機械学習部３９２が判定した場合（ステップＳ２１４：ＹＥＳ）、制御装置３００は図６の処理を終了する。
【００８９】
以上のように、機械学習部３９２は、制御対象機器９００の動作の制御を機械学習する。回避指令値演算部３９６は、制御対象機器９００に対する制御指令値であって、制御対象機器９００が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める。機器制御部３９５は、回避指令値に基づいて、制御対象機器９００を制御する。また、機械学習部３９２の機械学習で得られるパラメータ値が、評価関数および制約条件のうち少なくとも何れか一方に反映される。
【００９０】
制御装置３００では、制御対象機器９００が障害物に接触しないための条件を含む制約条件を満たす制御指令値を求めることで、制御対象機器が障害物に接触するか否かの判定結果を制御指令値に反映させることができる。制御装置３００によれば、この点で、制御対象機器と障害物とが比較的近い場合でも、制御対象機器が障害物に接触することを回避する動作の影響を比較的小さくできる、あるいは、影響を無くせることが期待される。
また、機械学習部３９２は、制御対象機器９００の制御を学習する際、制御対象機器９００と障害物との接触を考慮する必要が無い。制御装置３００によれば、この点で、機械学習部３９２が解を探索する負荷が軽くて済み、解を求める処理の時間が比較的短くて済むと期待される。
【００９１】
また、回避指令値演算部３９６は、制御対象機器９００に設定された目標を達成するための条件であって、パラメータ値が反映された条件を含む制約条件を用いる。具体的には、回避指令値演算部３９６は、制御パラメータ値が反映された制御関数を含む制約条件を用いる。
制御装置３００では、機械学習にてパラメータ値を更新することで目標達成の精度の向上が期待され、かつ、制御対象機器９００が障害物に接触しないための条件により、機械学習が進んでいない段階でも、制御対象機器９００が障害物に接触することを回避できると期待される。
【００９２】
また、制御関数記憶部３８２は、機械学習部３９２によるパラメータ値の取得と、回避指令値演算部３９６による回避指令値の取得とに共通で用いられる制御関数を複数記憶する。機械学習部３９２および回避指令値演算部３９６は、制御関数記憶部３８２が記憶する制御関数のうち何れかを共通で切り替えて使用する。
このように、機械学習部３９２と回避指令値演算部３９６とが制御関数を共通で切り替えて使用することで、機械学習部３９２による機械学習の結果を制御パラメータ値だけでなく制御関数にも反映させることができる。これにより、機器制御部３９５による制御対象機器９００の制御の安定化など、制御の向上を図ることができる。
【００９３】
＜第２実施形態＞
第２実施形態では、制御装置が制御指令値の算出に用いる最適化問題のもう１つの例について説明する。
図７は、第２実施形態に係る制御装置３００の機能構成の例を示す概略ブロック図である。図７に示す構成で、制御装置３００は、第２通信部３１０と、第２記憶部３８０と、第２制御部３９０とを備える。第２記憶部３８０は、干渉関数記憶部３８１と、制御関数記憶部３８２と、パラメータ値記憶部３８３とを備える。第２制御部３９０は、干渉関数演算部３９１と、機械学習部３９２と、機器制御部３９５とを備える。機械学習部３９２は、パラメータ値更新部３９３と、安定性判定部３９４とを備える。機器制御部３９５は、回避指令値演算部３９６と、ノミナル（Nominal）指令値演算部３９７とを備える。
【００９４】
図７に示す制御装置３００では、回避指令値演算部３９６が用いる最適化問題が、図３に示す第１実施形態の場合と異なる。それに伴い、図７に示す制御装置３００では、機器制御部３９５がノミナル指令値演算部３９７を備えている点が、図３に示す第１実施形態の場合と異なる。それ以外の点では、図７に示す制御装置３００は、図３に示す第１実施形態の場合と同様である。
第２実施形態に係る制御システムは、上記の点以外は、第１実施形態の場合と同様である。第２実施形態に係る制御システムについて、第１実施形態の場合と同様の点の説明を省略し、必要に応じて図１に示す符号、および、図２に示す符号を引用する。
【００９５】
ノミナル指令値演算部３９７は、ノミナル指令値を算出する。ノミナル指令値は、制御対象機器９００による障害物回避を考慮しない場合の、制御対象機器９００に対する制御指令値である。すなわち、ノミナル指令値は、障害物が無いとの仮定の下で、制御対象機器９００に設定された目標を達成するための、制御対象機器９００に対する制御指令値である。
【００９６】
ノミナル指令値演算部３９７がノミナル指令値を算出するための制御方法は特定のものに限定されず、公知のいろいろな制御方法を用いることができる。
ノミナル指令値演算部３９７が算出するノミナル指令値は、回避指令値演算部３９６が、制御対象機器９００に対して指示する制御指令値（すなわち、実際に用いられる制御指令値）を取得するための基準となる制御指令値として用いられる。
【００９７】
ノミナル指令値を算出するための関数が、制御関数の例に該当する。ノミナル指令値を算出するための関数をノミナル関数と称する。
ノミナル指令値演算部３９７は、機械学習部３９２が算出する制御パラメータ値をノミナル関数に反映させ、反映後のノミナル関数を用いてノミナル指令値を算出する。
【００９８】
回避指令値演算部３９６が制御指令値の算出に用いる最適化問題の制約条件は、第１実施形態の場合と同様であり、式（３）、式（７）および式（８）のように示される。
一方、回避指令値演算部３９６が制御指令値の算出に用いる最適化問題の評価関数は、第１実施形態の場合と異なり、式（１３）のように示される。
【００９９】
【数１３】
2020157863.tif 000015
【０１００】
第１実施形態の場合と同様、「ｕ＊」は、この最適化問題の解となる制御指令値を示す。
上述したように、「ａｒｇｍｉｎ」は、引数の値を最小化する関数である。式（１３）の場合、「ａｒｇｍｉｎ」は、引数「（ｕ−ｕｒ）Ｔ（ｕ−ｕｒ）」を最小化するような、ｕの値を関数値とする。
「ｕｒ」は、ノミナル指令値演算部３９７からのノミナル指令値を示す。
【０１０１】
式（１３）は、制約条件の下で、ノミナル指令値ｕｒになるべく近い制御指令値を求めることを示している。ノミナル指令値ｕｒは、制御対象機器９００に設定されている目的を制御対象機器９００に実行させるように算出された指令値なので、ノミナル指令値ｕｒに近い指令値を求めることで、制御対象機器９００に設定されている目的を制御対象機器９００に実行させることができると期待される。
ｕｒのデータ形式は、上述したｕ＊およびｕの場合と同じ次元のベクトルであるとする。これらのベクトルの次元数は、制御装置３００が制御対象機器９００へ送信する制御指令値の次元数と同じとする。
【０１０２】
図８は、第２実施形態に係る制御システム１におけるデータの流れの例を示す図である。図８の例では、機器制御部３９５の回避指令値演算部３９６が明示されている点、および、機器制御部３９５がノミナル指令値演算部３９７を備える点が図４の場合と異なる。機械学習部３９２が算出した制御パラメータ値がノミナル指令値演算部３９７に入力され、ノミナル指令値演算部３９７は、制御パラメータ値を反映されたノミナル関数を用いてノミナル指令値を算出する。ノミナル指令値演算部３９７は、算出したノミナル指令値を回避指令値演算部３９６へ出力する。回避指令値演算部３９６は、ノミナル指令値を最適化問題の評価関数に用いる。
それ以外の点については、図８の例は、図４の場合と同様である。
【０１０３】
以上のように、回避指令値演算部３９６は、制御指令値を算出する最適化問題の評価関数として、機械学習部３９２が算出したパラメータ値を用いて求められるノミナル指令値との相違が小さい制御指令値ほど高く評価する評価関数を用いる。
制御装置３００では、この評価関数を用いることで、制御対象機器９００に設定されている目的を制御対象機器９００に実行させることができると期待される。そして、制御装置３００では、評価関数のノミナル指令値にパラメータ値が反映されることで、機械学習部３９２の学習結果を制御指令値に反映させることができる。
【０１０４】
＜第３実施形態＞
図９は、第３実施形態に係る制御装置の構成の例を示す図である。図９に示す制御装置１０は、機械学習部１１と、回避指令値演算部１２と、機器制御部１３とを備える。
かかる構成で、機械学習部１１は、制御対象機器の動作の制御を機械学習する。回避指令値演算部１２は、回避指令値を求める。回避指令値は、制御対象機器に対する制御指令値であって、制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である。機器制御部１３は、回避指令値に基づいて、制御対象機器を制御する。また、機械学習部１１の機械学習で得られるパラメータ値が、評価関数および制約条件のうち少なくとも何れか一方に反映される。
【０１０５】
制御装置１０では、制御対象機器が障害物に接触しないための条件を含む制約条件を満たす制御指令値を求めることで、制御対象機器が障害物に接触するか否かの判定結果を制御指令値に反映させることができる。制御装置１０によれば、この点で、制御対象機器と障害物とが比較的近い場合でも、制御対象機器が障害物に接触することを回避する動作の影響を比較的小さくできる、あるいは、影響を無くせることが期待される。
また、機械学習部１１は、制御対象機器の制御を学習する際、制御対象機器と障害物との接触を考慮する必要が無い。制御装置１０によれば、この点で、機械学習部１１が解を探索する負荷が軽くて済み、解を求める処理の時間が比較的短くて済むと期待される。
【０１０６】
＜第４実施形態＞
図１０は、第４実施形態に係る制御方法における処理の手順の例を示す図である。図１０に示す制御方法では、制御対象機器の動作の制御を機械学習し（ステップＳ１１）、制御対象機器に対する制御指令値であって、制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求め（ステップＳ１２）、回避指令値に基づいて、制御対象機器を制御する（ステップＳ１３）。また、ステップＳ１１での機械学習で得られるパラメータ値が、評価関数および制約条件のうち少なくとも何れか一方に反映される。
【０１０７】
この制御方法では、制御対象機器が障害物に接触しないための条件を含む制約条件を満たす制御指令値を求めることで、制御対象機器が障害物に接触するか否かの判定結果を制御指令値に反映させることができる。この制御方法では、この点で、制御対象機器と障害物とが比較的近い場合でも、制御対象機器が障害物に接触することを回避する動作の影響を比較的小さくできる、あるいは、影響を無くせることが期待される。
また、ステップＳ１１で、制御対象機器の制御を学習する際、制御対象機器と障害物との接触を考慮する必要が無い。この制御方法によれば、この点で、ステップＳ１１で解を探索する負荷が軽くて済み、解を求める処理の時間が比較的短くて済むと期待される。
【０１０８】
図１１は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図２０に示す構成で、コンピュータ７００は、ＣＰＵ７１０と、主記憶装置７２０と、補助記憶装置７３０と、インタフェース７４０とを備える。
上記の情報取得装置１００、報酬値演算装置２００、および、制御装置３００のうち何れか１つ以上が、コンピュータ７００に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ７１０は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置７２０に確保する。各装置と他の装置との通信は、インタフェース７４０が通信機能を有し、ＣＰＵ７１０の制御に従って通信を行うことで実行される。
【０１０９】
報酬値演算装置２００がコンピュータ７００に実装される場合、第１制御部２９０およびその各部の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。
また、ＣＰＵ７１０は、プログラムに従って、第１記憶部２８０に対応する記憶領域を主記憶装置７２０に確保する。第１通信部２１０が行う通信は、インタフェース７４０が通信機能を有し、ＣＰＵ７１０の制御に従って通信を行うことで実行される。
【０１１０】
制御装置３００がコンピュータ７００に実装される場合、第２制御部３９０およびその各部の動作は、プログラムの形式で補助記憶装置７３０に記憶されている。ＣＰＵ７１０は、プログラムを補助記憶装置７３０から読み出して主記憶装置７２０に展開し、当該プログラムに従って上記処理を実行する。
また、ＣＰＵ７１０は、プログラムに従って、第２記憶部３８０およびその各部に対応する記憶領域を主記憶装置７２０に確保する。第２通信部３１０が行う通信は、インタフェース７４０が通信機能を有し、ＣＰＵ７１０の制御に従って通信を行うことで実行される。
【０１１１】
なお、情報取得装置１００、報酬値演算装置２００、および、制御装置３００の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。ここでいう「コンピュータシステム」とは、ＯＳ（オペレーティングシステム）や周辺機器等のハードウェアを含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Read Only Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１１２】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【０１１３】
本発明の実施形態は、制御装置、制御方法および記録媒体に適用してもよい。
【符号の説明】
【０１１４】
１  制御システム
１０、３００  制御装置
１１、３９２  機械学習部
１２、３９６  回避指令値演算部
１３、３９５  機器制御部
１００  情報取得装置
２００  報酬値演算装置
２１０  第１通信部
２８０  第１記憶部
２８１  報酬関数記憶部
２９０  第１制御部
２９１  報酬値演算部
３１０  第２通信部
３８０  第２記憶部
３８１  干渉関数記憶部
３８２  制御関数記憶部
３８３  パラメータ値記憶部
３９０  第２制御部
３９１  干渉関数演算部
３９３  パラメータ値更新部
３９４  安定性判定部
３９７  ノミナル指令値演算部
【図１】
2020157863.tif 000016
【図２】
2020157863.tif 000017
【図３】
2020157863.tif 000018
【図４】
2020157863.tif 000019
【図５】
2020157863.tif 000020
【図６】
2020157863.tif 000021
【図７】
2020157863.tif 000022
【図８】
2020157863.tif 000023
【図９】
2020157863.tif 000024
【図１０】
2020157863.tif 000025
【図１１】
2020157863.tif 000026
【手続補正書】
【提出日】令和3年7月7日(2021.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御対象機器の動作の制御を機械学習する機械学習部と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める回避指令値演算部と、
前記回避指令値に基づいて、前記制御対象機器を制御する機器制御部と、
を備え、
前記機械学習部の機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される、
制御装置。
【請求項２】
前記機械学習部によるパラメータ値の取得と、前記回避指令値演算部による回避指令値の取得とに共通で用いられる制御関数を複数記憶する制御関数記憶部をさらに備え、
前記機械学習部および前記回避指令値演算部は、前記制御関数記憶部が記憶する制御関数のうち何れかを共通で切り替えて使用する、
請求項１に記載の制御装置。
【請求項３】
前記回避指令値演算部は、前記制御対象機器に設定された目標を達成するための条件であって、前記パラメータ値が反映された条件を含む前記制約条件を用いる、
請求項１または請求項２に記載の制御装置。
【請求項４】
前記機械学習部は、前記回避指令値演算部が用いる前記評価関数に含まれるノミナル指令値を求めるための制御関数のパラメータ値を前記機械学習で取得する、
請求項１に記載の制御装置。
【請求項５】
制御対象機器の動作の制御を機械学習する工程と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、
前記回避指令値に基づいて、前記制御対象機器を制御する工程と、
を含み、
前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映される、
制御方法。
【請求項６】
コンピュータに、
制御対象機器の動作の制御を機械学習する工程と、
前記制御対象機器に対する制御指令値であって、前記制御対象機器が障害物に接触しないための十分条件を含む制約条件を満たし、かつ、その制御指令値を評価関数に適用した評価値が所定の終了条件を満たす制御指令値である回避指令値を求める工程と、
前記回避指令値に基づいて、前記制御対象機器を制御する工程と、
を実行させるためのプログラムであって、
前記機械学習する工程での機械学習で得られるパラメータ値が、前記評価関数および前記制約条件のうち少なくとも何れか一方に反映されるプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、制御装置、制御方法およびプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
本発明の目的の一例は、上記の問題を解決することができる制御装置、制御方法およびプログラムを提供することである。
【国際調査報告】
2020157863.tif 000027
2020157863.tif 000028