問題タブ [control-theory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pid - PID (比例積分微分) 出力のスケーリング
式を使用して PID 関数を実装しました。
出力を特定の範囲内に保つにはどうすればよいですか? 0-255 と言います。0 から 255 以外の値を無視すると、揺れる動作が発生しますか?
c# - PID コントローラーの積分項が極度の不安定性を引き起こす
ロボットをコンパスの方向に向けるように設計された PID コントローラーをロボットで実行しています。PID 補正は、20Hz のレートで再計算/適用されます。
PID コントローラーは PD モード (IE、積分項がゼロになっている) でうまく機能しますが、微量の積分でも出力が不安定になり、ステアリング アクチュエータが左端または右端に押されます。
コード:
なぜこれが起こっているのか、それを修正する方法を知っている人はいますか?
c# - ナビゲーション アプリケーションでのコンパス ラップアラウンドの調整
コンパスの方向で車両を誘導するアプリケーションがあり、車両が 360 度から 0 度に交差するときに問題が発生しています。
この場合、制御ループには、進行方向に沿って曲がる最も近い方法を計算するためのスマートはありません。
たとえば、車両が 360 度の方向に従うように指示されている場合、車両は必然的に数度、エーテル側にドリフトします。0 度以上にドリフトすると、制御ループが異常になり、再び 360 度になるように車両を完全に操縦しようとします。
これに対処する優雅な方法はありますか?
ナビゲート関数の記述方法では、外部 PID コントローラー クラスを使用し、次のように見出しを計算します。
ありがとう!
java - PIDコントローラーを使用してプログラム内のリソースを管理する
PIDコントローラータイプのメカニズムを使用して計算リソースを管理する前例があるかどうか疑問に思いました(http://en.wikipedia.org/wiki/PID_controllerを参照)。
計算リソースとは、スペアスレッド、スペアプロセス、キューの長さなどを意味します。
たとえば、apache.confでは、スペアサーバー、最小サーバーなどの数を指定できます。
私が持っている質問は、新しいサーバーの生成またはリソースプールの縮小をどのように制御するかです。
負荷が一定のレベルを超えて増加した場合、Amazonグリッドなどのソースポーンノードにも同じことが当てはまります。
この質問への回答として、私は次のことに興味があります。
はい、いいえがある場合、多分この質問に答えてください
オープンソースの世界でこれが使用されている場所のアクセス可能な例がある場合
この目的のためにJava、PythonなどでPID制御を実装するライブラリがある場合。
ありがとう。
c - 回路を C に変換する
フィードフォワード オペアンプ PID ループを C コードに変換する方法を知っている人はいますか? 私はそのような変換を行おうとしていますが、正直なところ、どこから始めればよいかわかりません。ADC、電圧、電流などを介してすべての入力値を取得できますが、フィードフォワード PID のコーディングは私にとって少し新しいものです。何か案は?
controller - PID コントローラの積分部分がわかりません
PIDコントローラーの不可欠な部分を理解していません。ウィキペディアからのこの擬似コードを想定しましょう:
Integral は、最初はゼロに設定されています。そして、ループ内で、時間の経過とともにエラーを統合しています。測定値または設定値に (正の) 変更を加えると、誤差は正になり、積分は時間の経過とともに (最初から) 値を「食い尽くし」ます。しかし、私が理解していないのは、エラーが安定してゼロに戻ると、積分部分にはまだ何らかの値(時間の経過とともに積分されたエラー)があり、コントローラーの出力値に寄与することですが、そうではありません。
誰か説明してくれませんか?
matlab - 入力数と出力数をハードコーディングせずに MIMO (多入力多出力) 伝達関数システムを作成する
はじめ
に 大規模なシステムの一部として、リード ダイアゴナル*の出力に入力のみをリンクする多入力多出力伝達関数を作成しようとしています。つまり、入力 1 と出力 1、入力 2 と出力 2 などの間にゼロ以外の伝達関数があります。
*MIMOシステムが公正なコメントであると本当に考えているかどうかにかかわらず、実際にはMIMOであるより大きなシステムにリンクしているため、この形式でそれを望んでいます.
ハードコーディング
伝達関数を連結することでこれを実現できます
これは問題なく動作しますが、(a) 入力/出力の数をハードコーディングし、(b) 入力と出力が増えるほど恐ろしくなります。
diag function
この問題は diag 関数には完璧に見えましたが、タイプ 'tf' には diag が定義されていないようです
手動
のマトリックス操作 マトリックスを手動で操作しようとしました (実際に機能することを期待していたわけではありません)。
tf の Direct to MIMO 形式
tf には、すべての分子と分母を別々に表現し、MIMO システムを直接作成する形式もあります。これをハードコードされていない形式で使用しようとしました
これはほとんど機能しましたが、残念ながら、分子と分母は0ではなく、オフ対角で空です。エラーにつながる
質問
入力と出力の数を「ハードコーディング」せずに、伝達関数から MIMO システムを作成することは可能ですか?
matlab - sysic の使用時に「出力引数 "arraydata" (およびおそらくその他) が呼び出し中に割り当てられていません」というエラーが発生する
以下のコードに示すように、sysic コマンドを使用して相互接続されたシステムを作成する場合。
ここで、scaledPlant、WControl、および WError はすべて 4 入力 4 出力モデルです。
次のエラーが表示されます
このエラーの原因は何ですか?
robotics - クワッドコプター PID コントローラー
環境
私の仕事は、屋内で飛ぶよりもマイクロ クワッドコプター用の速度 PID コントローラーを設計および構築することです。クワッドコプターが飛行している部屋には、クワッドコプターの速度と位置の両方のデータを提供できるカメラベースの高精度屋内追跡システムが装備されています。結果として得られるシステムは、各軸 (x、y、z) のターゲット速度を受け入れ、その速度でクワッドコプターを駆動できる必要があります。
クアッドコプターの制御入力は、ロール/ピッチ/ヨー角度と高度の推力パーセンテージです。
私の考えは、SPがその方向の望ましい速度である各軸にPIDコントローラーを実装することです。測定値は追跡システムによって提供される速度であり、出力値はロール/ピッチ/ヨー角とそれぞれの推力パーセントです。
残念ながら、これが制御理論との最初の接触であるため、正しい方向に向かっているかどうかはわかりません。
質問
基本的な PID コントローラーの原理は理解していますが、速度 (m/s) をロール/ピッチ/ヨー (ラジアン) に変換する方法は、誤差を合計して定数を掛けるだけでわかりません。はい、ベロシティとロール/ピッチは正比例するので、正しい定数を掛けると正しい結果が得られるということですか?
垂直速度コントローラーの場合、速度が 0 に設定されている場合、クアッドコプターは実際には上昇も下降もせずに高度を維持する必要があります。エラーが実際に 0 のときに推力値が 0 にならないように (ホバリングし続け、落下しないようにする)、これを PID コントローラーとどのように統合できますか? 出力に定数項を追加する必要がありますか?
システムが実装されたら、PID ゲイン パラメータを調整するための適切なアプローチは何でしょうか? 手作業で試行錯誤?
システム開発の次のステップは、設定点として目的の位置 (x、y、z) を取得する位置 PID コントローラーの追加レイヤーです。測定された位置は屋内追跡システムによって提供され、出力は x/y です。 /z 速度。これは良いアプローチですか?これらの PID 制御レイヤーを分離する理由は、プロジェクトが再利用性を促進するより大きなフレームワークの一部であるためです。位置座標をセットポイントとして直接取得し、ロール/ピッチ/ヨー/スラスト値を出力する PID コントローラーの単一レイヤーを使用する方がよいでしょうか?