PID制御

Last-modified: 2022-04-25 (月) 20:08:37

編集中...編集時Ver3.5.0.0?

概要

Controlタブに存在するPID (General Purpose)と、AIマインフレーム内に存在するPIDについての解説です。

 

コントロールタブのPID (General Purpose)/汎用PID(以下GPPIDと略す)は、AIの操作に関与せずビークルの姿勢を自動で設定によってはなめらかに制御する事が可能な便利なブロックである。
尚、PIDを設置しただけでは効果は無く、エアポンプやハイドロフォイル(水中翼)、スクリューやジェット等を仕込んでやる必要が有る。

 

AIタブのPID(以下AIPIDと略す)はAIの行う操作を滑らかにするもの。こちらのPIDはAIに内蔵されている。
然し機体がガタ付く事で「敵のAIMを翻弄する」という効果もある為、滑らかな挙動にはデメリットもある。

 

大雑把な表現をすると、AIPIDはいい加減な動作をするAIの自動操縦操作を矯正するもの、GPはビークルの姿勢や高度を強制的に設定数値に固定するようにするもの、となる。
AIPIDはAI操縦でなければ無意味だが、GPは常に姿勢や高度を一定値に合わせようとするのでヘリブレードを使わない大型の飛行艦などでは常に一定高度を浮遊し続けたりできる(浮遊用のスラスター出力が足りてさえいれば)。

AIタブの調整解説動画

この動画の23分あたりから、戦闘機のAIPIDの設定が解説されている。古いためAIPIDがAIメインフレームと分離しているが、設定は同じ。
船の場合はこの動画よりGainを大きく、Integralを少し大きく、Derivativeを若干小さめにするといいと思う。

AIPIDとGPPIDのざっくりした説明

AIPID

AIPIDはAIメインフレーム内のPIDタブに存在する。
20220409230711_1.jpg

 

PIDが使える軸は、AIが操作可能な6つ。使うマニューバによってはさらに減る。
例えばピッチ制御を開くと
20220409230716_1.jpg
のような画面が表示される。基本はこれらのゲイン、積分、微分の値を操作してビークルの安定を図る。

 

上にも書かれている通り、AIPIDはAIの動かすビークルの動きを滑らかにできる。例えば船の舵取りを滑らかにしたり、航空機のピッチ操作を滑らかにし蛇行を防ぐなど。

 

GPPID

GPPIDはインベントリの操作系パーツの中に存在する。
20220410034840_1.jpg

 

設定項目はある程度AIPIDと同じだが、入力と出力をこちらで設定しないといけない。
20220409230644_1.jpg
とは言っても入力に対する出力はほとんどの場合以下決まっていて、「○○からの高度」が入力の場合出力は「垂直方向の推力」、その他ロールピッチヨーは同じ名前の出力に設定するだけで問題ない。

 

使い分け

AIPIDとGPPIDをどう使い分けるかだが、プレイヤーが操作に介入したときに動かしたい軸をAIPIDに、それ以外の何らかの値に姿勢を固定したいとき(や、AIオフ時に作動してほしいとき)にGPPIDにするといいだろう。

 

例1:よくある船
ロールや(必要な場合)ピッチ、高度は固定したいのでGPPIDで設定、ヨーや前進後進はAIにきれいに動かして欲しいのでAIPIDで設定

 

例2:戦闘機
ヨー、ピッチ、ロール、前進後進は固定したくないのでAIPIDで設定

 

例3:飛行艦
ある高度で固定したいためホバーをGPPIDで、ロールも固定でGPPID、その他の制御はAIに任せたいのでAIPIDで設定

 

詳しい設定方法は後述

PIDの調整方法

20200421135927_1.jpg

 

設定の流れ

まずは制御するための制御機を置こう。
ピッチを操作したければビークルの前後に、ロールは左右に、ヨーは前後に、なるべく重心から遠い位置に置こう。水中ならスクリューや水中翼、空中ならジェットや翼、宇宙ならイオンスラスター(やリアクションホイール)を使うといいだろう。
逆にホバーや横移動はビークル重心近くに置くとよい。
設置する向きに注意!(推進器の方向にビークルを指で押してみるとどういう挙動をするか考えよう)

 

