第1章で「制御すべき量は上下・ロール・ピッチ・ヨーの 4 つ、だからロータは 4 つ」 というところまで来ました。この章では、その 4 つのロータの推力が どうやって 4 つの量に変換されるのか——機体の幾何と物理——を順序立てて組み立てます。 到達点はアロケーション行列(配置行列)と、その逆変換である ミキシングです。

2.1 プロペラが機体に及ぼすもの: 推力と反トルク

1 枚のプロペラが機体に与えるものは 2 つあります。ひとつは言うまでもなく 推力 \(T = C_T\,\omega^2\)。もうひとつが反トルクです。 そして反トルクは、実は二つの物理現象からなります。

(1) 空気による反作用のトルク

プロペラは回転するとき空気を押しのけます。作用反作用の法則により、 空気を押しのけているプロペラは、同時に空気から押し返されています。 CW(時計回り)に空気をかき回すプロペラは、空気から CCW(反時計回り)向きに 押されるのです。モータとプロペラは機体フレームに固定されていますから、 プロペラを CW に回すと、空気は機体を CCW に回そうとします。 この定常的なトルクは推力に比例し、\(\tau_{air} = \kappa\,T\) (StampFly では \(\kappa = C_Q/C_T = 6.12\times10^{-3}\ \mathrm{m}\)、現行プロペラの実測)と書けます。

もし同じ回転方向のプロペラだけで機体を作ると、機体は常にプロペラと反対方向に 回ろうとします。だからマルチコプタは違う回転方向のプロペラを同じ数だけ 用意して、互いの反トルクを打ち消しているのです。

(2) 回転体を加速するときの反トルク

もうひとつは、プロペラの回転数を変える瞬間に現れるトルクです。 モータを机の上に置いて始動すると、起動の瞬間に身震いするように一瞬回転する—— あれが加速による反トルクで、\(\tau_{acc} = J_{mp}\,\dot{\omega}\) (\(J_{mp}\): ロータ+プロペラの慣性モーメント)と書けます。 空気の反作用が回転数の変化に追随してじわりと変わるのに対し、 こちらははるかに速く現れます。

StampFly の数値で両者の大きさを見積もると:

空気の反作用 \(\kappa\,\Delta T\)加速の反トルク \(J_{mp}\dot{\omega}\)
性質定常(回転数に追随)過渡(回転数変化中のみ)
4発合計の目安*約 0.22 mN·m初期 約 0.6 mN·m
* 各モータ推力を ±10% ステップさせた場合の概算 (回転部合計の慣性 \(J_{mp}=1.375\times10^{-8}\ \mathrm{kg\,m^2}\)・ホバ点の実効時定数 約 16 ms。 いずれも2026年7月の再測定で確定した値——写真デジタイズ・実測諸元・コーストダウン試験の合成)。 回転数を変えている最中は、加速の反トルクが空気の反作用を大きく上回る。

ヨーの制御は、この空気と加速、二つの反トルクを上手に使うことがポイントになります。 定性的には「立ち上がりの速い応答を加速の反トルクが担い、定常を空気の反作用が支える」 という役割分担です。システムとして正確に書くと、モータの指令からヨーの回転までは 積分器+零点+一次遅れという構造になり、この零点こそが加速反トルクの正体です ——導出は第4章で行います。

2.2 座標系とロータ配置

ここから数式で組み立てるために、機体座標系を決めます。航空分野の標準である NED 系(機体では FRD: Front-Right-Down とも呼びます)を使います: \(x\) 軸は機首方向、\(y\) 軸は右方向、\(z\) 軸は下向きです。 \(z\) が下向きなのは違和感があるかもしれませんが、右手系のまま 「機首上げ・右傾き・右旋回」を正にできる、航空の伝統的な取り方です。

StampFly のロータ配置は X 配置で、重心から前後・左右に \(d = 0.023\ \mathrm{m}\) ずつ離れた位置に 4 つのモータがあります。回転方向は対角同士が同じ:

モータ位置 \((x_i, y_i)\)回転方向
M1(前右)\((+d, +d)\)CCW
M2(後右)\((-d, +d)\)CW
M3(後左)\((-d, -d)\)CCW
M4(前左)\((+d, -d)\)CW
StampFly のロータ配置(機体仕様より)

