本文へ移動
cccskills
無料GitHub で公開

motor-model-dynamics

Use this skill when simulating quadrotor physical dynamics — mapping desired thrust/moments to individual motor RPMs via a propeller allocation matrix, applying first-order motor lag, and integrating the nonlinear equations of motion (translational and rotational) using RK45.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Motor Model and Dynamics Simulation

Overview

Two modules form the physics layer of the simulator:

  1. Motor model — maps desired [F, Mx, My, Mz] → desired motor RPMs → applies first-order lag → returns actual thrust and moments
  2. Dynamics — nonlinear equations of motion; given forces and moments, returns the 16-element state derivative for ODE integration

Motor Model

Propeller Allocation Matrix (X-frame quadrotor)

The 4×4 allocation matrix maps [F, Mx, My, Mz] to squared motor RPMs. For an X-frame with arm length d, thrust coefficient cT, and torque coefficient cQ:

         motor:  1      2      3      4
Thrust:         +cT    +cT    +cT    +cT
Roll  (Mx):      0    +d·cT    0    -d·cT
Pitch (My):    -d·cT    0    +d·cT    0
Yaw   (Mz):    -cQ    +cQ    -cQ    +cQ

Implementation Logic

  1. Build the 4×4 prop_matrix from cT, cQ, and d.
  2. Solve prop_matrix @ rpm_sq = [F, Mx, My, Mz] for rpm_sq (desired squared RPMs).
  3. Take sqrt of each element (clamp negatives to 0 first), then clip to [rpm_min, rpm_max].
  4. Apply first-order motor lag: rpm_dot = km * (rpm_desired - rpm_current).
  5. Compute actual force/moment using prop_matrix @ (motor_rpm ** 2) and return (F_actual, M_actual, rpm_dot).

Dynamics (Equations of Motion)

State vector (16,)

IndicesMeaning
0:3Position [x, y, z]
3:6Velocity [vẋ, vẏ, vż]
6:9Euler angles [φ, θ, ψ]
9:12Angular velocity [p, q, r]
12:16Motor RPM [ω₁, ω₂, ω₃, ω₄]

Implementation Logic

Compute state_dot (16,) from current state and applied forces/moments:

  1. Position derivative = current velocity (state[3:6]).
  2. Velocity derivative = gravity + thrust projected into world frame via ZYX Euler rotation. The x/y accelerations depend on F/m, sin/cos of all three Euler angles. The z acceleration is −g + (F/m)·cos(φ)·cos(θ).
  3. Euler angle derivative = current angular velocity (state[9:12]).
  4. Angular velocity derivative = I⁻¹ M (solve inertia matrix against moment vector).
  5. Motor RPM derivative = rpm_motor_dot from the motor model.

RK45 Integration

Use scipy.integrate.solve_ivp with method='RK45' over each timestep [t_k, t_{k+1}]. The ODE function wraps dynamics(params, s, F_actual, M_actual, rpm_motor_dot) with F_actual and M_actual held constant for the step. After solving, take the last column of sol.y as the new state.

Motor Physical Limits

ParameterValueMeaning
rpm_min3000Minimum motor speed (motors always spinning)
rpm_max20000Maximum motor speed
motor_constant km36.5 s⁻¹First-order time constant; τ = 1/km ≈ 27 ms

Max Thrust Calculation

Derived from motor limits:

  • T_max = 4 * cT * rpm_max² (all 4 motors at max RPM)
  • T_min = 4 * cT * rpm_min²
  • Thrust-to-weight ratio: twr = T_max / (mass * gravity)
  • Max upward acceleration: (T_max − mass·g) / mass
  • Max downward acceleration: (mass·g − T_min) / mass

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Perform various data analysis on SEC 13-F and obtain some insights of fund activities such as number of holdings, AUM, and change of holdings between two quarters.

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

AC branch pi-model power flow equations (P/Q and |S|) with transformer tap ratio and phase shift, matching `acopf-math-model.md` and MATPOWER branch fields. Use when computing branch flows in either direction, aggregating bus injections for nodal balance, checking MVA (rateA) limits, computing branch loading %, or debugging sign/units issues in AC power flow.

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

Redact text from PDF documents for blind review anonymization

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

Use when checking simplified ADA-derived plan-view bathroom accessibility constraints such as turning space, door clear width, toilet centerline, grab bars, and lavatory knee/toe clearance.

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

Analyze failed GitHub Action jobs for a pull request.

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

Use when extracting plan-view architectural geometry from DXF files with semantic CAD layers, especially when outputs must normalize rooms, doors, fixtures, clearances, and grab bars into machine-checkable JSON.

日本語の概要は準備中です。原文の説明を表示しています。

benchflow-ai/skillsbench1,8412026年7月24日 更新

benchflow-ai のスキルをすべて見る

このスキルの問題を報告する