20220425092050_1.png
こちらは飛行艦を下から見たときの推進器の設定である。

 

横から見た設定は
20220425093357_1.png
制御機にどれを操作させるかの設定は、制御機に向かってQキーで出てくる画面で設定する。

 

20220425093020_1.jpg
基本は○○プリセットと表示されているところをクリックでいい(がたまに表示されない推進器もあるのでそこは手動で設定する必要がある)。
右クリックすると、1つの推進器がロールも制御しながらピッチも制御するように設定もできる。

 

20220425093337_1.jpg
横移動とホバーはデフォルトでは表示されないので、画像のボタンを押して表示させる必要がある。

 
 

制御機を置いたら次はPIDの設定だ。AIはデフォルトで6つの軸全てをPIDで動かしているため、GPPIDで設定したい軸はタイプ選択の欄を「なし」にしよう。

 

ロール、ピッチ、ヨーの説明はウィキペディアへ。
調整についてはこちらも一読するとより理解しやすい。

記号解説

  • kP.Gain
    反応の強さ。数値を大きくすると少しのズレでも強く修正をかける。高すぎると暴れる。低くすると効きが悪くなるが安定する。
    機体の重量が大きいほど数字を大きくした方が良い。
  • Ti.Integral
    持続的なズレを補正する強さ。小さい方が強く効く。大きすぎると効かなくなりズレたままになる。
    前進中のピッチや被弾で左右のバランスが崩れた際のロール等で重要。
    数値を小さくしすぎると旋回などができなくなる場合がある。一般的には10.0~0.4くらいか?
  • Td.Derivative
    瞬間的な変化を嫌う強さ。大きくすると強く補正するが大きすぎると暴れる。
    砲撃の反動を抑える、振動の低減等に役立つ。一般的には0.5~0.1くらいか?

グラフ解説

  • 赤線
    制御の目標値。Testの欄で0以外の場合を見れる。
  • 緑線
    制御の現在値。この波が収まるように設定すると安定した動きをする。
  • 青線
    制御の出力値。この波が高いほど強く制御し、波の幅が狭いほど細かく制御する。
  • 白線
    制御の誤差。赤と緑の差(誤差)を時間ごとに足していったものです。(積分)赤線と近いほど安定していると言える。ただしkP値を変化させると基準が変わるので注意。

また、グラフに線は出ませんが誤差の時間変化率(微分)も計算されています。
青線で表される出力は
  kP * (誤差 + 積分/Ti + Td * 微分)
で計算されます。
スラスターも無限に推力が出るわけではないので、青線がグラフの上下を振り切ってしまうと頭打ちになり「Output saturated!」とグラフの上に表示されます。

Setpoint

セットポイントは計算後の値にいくらかを追加したり減らしたりする。
フェイクセットポイントは指定した値そのままを出力する。
加筆求む。

数値設定方法

とりあえず動けばいいんだよって人向け

とりあえず動けばいいんだよって人向け

  1. kP=0.005 Ti=1.6 Td=0.4 と入力する
  2. モードを設定する
  3. パワー不足感があればならkPを上げる。過剰なら下げる。
  4. なんか揺れが収まらないなと思ったらTiに0.4、Tdに0.1を足す
  5. 揺れが減ったら何度かivを繰り返す
  6. 揺れが増えたらTiから0.4、Tdから0.1を減らす。
  7. 揺れが減ったら何度かviを繰り返す
  8. 気のすむまでiiiから繰り返す
PID制御のパラメータ調整(限界感度法)

