開發紀錄:雙軸雲台的馬達怎麼挑——從力矩反推到電流,以及沒人先告訴你的天底禁區

這是 LocalPapa Notes 開發紀錄系列的第二十四篇。第二十三篇算的是一台三軸球型吊艙,三個軸各自獨立走一次公式鏈。但市面上大量的 EO/IR 吊艙其實是雙軸——方位(azimuth)加俯仰(elevation),沒有 Roll。

直覺會覺得雙軸比較簡單:少一個軸、少一組計算。實際上正好相反。 三軸雲台的每個軸大致可以當成獨立的單軸問題來估;雙軸的方位軸不行——它的慣量、角速率需求、乃至於能不能追得動,全都隨俯仰角變化

這篇把那些變化算清楚,走完兩條獨立的力矩→電流鏈,最後推到一個很少有人先講的結論:你選的 Kt,直接決定了正下方那個追不動的禁區有多大。

文獻基礎

雙軸構型在文獻上其實比三軸更被完整處理過,因為導引頭與光電吊艙的主流就是雙軸。

Ekstrand, B. (2001). Equations of Motion for a Two-Axes Gimbal System. IEEE Transactions on Aerospace and Electronic Systems, 37(3), 1083–1091.

這是整條線的起點。它推導 yaw–pitch 雙軸構型的完整運動方程,假設剛體、無質量不平衡,並把各項分門別類以便解讀。對選型最關鍵的兩個貢獻:一是明確處理了 yaw gain 隨 pitch 角變化(下面第二節整節都在講這件事),二是給出慣量交叉耦合項,並指出這些耦合可以透過特定的慣量對稱條件消掉——也就是說,耦合有一部分是可以在機構設計階段就設計掉的,不必全丟給控制器。

Abdo, M., Vali, A. R., Toloei, A. R., & Arvan, M. R. (2013). Research on the Cross-Coupling of a Two Axes Gimbal System with Dynamic Unbalance. International Journal of Advanced Robotic Systems.

放掉 Ekstrand「無質量不平衡」的假設,把動不平衡加回來,並在兩軸的穩定迴路之間接一個 cross-coupling unit。結論之一是基座角速率越大、雲台響應的超調越明顯——對機載平台特別要緊。

Dynamic Modeling and Coupling Characteristic Analysis of Two-Axis Rate Gyro Seeker (2018). International Journal of Aerospace Engineering, Article 8513684。同時含 cross-coupling、mass imbalance 與擾動力矩,並用頻域辨識伺服馬達的轉移函數。

Huang, Q., et al. (2024). Modeling and Control of a Two-Axis Stabilized Gimbal Based on Kane Method. Sensors, 24(11), 3615。用 Kane 法避開 Newton–Euler 的鉸鏈約束力與 Lagrange 的二階微分方程,換到結構更簡單、算得更快的模型。

這四篇的共同點是都在解動力學與控制,沒有一篇直接回答「所以馬達要多大」。下面是把它們的結論接到選型上的那一段——這一段是本站補的,不在論文裡。

這台是什麼

以一台中型雙軸 EO/IR 吊艙為對象:方位軸 360° 連續、俯仰軸涵蓋水平到正下方。掛在多旋翼或無人直升機下方。

重要:以下每一個輸入值都是我依這個級別推理出來的估算,不是任何廠商公布的規格。有價值的是推導與敏感度,不是這些數字本身。
  • 球體直徑 140 mm → 迎風投影面積 A = π × 0.070² = 0.01539 m²
  • 內框(酬載)質量 1.2 kg,主慣量 Jx 0.0011(沿光軸,最小)、Jy = Jz 0.0036 kg·m²
  • 方位框架(叉臂)慣量 J_azframe = 0.0020 kg·m²
  • 力臂:俯仰 10mm、方位 7mm
  • 穩定頻寬:俯仰 12 Hz、方位 10 Hz;目標角偏移 θ_max = 0.1 mrad
  • 殘留重心偏移 0.5 mm(配平後仍有的量)
  • 摩擦 0.02 N·m(絕對值——第二十三篇證明過比例模型在這個量級會低估)
  • Cd = 0.60v = 20 m/s、陣風 1.4Kt = 0.10 N·m/ASF = 2.5
  • 目標視線角速率 90°/s、匯流排 24V、驅動器電流上限 6A

共用的一步:v_design = 28 m/sF_drag = ½ × 1.225 × 28² × 0.60 × 0.01539 = 4.4353 N


一、雙軸真正的難點:方位轉動搬不動視線

先看幾何,後面所有結論都從這裡長出來。

