1pub(crate) const CONST_BOUNDS: [[f64; 2]; 19] = [
2 [0.025, 0.7],
3 [0.05, 0.25],
4 [0.0, std::f64::consts::FRAC_PI_4],
5 [0.025, 0.2],
6 [0.05, 0.5],
7 [0.3, 3.0],
8 [0.0, std::f64::consts::FRAC_PI_4],
9 [0.025, 0.2],
10 [0.05, 0.55],
11 [0.05, 0.4],
12 [0.0, std::f64::consts::FRAC_PI_4],
13 [0.758, 1.03],
14 [0.758, 1.03],
15 [0.5, 1.17],
16 [1.525, 3.0],
17 [0.5, 2.0],
18 [0.0001, 0.01],
19 [0.1, 0.5],
20 [0.2, 0.5],
21];
22
23pub(crate) fn get_tires() -> std::collections::HashMap<usize, std::collections::HashMap<String, f64>>
24{
25 let mut tires: std::collections::HashMap<usize, std::collections::HashMap<String, f64>> =
26 std::collections::HashMap::new();
27 tires.insert(0, build_tire(0.2286, 3.636));
28 tires.insert(1, build_tire(0.22987, 4.091));
29 tires.insert(2, build_tire(0.23241, 4.545));
30 tires.insert(3, build_tire(0.24638, 4.545));
31 tires.insert(4, build_tire(0.24765, 5.0));
32 tires.insert(5, build_tire(0.26162, 5.455));
33 tires.insert(6, build_tire(0.2667, 5.0));
34 tires
35}
36
37fn build_tire(radius: f64, mass: f64) -> std::collections::HashMap<String, f64> {
38 [("radius".to_owned(), radius), ("mass".to_owned(), mass)]
39 .iter()
40 .cloned()
41 .collect()
42}
43
44pub(crate) fn get_brakes(
45) -> std::collections::HashMap<usize, std::collections::HashMap<String, f64>> {
46 let mut brakes: std::collections::HashMap<usize, std::collections::HashMap<String, f64>> =
47 std::collections::HashMap::new();
48
49 brakes.insert(0, build_brake(0.5, 0.104, 0.0325, 0.016, 0.32, 0.03));
50 brakes.insert(1, build_brake(0.4, 0.1, 0.0425, 0.02, 0.35, 0.025));
51 brakes.insert(2, build_brake(0.5, 0.1135, 0.04, 0.016, 0.35, 0.025));
52 brakes.insert(3, build_brake(0.5, 0.1, 0.038, 0.016, 0.35, 0.03));
53 brakes.insert(4, build_brake(0.5, 0.104, 0.0375, 0.016, 0.355, 0.03));
54 brakes.insert(5, build_brake(0.4, 0.14, 0.049, 0.0175, 0.35, 0.025));
55 brakes.insert(6, build_brake(0.52, 0.1, 0.0425, 0.02, 0.35, 0.028));
56 brakes.insert(7, build_brake(0.5, 0.11, 0.052, 0.014, 0.35, 0.032));
57 brakes.insert(8, build_brake(0.5, 0.1, 0.0425, 0.02, 0.355, 0.032));
58 brakes.insert(9, build_brake(0.5, 0.132, 0.042, 0.018, 0.355, 0.028));
59 brakes.insert(10, build_brake(0.52, 0.14, 0.042, 0.0175, 0.35, 0.028));
60 brakes.insert(11, build_brake(0.63, 0.1, 0.0425, 0.02, 0.32, 0.028));
61 brakes.insert(12, build_brake(0.52, 0.14, 0.049, 0.0175, 0.33, 0.025));
62 brakes.insert(13, build_brake(0.63, 0.14, 0.042, 0.0175, 0.35, 0.025));
63 brakes.insert(14, build_brake(0.5, 0.132, 0.052, 0.017, 0.355, 0.028));
64 brakes.insert(15, build_brake(0.5, 0.132, 0.049, 0.016, 0.32, 0.032));
65 brakes.insert(16, build_brake(0.4, 0.14, 0.0615, 0.0175, 0.35, 0.028));
66 brakes.insert(17, build_brake(0.5, 0.14, 0.049, 0.0175, 0.35, 0.03));
67 brakes.insert(18, build_brake(0.5, 0.14, 0.0615, 0.0175, 0.32, 0.028));
68 brakes.insert(19, build_brake(0.5, 0.164, 0.049, 0.018, 0.355, 0.03));
69 brakes.insert(20, build_brake(0.52, 0.132, 0.049, 0.022, 0.35, 0.03));
70 brakes.insert(21, build_brake(0.63, 0.14, 0.049, 0.0175, 0.355, 0.03));
71 brakes.insert(22, build_brake(0.63, 0.14, 0.0615, 0.0175, 0.35, 0.025));
72 brakes.insert(23, build_brake(0.52, 0.14, 0.0615, 0.0175, 0.355, 0.032));
73 brakes.insert(24, build_brake(0.63, 0.132, 0.049, 0.025, 0.35, 0.025));
74 brakes.insert(25, build_brake(0.5, 0.152, 0.054, 0.025, 0.35, 0.028));
75 brakes.insert(26, build_brake(0.5, 0.164, 0.051, 0.025, 0.355, 0.028));
76 brakes.insert(27, build_brake(0.52, 0.164, 0.0645, 0.025, 0.35, 0.025));
77 brakes.insert(28, build_brake(0.63, 0.164, 0.051, 0.022, 0.33, 0.03));
78 brakes.insert(29, build_brake(0.52, 0.164, 0.051, 0.025, 0.35, 0.032));
79 brakes.insert(30, build_brake(0.52, 0.152, 0.054, 0.028, 0.355, 0.032));
80 brakes.insert(31, build_brake(0.63, 0.152, 0.054, 0.025, 0.32, 0.03));
81 brakes.insert(32, build_brake(0.52, 0.164, 0.0645, 0.029, 0.355, 0.028));
82 brakes.insert(33, build_brake(0.63, 0.164, 0.0645, 0.025, 0.355, 0.032));
83 brakes
84}
85
86fn build_brake(
87 density: f64,
88 length: f64,
89 height: f64,
90 width: f64,
91 thickness: f64,
92 radius: f64,
93) -> std::collections::HashMap<String, f64> {
94 [
95 ("density".to_owned(), density),
96 ("length".to_owned(), length),
97 ("height".to_owned(), height),
98 ("width".to_owned(), width),
99 ("thickness".to_owned(), thickness),
100 ("radius".to_owned(), radius),
101 ]
102 .iter()
103 .cloned()
104 .collect()
105}
106
107pub(crate) fn get_materials(
108) -> std::collections::HashMap<usize, std::collections::HashMap<String, f64>> {
109 let mut materials: std::collections::HashMap<usize, std::collections::HashMap<String, f64>> =
110 std::collections::HashMap::new();
111 materials
112}
113
114pub(crate) fn get_motors(
115) -> std::collections::HashMap<usize, std::collections::HashMap<String, f64>> {
116 let mut motors: std::collections::HashMap<usize, std::collections::HashMap<String, f64>> =
117 std::collections::HashMap::new();
118 motors
119}
120
121pub(crate) fn get_suspensions(
122) -> std::collections::HashMap<usize, std::collections::HashMap<String, f64>> {
123 let mut suspensions: std::collections::HashMap<usize, std::collections::HashMap<String, f64>> =
124 std::collections::HashMap::new();
125 suspensions
126}