1. 説明
数か月前にすでに完全に機能する速度制御クラスを作成していましたが、ここでデモンストレーションする前に大規模なクリーニングを行う必要があると判断しました。この投稿では、モーター制御プログラムがどのように構成されているかを簡単に説明し、その後、関連する制御理論の背景を説明し、その後、その理論が実際のコードでどのように実装されるかを説明します。
ソース コードとサンプル スケッチはgithub.com/1988kramer/motor_control で見つけることができます。
2. プログラムの構成
可能な限りハードウェアを反映するようにプログラムを構成したので、モーターとエンコーダーの低レベルの機能を処理するために Motor と Encoder の 2 つのクラスを作成しました。「Speed Control」クラスは、「Motor」クラスと「Encoder」クラスを使用して、モーターの速度を正確に制御します。ライブラリ構造の詳細については、次の図を参照してください。
GDE エラー: ファイル取得エラー - 必要に応じてエラー チェックをオフにしてください (404: 見つかりません)
上の図では、SpeedControl の機能を使用する 2 つのクラス、PositionControl と Differential Drive があることがわかります。PositionControl は SpeedControl のインスタンスを使用して位置制御機能を提供し、Differential Drive は PositionControl の 2 つのインスタンスを使用して Colin などの差動駆動ロボットに高度な制御を提供します。
今日は SpeedControl クラスについてのみ説明しますが、PositionControl と Differential Drive については数週間以内に投稿される予定です。
3. 制御ループの基礎知識
私の中で