問題タブ [pid-controller]
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.
arrays - 「fminunc」を使用して配列を返す関数を最小化する
MATLAB を使用して、3 つの PID コントローラー ゲインの自動調整を行うコードを作成しています。私が考えている方法は、システムのエラー (目的の状態と取得した状態の差) を最小限に抑えることです。そのために、PID ゲインを入力パラメーターとして受け取り、計算されたエラーを返す関数をコーディングしました。すなわち:
3 つのセット ポイント (入力コマンド) があるため、出力の次元errors_vector
は 3*N です。ここで、N は時間サンプルの数です (私の場合は 1000)。それが私が最小化したい機能です。そのために、fminunc
コマンドを使用してみました。
ただし、最後のコードを実行すると、次のエラーが発生します。
これは明らかに、それerrors_vector
が 3*1000 の配列であり、スカラーではないという事実によるものです。
私の質問は、プログラミングの観点から、fminunc
配列を返す関数を最小限に抑える方法はありますか?
一方、制御理論の観点から、PID ゲインを自動的に最適化できる別の方法はありますか?
私は自分自身を十分に明確にしたことを願っています。
ありがとう
matlab - simulink での PID 自動調整のアルゴリズム
Simulink で PID ブロックの自動調整に適用されるアルゴリズムは? Zeigler-Nicholson または Cohen-Coon チューニング法ですか、それとも他のチューニング法ですか?
algorithm - ロボットに追従するラインで PID アルゴリズムを実装する
私は、NXT マインドストームを設定した小さなプロジェクトに取り組んでいます。私の意図は、線を非常にスムーズに、そしてできるだけ速くたどることができるロボットを構築することでした. したがって、ちょっとした調査の後、私は PID アルゴリズムを見つけ、そのアルゴリズムを理解して NXC コードに実装することができました。ロボットはアルゴリズムに従ってすべてを正しく実行しましたが、ラインが中断 (ギャップ) すると、ロボットはラインを失い、元に戻ることができなくなります。問題は、ギャップが9cmまでなら彼は戻ってくることができるが、10cmになると彼はラインを失うだけだ. 私は1つの光センサーを使用しています。この問題に対処するために PID コードを調整する方法はありますか?
私のコード:
pid-controller - 高い安定性と最小限のオーバーシュートを実現する PID チューニング方法
PID を使用して温度を制御しようとしていますが、2 つの問題があります。システムは +/- 0.005C で振動できません。オーバーシュートはほとんど必要ありません。制御したいシステムが少し遅く、方法を理解したいので、電球とクラスa pt-100を使用して温度を制御しようとしてテスト/学習しています。現在、私は Ziegler-Nichols 法を使用していますが、オーバーシュートがあります。
robotics - 低速バスでのモーター/位置の制御
次の問題で自分自身を隅にコーディングしたようです: 遅い RS485 ベースのバス接続を介してロボットのモーターを制御しようとしています。残念ながら、私はモーターのファームウェアにアクセスできないので、現在のセットアップにとどまっています。
最大の問題は、モーターの目標速度しか制御できないことです。組み込みのエンコーダーを介して絶対位置を取得できますが、モーター自体のファームウェアに組み込まれた位置決め機能はありません。
2 番目の問題は、バス接続が非常に遅いことです。ややぎこちないプロトコルでは、フル サイクルに 25 ミリ秒が必要です。この方法で速度調整を介して位置を制御できますか?
25 ミリ秒先の位置を推定し、現在の位置を引き、25 ミリ秒で割って、次の目的の位置に必要な速度を計算する単純なアプローチを試みました。ただし、これは、固定位置をターゲットにすると、特定の速度でひどく振動します。これは、サイクル時間が長くなり、多くのオーバーシュートが発生するためだと思います。
PID コントローラーが役立つかもしれませんが、ターゲット値がどうなるかはわかりません。これまで使用したすべての PID は固定ターゲットを使用していました。完全に動くターゲット (つまり位置) は、少なくとも私には想像しにくいものです。
このような状況に対処するための通常の方法は何ですか? 単純なアプローチを組み合わせて、追加のオフセット項に対してのみ PID 制御を追加することはできますか? または、別のモーターを購入する必要がありますか?