雙軸的關鍵:方位軸轉一圈,視線掃出多大的錐面 雙軸的關鍵:方位軸轉一圈,視線掃出多大的錐面 俯仰 0°(水平視線)方位軸俯仰軸視線 LOSL·cos = 104方位轉 10° → 視線移動 10.00°要讓視線移動 10°,方位軸得轉 10.0° 俯仰 −85°(近乎正下方)方位軸俯仰軸視線 LOSL·cos = 9方位轉 10° → 視線移動 0.87°要讓視線移動 10°,方位軸得轉 114.7° 掃掠半徑 = L × cos(俯仰角)。俯仰角越大,同樣的方位轉動搬動視線的能力越差。
圖 1:方位軸轉動時,視線端點掃出的圓,半徑是 L × cos(俯仰角)。俯仰 0° 時方位轉 10°、視線就跟著移動 10°;俯仰 −85° 時方位同樣轉 10°,視線只移動 0.87°。

方位軸是垂直的,視線從俯仰軸出發。方位轉動時,視線端點畫出一個圓——而那個圓的半徑是 L × cos(el)。俯仰角越接近正下方,圓越小,同樣的方位轉動能搬動視線的量就越少。

反過來寫,就是選型真正要用的那條式子:

ω_az = ω_LOS / cos(el)

Ekstrand 把這一項稱為 yaw gain 隨 pitch 角變化。俯仰 −85° 時,要讓視線用 90°/s 移動,方位軸得轉 1033°/s——放大 11.5 倍。俯仰 −88° 時放大 28.6 倍。到 ±90°(正下方或正上方)時,視線與方位軸重合,方位軸再怎麼轉都搬不動視線,這就是雙軸的 gimbal lock。

對無人機吊艙來說這不是理論問題。正下方是最常用的觀測姿態之一(繞著目標盤旋時),而那恰好就是雙軸的奇異點。

二、三個量都隨俯仰角變化

雙軸與三軸最大的差別,是方位軸的參數不是常數。

三個量隨俯仰角變化(雙軸特有) 三個量隨俯仰角變化(雙軸特有) 方位軸慣量 J_az(kg·m²) 0.0000 0.0030 0.0060 0° 最大、90° 最小,差 1.81 Yaw gain 1 / cos(el) 0 6 12 90° 發散(gimbal lock) ↑ 28.6 @88° 重力力矩(N·m) 0.0000 0.0030 0.0060 0° 最大、90° 歸零 0 20 40 60 80 俯仰角(度)
圖 2:三個量隨俯仰角的變化,共用同一條橫軸。J_az 與重力力矩在 0° 最大、隨俯仰角遞減;yaw gain 反過來,在接近 90° 時發散。

方位軸慣量 J_az——內框繞垂直軸的慣量會隨它自己轉動而改變(慣量張量隨姿態旋轉):

J_az(el) = J_azframe + Jz·cos²(el) + Jx·sin²(el)

代進去:el 0° → 0.00560el 90° → 0.00310 kg·m²差 1.81 倍,0° 最大。

重力力矩——配平後殘留的重心偏移在俯仰軸上產生 T_grav = m·g·e·cos(el):0° 時 0.00589 N·m,90° 時歸零。這一項落在俯仰軸上,不在方位軸。

Yaw gain 1/cos(el)——0° 時是 1,85° 時 11.5,88° 時 28.6,90° 發散。

三、算錯的直覺:方位軸的最壞情況不在 0°

J_az 在 0° 最大,直覺會說方位軸的力矩需求也在 0° 最大。算出來不是。

因為 yaw gain 同時放大了角加速度需求:方位軸要產生的是 α_az = α_LOS / cos(el)(假設俯仰角在該瞬間固定;若俯仰同時在動會更糟)。於是慣性力矩變成:

T_inertia,az(el) = J_az(el) × α_az0 / cos(el)

兩個效應反向:慣量降 1.80 倍、secant 升 11.47 倍。淨結果是放大 6.39 倍,最大值落在行程末端而不是 0°:

  • el 0°J_az 0.00560α 0.3948T_inertia 0.00221T_required 0.13314
  • el 60°J_az 0.00373α 0.7896T_inertia 0.00294T_required 0.13497
  • el 80°J_az 0.00318α 2.2735T_inertia 0.00722T_required 0.14566
  • el 85°J_az 0.00312α 4.5296T_inertia 0.01413T_required 0.16294

我原本假設「慣量最大處就是力矩最壞處」,實際算完才發現不對。這是先算再下結論、而不是反過來的價值。

還有一件更重要的:這條曲線沒有內部極大值。它單調遞增,並在 90° 發散。所以方位軸根本不存在「最壞俯仰角」——你把設計上限訂在哪,最壞情況就在哪。上表的 85° 不是算出來的峰值,是我先訂的上限。

四、兩軸的最壞情況落在相反端

俯仰軸的變數只有重力(J_el = Jy 與俯仰角無關),所以它在 0° 最壞;方位軸被 yaw gain 主導,在接近奇異點時最壞