2.3 アロケーション行列を組み立てる

4 つの推力 \(T_1,\dots,T_4\) が機体に与える合計の力とトルクを、一つずつ足し上げます。

手順 1 — 総推力。 これは単純な和です: \(F = T_1+T_2+T_3+T_4\)。

手順 2 — ロール・ピッチトルク。 位置 \((x_i, y_i)\) にある上向き推力 \(T_i\) は、 てこの原理で重心回りのトルク \(\boldsymbol{r}_i \times \boldsymbol{F}_i\) を作ります。 NED 系で計算すると、ロール(\(x\) 軸回り)は \(\tau_x = -\sum y_i T_i\)、 ピッチ(\(y\) 軸回り)は \(\tau_y = +\sum x_i T_i\) となります。 直感的には「左側を強くすると右に傾く力(正のロール)」「前側を強くすると機首上げ(正のピッチ)」です。

手順 3 — ヨートルク。 ここだけ出所が違います。ヨーは腕の長さではなく、 2.1 節の反トルク \(\kappa T_i\) の総和です。符号はプロペラの回転方向の逆: CCW プロペラ(M1, M3)は機体を CW(正のヨー)に、CW プロペラ(M2, M4)は CCW(負のヨー)に回そうとします。

手順 4 — まとめる。 以上を行列の形に整理すると:

$$\begin{pmatrix} F \\ \tau_x \\ \tau_y \\ \tau_z \end{pmatrix} = \underbrace{\begin{pmatrix} 1 & 1 & 1 & 1 \\ -d & -d & +d & +d \\ +d & -d & -d & +d \\ +\kappa & -\kappa & +\kappa & -\kappa \end{pmatrix}}_{\text{アロケーション行列 } A} \begin{pmatrix} T_1 \\ T_2 \\ T_3 \\ T_4 \end{pmatrix}$$

これがアロケーション行列(配置行列)です。名前の通り、 中身はロータの配置(位置と回転方向)だけで決まっています。 機体の設計図が、そのまま 1 つの行列に凝縮されているわけです。

2.4 ミキシング = アロケーション行列の逆変換

制御側が欲しいのは逆向きの変換です。姿勢制御器が「総推力 \(F\)、ロールトルク \(\tau_x\)、 ピッチトルク \(\tau_y\)、ヨートルク \(\tau_z\) が欲しい」と言ったとき、 それを実現する各モータの推力 \(T_1,\dots,T_4\) を求めたい。 クアッドコプタでは \(A\) が 4×4 の正方行列なので、逆行列がそのまま使えます: \(\boldsymbol{T} = A^{-1}(F, \tau_x, \tau_y, \tau_z)^{\mathsf{T}}\)。 成分で書くと、きれいな足し引きになります:

$$\begin{aligned} T_1 &= \tfrac{F}{4} - \tfrac{\tau_x}{4d} + \tfrac{\tau_y}{4d} + \tfrac{\tau_z}{4\kappa} &\text{(前右 CCW)}\\ T_2 &= \tfrac{F}{4} - \tfrac{\tau_x}{4d} - \tfrac{\tau_y}{4d} - \tfrac{\tau_z}{4\kappa} &\text{(後右 CW)}\\ T_3 &= \tfrac{F}{4} + \tfrac{\tau_x}{4d} - \tfrac{\tau_y}{4d} + \tfrac{\tau_z}{4\kappa} &\text{(後左 CCW)}\\ T_4 &= \tfrac{F}{4} + \tfrac{\tau_x}{4d} + \tfrac{\tau_y}{4d} - \tfrac{\tau_z}{4\kappa} &\text{(前左 CW)} \end{aligned}$$

この逆変換をミキシングと呼びます。 「ロールしたければ左右で足し引き、ピッチなら前後で足し引き、ヨーなら対角で足し引き」—— ラジコンの世界で昔から使われてきた言葉ですが、正体はただの逆行列です。

