1313
1414from __future__ import annotations
1515
16- import logging
1716from typing import TYPE_CHECKING
1817
1918import casadi as cs
@@ -41,7 +40,6 @@ def dynamics(
4140 vel : Array ,
4241 ang_vel : Array ,
4342 cmd : Array ,
44- rotor_vel : Array | None = None ,
4543 dist_f : Array | None = None ,
4644 dist_t : Array | None = None ,
4745 * ,
@@ -63,7 +61,6 @@ def dynamics(
6361 vel: Velocity of the drone (m/s).
6462 ang_vel: Angular velocity of the drone (rad/s).
6563 cmd: Roll pitch yaw (rad) and collective thrust (N) command.
66- rotor_vel: Speed of the 4 motors (RPMs). Kept for compatibility with the dynamics signature.
6764 dist_f: Disturbance force (N) in the world frame acting on the CoM.
6865 dist_t: Disturbance torque (Nm) in the world frame acting on the CoM.
6966
@@ -92,9 +89,7 @@ def dynamics(
9289 rot = R .from_quat (quat )
9390 euler_angles = rot .as_euler ("xyz" )
9491
95- rotor_vel_dot = None
9692 thrust = acc_coef + cmd_f_coef * cmd_f
97-
9893 drone_z_axis = rot .as_matrix ()[..., - 1 ]
9994
10095 pos_dot = vel
@@ -121,11 +116,10 @@ def dynamics(
121116 torque = torque - xp .linalg .cross (ang_vel , (J @ ang_vel [..., None ])[..., 0 ])
122117 ang_vel_dot = (J_inv @ torque [..., None ])[..., 0 ]
123118
124- return pos_dot , quat_dot , vel_dot , ang_vel_dot , rotor_vel_dot
119+ return pos_dot , quat_dot , vel_dot , ang_vel_dot
125120
126121
127122def symbolic_dynamics (
128- model_rotor_vel : bool = False ,
129123 model_dist_f : bool = False ,
130124 model_dist_t : bool = False ,
131125 * ,
@@ -147,9 +141,6 @@ def symbolic_dynamics(
147141 [symbolic_dynamics][crazyflow.dynamics.first_principles.symbolic_dynamics].
148142
149143 Args:
150- model_rotor_vel: If ``True``, a scalar rotor-velocity state is appended to ``X`` (for
151- interface compatibility only — ``so_rpy`` has no thrust dynamics and will log a
152- warning). Defaults to ``False``.
153144 model_dist_f: If ``True``, a 3-D force disturbance is appended to ``X``.
154145 model_dist_t: If ``True``, a 3-D torque disturbance is appended to ``X``.
155146 mass: Drone mass in kg.
@@ -178,11 +169,8 @@ def symbolic_dynamics(
178169 symbols .rpy = _rpy_quat
179170 symbols .drpy = _drpy_quat
180171 X_dot_euler , X_euler , U_euler , Y_euler = symbolic_dynamics_euler (
181- model_rotor_vel = model_rotor_vel ,
182172 mass = mass ,
183173 gravity_vec = gravity_vec ,
184- J = J ,
185- J_inv = J_inv ,
186174 acc_coef = acc_coef ,
187175 cmd_f_coef = cmd_f_coef ,
188176 rpy_coef = rpy_coef ,
@@ -194,9 +182,6 @@ def symbolic_dynamics(
194182
195183 # States and Inputs
196184 X = cs .vertcat (symbols .pos , symbols .quat , symbols .vel , symbols .ang_vel )
197- if model_rotor_vel :
198- logging .getLogger (__name__ ).warning ("so_rpy dynamics do not support thrust dynamics" )
199- X = cs .vertcat (X , symbols .rotor_vel )
200185 if model_dist_f :
201186 X = cs .vertcat (X , symbols .dist_f )
202187 if model_dist_t :
@@ -234,12 +219,9 @@ def symbolic_dynamics(
234219
235220
236221def symbolic_dynamics_euler (
237- model_rotor_vel : bool = False ,
238222 * ,
239223 mass : float ,
240224 gravity_vec : Array ,
241- J : Array ,
242- J_inv : Array ,
243225 acc_coef : Array ,
244226 cmd_f_coef : Array ,
245227 rpy_coef : Array ,
@@ -253,12 +235,8 @@ def symbolic_dynamics_euler(
253235 inside CasADi-based solvers.
254236
255237 Args:
256- model_rotor_vel: If ``True``, a scalar rotor-velocity state is appended
257- to ``X`` for interface compatibility (no dynamics are modelled).
258238 mass: Drone mass in kg.
259239 gravity_vec: Gravity vector, shape ``(3,)``.
260- J: Inertia matrix, shape ``(3, 3)``.
261- J_inv: Inverse inertia matrix, shape ``(3, 3)``.
262240 acc_coef: Scalar acceleration offset coefficient.
263241 cmd_f_coef: Collective-thrust-to-acceleration coefficient.
264242 rpy_coef: RPY state feedback coefficient, shape ``(3,)``.
@@ -275,9 +253,6 @@ def symbolic_dynamics_euler(
275253 """
276254 # States and Inputs
277255 X = cs .vertcat (symbols .pos , symbols .rpy , symbols .vel , symbols .drpy )
278- if model_rotor_vel :
279- logging .getLogger (__name__ ).warning ("so_rpy dynamics do not support thrust dynamics" )
280- X = cs .vertcat (X , symbols .rotor_vel )
281256 U = symbols .cmd_rpyt
282257 cmd_rpy = U [:3 ]
283258 cmd_thrust = U [- 1 ]
@@ -351,7 +326,7 @@ def create(n_worlds: int, n_drones: int, drone: str, device: Device) -> Params:
351326def sim_dynamics (data : SimData ) -> SimData :
352327 """Compute the forces and torques from the so_rpy dynamics."""
353328 params : Params = data .params
354- vel , _ , acc , ang_acc , _ = dynamics (
329+ vel , _ , acc , ang_acc = dynamics (
355330 pos = data .states .pos ,
356331 quat = data .states .quat ,
357332 vel = data .states .vel ,
0 commit comments