Skip to content

Commit fbf4cc8

Browse files
committed
Add model parameters for P250 and T350
1 parent 7e56d35 commit fbf4cc8

10 files changed

Lines changed: 170 additions & 23 deletions

File tree

drone_models/core.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ def parametrize(
8989
if xp is not None: # Convert to any array API framework
9090
params = named_tuple2xp(params, xp=xp, device=device)
9191
except KeyError as e:
92-
raise KeyError(f"Model `{model_id}` does not exist in the parameter registry") from e
92+
raise KeyError(
93+
f"Model `{model_id}` does not exist in the parameter registry for drone `{drone_model}`"
94+
) from e
9395
except ValueError as e:
9496
raise ValueError(f"Drone model `{drone_model}` not supported for `{model_id}`") from e
9597
return partial(fn, **params._asdict())

drone_models/drones.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
TODO: Add description.
44
"""
55

6-
available_drones: tuple[str] = ("cf2x_L250",)
6+
available_drones: tuple[str] = ("cf2x_L250", "cf2x_P250", "cf2x_T350")

drone_models/first_principles/params.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
class FirstPrinciplesParams(NamedTuple):
1616
"""Parameters for the FirstPrinciples model."""
1717

18-
thrust_tau: float
18+
mass: float
19+
gravity_vec: Array
20+
J: Array
21+
J_inv: Array
1922
KF: float
2023
KM: float
2124
L: float
2225
mixing_matrix: Array
23-
gravity_vec: Array
24-
mass: float
25-
J: Array
26-
J_inv: Array
26+
thrust_tau: float
2727

2828
@staticmethod
2929
def load(drone_model: str) -> FirstPrinciplesParams:
Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
[cf2x_L250]
2-
thrust_tau = 6.9235846332510365
2+
mass = 0.033
3+
gravity_vec = [0.0, 0.0, -9.81]
4+
J = [
5+
[1.68e-5, 0.0, 0.0],
6+
[0.0, 1.68e-5, 0.0],
7+
[0.0, 0.0, 2.98e-5]
8+
]
39
KF = 8.701227710666256e-10
410
KM = 7.94e-12
511
L = 0.03253
@@ -9,10 +15,43 @@ mixing_matrix = [
915
[ 1.0, 1.0, -1.0],
1016
[ 1.0, -1.0, 1.0]
1117
]
18+
thrust_tau = 6.9235846332510365
19+
20+
[cf2x_P250]
21+
mass = 0.03454
1222
gravity_vec = [0.0, 0.0, -9.81]
13-
mass = 0.033
23+
# J from IROS 2022
1424
J = [
15-
[1.68e-5, 0.0, 0.0],
16-
[0.0, 1.68e-5, 0.0],
17-
[0.0, 0.0, 2.98e-5]
25+
[1.4e-5, 0.0, 0.0],
26+
[0.0, 1.4e-5, 0.0],
27+
[0.0, 0.0, 2.17e-5]
28+
]
29+
KF = 5.792654323957372e-10
30+
KM = 7.94e-12
31+
L = 0.03253
32+
mixing_matrix = [
33+
[-1.0, -1.0, -1.0],
34+
[-1.0, 1.0, 1.0],
35+
[ 1.0, 1.0, -1.0],
36+
[ 1.0, -1.0, 1.0]
37+
]
38+
thrust_tau = 7.2333515424212695
39+
40+
[cf2x_T350]
41+
mass = 0.03454
42+
gravity_vec = [0.0, 0.0, -9.81]
43+
J = [
44+
[1.4e-5, 0.0, 0.0],
45+
[0.0, 1.4e-5, 0.0],
46+
[0.0, 0.0, 2.17e-5]
47+
]
48+
KF = 1.068340683985525e-09
49+
KM = 7.94e-12
50+
L = 0.03253
51+
mixing_matrix = [
52+
[-1.0, -1.0, -1.0],
53+
[-1.0, 1.0, 1.0],
54+
[ 1.0, 1.0, -1.0],
55+
[ 1.0, -1.0, 1.0]
1856
]
57+
thrust_tau = 8.719306881898989

drone_models/so_rpy/params.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ class SoRpyParams(NamedTuple):
1717

1818
mass: float
1919
gravity_vec: Array
20+
J: Array
21+
J_inv: Array
2022
acc_coef: Array
2123
cmd_f_coef: Array
2224
rpy_coef: Array
2325
rpy_rates_coef: Array
2426
cmd_rpy_coef: Array
25-
J: Array
26-
J_inv: Array
2727

2828
@staticmethod
2929
def load(drone_model: str) -> SoRpyParams:

drone_models/so_rpy/params.toml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,33 @@ J = [
1111
[0.0, 1.68e-5, 0.0],
1212
[0.0, 0.0, 2.98e-5]
1313
]
14+
15+
# TODO: Check if parameters are correct
16+
[cf2x_P250]
17+
mass = 0.03454
18+
gravity_vec = [0.0, 0.0, -9.81]
19+
J = [
20+
[1.4e-5, 0.0, 0.0],
21+
[0.0, 1.4e-5, 0.0],
22+
[0.0, 0.0, 2.17e-5]
23+
]
24+
acc_coef = 20.907574256269616
25+
cmd_f_coef = 3.653687545690674
26+
rpy_coef = [-99.94, -130.3, 0.0]
27+
rpy_rates_coef = [-13.3, -16.33, 0.0]
28+
cmd_rpy_coef = [84.73, 119.3, 0.0]
29+
30+
# TODO: Check if parameters are correct
31+
[cf2x_T350]
32+
mass = 0.03454
33+
gravity_vec = [0.0, 0.0, -9.81]
34+
J = [
35+
[1.4e-5, 0.0, 0.0],
36+
[0.0, 1.4e-5, 0.0],
37+
[0.0, 0.0, 2.17e-5]
38+
]
39+
acc_coef = 20.907574256269616
40+
cmd_f_coef = 3.653687545690674
41+
rpy_coef = [-99.94, -130.3, 0.0]
42+
rpy_rates_coef = [-13.3, -16.33, 0.0]
43+
cmd_rpy_coef = [84.73, 119.3, 0.0]

drone_models/so_rpy_rotor/params.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ class SoRpyRotorParams(NamedTuple):
1717

1818
mass: float
1919
gravity_vec: Array
20-
KF: Array
21-
KM: Array
2220
J: Array
2321
J_inv: Array
22+
KF: Array
23+
KM: Array
2424
rotor_coef: Array
2525
acc_coef: Array
2626
cmd_f_coef: Array
Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,52 @@
11
[cf2x_L250]
22
mass = 0.033
33
gravity_vec = [0.0, 0.0, -9.81]
4-
KF = 8.701227710666256e-10
5-
KM = 7.94e-12
64
J = [
75
[1.68e-5, 0.0, 0.0],
86
[0.0, 1.68e-5, 0.0],
97
[0.0, 0.0, 2.98e-5]
108
]
9+
KF = 8.701227710666256e-10
10+
KM = 7.94e-12
1111
rotor_coef = 0.1108
1212
acc_coef = 0.0
1313
cmd_f_coef = 1.0591
1414
rpy_coef = [-257.2, -257.2, -225.3]
1515
rpy_rates_coef = [-20.2, -20.2, -28.61]
16-
cmd_rpy_coef = [207.1, 207.1, 392.7]
16+
cmd_rpy_coef = [207.1, 207.1, 392.7]
17+
18+
# TODO: Check if parameters are correct
19+
[cf2x_P250]
20+
mass = 0.03454
21+
gravity_vec = [0.0, 0.0, -9.81]
22+
J = [
23+
[1.4e-5, 0.0, 0.0],
24+
[0.0, 1.4e-5, 0.0],
25+
[0.0, 0.0, 2.17e-5]
26+
]
27+
KF = 5.792654323957372e-10
28+
KM = 7.94e-12
29+
rotor_coef = 0.0654
30+
acc_coef = 0.1670
31+
cmd_f_coef = 0.5615
32+
rpy_coef = [-286.2, -286.2, -192.9]
33+
rpy_rates_coef = [-23.03, -23.03, -22.22]
34+
cmd_rpy_coef = [225.6, 225.6, 323.5]
35+
36+
# TODO: Check if parameters are correct
37+
[cf2x_T350]
38+
mass = 0.03253
39+
gravity_vec = [0.0, 0.0, -9.81]
40+
J = [
41+
[1.4e-5, 0.0, 0.0],
42+
[0.0, 1.4e-5, 0.0],
43+
[0.0, 0.0, 2.17e-5]
44+
]
45+
KF = 1.068340683985525e-09
46+
KM = 7.94e-12
47+
rotor_coef = 0.0654
48+
acc_coef = 0.1670
49+
cmd_f_coef = 0.5615
50+
rpy_coef = [-286.2, -286.2, -192.9]
51+
rpy_rates_coef = [-23.03, -23.03, -22.22]
52+
cmd_rpy_coef = [225.6, 225.6, 323.5]

drone_models/so_rpy_rotor_drag/params.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ class SoRpyRotorDragParams(NamedTuple):
1717

1818
mass: float
1919
gravity_vec: Array
20-
KF: Array
21-
KM: Array
2220
J: Array
2321
J_inv: Array
22+
KF: Array
23+
KM: Array
2424
rotor_coef: Array
2525
acc_coef: Array
2626
cmd_f_coef: Array
Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[cf2x_L250]
22
mass = 0.033
33
gravity_vec = [0.0, 0.0, -9.81]
4-
KF = 8.701227710666256e-10
5-
KM = 7.94e-12
64
J = [
75
[1.68e-5, 0.0, 0.0],
86
[0.0, 1.68e-5, 0.0],
97
[0.0, 0.0, 2.98e-5]
108
]
9+
KF = 8.701227710666256e-10
10+
KM = 7.94e-12
1111
rotor_coef = 0.1891
1212
acc_coef = 0.0
1313
cmd_f_coef = 1.0627
@@ -16,3 +16,43 @@ rpy_rates_coef = [-20.2, -20.2, -28.61]
1616
cmd_rpy_coef = [207.1, 207.1, 392.7]
1717
drag_linear_coef = -0.0177
1818
drag_abs_linear_coef = 0.0010
19+
20+
# TODO: Check if parameters are correct
21+
[cf2x_P250]
22+
mass = 0.03454
23+
gravity_vec = [0.0, 0.0, -9.81]
24+
J = [
25+
[1.4e-5, 0.0, 0.0],
26+
[0.0, 1.4e-5, 0.0],
27+
[0.0, 0.0, 2.17e-5]
28+
]
29+
KF = 5.792654323957372e-10
30+
KM = 7.94e-12
31+
rotor_coef = 0.1891
32+
acc_coef = 0.0
33+
cmd_f_coef = 1.0627
34+
rpy_coef = [-257.2, -257.2, -225.3]
35+
rpy_rates_coef = [-20.2, -20.2, -28.61]
36+
cmd_rpy_coef = [207.1, 207.1, 392.7]
37+
drag_linear_coef = -0.0177
38+
drag_abs_linear_coef = 0.0010
39+
40+
# TODO: Check if parameters are correct
41+
[cf2x_T350]
42+
mass = 0.03253
43+
gravity_vec = [0.0, 0.0, -9.81]
44+
J = [
45+
[1.4e-5, 0.0, 0.0],
46+
[0.0, 1.4e-5, 0.0],
47+
[0.0, 0.0, 2.17e-5]
48+
]
49+
KF = 1.068340683985525e-09
50+
KM = 7.94e-12
51+
rotor_coef = 0.1891
52+
acc_coef = 0.0
53+
cmd_f_coef = 1.0627
54+
rpy_coef = [-257.2, -257.2, -225.3]
55+
rpy_rates_coef = [-20.2, -20.2, -28.61]
56+
cmd_rpy_coef = [207.1, 207.1, 392.7]
57+
drag_linear_coef = -0.0177
58+
drag_abs_linear_coef = 0.0010

0 commit comments

Comments
 (0)