兩軸的最壞情況落在俯仰行程的相反端 兩軸的最壞情況落在俯仰行程的相反端 T_required(N·m) 0.00 0.05 0.10 0.15 0.20 0 20 40 60 80 俯仰角(度) 俯仰軸 方位軸 俯仰軸真正的峰值 0.1807(el 0°) 設計上限 el 85° → 0.1629 ↑ 不收斂,90° 發散 俯仰軸有真正的內部極大值(0°);方位軸沒有——它單調遞增、在 90° 發散,所以「最壞情況」等於你把設計上限訂在哪。
圖 3:兩軸的 T_required 隨俯仰角變化。俯仰軸有真正的內部極大值(0°);方位軸沒有——它單調遞增、在 90° 發散,圖上標的 85° 是設計上限而不是峰值。
  • 俯仰軸el 0°T_required = 0.18071 N·m(重力項 0.00589 在此最大)——這是真正的極大值,往兩側都只會更小。
  • 方位軸el 85°T_required = 0.16294 N·m——但這是設計上限給出來的數字,不是曲線的峰值。上限訂 88° 就變 0.2154,訂 89° 就變 0.3030
實務含意很直接:驗證的時候不能只在一個姿態量。 俯仰軸要在水平姿態壓測,方位軸要在接近正下方壓測。挑中間某個角度做一次,兩軸都沒測到最壞情況。

五、兩條力矩→電流鏈

現在把兩軸各自走完。注意兩條鏈的組成項不同——重力只出現在俯仰軸,yaw gain 只影響方位軸。

雙軸的力矩→電流:兩條鏈各自算,不能共用一組數字 雙軸的力矩→電流:兩條鏈各自算,不能共用一組數字 俯仰軸(最壞:el 0°)風阻 T_wind0.04435慣性 T_inertia0.00205摩擦 T_friction0.02000重力 T_grav0.00589小計0.07229× SF 2.5 → T_required0.18071÷ Kt 0.10 → I_peak1.807 A 方位軸(設計上限 el 85°)風阻 T_wind0.03105慣性 T_inertia0.01413摩擦 T_friction0.02000重力 T_grav0.00000小計0.06517× SF 2.5 → T_required0.16294÷ Kt 0.10 → I_peak1.629 A 同一顆吊艙、同樣的風速與摩擦,兩軸的需求差 11%——差在重力項與 yaw gain 落在不同軸上。
圖 4:兩軸各自的力矩組成與換算結果。重力只出現在俯仰軸、yaw gain 只放大方位軸的慣性項——同一顆吊艙、同樣的風速與摩擦,兩軸的需求仍差 11%。

俯仰軸(最壞:el 0°)

  • T_wind = 4.4353 × 0.010 = 0.04435 N·m
  • T_inertia = 0.0036 × (2π×12)² × 0.0001 = 0.00205 N·m
  • T_friction = 0.02000 N·m(絕對值)
  • T_grav = 1.2 × 9.81 × 0.0005 = 0.00589 N·m
  • 小計 0.07228× 2.5T_required = 0.18071 N·m÷ 0.10I_peak = 1.807 A
  • I_cont = (0.04435 + 0.00589) / 0.10 = 0.502 A(穩態要頂住的風阻+重力)

方位軸(設計上限 el 85°)

  • T_wind = 4.4353 × 0.007 = 0.03105 N·m
  • T_inertia = 0.00312 × 0.39478 / cos(85°) = 0.01413 N·m
  • T_friction = 0.02000 N·m
  • 重力:0(重力力矩落在俯仰軸上,方位軸是垂直軸)
  • 小計 0.06518× 2.5T_required = 0.16294 N·m÷ 0.10I_peak = 1.629 A
  • I_cont = 0.03105 / 0.10 = 0.310 A

ΣI_peak = 3.44 A(兩軸同時吃峰值)。


六、再往回一步:Kt 決定你的天底禁區

到這裡為止跟三軸沒有本質差別。雙軸特有的那一步在這裡。

T = Kt · I 只回答了「電流夠不夠」。但方位軸還有第二個約束:它轉得夠快嗎? 而 yaw gain 讓這個約束在接近正下方時急速收緊。

馬達在匯流排電壓下的轉速上限大致是 ω_max ≈ V_bus / Ke,而 SI 單位下 Ke = Kt。留 30% 給內阻壓降、PWM 與控制餘裕:

ω_max ≈ 0.7 × V_bus / Kt

要追得動,需要 ω_LOS / cos(el) ≤ ω_max,整理後:

禁區半角 = asin( ω_LOS · Kt / (0.7 · V_bus) )

選了 Kt,就等於選了天底禁區有多大 選了 Kt,就等於選了天底禁區有多大 禁區半角 = asin( ω_LOS · Kt / (0.7 · V_bus) ) 0.0 0.1 0.2 0.3 0.4 0.5 扭力常數 Kt(N·m/A) 禁區半角(度) GL30 0.20° GL60 II 2.06° GL60 2.38° 條件:匯流排 24V、留 30% 餘裕、目標視線速率 90°/s。Kt 越大扭力越省電流,但同樣電壓下轉不快,禁區就越大。
圖 5:Kt 與天底禁區半角的關係,並標出型錄裡三顆馬達的落點。同樣 24V、同樣 90°/s 的追蹤需求,Kt 越大禁區越大。

