クアッドロータードローン 推力配分シミュレーター 戻る
ドローン制御・航空機

クアッドロータードローン 推力配分シミュレーター

クアッドロータードローンは 4 つのモーター推力だけで合計推力と 3 軸モーメント(ロール・ピッチ・ヨー)の 4 自由度を作り出します。本ツールは X/+/H フレームごとのアロケーション行列をリアルタイムで解き、4 モーターそれぞれの必要推力と「あとどれだけ踏めるか」を可視化します。

パラメータ設定
機体質量 m
kg
アーム長 L
m
フレーム形式
機首と翼の配置。X が現代の主流
ロール角 φ
°
ピッチ角 θ
°
ヨーレート ψ̇
°/s
鉛直加速度 a_z
m/s²
ホバリング=0、上昇+、下降-
推力係数 k_T
N/(rad/s)²
モーメント係数 k_M
N·m/(rad/s)²
計算結果
必要合計推力 T (N)
モーター1 推力 (N)
モーター2 推力 (N)
モーター3 推力 (N)
モーター4 推力 (N)
推力余裕 (%)
クアッドロータ平面図 — 推力・ヨー方向・姿勢

4 つの円がモーターで、棒の長さが各モーターの必要推力に比例します。中央の矢印がヨー方向、機体の傾きがロール・ピッチを示します。

4 モーター推力配分
推力配分 vs ロール角 φ
理論・主要公式

$$T_{total} = \frac{m\,(g + a_z)}{\cos\phi\cos\theta},\qquad [T_1, T_2, T_3, T_4]^T = A^{-1}\,[T, M_\phi, M_\theta, M_\psi]^T$$

A はアロケーション行列(4×4)。対称配置のクアッドロータでは A の逆行列が解析的に求まり、各モーターの必要推力が代数的に得られます。

$$M_\phi = I_{xx}\,\dot\omega_\phi,\quad M_\theta = I_{yy}\,\dot\omega_\theta,\quad M_\psi = I_{zz}\,\dot\omega_\psi,\qquad I_{xx}\!\approx\!I_{yy}\!\approx\!\tfrac{1}{2}mL^2,\ I_{zz}\!\approx\!mL^2$$

必要モーメントは慣性モーメント I と角加速度 ω̇ の積。本ツールではロール・ピッチに対しゲイン 5、ヨーレート微分に係数 0.05 を使う簡易モデルで ω̇ を生成します。

$$T_i = k_T\,\omega_i^2,\qquad \tau_i = k_M\,\omega_i^2$$

プロペラ推力 T_i は回転数 ω_i の 2 乗に比例し、反作用トルク τ_i も同じ ω² に比例します。CW/CCW 配置で τ を打ち消すことで、推力を維持したままヨートルクだけを残せます。

クアッドロータードローン推力配分 — 4 モーター制御アロケーション

