科学・技術
ドローンの物理学
要約
この記事は、ドローンの物理学について解説しています。読者は入門レベルの線形代数、微積分、古典力学に精通していることが想定されています。ドローンの座標系、状態変数、作用する力とトルク、運動方程式、そしてモーターとプロペラがどのように推力とトルクを生成し、制御システムがプロペラ速度を決定するかについて説明しています。
全文翻訳
ドローンの物理学(更新日:2026年6月25日木曜日)、2024年1月27日セクション:ホーム / ポストカテゴリ:エンジニアリング、タグ:シミュレーション、UAV、空力学的に素晴らしい偉業をこなせる友好的なドローン。この記事はドローンの物理学について解説しています。読者は入門レベルの線形代数、入門レベルの微積分、入門レベルの古典力学に精通していることが想定されています。この作品は、適応制御に関する私の研究と、ドローン用のPythonシミュレーションフレームワークであるmultirotorに関するAIAA DASC 2023での発表から適応されたものです。ここでの表記法は、Charles Tytlerの優れた作品から多くを借用しています。
X、Reddit、HackerNewsで議論に参加してください。よりインタラクティブな解説については、Poor Man’s AutogradやSurprise! A Derivation of Entropyをご覧ください。
以下のトピックが順にカバーされています:
車両を記述するために使用される座標系。
車両を記述するために使用される状態変数。
ボディに作用する力とトルク。
運動方程式(線形および角運動)。
モーターとプロペラがどのように力とトルクを生成するか。
制御システムがプロペラ速度をどのように決定するか。
車両の記述
マルチローターUAVは6自由度でモデル化されます:線形運動のための3つの線形軸:$x, y, z$、および回転運動のための3つの角軸:$\phi, \theta, \psi$。
座標を使用するには、座標系に合意する必要があります。通常、North-East-Down(NED)システムが使用されます。正のx軸の方向は「前方」/北向きと見なされます。正のy軸は「右」/東、正のz軸は「下」です。
これは右手座標系です。親指の方向への軸周りの正の回転は、指を曲げた方向です。例えば、正のz回転は+xから+yへ行きます。
ボディの状態を表すために2つの参照フレームが使用されます:
公称、慣性、参照フレーム$n$は、軸が任意のグローバル方向と整列している静的な参照フレームです。これらは列ベクトル $\hat{n} = [\hat{x}^n, \hat{x}^n, \hat{x}^n]^T$ で表されます。
ボディ固定、非慣性、参照フレーム$b$は、運動中の剛体の重心に整列した軸を持ちます。これらは列ベクトル $\hat{b} = [\hat{x}^b, \hat{y}^b, \hat{z}^b]^T$ で表されます。ボディフレームは車両と共に移動および回転します。ボディフレームの原点をドローンの重心に固定することを考えます。
線形表現
ボディ固定参照フレーム$b$は、車両の重心に固定されています。つまり、ボディフレームから車両への変位は常に0です。車両の位置は、慣性フレームからのボディフレームの変位 $\hat{r}^n$ によって表されます。
車両の速度は、慣性フレームに対するボディフレームの速度です。ここでは、速度をボディフレームの座標で表すことを選択します。
角表現
慣性参照フレームにおけるボディの向きは、Tait-Bryan角度の規約に従います。つまり、向きは3つの連続した回転で記述できます:ヨー($\psi$)、ピッチ($\theta$)、ロール($\phi$)—この順序で。回転の順序は重要です。慣性フレーム $\hat{n}$ から開始して、ヨー $\psi$ は慣性z軸周りのボディフレームの回転 $R(\psi)$ です。このヨーされたフレーム $\hat{n}_\psi$ から開始して、ピッチ $\theta$ は新しいy軸周りの回転 $R(\theta)$ です。そして、このヨーおよびピッチされたフレーム $\hat{n}_{_\psi,_\theta}$ から開始して、ロール $\phi$ は新しいx軸周りの最終回転 $R(\phi)$ です。最終的な積 $\hat{n}_{_\psi,_\theta,_\phi}$ がボディ参照フレームです。
車両の角速度 $\hat{w}^T = [\omega_x, \omega_y, \omega_z]$ は、ボディフレーム自体の瞬間的な回転率です。向きの各角度は、慣性軸からボディフレームへの順序付けられた回転(ヨー、次にピッチ、次にロール)中に、独自の参照フレーム($\hat{n}, \hat{n}_\psi, \hat{n}_{_\psi,_\theta} = \hat{b}$)で定義されます。
ロール回転は最後に行われ、その結果がボディフレームです。したがって、x軸周りのレートである $\omega_x$ はロールレート $\dot{\phi}$ に等しくなります。ピッチは最初のヨーの後に行われますが、ロールの前です。したがって、y軸周りのレートである $\omega_y$ は、ボディフレームを取得するためにロール $\phi$ で回転されたフレーム $\hat{n}_\psi$ におけるピッチレートです。最後に、ヨー回転は慣性フレームで最初に行われます。したがって、ボディフレームのz軸周りのレートである $\omega_z$ は、ピッチ $\theta$ とロール $\phi$ で回転された慣性フレームにおけるヨーレートです。これは行列方程式として表現できます:
$$ \begin{bmatrix} \omega_x \\ \omega_y \\ \omega_z \end{bmatrix} = R(\phi)\cdot R(\theta) \begin{bmatrix} 0 \\ 0 \\ \dot{\psi} \end{bmatrix} + R(\phi) \begin{bmatrix} 0 \\ \dot{\theta} \\ 0 \end{bmatrix} + \begin{bmatrix} \dot{\phi} \\ 0 \\ 0 \end{bmatrix} $$$$ \begin{bmatrix} \omega_x \\ \omega_y \\ \omega_z \end{bmatrix} = \begin{bmatrix} \dot{\phi} + \dot{\psi} \sin{\theta}\\ - \dot{\psi} \sin{\phi} \cos{\theta} + \dot{\theta}\\ \dot{\psi} \cos{\phi} \cos{\theta} \end{bmatrix} $$
慣性フレームとボディフレームの整合
ボディフレームは、(1)変位と(2)回転により慣性フレームと異なる場合があります。ボディフレームの原点はUAVの原点に固定されています。したがって、慣性フレームからのボディフレームの変位は、UAVの慣性位置です: $\hat{r}^n = [x,y,z]^T$。
ボディフレームの原点に対して相対的なベクトルは、慣性フレームの原点に変位すると回転して見える場合があります。慣性フレームのベクトル $\hat{\mathcal{V}}^n = [x^n,y^n,z^n]^T$ と、ボディフレームの原点での同じベクトル $\hat{\mathcal{V}}^b = [x^b,y^b,z^b]^T$ が与えられた場合、ボディから慣性参照フレームへの回転行列 $R_b^n$ は次のように定義されます。各回転行列は次のようになります:
$$ \begin{align} R(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & c\phi & -s\phi \\ 0 & s\phi & c\phi \end{bmatrix} \end{align} $$$$ \begin{align} R(\theta) = \begin{bmatrix} c\theta & 0 & s\theta \\ 0 & 1 & 0 \\ -s\theta & 0 & c\theta \end{bmatrix} \end{align} $$$$ \begin{align} R(\psi) = \begin{bmatrix} c\psi & -s\psi & 0 \\ s\psi & c\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} \end{align} $$$$ \begin{align} \hat{\mathcal{V}}^b &= R(\phi)\cdot R(\theta) \cdot R(\psi) \cdot \hat{\mathcal{V}}^n \\ \hat{\mathcal{V}}^b &= R_n^b \hat{\mathcal{V}}^n \\ \begin{bmatrix} x^b \\ y^b \\ z^b \end{bmatrix} &= \begin{bmatrix} c\psi c\theta & - s\psi c\theta & s\theta\\ s\phi s\theta c\psi + s\psi c\phi & - s\phi s\psi s\theta + c\phi c\psi & - s\phi c\theta\\ s\phi s\psi - s\theta c\phi c\psi & s\phi c\psi + s\psi s\theta c\phi & c\phi c\theta \end{bmatrix} \begin{bmatrix} x^n \\ y^n \\ z^n \end{bmatrix} \end{align} $$
ここで $c | s$ は $\phi | \theta | \psi$ のコサインとサインをそれぞれ表します。この回転は、慣性視点からボディフレームで作用する力を調べるときに役立ちます。上記は、回転した参照フレーム間でベクトルを瞬時に変換します。
回転フレームでの導関数の整合
ただし、参照フレームが回転している間にベクトルが変化している場合、変化率はそれほど単純ではありません。ベクトルの変化率は、(1)ボディフレームでのベクトル量自体の変化と、(2)フレーム座標の変化によるものです。
つまり、瞬間的な角速度 $\hat{\omega}= [\omega_x, \omega_y, \omega_z]$ で軸周りに回転するボディフレームにおいて、共位置にある慣性フレームで測定されたボディフレームのベクトル $\hat{\mathcal{V}}^b = \hat{b} \cdot \hat{\mathcal{V}}$ の時間微分は、輸送定理によって与えられます:
$$ \begin{align} \frac{d \hat{\mathcal{V}}^b}{d t} &= \hat{b} \cdot \frac{d \hat{\mathcal{V}}}{d t} + \frac{d \hat{b}}{d t} \cdot \hat{\mathcal{V}} \\ &= \hat{b} \cdot \frac{d \hat{\mathcal{V}}}{d t} + \hat{\omega} \times \hat{\mathcal{V}}^b \\ &= \hat{b} \cdot \frac{d \hat{\mathcal{V}}}{d t} + \begin{bmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{bmatrix} \hat{\mathcal{V}} \end{align} $$
輸送