代進 24V 匯流排、90°/s 的追蹤需求:

  • Kt = 0.10(本篇假設):ω_max 168 rad/s → 追得到 el 89.46°禁區半角 0.54°
  • Kt = 0.385(CubeMars GL60 II):ω_max 43.6 rad/s → 追得到 el 87.94°禁區半角 2.06°
  • Kt = 0.444(CubeMars GL60):ω_max 37.8 rad/s → 追得到 el 87.62°禁區半角 2.38°

這就是雙軸選型真正的取捨。 Kt 越大,同樣的力矩越省電流(I = T/Kt)——三軸選型到這裡就結束了。但在雙軸上,Kt 越大代表同樣電壓下轉得越慢,正下方那個追不動的錐形禁區就越大

方位軸的可行 Kt 因此被兩側夾住:

  • 下限(力矩)Kt ≥ T_required / I_max = 0.16294 / 6 = 0.027
  • 上限(轉速)Kt ≤ 0.7 × V_bus / ω_az,max,而 ω_az,max 由你能接受多大的禁區決定

七、所以這台該配什麼

俯仰軸需求 T_required 0.18071、方位軸 0.16294 N·m(設計上限 85°),兩軸都已含 SF 2.5。

  • CubeMars GL30 KV290Kt 0.038I_peak 7.4A):峰值扭矩 0.28 N·m,兩軸都過;禁區僅 0.20°。但餘裕只有 ×1.6/×1.7,以估算值來說偏緊。
  • CubeMars GL60 II KV28Kt 0.385I_peak 2.75A):峰值 1.06 N·m,餘裕 ×5.9/×6.5,很充裕;代價是禁區 2.06° 與重量。
  • CubeMars GL60 KV25Kt 0.444I_peak 4A):峰值 1.78 N·m,禁區 2.38°

判斷取決於你的任務。如果任務常態是繞著正下方的目標盤旋, 的禁區意味著在那個錐形內視線會落後、影像會拖——這時該往低 Kt 走,並用電流上限把扭力補回來。如果主要是側視、俯仰很少超過 60°,禁區就不是約束,可以放心選高 Kt 省電流。

換句話說:三軸的選型只要回答「電流夠不夠」,雙軸還得回答「你能接受多大的禁區」。 後面這個問題不是機構問題,是任務問題——所以它必須在選馬達之前就先問清楚。

這篇的邊界

  • 所有輸入值都是估算,不是任何廠商的公布規格。有價值的是推導與相對關係。
  • ω_max ≈ 0.7 V_bus / Kt 是簡化式。它忽略了內阻壓降隨電流變化、弱磁控制的可能性,以及驅動器的調變上限。真要定案,用馬達的實測轉速–扭矩曲線取代這個估算。
  • α_az = α_LOS / cos(el) 假設俯仰角在該瞬間固定。俯仰與方位同時在動時還有一項 ω_LOS · sin(el)/cos²(el) · (del/dt),會讓需求更大。這篇取的是較寬鬆的那一側。
  • 本篇沿用計算機的 θ_maxf_bw 啟發式α第二十三篇已說明那不是抗擾動的物理推導。

怎麼跟我協作

要把這套算在你自己的雙軸吊艙上,準備這幾項:

  • 俯仰行程範圍,以及任務上真正常用的俯仰角區間(這決定禁區能不能接受)
  • 內框的三個主慣量,或質量與大致尺寸(J_az 隨俯仰角變化要靠它算)
  • 配平後的殘留重心偏移(重力項全落在俯仰軸)
  • 匯流排電壓與驅動器電流上限(Kt 的上下限由這兩個夾出來)
  • 需要的視線追蹤角速率

缺哪一項就說缺,我不會替你猜一個填進去。

參考文獻

  • Ekstrand, B. (2001). Equations of Motion for a Two-Axes Gimbal System. IEEE Transactions on Aerospace and Electronic Systems, 37(3), 1083–1091. 連結
  • Abdo, M., Vali, A. R., Toloei, A. R., & Arvan, M. R. (2013). Research on the Cross-Coupling of a Two Axes Gimbal System with Dynamic Unbalance. International Journal of Advanced Robotic Systems. DOI: 10.5772/56963
  • Dynamic Modeling and Coupling Characteristic Analysis of Two-Axis Rate Gyro Seeker (2018). International Journal of Aerospace Engineering, Article 8513684. 連結
  • Huang, Q., et al. (2024). Modeling and Control of a Two-Axis Stabilized Gimbal Based on Kane Method. Sensors, 24(11), 3615. 連結
  • Hilkert, J. M. (2008). Inertially Stabilized Platform Technology: Concepts and Principles. IEEE Control Systems Magazine, 28(1), 26–46.
  • Modelling of a Two-Axis Gimbal Test-Bed for Line-of-Sight Stabilization (2006). Proc. MATHMOD. 連結