🙋
ドローンって 4 つの羽でどうやって前進したり回頭したりしてるんですか?プロペラの方向が変わるわけでもなさそうだし、ヘリみたいなテールローターもないですよね。
🎓
いい問いだね。クアッドロータは「プロペラの向き」じゃなくて「4 つの回転数の差」で全部やってるんだ。前進したいときは前 2 つのモーターを少し下げて後ろ 2 つを上げる。すると機首が前に傾いて、合計推力ベクトルが斜め前を向く。これで重力と釣り合いつつ前方向の力が出る。回頭はもっとトリッキーで、対角の 2 つを CW、残り 2 つを CCW で回しておいて、CW 側を少し増やすと反作用トルクが残って機体が CW 方向に回る、という仕組みなんだ。
🙋
なるほど!その「どのモーターをどれだけ増減するか」を決めるのが、このシミュレーターのテーマの「推力配分」なんですね?
🎓
そう、まさにそこ。専門用語では Control Allocation とか Mixer と呼ばれていて、PX4・ArduPilot・Betaflight など主要なフライトコントローラの中核に必ず入っているブロックだよ。入力は「合計推力 T と 3 軸モーメント M_φ, M_θ, M_ψ」の 4 値、出力は「モーター 1〜4 の推力 T1〜T4」の 4 値。両者を結ぶのが 4×4 のアロケーション行列 A で、対称な機体なら A の逆行列が綺麗に書ける。だから本来は線形代数の問題なんだけど、ここから現場の難しさが始まるんだ。
🙋
線形代数を解くだけなのに、何が難しいんですか?
🎓
2 つあるね。1 つ目は「モーターには上限と下限がある」こと。逆行列の解が T_i < 0 や T_i > T_max を返してきても、現実のモーターは負の推力を出せないし、最大値以上も出せない。これを飽和(saturation)と呼んで、急激な機動や過積載で日常的に起きる。対処は擬似逆行列+制限、QP(二次計画)、優先順位付きヌル空間配分など。2 つ目は「フレーム形状で行列が変わる」こと。+ 字と X 字ではモーターの並びが 45° 違うので、係数行列の形が違う。このツールで「フレーム形式」を切り替えると、同じ姿勢指令でも T1〜T4 の配分パターンが変わるのが見えるよ。
🙋
右上の「推力余裕」って何を見てるんですか?ホバリング状態だと 66% くらいになってますね。
🎓
これは「あと何 % モーターを踏めるか」の指標で、(モーター最大推力 − 4 個中最大の T_i) / モーター最大推力 で計算してる。一般的なレース用ドローンは推力対重量比 3〜5、つまり静止状態で 25% スロットルくらいでホバリングし、残り 75% がマージン、というセッティング。本ツールでは「モーターはホバリング推力の 3 倍まで出る」と仮定してるので、デフォルト条件でちょうど 66% という数字になる。20% を下回ると赤信号で、急機動・突風・バッテリー電圧降下のいずれかでモーター飽和→姿勢崩壊→墜落になりやすい。Inspire 2 みたいに重い機体は推力余裕が薄いから慎重な機動が要求される、というわけ。
🙋
ヘキサ(6 ローター)にすると何が変わるんですか?単純に推力が 1.5 倍になるだけ?
🎓
推力以上に大きいのは「フォールトトレラント」になることだね。クアッドは 1 モーターが死んだら復帰不能だけど、ヘキサは 1 モーターが故障しても残り 5 モーターで再配分して飛行を維持できる(ヨー制御は弱るけど)。だから DJI Matrice や Boston Dynamics LS3、農薬散布の AT-Drone といった産業用機は冗長性のためにヘキサ・オクタを選ぶことが多い。一方で重量・コスト・整備性は悪化するので、消費者用の Mavic や Skydio はクアッドのまま、というトレードオフ。本ツールはヘキサも「4 モーター等価」で簡略化してるけど、雰囲気は掴めるはずだよ。

よくある質問

クアッドロータは 4 つのモーター推力 T1〜T4 という 4 入力で、合計推力 T と 3 軸モーメント(ロール M_φ・ピッチ M_θ・ヨー M_ψ)の合計 4 自由度を制御します。これは [T; M_φ; M_θ; M_ψ] = A·[T1; T2; T3; T4] という 4×4 のアロケーション行列 A で表せ、所望の T と M から個々のモーター推力を求めるには A の逆行列を作用させます。これを推力配分(Control Allocation, Mixer)と呼び、姿勢制御ループの直後・モーター指令の直前に置かれる基本ブロックです。
+ フレームでは前後左右の 4 軸に各モーターが乗るため、前モーターと後モーターの差がそのままピッチモーメントになり、左右モーターの差がロールモーメントになります(係数は 1/(2L))。X フレームでは機軸が翼間の中央に来るため、すべてのモーターがロール・ピッチ両方に寄与します。有効アームは L/√2 となり、ピッチ・ロールの係数は 1/(4·L/√2) になります。X フレームは前後左右がモーターの間に位置するため、機首方向のカメラ視野にプロペラが映り込まないという実用上の利点があります。
プロペラは推力を生むと同時に、回転方向の反対方向に反作用トルク(reaction torque, k_M·ω²)を機体に与えます。4 つのプロペラのうち 2 つを CW、残り 2 つを CCW と互い違いに配置すると、全モーター同回転数のときヨートルクが打ち消されます。CW 側を増やし CCW 側を減らせば(合計推力は維持したまま)、機体全体に正味のヨートルクが残り、機体は CW 方向にゆっくり回頭します。これがヨー制御の原理で、PX4・ArduPilot・Betaflight などすべての主要 FC がこの形でヨーチャンネルを実装しています。
アロケーション結果のあるモーター推力 T_i がモーター最大値(典型的にホバリング推力の 3 倍)を超えた状態が「飽和」です。実機ではモーターはそれ以上のスロットルに反応できないため、要求モーメントが出せず、姿勢が崩れます。一時的な飽和は許容できますが、急激な機動(高ロール・ピッチ)や、過積載状態でホバリング推力に対する余裕(thrust margin)が小さい場合は飽和が常態化し、墜落の主要因になります。対策は (1) 機体を軽くする (2) より高 KV のモーター・大径プロペラに変える (3) 制御則側で擬似逆行列+優先順位付きヌル空間配分(prioritized null-space allocation)を入れる、などです。

実世界での応用

