|
1 | | -"""Symbols used in the symbolic drone dynamics.""" |
| 1 | +"""Symbols used in the symbolic drone dynamics. |
| 2 | +
|
| 3 | +Can be used to define symbolic CasADi expressions that are passed to model-based optimizers such as |
| 4 | +Acados. |
| 5 | +""" |
2 | 6 |
|
3 | 7 | import casadi as cs |
4 | 8 |
|
5 | 9 | from crazyflow.dynamics.utils import rotation |
6 | 10 |
|
7 | 11 | # States |
8 | 12 | px, py, pz = cs.MX.sym("px"), cs.MX.sym("py"), cs.MX.sym("pz") |
9 | | -pos = cs.vertcat(px, py, pz) # Position |
10 | | -"""Symbolic drone position. |
11 | | -
|
12 | | -Can be used to define symbolic CasADi expressions that are passed to model-based optimizers such as |
13 | | -Acados. |
14 | | -
|
15 | | -:meta hide-value: |
16 | | -""" |
17 | | -# States |
| 13 | +pos = cs.vertcat(px, py, pz) |
| 14 | +"""Symbolic drone position.""" |
18 | 15 | qw, qx, qy, qz = cs.MX.sym("qw"), cs.MX.sym("qx"), cs.MX.sym("qy"), cs.MX.sym("qz") |
19 | | -quat = cs.vertcat(qx, qy, qz, qw) # Quaternions |
| 16 | +quat = cs.vertcat(qx, qy, qz, qw) |
| 17 | +"""Symbolic drone orientation as xyzw quaternion.""" |
20 | 18 | rot = rotation.cs_quat2matrix(quat) # Rotation matrix from body to world frame |
21 | 19 | vx, vy, vz = cs.MX.sym("vx"), cs.MX.sym("vy"), cs.MX.sym("vz") |
22 | | -vel = cs.vertcat(vx, vy, vz) # Velocity |
| 20 | +vel = cs.vertcat(vx, vy, vz) |
| 21 | +"""Symbolic drone velocity.""" |
23 | 22 | wx, wy, wz = cs.MX.sym("wx"), cs.MX.sym("wy"), cs.MX.sym("wz") |
24 | | -ang_vel = cs.vertcat(wx, wy, wz) # Angular velocity |
| 23 | +ang_vel = cs.vertcat(wx, wy, wz) |
| 24 | +"""Symbolic drone angular velocity.""" |
25 | 25 | w1, w2, w3, w4 = cs.MX.sym("w1"), cs.MX.sym("w2"), cs.MX.sym("w3"), cs.MX.sym("w4") |
26 | | -rotor_vel = cs.vertcat(w1, w2, w3, w4) # Motor thrust |
| 26 | +rotor_vel = cs.vertcat(w1, w2, w3, w4) |
| 27 | +"""Symbolic rotor velocities.""" |
27 | 28 | dfx, dfy, dfz = cs.MX.sym("dfx"), cs.MX.sym("dfy"), cs.MX.sym("dfz") |
28 | | -dist_f = cs.vertcat(dfx, dfy, dfz) # Disturbance forces |
| 29 | +dist_f = cs.vertcat(dfx, dfy, dfz) |
| 30 | +"""Symbolic disturbance forces.""" |
29 | 31 | dtx, dty, dtz = cs.MX.sym("dtx"), cs.MX.sym("dty"), cs.MX.sym("dtz") |
30 | | -dist_t = cs.vertcat(dtx, dty, dtz) # Disturbance torques |
| 32 | +dist_t = cs.vertcat(dtx, dty, dtz) |
| 33 | +"""Symbolic disturbance torques.""" |
31 | 34 |
|
32 | 35 | # Inputs |
33 | 36 | cmd_w1, cmd_w2, cmd_w3, cmd_w4 = ( |
|
37 | 40 | cs.MX.sym("cmd_w4"), |
38 | 41 | ) |
39 | 42 | cmd_rotor_vel = cs.vertcat(cmd_w1, cmd_w2, cmd_w3, cmd_w4) |
40 | | -cmd_force = cs.vertcat(cmd_w1, cmd_w2, cmd_w3, cmd_w4) |
| 43 | +"""Symbolic rotor velocity commands.""" |
41 | 44 | cmd_roll, cmd_pitch, cmd_yaw = (cs.MX.sym("cmd_roll"), cs.MX.sym("cmd_pitch"), cs.MX.sym("cmd_yaw")) |
42 | 45 | cmd_thrust = cs.MX.sym("cmd_thrust") |
43 | 46 | cmd_rpyt = cs.vertcat(cmd_roll, cmd_pitch, cmd_yaw, cmd_thrust) |
| 47 | +"""Symbolic roll/pitch/yaw/thrust commands.""" |
44 | 48 |
|
45 | 49 | # Special states for the so_rpy dynamics |
46 | 50 | roll, pitch, yaw = cs.MX.sym("roll"), cs.MX.sym("pitch"), cs.MX.sym("yaw") |
|
0 commit comments