上一篇:球型吊艙的完整力矩試算。想試算馬達規格?雲台馬達選型計算機。想追蹤系列後續?把 LocalPapa Notes 加入書籤吧。

Dev Log: Sizing Motors for a Two-Axis Gimbal — From Torque Back to Current, and the Nadir Keep-Out Cone Nobody Warns You About

This is the twenty-fourth post in the LocalPapa Notes dev-log series. Post twenty-three sized a three-axis ball gimbal, running the formula chain once per axis. But a great many EO/IR pods in service are two-axis — azimuth plus elevation, no roll.

Intuition says two axes must be simpler: one fewer axis, one fewer calculation. The opposite is true. On a three-axis gimbal each axis can be treated roughly as an independent single-axis problem. On a two-axis gimbal the azimuth axis cannot — its inertia, its rate demand, and even whether it can keep up at all all vary with elevation.

This post works out those variations, runs two independent torque-to-current chains, and arrives at a conclusion rarely stated up front: the Kt you choose directly sets how big the straight-down keep-out cone will be.

The literature

The two-axis configuration is actually better covered than three-axis, because seekers and EO pods are predominantly two-axis.

Ekstrand, B. (2001). Equations of Motion for a Two-Axes Gimbal System. IEEE Transactions on Aerospace and Electronic Systems, 37(3), 1083–1091.

The starting point for the whole line. It derives the full equations of motion for the yaw–pitch configuration assuming rigid bodies with no mass unbalance, grouping the terms by category for interpretability. Two contributions matter most for sizing: it explicitly treats the yaw gain's dependence on pitch angle (section two below is entirely about this), and it gives the inertia cross-coupling terms, noting these can be eliminated by particular inertia symmetry conditions — meaning some of the coupling can be designed out mechanically rather than handed to the controller.

Abdo, M., Vali, A. R., Toloei, A. R., & Arvan, M. R. (2013). Research on the Cross-Coupling of a Two Axes Gimbal System with Dynamic Unbalance. International Journal of Advanced Robotic Systems.

Drops Ekstrand's no-unbalance assumption, adds dynamic unbalance back in, and links the two stabilization loops through a cross-coupling unit. One conclusion: the higher the base angular rate, the more pronounced the overshoot — which matters on airborne platforms.

Dynamic Modeling and Coupling Characteristic Analysis of Two-Axis Rate Gyro Seeker (2018). International Journal of Aerospace Engineering, Article 8513684. Covers cross-coupling, mass imbalance, and disturbance torque together, identifying the servo motor transfer function in the frequency domain.

Huang, Q., et al. (2024). Modeling and Control of a Two-Axis Stabilized Gimbal Based on Kane Method. Sensors, 24(11), 3615. Uses Kane's method to avoid Newton–Euler's constraint forces and Lagrange's second-order differential equations, trading into a simpler and faster model.

What these four have in common is that they all solve dynamics and control — none answers "so how big should the motor be." What follows is the bridge from their conclusions to sizing, and that bridge is this site's, not the papers'.

What this is

A mid-size two-axis EO/IR pod: azimuth continuous through 360°, elevation covering horizontal down to straight down, slung under a multirotor or unmanned helicopter.

Important: every input below is my estimate for this class of device, not any manufacturer's published specification. The value is in the derivation and the sensitivities, not these particular numbers.
  • Ball diameter 140 mm → frontal area A = π × 0.070² = 0.01539 m²
  • Inner (payload) mass 1.2 kg, principal inertias Jx 0.0011 (along the optical axis, smallest), Jy = Jz 0.0036 kg·m²
  • Azimuth frame (yoke) inertia J_azframe = 0.0020 kg·m²
  • Moment arms: elevation 10mm, azimuth 7mm
  • Bandwidth: elevation 12 Hz, azimuth 10 Hz; target deviation θ_max = 0.1 mrad
  • Residual CG offset 0.5 mm (what remains after balancing)
  • Friction 0.02 N·m (absolute — post twenty-three showed the proportional model underestimates at this scale)
  • Cd = 0.60, v = 20 m/s, gust 1.4, Kt = 0.10 N·m/A, SF = 2.5
  • Target LOS rate 90°/s, 24V bus, 6A drive current limit

Shared step: v_design = 28 m/s, F_drag = ½ × 1.225 × 28² × 0.60 × 0.01539 = 4.4353 N.


1. The real difficulty: azimuth rotation stops moving the LOS

Start with the geometry — every conclusion below grows out of it.