消費者用ドローン:DJI Mavic シリーズ、Skydio 2、Parrot Anafi などはすべてクアッドロータ(X フレーム)構成で、本ツールが扱うアロケーション行列をフライトコントローラ内で毎制御周期(典型 1 kHz)解いています。Mavic 3 のような可変ペイロード機ではバッテリー残量とジンバル方向で重心が動くため、推力余裕が動的に変化することを織り込んだ姿勢制御則が必要です。

産業用・農業用ドローン:DJI Matrice 350、Agras T50、Yamaha FAZER R などはヘキサ・オクタロータが主流で、1 モーター故障時にも安全に降下できるフォールトトレラント制御を備えます。本ツールで言えば「ヘキサ」モードを選んだときの推力余裕の大きさが、こうした冗長設計の余裕に対応します。農薬散布では液体の動きで重心が大きく動くため、リアルタイムの質量推定とアロケーションの再キャリブレーションが組み合わさります。

レーシングドローン(FPV):5 インチクラスの FPV 機は推力対重量比 5〜8 という極端な仕様で、本ツールでいう推力余裕が 80% 以上になります。これにより 100 deg/s 級の急ロール・ピッチを破綻なく出せます。Betaflight のミキサーは X フレームのアロケーション行列に「Air Mode」と呼ぶスロットル飽和回避ロジックを足したもので、本ツールの保守的な 3:1 想定とは全く違う世界です。

都市型 eVTOL(電動 VTOL 機):Joby、Lilium、Volocopter などの空飛ぶクルマは 6〜36 ローターの分散電気推進構成で、本質的に「巨大なマルチコプター」の推力配分問題を解いています。1 ローター故障時の再配分は安全認証上の必須要件で、本ツールのヘキサ/オクタ的な発想を発展させた「QP ベースの動的アロケーション」が現場で使われています。

よくある誤解と注意点

最初の落とし穴は、「推力配分行列の逆行列を解けば終わり」と思い込むこと。本ツールが示すように、姿勢が大きく傾いたり、ヨーレートが急に変わったりすると、特定モーターの T_i が 0 を下回ったり最大値を超えたりして飽和します。線形代数だけでは負値が平気で出てくるため、現場の実装では必ず「飽和判定→優先順位付きで再配分→残ったマージンを別自由度に振り分ける」という非線形なクランプロジックを入れます。最終消費者向けの DJI 機がジンバル付きで穏やかな姿勢しか取らないのは、飽和を避ける運用上の制約という側面もあるのです。

2 つ目は、「推力係数 k_T と反作用係数 k_M は固定」という前提。本ツールでは定数として扱いますが、実機では (1) 機速(前進すると後ろのプロペラが乱流の中に入る)、(2) 地面効果(地表近くで推力が増える)、(3) バッテリー電圧降下、で k_T が変動します。Betaflight の「Throttle Boost」や PX4 の「Battery-compensated throttle」は、こうしたモデル誤差を補償するためのフィードフォワード項です。実装時は「公称 k_T で十分」と決めつけず、実機計測で 10〜30% の補正項を持つことを想定してください。

3 つ目は、「ヘキサ・オクタロータなら安全」という過信。確かに 1 モーター故障に対する冗長性はありますが、本ツールが示す通り、ヨートルクは反作用トルクの差で生まれるため、対角線上のプロペラが同時に死ぬとヨー制御だけが効かなくなる、という穴があります。Boston Dynamics やヤマハの産業機がオクタロータを採用するのは、ヘキサより 1 個多いことで、どの 1 モーターが死んでもヨー制御を残せる組み合わせが存在する、という設計上の理由が大きいのです。冗長性は「ローター数」ではなく「故障モードと配置」で決まります。

使い方ガイド

  1. 機体質量(kg)とアーム長(m)を入力します。例えば DJI M300 RTK 相当の 9kg、アーム長 0.68m を設定できます。
  2. ロール角度・ピッチ角度(度)を設定して、機体の姿勢を指定します。ホバリング時は両方 0°、前進飛行時はピッチ角度を -10~-20° に設定します。
  3. シミュレーターが 4 つのモーターに対する必要推力(N)と推力余裕(%)を計算・表示します。各モーターの推力が最大定格値以下であることを確認してください。

具体的な計算例

機体質量 1.2kg、アーム長 0.25m、ロール 0°、ピッチ 0° のホバリング状態:必要合計推力は 1.2kg × 9.8m/s² = 11.76N です。X フレーム配置(モーター1=前右、モーター2=後左、モーター3=前左、モーター4=後右)の場合、各モーターはほぼ 2.94N(11.76N ÷ 4)の推力を出力します。最大推力が 15N のモーターを使用していれば、推力余裕は約 80% となります。ピッチ角度を -15° に傾けて前進飛行させると、前側モーター(1,3)の推力が増加し、後側モーター(2,4)が減少します。

実務での注意点