quadcopterには、(とりわけ)姿勢推定アルゴリズムと制御アルゴリズムの2つの独立したアルゴリズムが含まれています。
姿勢推定アルゴリズムは、クワッドコプターの方向に関する情報(ロール、ピッチ、ヨー角)を計算します。
制御アルゴリズムは、クワッドコプターの向きがパイロット(またはオートパイロットソフトウェア)が期待するものと一致するようにモーターを駆動する役割を果たします。このアルゴリズムは、(姿勢推定アルゴリズムから)推定されたクワッドコプターの角度を読み取り、モーターの速度を変更して目的の角度に一致させることを試みます。PIDは、クワッドコプターに適した一般的な制御アルゴリズムです。
ジンバルロックは、姿勢推定アルゴリズムで発生する可能性のある現象です。制御アルゴリズムとは何の関係もありません。そのため、ジンバルロックをテストするためにESC、モーター、またはプロペラは必要ありません。コードを変更して、ロール、ピッチ、およびヨーの角度を表示し、クワッドコプターを手動で動かすときに正しい値が計算されることをテストできます。これは、クワッドコプターをコンピューターにテザリングしたり、Bluetoothを使用したり、プラットフォームに応じて他の方法を使用したりできる場合があります。
角度が正しく計算されていれば、四元数を気にする必要はありません。正しく計算されない場合、四元数は助けます。姿勢推定アルゴリズムは、制御アルゴリズムが使用する3つの角度を出力しますが、四元数や3x3行列などの異なる内部表現を使用する場合があります。その場合でも、姿勢情報を角度に変換して、使用可能なデータを制御アルゴリズムに提供します。一般的に言えば、四元数は直感的ではありませんが、計算効率は高くなります。これにより、Arduinoなどの低速プラットフォームに適しています。行列または角度は、より高速なハードウェアのためのより簡単な選択かもしれません。どちらかのソリューションについて詳しく説明する必要がある場合はお知らせください。ただし、クォータニオンを実装する必要があるとは思えないため、この段階で詳細を説明するのは時期尚早です。
最後に、角度が正しく計算されている場合、クアドコプターループを作成する方法は、角度ではなく角速度を制御することです。スティックがクワッドコプターの角度を表す場合、フルループを実行する方法はありません。スティックの位置をクアッドコプターループとして視覚化してみてください。その理由を理解する必要があります。ただし、スティックが角速度を制御する場合は、ループの速度を制御できます。
あなたのプロジェクトで頑張ってください!
注:簡単にするために、姿勢推定アルゴリズムと制御アルゴリズムの両方でデータを行列または四元数として操作する理論的なオプションについては触れていません。そのようなアルゴリズムを実装するクワッドコプターを見たことがありません。