The crux of two axes: how wide a cone the azimuth axis sweeps the LOS through The crux of two axes: how wide a cone the azimuth axis sweeps the LOS through Elevation 0° (horizontal LOS)Azimuth axisElevation axisLine of sightL·cos = 10410° of azimuth → 10.00° of LOSTo move the LOS 10°, azimuth must turn 10.0° Elevation −85° (near straight down)Azimuth axisElevation axisLine of sightL·cos = 910° of azimuth → 0.87° of LOSTo move the LOS 10°, azimuth must turn 114.7° Sweep radius = L × cos(elevation). The higher the elevation, the less the same azimuth rotation moves the LOS.
Figure 1: as the azimuth axis turns, the LOS tip traces a circle of radius L × cos(elevation). At 0° elevation, 10° of azimuth moves the LOS 10°. At −85° elevation, the same 10° of azimuth moves it only 0.87°.

The azimuth axis is vertical and the LOS leaves from the elevation axis. As azimuth turns, the LOS tip traces a circle — and that circle's radius is L × cos(el). The closer elevation gets to straight down, the smaller the circle, and the less the same azimuth rotation moves the LOS.

Inverted, that is the equation sizing actually needs:

ω_az = ω_LOS / cos(el)

Ekstrand calls this the yaw gain's dependence on pitch angle. At −85° elevation, moving the LOS at 90°/s requires the azimuth axis to turn at 1033°/s — an 11.5× amplification. At −88° it is 28.6×. At ±90° the LOS is collinear with the azimuth axis and no amount of azimuth rotation moves it at all — the two-axis gimbal lock.

For a UAV pod this is not theoretical. Straight down is one of the most-used viewing attitudes (orbiting a target), and that is exactly the two-axis singularity.

2. Three quantities that all vary with elevation

The biggest difference from three axes is that the azimuth axis's parameters are not constants.

Three quantities that vary with elevation (unique to two axes) Three quantities that vary with elevation (unique to two axes) Azimuth inertia J_az (kg·m²) 0.0000 0.0030 0.0060 Max at 0°, min at 90° — afactor of 1.81 Yaw gain 1 / cos(el) 0 6 12 Diverges at 90° (gimballock) ↑ 28.6 @88° Gravity torque (N·m) 0.0000 0.0030 0.0060 Max at 0°, zero at 90° 0 20 40 60 80 Elevation (degrees)
Figure 2: three quantities against a shared elevation axis. J_az and gravity torque are largest at 0° and fall off; yaw gain does the opposite, diverging near 90°.

Azimuth inertia J_az — the inner body's inertia about the vertical axis changes as the body itself rotates (the inertia tensor rotates with attitude):

J_az(el) = J_azframe + Jz·cos²(el) + Jx·sin²(el)

Substituting: el 0° → 0.00560, el 90° → 0.00310 kg·m², a factor of 1.81, largest at 0°.

Gravity torque — the residual CG offset after balancing produces T_grav = m·g·e·cos(el) on the elevation axis: 0.00589 N·m at 0°, zero at 90°. This term lands on the elevation axis, not azimuth.

Yaw gain 1/cos(el) — 1 at 0°, 11.5 at 85°, 28.6 at 88°, divergent at 90°.

3. The intuition that turned out wrong: azimuth's worst case is not at 0°

J_az is largest at 0°, so intuition says azimuth torque demand peaks at 0° too. It doesn't.

Because yaw gain amplifies the angular acceleration demand at the same time: the azimuth axis must produce α_az = α_LOS / cos(el) (assuming elevation is momentarily fixed; simultaneous elevation motion makes it worse). So the inertia torque becomes:

T_inertia,az(el) = J_az(el) × α_az0 / cos(el)

The two effects pull opposite ways: inertia falls by 1.80×, the secant rises by 11.47×. Net amplification 6.39×, and the maximum lands at the end of travel rather than at 0°:

  • el 0°: J_az 0.00560, α 0.3948, T_inertia 0.00221, T_required 0.13314
  • el 60°: J_az 0.00373, α 0.7896, T_inertia 0.00294, T_required 0.13497
  • el 80°: J_az 0.00318, α 2.2735, T_inertia 0.00722, T_required 0.14566
  • el 85°: J_az 0.00312, α 4.5296, T_inertia 0.01413, T_required 0.16294

I had assumed the maximum-inertia point would be the worst-torque point. Working it out showed otherwise. That is the value of computing first and concluding second, rather than the reverse.

And something more important: this curve has no interior maximum. It rises monotonically and diverges at 90°. So there is no "worst elevation" for the azimuth axis at all — wherever you set the design limit is where the worst case lands. The 85° in the table above is not a computed peak; it is a limit I chose first.

4. The two axes peak at opposite ends

The elevation axis's only variable is gravity (J_el = Jy does not depend on elevation), so it is worst at 0°. The azimuth axis is yaw-gain-dominated and worst near the singularity.

