**2 次元クアッドコプターをゼロからシミュレーションする**
- **目的:** 既存のライブラリを一切使わず、基本的な原理だけで完結した 2‑D クアッドコプタ―(四旋翼)シミュレーションを構築します。
- **主な構成要素:**
- 物理エンジン(ニュートン力学・オイラー積分)
- モーター推力モデル
- 制御系(PIDまたは単純フィードバックループ)
- 可視化(基本的な 2‑D 描画)
- **概要手順:**
1. 状態変数を定義する(位置・速度、姿勢・角速度)。
2. 運動方程式を実装する。
3. モーターのダイナミクスと推力計算を追加する。
4. ホバリングや目標軌道維持のために制御器を設計する。
5. シンプルな 2‑D ウィンドウでクアッドコプタ―を描画する。
- **参考リソース:**
- 可視化用オープンソースライブラリ(例:Pygame、Matplotlib)。
- UAV ダイナミクスと制御理論に関する文献・資料。
*ドキュメント終了*
## Japanese Translation:
**要約:**
この記事では、長さ \(\ell\) と質量 \(m\) を持つ2本のアームを備えた四足クルーター(クワッドコプター)の単純な二次元(平面)シミュレーションが示されています。座標は水平を \(y\)、垂直を \(z\)、\(yz\)-平面におけるヨー角 \(\phi\) と定義し、反時計回りを正とします。
**力:** 合計推力 \(u_1 = F_1+F_2\) はボディに垂直に作用し、トルク入力 \(u_2 = (F_1-F_2)\ell\) が回転を制御します。
運動方程式は
\[
m\,\ddot y = -\frac{u_1}{m}\sin\phi,\qquad
m\,\ddot z = \frac{u_1}{m}\cos\phi-g,\qquad
I\,\ddot\phi = \frac{u_2}{I}\ell .
\]
状態ベクトルは \(x=[y,z,\phi,\dot y,\dot z,\dot\phi]^T\) であり、ダイナミクス関数 \(f(x,u)\) はそれに応じて定義されます。
例で使用した物理パラメータは、\(m=0.8\,\text{kg}\)、\(g=9.81\,\text{m/s}^2\)、\(\ell=0.5\,\text{m}\)、および \(I=1\times10^{-3}\,\text{kg·m}^2\) です。
Euler 積分は \(t\in[0,15]\) s の範囲で 1000 ステップ(\(dt\approx0.015\) s)を用いて行われます。二つのテストケースが示されています:(i) トルクゼロ (\(u_1=mg+0.01\,\text{N}\)、\(u_2=0\)) ではゆっくり上昇し、\(y\) と \(\phi\) は一定に保たれます; (ii) 非ゼロトルク (\(u_1=mg+0.5\,\text{N}\)、\(u_2=5\times10^{-5}\,\text{N}\)) では機体が約3 rad 回転し、 \(\cos\phi<g m/u_1\) のときに揚力を失って落下します。
シミュレーションは \(z<0\)(地面衝突)になると終了します。
ダイナミクス、積分ループ、および位置・速度・入力の matplotlib プロットを実装した Python コードが提供されています。