PID制御のパラメータ調整(限界感度法)

  1. 初期化
    まず、Tiを無限大、Tdを0.00にし、行いたい制御(rollなど)を設定します。
    また、航行中などの条件の場合可能な範囲でその条件にします。(宙返りを押さえたい等の場合はそれが起こらない範囲で前進させるなど)
  2. 目標値および揺れの代表値設定
    次に、Test simulus #1に適当な数値を入れます(目標とする値から少し離れた値)。
    Test simulus #2は0もしくは目標とする値にしておきます。
    (例えば#1は3.0、#2は0.0など)
  3. 限界感度kP値選定
    kPを少し上げ、Test simulus を#1にしてしばらくした後#2にします。

    #2
    特に揺れが酷くない場合はkPをまた少し上げて繰り返します。
    そして青や緑の値が破綻せず揺れが一定の振動を保つkPを見つけます。
    (外乱が少ない環境の場合は揺れがゆっくりと落ち着く限界のkPにすること)
    ・・・もっとも、波の場合は何もせずとも揺れてるので見極めにくいです。
    その場合は明らかに揺れが酷くならない値で止めてください。例えば今回は0.3であったとします。

  4. 限界周期の測定
    kPを決めたらその値をメモし、揺れの周期を計ります。
    例えばグラフで27回ほど上に凸があれば、(グラフの横軸は25秒分なので)25/27で周期は0.93秒くらいです。
    この値もメモしましょう。
  5. 初期PIDパラメータ設定
    kPの値を3でメモした値の半分にします。例では0.15です。
    そしてTiに4で求めた周期の半分、つまり上の例では0.46を入力します。
    そしてTdにはTiの1/4の値を入れます。この場合は0.12になります。
  6. 効果確認および最適化
    また#1から#2にして揺らしてみます。
    これで緑の線が落ち着けばOKですが、揺れが十分に収まらない場合は値の更なる最適化が必要です。
    (そもそも青い線が枠外にぶっ飛ぶ場合など揺れが酷い場合はパラメーターの大幅な間違いがあります。kPを下げる等してみましょう。)
    最適化の方法はいくつかありますが、一つはTiおよびTdを1.41倍にしていく方法です。
    この例ならTiを0.65、Tdはにその1/4なので0.16してまた揺らし、それでも不十分なら更に1.41倍してTi=0.92、Td=0.23・・・と良い感じになるところを探します。
    何の参考にもなりませんがこの例で試したところ3回目のTi=1.30、Td=0.33で良い感じになりました。
  7. 残念ですが・・・
    何度1.41倍にしても(気が付けば最初の値の16倍とか)上手く行かない時はパラメーターの選定ミスや系が複雑すぎてこの方法の適応外です。
    速度等の条件を少し変えて1からやり直すか他のPID調整法をググりましょう。
実際にPID調整をやってみた

実際にPID調整をやってみた

  • 設計モードの初期の船でAdvキャノンの500mm砲(1mローダー)を撃っても大丈夫な制御を目標にする。(v1.898)
      
  1. まず、初期の船体(左図)にエンジン、制御用のでかいスクリュー、砲など今回の目標を乗せる。そのままだと当然犬神家になる(右図)。
    6966343c5563ea86.jpg6a2862c51f423b69.jpg
      
  2. そこで、ひとまずスクリューに各姿勢制御を割り当て、PID3箱のうち2つにrollとpichを割り当て、kP=0.010、Ti=無限、Td=0.00にする。

    するとなんとか浮かんでくれたので、まずピッチから調整する。

    どうやら限界感度が0.015、限界周期が1.06らしい(左図)ので、

    基本通りkP=0.008、Ti=0.53、Td=0.13を入れると安定したので一先ず仮決めとする(右図)
    e3a3f342de3a798a.jpg250e04ed5996d42f.jpg
      

  3. 次にロールを調整する。

    限界感度は0.016、限界周期が0.70だった(左図)ので、同じく基本通り設定したが安定しなかった(中図)。

    そこで、TiとTdを1.41倍を2回ほど行い、Ti=0.70、Td=0.18になると多少落ち着くのが遅いが安定した(右図)。
    0fc54ac2c3c6de14.jpg6ded40ecb0db9e97.jpgd2ba27ea9027a9e3.jpg
      

  4. しかし、ロールが安定するとピッチが暴れ始めたのでもう一度再設定することにした。

    どうやら砲で重心が狂ってるのかもっと限界感度は低いようだ。

    限界感度を0.006と下げて限界周期を再度測定する。周期は1.56のようだ。(左図)

    そこで再度値を設定し、TiとTdを2回ほど1.41倍したら落ち着いた。(右図)
    04ae7edd35e3aa09.jpg7844042446af78af.jpg
      

  5. 安定したが重量からかエンジンが水没していて見た目がよろしくないので

    高度制御も入れてエンジンを水上に出すことにする。

    3つ目のPID箱にAltitudeを設定し目標値を2.00にすると良い感じにエンジンが水上に出るようだ。

    #1の2(目標値)と#2の0(揺らせれば何でも良かった)を切り替えて揺らしたところ、限界感度は0.100のようだ。(左図)

    周期は1.25だったのでTiは0.63、Tdは0.16にしたら悪くはなさそうだったのでそのまま採用する。(右図)
    0fd2f3097b84b4ed.jpg232340c99321b360.jpg
      

  6. さて結果は・・・
    0f7cd61ea93b8238.jpg2abec3c43861a0de.jpg
      
  7. 流石に多少は揺れるが運が悪くない限りすぐに安定する。2秒毎とかで撃たない限り問題なさそうだ。

    ついでに、今回使用した砲の反動等はこんな感じ(撃てれば良かったのでいろいろガバガバ)
    4cef4c8ac212779f.jpg

  1. 一応workshopにもあげておきます。
    http://steamcommunity.com/sharedfiles/filedetails/?id=608305888

    PIDの設定の参考になれば幸いです。

PIDって何だよ∫ニョロニョロしやがってって人向け

PIDって何だよ∫ニョロニョロしやがってって人向け

  • 「PIDの説明を探すと微分や積分が出てきてなんとなくは分かるけど実際にどう処理されてるのかよく分からない」

    というのは良くある話だと思います。

    というわけで個人的にわかりやすかったページのアドレスを置いておくので頑張ってください
    http://www.make21.net/products/hard/pidservo/program.html
    http://www.picfun.com/motor05.html

    というのはいくらなんでもアレなので、上のリンク先の"PID制御の離散値(デジタル)の式"の部分を自分なりに説明を入れたいと思います。

  • PIDに良く登場する言葉は、"目標値"、"現在の値"、"差"、"操作量"などですが、

    まず、操作量を示す

    MVn=MVn-1+ΔMVn

    の部分ですが、これは車運転とハンドルで例えると

    今からのハンドルの角度 = 今までのハンドルの角度 + 今から修正をかける量

    という意味になります。今までのハンドルの角度はタイムマシンを発明しないと変えれませんので、

    考えるのは今から修正をかける量であるΔMVnだけになります。

  • では、そのΔMVnは
    ΔMVn=Kp{(en - en-1) + en/Ti*dt +Td/dT*(en - 2*en-1 + en-2)}

    と書いて有りますが、

    まず、en、en-1、en-2は今、過去、さらに過去の時の

     目標とその時の位置の差、車で言えば曲がりたい角度と実際に曲がっている角度の差

    を表しています。

    (まっすぐ進みたいけど実際は曲がってるとかだと差として出てくるし、

    真っ直ぐ進みたいときに本当に真っ直ぐ進む、曲がりたいときに良い角度で曲がっている時はenはゼロ)

    最初のKpを無視して{}の中だけに着目すれば

    (en - en-1) + en/Ti*dt  + Td/dT*(en - 2*en-1 + en-2)

    これは

    比例成分   + 積分成分  + 微分成分

    という意味になっております。

  • まず、比例成分ですが、なぜ比例と言いつつen-1を引いているのか、気になる人もいるでしょう。

    それは、比例成分は過去も未来も無視する成分なので、比例成分の過去に使った分を消さなくてはならないからです。

    比例制御だけなら

    反応の良さ*今の誤差 だけ、

    つまりMVn=kP*en と書けばいい部分を

    MVn=MVn-1 + ΔMVnと書いているので、ΔMVn=kP*en-MVn-1 つまり

    MVn=MVn-1 + kP*en - MVn-1 というような回りくどい記述になっているのです。

    まぁ、実際は比例成分のみではないので、他を消さないようMVn-1ではなく、kP*en-1という比例成分の部分だけを引いているのですが。

  • 次に、積分成分ですが、これは死ぬほど単純です。

    en/Ti*dt のうち、Tiは入力して固定しておく数ですし、dtは処理と処理の間の時間、例えば60fpsで処理してるなら1/60秒という決まった値です。

    となるとdt/Tiはそもそもdtが1/60秒とかなのでTiをよほど小さくし無い限りごく小さな固定された数です。

    と言う事は、

    積分成分とは"今の目標との誤差"に"ごく小さな数"をかけた値を"常に足し続ける"という動作になります。

    PIDの説明でPIDは現在と過去と未来を~…積分項は過去を見ていて~…みたいなのがたまにありますが、

    処理上は単純に修正量を考えた今の瞬間の誤差をすごく小さな数にして修正量に加えているだけでしたという・・・∫なんていらんかったんや(偉い人から怒られます)

    ではなぜこれが積分と言われるかというと、修正時に過去を消さずにひたすら足し続けているからです。(積み重なっていってる)

    車でまっすぐ走っているときに、横風が常に吹いている状況では、流される量に対して少しずつハンドルを切り、

    車がまっすぐ走るようになったらその位置で止めると思いますが、まさにその通りで、

    流されている量を見つつじわじわハンドルの角度を足して、差がゼロになったらゼロを足す、ただそれだけの成分です。

    もちろん行き過ぎればゆっくり角度を引いていく動作になります。(誤差の符号が逆になりますので)

    ところで、Tiの単位は秒などと時間で記載されているかと思いますが、別にそれに意味はありません。

    前の比例成分が単純に誤差に定数をかけただけであったのに対し、こちらは誤差に時間dtをかけていますので、

    単位をそろえるために同じく時間で割っているだけで、次元としては時間(秒)なのでTiの単位は秒なのです。

  • 最後に微分成分ですが、これは
    Td/dT*(en - 2*en-1 + en-2)

    を変形して

    Td*{(en - en-1)/dt - (en-1 - en-2)/dt}

    とすると理解しやすいかと思います。

    (en - en-1)/dtは今の誤差と過去の誤差の差をその間の時間で割ったもの、つまり誤差の変化速度です。(仮にvnと置きます)

    目標に近づいているとき、en < en-1 なので速度vnは負になりますし、

    目標から離れるとen > en-1で速度vnは正の値を取ります。

    そして、(en-1 - en-2)/dtは過去の誤差からさらに過去の誤差を引いて時間で割っていますので、

    過去の変化の速度となります。(要はvn-1となります)

    よって{}の中身は、目標に一定の速度で近づいている時はvn=vn-1なのでゼロ、

    近づく速さが速くなって行っている時はvn<vn-1となり負、つまり操作量を減らす方向、

    近づく速さが遅くなって行っている時はvn>vn-1となり正になり、操作量を増やす方向と

    要は"一瞬前と比べた速度の変化"を嫌う性質を持っています。

    逆に、突発的な変化、例えば路面が荒れていて急に向きが変わる、

    ゲームだと砲を撃つなどの衝撃が加わると、

    過去の速度変化に比べて大きな速度変化となりますので、

    {}の中身は「うわぁちょっと待てや落ち着け!」と、変化と逆方向の大きな値となり、操作量の修正に大きく介入します。

    で、Tdはその介入をどれくらい大きくするかという物になります。

    Tdも秒の単位で表されますが、これもTiの時と同じく成分の単位を比例成分と合わせるため、

    速度は誤差を時間の秒で割って作っていますのでTiを秒の単位にしてかければ秒は消えるよねって話です。

    つじつま合わせ感(偉い人にまた怒られそう)

  • 以上の3成分をざっくり車のハンドルの例に置き換えると、
    比例成分 = 車って普通この位ハンドル動かせばこの位曲がるよね成分
     
    積分成分 = なんかハンドルの真ん中ずれてる?この位が真ん中かな?足しとこ。成分
     
    微分成分 = うわぁ急に曲がると危ないやんやめてよ!成分
     

    その3成分を足したものがハンドルの修正量ΔMVnになり、前回の操作量MVn-1に加えて次の瞬間の操作量MVnになるのです。

    処理としては"今"と"その前"と"もうひとつ前"の 3点分 しか考慮してない
     
    kPは全体にかかるので誤差をどれくらい強く操作量に反映するか、
     
    Tiは積分成分を割っているので少なければ積分成分を強める、
     
    Tdは微分成分に掛けているので、速度の変化を嫌う強さ(実際には嫌いすぎると過剰に修正が入り自分で暴走するのですが)
     

    なので、PIDのパラメーターは別にどのくらいの範囲に落ち着いてほしいとか、どのくらいの時間を考慮しろみたいな
    強い意味のあるものではなく、それぞれの成分がどのくらい強く影響するかを調整しているだけになります。
    そしてその調整方法は色々と手法がありますので検索してください。

Tips

  • ブロックの名称設定でNOPIDと入った名前を設定しているとGPPIDによって操作されなくなる。ロールとピッチで動作しなくなる。

コメント

  • ああ…しばらく家を空けているうちにやるやる詐欺になってしまった… -- けけ? 2016-06-30 (木) 10:07:23
    • GP版PIDのハイドロフォイル及びエアポンがあるじゃない! -- 管理人/びんせんとー? 2016-08-15 (月) 20:38:32
  • 微分成分は瞬間というより未来予測だと思ってる。このままだと絶対行き過ぎるんよ、成分。わかりやすいのは舵当て -- 2016-08-23 (火) 16:36:37
  • 白線の簡単な説明わからんちん。あと難しくて説明が纏まってないので数学強い人お願いします。 -- 2016-11-02 (水) 20:39:17
    • 数学弱い管理人、感覚でだいたいこうだろ!で何とかするため説明不能・・・ッ! -- 管理人/びんせんとー? 2016-11-02 (水) 21:13:14
    • 積分項が無いと, 色々な要因で現在値が目標値からズレたところで安定してしまうことがあります. -- 2016-11-02 (水) 22:18:43
    • これを解消するために目標値からのズレを時間積分した値 (目標値からズレが継続している度合いを表すような量) に適切な値を掛けて操作量に加えるのが積分項です. -- 2016-11-02 (水) 22:18:56
    • ΔMV_n = K_p{(e_n - e_{n-1}) + (e_n/T_i)dt +T_d/dt*(e_n - 2*e_{n-1} + e_{n-2})} の中の (e_n/T_i)dt が積分成分ですが, -- 2016-11-02 (水) 22:19:17
    • 積分項自体は (MV_n の積分項) = (MV_{n-1} の積分項) + (K_p/T_i)e_n dt です. (t = n-1 までの積分項を利用して, t = n での積分項を出す計算を省略している) -- 2016-11-02 (水) 22:20:31
    • K_p, T_i, T_d が挙動にどのような影響を与えるかのイメージは Wikipedia の "PID制御" のページの GIF がわかりやすいです. (K_i = K_p/T_i, K_d = K_p*T_d) -- 2016-11-02 (水) 22:20:52
  • スラスターの場合の設定と設置場所、設置向きの詳細ってわかりませんか?人頼みで申し訳ないです -- つばめ? 2016-12-05 (月) 19:09:54
    • Pitch制御の場合、スラスターをビークルの重心よりできるだけ前に上と下向きに設置すればいいです。PID設定は下でPitchを設定すればほぼ初期設定でもある程度は安定します。 -- 2016-12-06 (火) 06:38:12
  • PID実装前からやっていて最近復帰した者です。こんな便利な調整ができるようになったのか、と意気揚々と挑戦しているのですがどうにも上手く行きません。必要手順や原理などはある程度調べた身とはいえ、浅い知識故初歩的なところで大ポカをしていないか相談させてください。お恥ずかしながら学ぶためにこのページの動画にて紹介されている十字型のドローンに限りなく近づけ(エンジン部分のみ大きさ同じの左右対称オリジナル)てPID調整を動画通りにやっていこうとしているのですが、学ぶ以前に2つの要素が邪魔をしていてにっちもさっちも行きません。まずご勝手ながら、[中の人が触るPID調整]を前提としたお話でさせていただきます。1つ目が、設定したにも関わらずスラスターが動かないこと。Test1、2や、ACBで高度設定まで揃えているにもかかわらず、ShiftCapsLockを外した途端にうんともすんとも言わずそのまま落下することが高確率で起こります。1から作り直すとたまに治りますが、機体のロードをするとほぼほぼスラスターが全て動かない状態になりやすい。更に、全部機能不全にはならないけどロールに対応するスラスターだけ動かない、といったことになったり致します。これら関連は全て同じ形に1から作った機体かつ・初期設定(全部スライダーを左にした状態でModeだけ3つそれぞれ設定し、右にスライダーを1回だけ動画のように動かす)した状態から aスラスター全機能不全 bロードし直したらスラスター全機能不全 cスラスター1ベクトルだけ機能不全 d全て動く の4パターンが発生しえます。 2つ目が、これらを解決したとしても必ず起きる現象かつ最もPID制御の学習を邪魔する要素でして、スラスターの出力調整が一切されていないことです。どういうことかと申しますと、本来でしたらどこかの方向へ傾けるとそれを抑えるために1方のスラスターが動き、ある程度水平になったら止まり、水平を通り過ぎたらその対角のスラスターが弱い出力で水平にしていき・・・といった動きをするものだと思うのですが(表現が大雑把で申し訳ありません)、こちらの場合、どこかへ傾くと前後左右上下6方向のうちどれか1方向の全てのスラスターが最大出力で点火し(大概は下向きスラスターが全点火)、水平になるどころか設定高度を遥かに超える高度まで飛びつつ傾きがどんどん大きくなり、最終的に上下反転し着水し、下方向のスラスターが燃料が切れるまで最大出力で水面に押し付け続けます。この一切の動きにPID本来の調整するような動きをしているとは到底思えず、しかしながら機体にGP、エアリアルAI付きの機体にPIDを乗せた瞬間発動するため間違いなくGP、PIDが元凶なのだろうと確信しています。こういった症状などが記事にされているものはネットで調べた限りでは見つからなかったため、真勝手ながらここに相談させていただきました。現状、症状が把握しづらい文章でございますが、何か心当たり等ございましたら助言等頂けると大変有難いです。仕様変更等が原因の可能性もあるのではないかと筆者は考えており、今は公式フォーラム等にも手を伸ばしているところです。長文大変失礼いたしました。 -- 2017-11-29 (水) 01:08:19
    • 色々原因が考えられるのでポイントを箇条書き書いていきます。 ・まず、AIを載せると予想外の動きをする可能性が高いので、学習目的ならAIは外してPID(GP)だけで機体を制御すること。 ・次に、スラスターの噴射設定がきちんとされているかどうかを確認すること。Thruster craftについてのページに調整方法が載っているので間違っていないか確認する。 ・最後に、スラスターが動かないのは、おそらくスライダーをすべて左にしていてkpが0になっているのが原因である可能性が高い。 よって、スライダーの初期設定は全て左ではなくkPとTiが右端、Tdは左端にしてから、 このページの「数値設定方法」を参考に調整してぶれを調整していくのがおすすめ。 -- 2017-11-29 (水) 13:35:10
    • もしやとは思いますが、AIに(CARD)Propulsion Balancingを装着していないでしょうか。装着していないのでしたら、上の方が仰る通りの手順で解決していけばよろしいかと思います。 -- 2017-11-29 (水) 18:49:53
  • Pid のグラフが何も表示されなくなる原因ってなんなのでしょうか?制御自体は働いてる気がするのですがグラフが見えなくなってしまうことがあります。以前見えてたビーグルでもロード挟むと消えていたり… -- 2017-12-29 (金) 15:22:55
    • 時折発生するバグでござい_(:3 」∠ )_ -- 管理人/びんせんとー? 2017-12-29 (金) 17:05:54
    • バグなので大人しくFtD再起動しましょう… -- 2017-12-29 (金) 23:03:34
  • AIPIDはAIの挙動の詳細設定見たいです、kPを0にすればAIはその項目に対し、関与しなくなります。なのでGPPID側でピッチとロールに0を、あとはお好みで高度を指定し、AIPID側ではkPをそれぞれ0にすれば、敵に対して水平に突っ込んでいくので、飛行船や空中要塞に使えそうです。 -- NightWork? 2018-06-13 (水) 21:43:40
  • UI変わって参考にしづらくなってますね…… -- 2019-05-13 (月) 00:32:33
  • AIのお尻ふりふり挙動が嫌だから方向転換の時だけヨーを利かせるって設定にしたいけどどうすれば良いんだ……。 -- 2019-06-09 (日) 11:19:09
    • どう軌道したいかをACBで制御するのがなれるとやりやすいよ。AIは常に方向転換してるだけだから -- 2019-06-11 (火) 00:24:22