The two axes' worst cases sit at opposite ends of elevation travel The two axes' worst cases sit at opposite ends of elevation travel T_required (N·m) 0.00 0.05 0.10 0.15 0.20 0 20 40 60 80 Elevation (degrees) Elevation axis Azimuth axis Elevation true peak 0.1807 (el 0°) Design limit el 85° → 0.1629 ↑ never settles, diverges at 90° The elevation axis has a genuine interior maximum (0°). The azimuth axis does not — it rises monotonically and divergesat 90°, so its "worst case" is wherever you set the design limit.
Figure 3: T_required against elevation for both axes. The elevation axis has a genuine interior maximum at 0°; the azimuth axis does not — it rises monotonically and diverges at 90°, so the 85° marked is a design limit, not a peak.
  • Elevation axis: T_required = 0.18071 N·m at el 0° (the gravity term 0.00589 peaks here) — a genuine maximum; it only falls off either side.
  • Azimuth axis: T_required = 0.16294 N·m at el 85° — but that number comes from the design limit, not from a peak in the curve. Set the limit at 88° and it becomes 0.2154; at 89°, 0.3030.
The practical implication is direct: you cannot verify at one attitude. Stress-test the elevation axis at horizontal and the azimuth axis near straight down. Pick some middle angle and you have tested neither axis's worst case.

5. Two torque-to-current chains

Now run each axis to completion. Note the chains have different terms — gravity appears only on elevation, yaw gain affects only azimuth.

Torque to current, twice: the two chains do not share one set of numbers Torque to current, twice: the two chains do not share one set of numbers Elevation axis (worst: el 0°)Wind T_wind0.04435Inertia T_inertia0.00205Friction T_friction0.02000Gravity T_grav0.00589Subtotal0.07229× SF 2.5 → T_required0.18071÷ Kt 0.10 → I_peak1.807 A Azimuth axis (design limit el 85°)Wind T_wind0.03105Inertia T_inertia0.01413Friction T_friction0.02000Gravity T_grav0.00000Subtotal0.06517× SF 2.5 → T_required0.16294÷ Kt 0.10 → I_peak1.629 A Same pod, same airspeed and friction — yet the two axes differ by 11%, because gravity and yaw gain land on different axes.
Figure 4: each axis's torque composition and conversion. Gravity appears only on elevation and yaw gain amplifies only the azimuth inertia term — same pod, same airspeed and friction, and the two demands still differ by 11%.

Elevation axis (worst: el 0°)

  • T_wind = 4.4353 × 0.010 = 0.04435 N·m
  • T_inertia = 0.0036 × (2π×12)² × 0.0001 = 0.00205 N·m
  • T_friction = 0.02000 N·m (absolute)
  • T_grav = 1.2 × 9.81 × 0.0005 = 0.00589 N·m
  • Subtotal 0.07228× 2.5T_required = 0.18071 N·m÷ 0.10I_peak = 1.807 A
  • I_cont = (0.04435 + 0.00589) / 0.10 = 0.502 A (the steady wind plus gravity it must hold)

Azimuth axis (design limit el 85°)

  • T_wind = 4.4353 × 0.007 = 0.03105 N·m
  • T_inertia = 0.00312 × 0.39478 / cos(85°) = 0.01413 N·m
  • T_friction = 0.02000 N·m
  • Gravity: zero (gravity torque lands on elevation; azimuth is the vertical axis)
  • Subtotal 0.06518× 2.5T_required = 0.16294 N·m÷ 0.10I_peak = 1.629 A
  • I_cont = 0.03105 / 0.10 = 0.310 A

ΣI_peak = 3.44 A with both axes at peak simultaneously.


6. One step further back: Kt sets your nadir keep-out cone

Up to here nothing differs fundamentally from three axes. This is the step that does.

T = Kt · I only answers "is there enough current." The azimuth axis has a second constraint: can it turn fast enough? And yaw gain tightens that constraint sharply near straight down.

A motor's speed ceiling on a given bus is roughly ω_max ≈ V_bus / Ke, and in SI units Ke = Kt. Reserving 30% for resistive drop, PWM, and control headroom:

ω_max ≈ 0.7 × V_bus / Kt

Keeping up requires ω_LOS / cos(el) ≤ ω_max, which rearranges to:

keep-out half-angle = asin( ω_LOS · Kt / (0.7 · V_bus) )

Choosing Kt is choosing how big your nadir keep-out cone is Choosing Kt is choosing how big your nadir keep-out cone is keep-out half-angle = asin( ω_LOS · Kt / (0.7 · V_bus) ) 0.0 0.1 0.2 0.3 0.4 0.5 Torque constant Kt (N·m/A) Keep-out half-angle (degrees) GL30 0.20° GL60 II 2.06° GL60 2.38° Conditions: 24V bus, 30% headroom reserved, target LOS rate 90°/s. Higher Kt costs less current for the same torque, butspins slower on the same voltage — so the cone grows.
Figure 5: keep-out half-angle against Kt, with the three catalogue motors marked. Same 24V, same 90°/s tracking requirement — the larger the Kt, the larger the cone.

