学習とロボティクス(2) 学習制御
本シリーズは学習とロボティクスと題して、一般には制御モデルを立てるのが難しかったり時々刻々と変化する環境におけるロボットの制御問題を取り扱う学術分野について、大雑把にまとめていく。 「ロボットのアームの先端をこの軌道に沿って動かしなさい」というような明確な制御目的に対して制御モデルを立てずに施行を繰り返しながら制御ゲインや制御入力を調整する手法。 学習制御に関する論文で必ず引用されるのは杉江先生の論文[1]。
一方で制御対象がハミルトン系であるときには、その性質をうまく活用した藤本先生の手法がある[2]。 いずれも基本的にはフィードフォワードの制御入力を試行の反復によって獲得する。 [1]のほうをはじめに見ていく。
こちらの基本的な考え方は簡単だ。 まず、制御対象に対して制御入力 今、目標軌道 これに対して [3]によると、次式のような更新則で 気になるのは誤差 [3]が出た時点ですでに上記問題に対する対処もなされてはいたが、まあほかにもいろいろと課題はあったようだ。
ただ、かなり古くからある手法なので、もしかするとさらに改善がなされているかもしれない。 次に[2]を見ていく。
実を言うと私はこの「ハミルトン系に対する学習制御」について大学時代に研究していた。
ので、かなり思い入れはあるのだが、こちらは[1]と比べるとだいぶ難しい。 ハミルトン系というのは、あるハミルトン関数 ここで、 このように表されるハミルトン系には「変分対称性」という特別な性質がある。
これをうまく使うと、制御入力 これがわかると、評価関数を与えたときにどう制御入力を変化させれば評価関数が小さくなるかがわかる。
これに従って制御入力を更新すればよい。 [1]と比較すると、制御対象がハミルトン系に限定されるものの、軌道追従に限らないさまざまな評価関数を最適化する制御入力を学習することができる。 また、非常に数学的な理論がしっかりしているので、興味がある方はぜひ読んでほしい。(ただし難解) [1] Arimoto, S. et al. “Bettering operation of Robots by learning.” J. Field Robotics 1 (1984): 123-140.
はじめに
学習制御(Learning Control)とは
反復学習制御
]を与えると出力
が得られるとする。
出力
とは、例えばアーム先端の位置などである。
が与えられているとする。
1回目の試行で制御入力[u_1(t)]を与えたところ、出力
が得られたとしよう。
すると、目標軌道との誤差は
となる。
が小さくなるように制御入力を更新する。
つまるところ、制御入力
をフィードバック制御するのだ。
を更新するらしい。
ではなく、その2階微分を取っていること。
これは誤差の2階微分を取ることで制御入力=トルクと次数を合わせるためらしい。
ただし、この微分操作を伴う更新則は観測雑音に弱いという欠点もあるとのこと。
ハミルトン系に対する反復学習制御
があって次式のような入出力関係が成り立つ系を言う。
は歪対称行列
、
は半正定対称行列である。
はシステムの状態を表していて、例えばアームの姿勢角などがこれに当たる。
の微小変化に対する出力
の変化量を計算することができるのだ。
参考文献
[2] K. Fujimoto, H. Kakiuchi and T. Sugie, "Iterative learning control of Hamiltonian systems," Proceedings of the 41st IEEE Conference on Decision and Control, 2002., 2002, pp. 3344-3349 vol.3, doi: 10.1109/CDC.2002.1184391.
[3] 杉江 俊治, 反復学習制御って何?, 計測と制御, 2003, 42 巻, 4 号, p. 314-316, 公開日 2009/11/26, Online ISSN 1883-8170, Print ISSN 0453-4662, https://doi.org/10.11499/sicejl1962.42.314, https://www.jstage.jst.go.jp/article/sicejl1962/42/4/42_4_314/_article/-char/ja