ACTS2021 Salamanderの成果報告!

ACTS2021Salamanderチームリーダの松田です!ACTS2021が終了して早数ヶ月が経とうとしています…。報告が遅くなってしまい申し訳ありません!ACTS終了後にそのままの勢いで研究室内外問わず縦横無尽に駆け回っておりました(この記事書きつつ、もう3ヶ月経ったのかと引いております。)

2022年になってしまっておりますが、2021年の締めとして改めて概要と結果を振り返られればと思います!

Salamanderの概要

2021年度のACTS(ARLISS2021代替大会)では,「実数値GAに基づくモータの動作不全に対して頑健な進化的自律走行CanSat」というミッションに取り組みました.ミッションはCanSatに走行性能上の問題が発生するような故障が生じた状態,を想定した下から始まります.例えば,着地衝撃によってモータ動作が停止あるいは不能になったり.タイヤやワイヤーフレームが湾曲した状態になり,設計上で想定していた走行姿勢が保てなくなり制御走行が不完全(命令に対する出力制御が一致していないなど)になるなどの状態を想定します.このような場合の現在の一つの解決方法としては,パーツの修理・取り替えであると思いますが,これは人の手の介入が困難な惑星の探索環境下では容易に取れる方法ではありません.それに対して,他の解決方法としては.“PID制御”によって制御走行を故障状態に合わせた最適化をすることにあります。確かにこの方法の効力はありますが,万能ではなく下記のような問題点があります.

  1. PID制御に用いるPID関数はp,i,dの3つのパラメータをチューニングする必要がある
  2. 3つのパラメータの変化が出力値へ与える影響は大きく,場合によっては目標の出力からずれたり,出力が振動するようになってしまう可能性がある
  3. 機体の性能が想定から大きく離れる時,既定のパラメータ値のPID制御では対処できない可能性がある.

特に3つ目の問題は非常に重要であり,上記の『タイヤやワイヤーフレームが湾曲』といった「発生する可能性は予期できても,度合いを予期することはできない故障」においては,既定パラメータのPID制御では対処できない可能性があります.また,この時p,i,d値の再設定などしPID制御を故障状態に合わせて再設定する手段も考えられますが,1・2つ目の理由から現地での調整は困難があります.

そこで,我々が着目したのは“進化計算による最適化”,その内,“近似解探索において優れた性能が報告されている進化的アルゴリズムの1つである遺伝的アルゴリズム(GA)”でした.と言っても”PID制御による最適化”を”進化計算による最適化”に置き換えるという話ではありません.“進化計算による最適化”によって”PID制御による最適化”が効果的に発揮できる範疇まで制御の軸を調整しようということです.具体的には,PID制御の基準線(出力の中央)となる直進走行が可能となる最適な姿勢・出力をGAによって探索し,得た最適値を設定して,PID制御走行を再開すると言うものとなっております.なお,本ミッションでは”度合いが予測できない故障”への対処を目標とはしておりますが,今回は簡単のために,4輪駆動のCanSatにおける片前輪のモータの空転故障を度合いが予測できない故障と見立ててこれに対処するものとしております.

 

このミッションでは主に以下の内容が要求されます.

  • 2軸サーボスタビライザ+4輪駆動

片前輪のモータ故障の想定下においては例年の1軸(縦軸)サーボスタビライザ+2(前)輪駆動のローバでは制御が不可能になってしまうため,”スタビライザの横軸駆動の拡張”と”後輪駆動”を追加することによって初めて故障対処の可能性を得られるようになります.合わせて,後輪駆動による草の絡みへの対処・サーボへの出力分岐パーツの制作・重量バランスの調整などハード・回路班の工夫が詰まっている機構となりました.

  • 故障検知アルゴリズム

そもそも,故障状態を把握し最適化を実施するためには「故障検知」の存在が必要です.今回はモータエンコーダを用いた故障検知を搭載し,定期的に実行.対処の必要がある故障と判断された場合に後述の”最適化サブシーケンス”が実行されます.具体的な故障検知のアルゴリズムとしては「片前輪のモータ出力をしている状態で左/右輪のモータエンコーダの値が更新されない場合,左/右輪のタイヤの空転・固定やモータの故障が発生していると判定」するというものです.

  • 最適化(GA)サブシーケンス

上記で述べた”進化計算(GA)による最適化”のことです.GAによって片前輪が故障した状態において,CanSatが直進を可能とする横軸サーボの角度とモータ出力最適値を求め設定し直すことでPID制御の中央である直進走行制御に近い時の直進性を確保し,左右方向への制御が可能になるように調整します.
最適化処理1回目の初期個体は下記で記述するシミュレーションであらかじめ生成した最適値の群を,2回目以降はそれまでの最適化処理で適応度が最小であった順に設定個体数分集め群を,代入し,設定したインターバルで母集団の中から順に個体を切り替えながら適応値を算出します.適応値は,インターバル開始から終了までの機体が回転した角度(低い方が良い)とモータエンコーダから算出した進行した距離(低い方が良い)から算出します.

  • GAの初期個体をあらかじめ生成するシミュレータ

実機を用いた最適化は膨大な時間と電力が必要となる問題があるため,シミュレーション上の複数地形下でそれぞれ最適化した個体をまとめて初期個体として扱いました.これによって,ミッション下での最適化に要する計算時間の大幅な削減が実現可能です.シミュレーション環境はUnityで実装されており,CanSatはCADデータをそのまま利用しました.初期個体数を30に設定し,1000世代で算出した個体群のうち,適応度が最も高い4個体を初期個体群として実機に搭載しております.

Salamanderの結果

大会の結果,Salamanderチームは「Accuracy Award 3rd」を受賞しました.しかし,その他の賞は残念ながら得られない結果となってしまいました….大きな要因としては下記の二つが考えられます.

  • 本番環境の草が想定よりも深かった
  • 発表会において当ミッションの魅力を伝え切ることができなかった

一つ目の草の深さは,審査書の段階である程度乗り越えてきたものだったのでショックが大きかったですね.草が絡まないように車軸の連結部分を内包したり,スパイクを多種用意したりとハード班を中心にさまざまな工夫を重ねてきたのですが,結局,本番環境の草の深さが想定を上回り故障状態における出力が足りない結果となってしまいました.

しかし,やはり二つ目の要因が今回,ミッション関連の賞を逃してしまった大きな要因だと考えられます.発表当時は制御系における”最適化”と進化計算における”最適化”の区別をあまり理解していない発表資料となってしまったため,混乱を招きミッションの魅力がうまく伝わっていなかったようでした.ARLISSでは自分達(情報系)の領域から離れ制御系の領域に足を踏み入れているという認識が足りていなかったということでもあります.大きな反省点ですね…

2022年はこういう視点も理解した上で最後の一年、臨んでいきたいですね!