For a 24V bus and a 90°/s tracking requirement:

  • Kt = 0.10 (this post's assumption): ω_max 168 rad/s → tracks to el 89.46°, keep-out half-angle 0.54°
  • Kt = 0.385 (CubeMars GL60 II): ω_max 43.6 rad/s → tracks to el 87.94°, keep-out 2.06°
  • Kt = 0.444 (CubeMars GL60): ω_max 37.8 rad/s → tracks to el 87.62°, keep-out 2.38°

This is the real two-axis trade-off. A larger Kt means less current for the same torque (I = T/Kt) — and for three axes the analysis ends there. On two axes, a larger Kt also means turning slower on the same voltage, so the cone of "can't keep up" directly below grows.

The azimuth axis's feasible Kt is therefore squeezed from both sides:

  • Lower bound (torque): Kt ≥ T_required / I_max = 0.16294 / 6 = 0.027
  • Upper bound (speed): Kt ≤ 0.7 × V_bus / ω_az,max, where ω_az,max follows from how large a cone you can accept

7. So what should this pod use

Elevation needs T_required 0.18071, azimuth 0.16294 N·m (at the 85° design limit), both already including SF 2.5.

  • CubeMars GL30 KV290 (Kt 0.038, I_peak 7.4A): peak torque 0.28 N·m, both axes pass; keep-out only 0.20°. But headroom is ×1.6 / ×1.7 — tight for estimated inputs.
  • CubeMars GL60 II KV28 (Kt 0.385, I_peak 2.75A): peak 1.06 N·m, headroom ×5.9 / ×6.5, comfortable; the cost is a 2.06° cone and the weight.
  • CubeMars GL60 KV25 (Kt 0.444, I_peak 4A): peak 1.78 N·m, cone 2.38°.

Which one wins depends on the mission. If the routine task is orbiting a target directly below, a cone means the LOS lags and the image smears inside it — that argues for lower Kt, making up the torque with current limit. If the work is mostly oblique and elevation rarely exceeds 60°, the cone is not a constraint and you can take the high-Kt current savings.

Put differently: three-axis sizing only has to answer "is there enough current." Two-axis sizing also has to answer "how big a cone can you live with." That second question is not a mechanical question, it's a mission question — which is why it has to be settled before the motor is chosen.

The limits of this analysis

  • Every input is an estimate, not any manufacturer's published specification. What's durable is the derivation and the relative relationships.
  • ω_max ≈ 0.7 V_bus / Kt is a simplification. It ignores resistive drop varying with current, the possibility of field weakening, and the drive's modulation ceiling. To finalize, replace it with the motor's measured speed–torque curve.
  • α_az = α_LOS / cos(el) assumes elevation is momentarily fixed. With elevation and azimuth both moving there is an additional ω_LOS · sin(el)/cos²(el) · (del/dt) term that makes the demand larger. This post takes the more forgiving side.
  • This post reuses the calculator's θ_max/f_bw heuristic to get α; post twenty-three explains why that is not a disturbance-rejection derivation.

How to work through this with me

To apply this to your own two-axis pod, have these ready:

  • Elevation travel range, and the elevation band the mission actually uses (this decides whether the cone is acceptable)
  • The inner body's three principal inertias, or its mass and rough dimensions (needed to compute how J_az varies)
  • Residual CG offset after balancing (the gravity term lands entirely on elevation)
  • Bus voltage and drive current limit (these two bracket Kt from both sides)
  • The LOS tracking rate you need

If something's missing, say it's missing — I won't guess a value and fill it in for you.

References

  • Ekstrand, B. (2001). Equations of Motion for a Two-Axes Gimbal System. IEEE Transactions on Aerospace and Electronic Systems, 37(3), 1083–1091. Link
  • Abdo, M., Vali, A. R., Toloei, A. R., & Arvan, M. R. (2013). Research on the Cross-Coupling of a Two Axes Gimbal System with Dynamic Unbalance. International Journal of Advanced Robotic Systems. DOI: 10.5772/56963
  • Dynamic Modeling and Coupling Characteristic Analysis of Two-Axis Rate Gyro Seeker (2018). International Journal of Aerospace Engineering, Article 8513684. Link
  • Huang, Q., et al. (2024). Modeling and Control of a Two-Axis Stabilized Gimbal Based on Kane Method. Sensors, 24(11), 3615. Link
  • Hilkert, J. M. (2008). Inertially Stabilized Platform Technology: Concepts and Principles. IEEE Control Systems Magazine, 28(1), 26–46.
  • Modelling of a Two-Axis Gimbal Test-Bed for Line-of-Sight Stabilization (2006). Proc. MATHMOD. Link

Previous post: A Complete Torque Budget for a Ball Gimbal. Want to size a motor? Gimbal Motor Sizing Calculator. Want to follow the series? Bookmark LocalPapa Notes.

探索 61 個隱私優先的瀏覽器工具
全程本地運算、檔案不上傳。
前往 LocalPapa →
Explore 61 privacy-first browser tools
Everything runs locally — your files never leave your device.
Visit LocalPapa →

想看英文版?點右上角 EN 切換語言。

Prefer Chinese? Tap at the top-right to switch.