遅延シミュレーション(7)では、制御に遅延がある場合に、深刻な困難が発生することを示した。
問題をどう克服するか。どこで遅延が発生するのかをきちんと把握することが必要である。モーターのパワーあるいは反応特性の可能性は高いと思っているが、制御コンピュータ(私の場合はRaspberryPI 4)からPWMモジュール、そしてESCの間の信号の流れの中で発生している可能性も否定できない。このような問題の所在を突き止めることはまた次の課題にして、ここでは、信号遅延があることを前提に、可能な解決の道を少し探りたいと思う。
これまでの記事については、以下を見ていただきたい。
先の記事で示した、フライトの破綻は、機体の動きに対する必要な制御が遅れることによって、加速度的に事態を悪化させている状況と見ることができる。そこで、機体の反応をゆっくりにして、信号の遅れを許容するようにすることが考えられる。それは、言い換えれば、機体の慣性モーメントを大きくして、動きをゆったりとしたものにすることである。
(1)腕の長さ1m、遅延200ms
中心からモーター位置までの距離を長くすると慣性モーメントは大きくなる。ここではL=1.0メートルにしよう。期待幅が2メートルを超えるドローンになるので、現実にはありえないが、何しろシミュレーションなので簡単である(笑)
プログラムは遅延シミュレーション(7)にリンク先を書いておいたので、そちらからダウンロードできる。そのパラメータLを1.0に変更したわけである。
ピッチ角とモーター回転数の結果は次のようになる。
(7)の結果と決定的に違うのは、加速度的破綻ではなく、一応、振動に留まっていることである。ただ、モーターの回転数が瞬間的に負になっている、フライトが破綻しているという事態は変わりない。その一瞬、モーターが逆回りするようなシステムであれば対応可能だが、まあ、ありえない。P制御と、D制御のスケールは、それぞれ10000と4000であり、遅延がない状況では、一瞬で安定したホバリングが実現できる状況である((5)を参照)。後半では、ほぼ単振動状態になり、振動の周期は、約1秒である。
(2)腕の長さ1m、遅延100ms
もし、他は上と同じ状況で、遅延が半分の100msにとどまったとしたら次のような結果になる。(タイトルに L=0.5とあるのは、L=1.0の間違い)
揺れは正常に収束する。前のシミュレーションでは100msの遅延でも200msの遅延と全く変わらず、一方的に破綻していたのに、こちらは正常に収束している点では、完成モーめんを大きくすることの効果は絶大と言ってもいい。
その意味では、少しでも遅延を小さくした方がいいのである。まさに、喫緊の課題なのだ。
(3)腕の長さ1m、遅延200ms、P制御10000、D制御3000
(5)腕の長さ1m、質量=1.0Kg、遅延200ms、P制御10000、D制御4000
(1)の状態からモーターにかかる機体荷重が1Kgに増えたとしよう。これは4ロータードローンの場合、機体荷重が4Kgになるということである。
当然、モーター強度も強くならなければならない。モーターの強度は、このシミュレーションモデルの場合、$\delta$で表され、それはホバリングを実現するレベル、与えられた機体荷重のもとで、基準回転数で重力による力と浮力がバランスする値として、自動で計算されるようにしている。その時は、機体の加速度がゼロになっているということである。
結果は次のようになる。
(1)と比べてみると、一瞬でもモーター回転が負になる状況が存在しないという点では、パフォーマンスは改善しているが、単振動化の事実は変わらない。
それでも機体重量の増加による慣性モーメントの増大はポジティブな結果をもたらすことはわかった。
(5)腕の長さ0.8m、質量=1.0Kg、遅延200ms、P制御5000、D制御4000
最後に、一応、いいところを入れたものを一つ示しておく。実用性はないのだが。
慣性モーメント、特に腕の長さが、遅延に対して影響を与えることは確認できた。
記事のシリーズ一覧は以下です。
PID制御によるドローンの揺れに関する数値シミュレーション(7):遅延シミュレーション
PID制御によるドローンの揺れに関する数値シミュレーション(8):慣性モーメント
PID制御によるドローンの揺れに関する数値シミュレーション(9):ジャイロ効果
PID制御によるドローンの揺れに関する数値シミュレーション(10):ジャイロ効果シミュレーション
0 件のコメント:
コメントを投稿