ヨーの効きはなぜ弱いか: ロール・ピッチの項は \(1/(4d)\)、 ヨーの項は \(1/(4\kappa)\) で割られています。StampFly では \(d = 23\ \mathrm{mm}\) に対して \(\kappa = 6.1\ \mathrm{mm}\)。 ロールとピッチは推力を腕の長さ \(d\) で効かせられるのに対し、ヨーは反トルク経由の 短い「実効腕」\(\kappa\) しか使えないため、同じ推力変化から得られるトルクが はるかに小さいのです。実機の同定でも実効プラントゲインは Roll 102 / Pitch 70 / Yaw 19 \(\mathrm{rad/s^2}\)(単位入力あたり)と、 ヨーだけ 1 桁近く小さい値になっています。

2.5 なぜ「対角」でなければならないか

第1章の疑問——なぜ対角同士を同じ回転方向にするのか——に、行列の言葉で答えられます。 ロール操作ではミキシングが右ペア(M1, M2)と左ペア(M3, M4)を逆向きに増減します。 対角配置なら、右ペアも左ペアも「CW 1 発 + CCW 1 発」なので、 CW 全体と CCW 全体の強さの釣り合いは崩れません。 ロールでもピッチでも、ヨーのバランスは取れたまま—— ロールやピッチを回すときにヨーが同時に起きないのです。

これは \(A\) の行同士の直交性として現れています (例えばロール行とヨー行の内積は \((-d)(\kappa)+(-d)(-\kappa)+(d)(\kappa)+(d)(-\kappa)=0\))。 では、隣接配置(右 2 発を CW、左 2 発を CCW)にしたらどうなるか。 ヨー行が \((-\kappa, -\kappa, +\kappa, +\kappa)\) となり、 ロール行のちょうど \(\kappa/d\) 倍になってしまいます。 行列の言葉で言えば \(A\) が特異(行列式がゼロ、逆行列が存在しない)。 物理の言葉で言えば:

下の操作盤で、実際に触って確かめてみてください。

2.6 体感する: ミキシング操作盤

スライダーが操縦者の指令(スロットル・ロール・ピッチ・ヨー)、 その下の機体が上から見た StampFly です。ミキシングを通った各モータの推力の増減と、 機体に生じる合計トルクが表示されます。 「隣接配置」ボタンで回転方向の配置だけを変えると何が壊れるかに注目してください。

スロットル+0% ロール0 ピッチ0 ヨー0

操作盤の計算はこの章のミキシング式そのままです(\(d=0.023\ \mathrm{m}\)、 \(\kappa=6.12\times10^{-3}\ \mathrm{m}\)、ホバリング推力 \(T_0=90.3\ \mathrm{mN}\)/発)。 隣接配置モードでも「対角配置用のミキシング」を使い続けることで、 配置と計算が食い違うと何が起きるかを見せています。トルクは機体に生じる正味値です。

2.7 推力から Duty へ

ミキシングの出力は各モータの推力指令 \(T_i\) です。 実際にモータに送るのは PWM の Duty(0〜1 の指令値)なので、最後にもう一段の変換が要ります。 考え方は 2 段階です:

(1) 推力 → 角速度。 \(T = C_T\,\omega^2\) を逆に解いて \(\omega_{cmd} = \sqrt{T_{cmd}/C_T}\)。StampFly のファームウェアも 実際にこの式で角速度指令を作っています。

(2) 角速度 → Duty。 モータの定常特性から、目標の \(\omega\) を出すのに 必要な Duty を求めます。StampFly のベンチ実測では、ホバリング付近で 推力は Duty にほぼ比例(\(T \propto \mathrm{Duty}^{0.97}\))という 素直な特性でした。したがって一次式の近似でも実用になります。

ただし第1章で見た通り、この変換には個体差があります(同じ Duty でも 回転数は 5〜16% ズレる)。さらに電池電圧の低下でも特性は変わります。 それでも飛べるのは、この変換の誤差をフィードバック制御が黙って吸収してくれる からです。誤差を検知して打ち消すという第1章の構図が、ここでも効いています。 モータの応答遅れ(時定数 約 20 ms)や電圧補償の話は、第4章と実装の章で掘り下げます。

まとめ

次章では、この章で作った「入力(4 つのトルクと推力)」を受け取る側—— 機体の運動方程式——を組み立てます。

データの出所: 機体仕様(モータ位置・κ・\(J_{mp}\))、モータベンチ実測(2026 年 3 月)、 実機同定による軸別プラントゲイン。計算の再現スクリプトは notes/calc/ にあります。