先の、剛体としてのドローンのシミュレーション(2):むだ時間ありモデルで定式化したモデルを実際にシミュレーションしてみよう。
シミュレーションで使ったプログラム(C++)は、以下のサイトからダウンロードできる。
https://github.com/toyowa/pidsimulation
そのサイトの中の、timelag-2.cppというプログラムを選択してダウンロードしてください。前の記事の最後の縮約したものではなく、その手前の漸化式をそのまま入れている。実行すると、実行した日時(秒単位)の付いたファイルの中に、ログを吐き出す。それはCVS形式なので、EXCELなどで計算やグラフィカルな処理ができる。ログファイルの冒頭に、実行時のパラメータが書かれている。
パラメータは基本以下のように定義されている。
$ホバリングプロペラ回転数 V_{0} = 13000 rpm$
$モーター起動力パラメータ \delta = 1e-08$
$機体慣性モーメント I = 0.01 Kg*m^{2}$
$\eta = 0.01924 $
$中心からモーター位置までの長さ L = 0.37 m$
$PID制御パラメータ P = 300$
$PID制御パラメータ D = 300$
$シミュレーションステップのh = 0.01 sec$
$シミュレーション期間(1期間10ms) T = 2000 periods$
$むだ時間:遅延 \tau = 20 期間、時間では 200ms$
$初期 \theta = 0.5 radian$
$初期 \omega = 0 radian/sec$
パラメータは、基本自作のドローンから取ってきているが、慣性モーメントIだけは、実測する元気が湧かず、似たような機体を使った論文の値に近いものを考えている。そうなるとI=0.1くらいなのだが、このリファレンスパラメータでは、あえてその十分の1と、小さな値に設定している。すなわち、他の諸元はやや大きなドローンだが、慣性モーメントだけは小型ドローン、下手すればマイクロドローンくらいのこじんまりしたドローンになっている感じだ。実測もしていないので、この想定も外れているかもしれないが。
このパラメータを基本に、シミュレーションを実行する。変更する場合は、変更したパラメータのみを表示する。
(1)基本パラメータによるシミュレーション
まず、上記のパラメータをそのままに実行した場合の結果を示そう。
かなり短い時間で安定したホバリングを回復していると思われる。オレンジ色がプロペラの回転数で、ホバリングの回転数は1300rpmにしているので、そこへ収束している。機体のロール角(青色の線)もまたゼロ(右の目盛りで)に向かって収束する。
収束に至るまで、約1秒周期の揺れが起こっている。機体の慣性モーメントは小さいが、モーターまでの腕の長さはかなり大型のドローンになっているので、それほど周期の短い揺れが現れることはないのだと思う。
何よりも、200msのむだ時間があるにもかかわらず、このような収束結果を見せることには驚いた。
(2)慣性モーメントを0.1でシミュレーション
慣性モーメントを10倍にした結果は次のとおりである。
収束に向けてより時間がかかっているように見えるが、そもそも揺れの振幅が小さいので、それはあまり問題にならない。慣性モーメントが大きくなったことによって、揺れの周期が大きくなっている。1周期が5秒くらいになっているようだが、収束への過程として見ると、あまり問題にはならないのではないか。
0 件のコメント:
コメントを投稿