本ソフトウェアはROS 2のrosbagファイルで保存した入出力とゲインスケジュールドパラメータのデータを用いてゲインスケジュールド制御を調整する自動調整ソフトである。ゲインスケジュールド制御調整用のパッケージ、サンプルのプラント・制御器のパッケージ、実行用スクリプトから構成されている。
参考文献: Yahagi, S., & Kajiwara, I. (2021). Direct tuning of gain-scheduled controller for electro-pneumatic clutch position control. Advances in Mechanical Engineering, 13(8), 16878140211036017. Yahagi, S., & Suzuki, M. (2023). Controller parameter tuning for gain‐scheduled vehicle yaw‐rate control: Virtual reference feedback tuning approach. Electronics Letters, 59(6), e12764.
本ソフトにおけるqiita記事:人気だったら書くかも...
OS:ubuntu 22.04 ROS version:ROS 2 humble 言語:C++、Python、shell scripts
本ソフトにおける各パッケージの概要を本節で述べる。
ゲイン調整用入出力信号のためのタイムスタンプ付きカスタムメッセージ。制御入力inputと出力応答outputと時変パラメータの変数を内包。
時刻同期用ノードのパッケージ。rosbagでプレイされた入力信号と出力信号を受信。受信した入出力を時刻同期させた上でgs_controller_msgsのメッセージとして出力。
ゲインスケジュールド制御調整用ノードのパッケージ。time_syncから受信した入出力データにてパラメータの自動調整を実行。調整後パラメータをターミナル上に表示。
例題用の制御対象ノードのパッケージ。ゲイン調整機能とは関係ないため,例題を実行しない場合は不要。
例題用の制御器ノードのパッケージ。ゲイン調整機能とは関係ないため,例題を実行しない場合は不要。
本ソフトのノード構成を下記のグラフに示す。例題の関係上,制御対象の出力データのトピックが/vehicle_state,入力データのトピックが/steering,時変パラメータのトピックが/vehicle_velocityとなっている。/plant_infoが時刻同期済みの入出力信号におけるカスタムメッセージでのトピックとである。
今回対象とする制御器は多項式ゲインスケジュールドによるPI制御である。制御則が
となる。
で設定している。
1.ビルド mainブランチをクローンして,下記のコマンドを実行する。
source build_setup.sh
2.初期入出力データの測定(rosbagの準備) 下記のコマンドを実行して例題用の入出力データ(rosbag)を生成しておく。
source run_yaw_rate_control_sim.sh
なお,本例題ではlaunchファイル(control_run.py)にて例題の制御器におけるパラメータを設定している。rosbagデータの入出力応答を変更する場合,launchファイル上のパラメータを変更して実行する必要がある。
3.ゲイン調整 シェルスクリプト(source run_PID_tuning.sh)内のrosbag名を該当ファイル名に変更する。launchファイル(pid_tuner.py)にて,参照モデル(time_const)の時定数とデータ数(読み込むデータの最大データ点数max_data_points)を設定する。下記のコマンドを実行してrosbagデータからパラメータをオフライン計算する。
source run_PID_tuning.sh
正常に実行ができた場合,下記のようにターミナル上にてゲインの調整結果が表示される。
4.ゲイン調整結果の確認 launchファイル(control_run.py)のパラメータを変更し,下記のコマンドを実行して制御器調整後の制御応答を確認する。
source run_yaw_rate_control_sim.sh
本例題ではモーションプロファイルとして目標値と時変パラメータである車速が事前設定されている。
モーションプロファイル(上図:目標値、下図:時変パラメータ)
初期実験データ(青:出力、黄色:目標値、赤:参照モデル応答)
本条件下で得られたrosbagデータを用いてゲイン調整を実施することにより,制御器のパラメータを自動調整できる。ただし,最大データ点数は4500であり,参照モデルの時定数を0.5sと設定している。調整後パラメータを適用することにより,下記のような制御応答を得られる。



