@@ -40,74 +40,104 @@ TEST_F(EuclideanToWheelTest, test_target_wheel_speeds_zero)
4040// velocity, and vise-versa.
4141TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_x)
4242{
43- // Test +x/right
43+ // Test +x/forward
4444 target_euclidean_velocity = {1 , 0 , 0 };
4545 calculated_wheel_speeds =
4646 euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
4747
48- // Front wheels must be - velocity, back wheels must be + velocity.
48+ // Right wheels must be - velocity, left wheels must be + velocity.
4949 EXPECT_LT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
50- EXPECT_LT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
50+ EXPECT_GT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
5151 EXPECT_GT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
52- EXPECT_GT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
52+ EXPECT_LT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
53+
54+
55+ // Right wheels must have same velocity magnitude as left wheels, but opposite sign.
56+ EXPECT_DOUBLE_EQ (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
57+ -calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]);
58+ EXPECT_DOUBLE_EQ (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX],
59+ -calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]);
5360}
5461
5562TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_x)
5663{
57- // Test -x/left
64+ // Test -x/backward
5865 target_euclidean_velocity = {-1 , 0 , 0 };
5966 calculated_wheel_speeds =
6067 euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
6168
62- // Front wheels must be + velocity, back wheels must be - velocity.
69+ // Right wheels must be + velocity, left wheels must be - velocity.
6370 EXPECT_GT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
64- EXPECT_GT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
71+ EXPECT_LT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
6572 EXPECT_LT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
66- EXPECT_LT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
73+ EXPECT_GT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
74+
75+ // Right wheels must have same velocity magnitude as left wheels, but opposite sign.
76+ EXPECT_DOUBLE_EQ (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
77+ -calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]);
78+ EXPECT_DOUBLE_EQ (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX],
79+ -calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]);
6780}
6881
6982TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_y)
7083{
71- // Test +y/forwards
84+ // Test +y/left
7285 target_euclidean_velocity = {0 , 1 , 0 };
7386 calculated_wheel_speeds =
7487 euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
7588
76- // Right wheels must be + velocity, Left wheels must be - velocity.
77- EXPECT_GT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
89+ // Back wheels must be + velocity, front wheels must be - velocity.
90+ EXPECT_LT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
7891 EXPECT_LT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
79- EXPECT_LT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
92+ EXPECT_GT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
8093 EXPECT_GT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
81-
82- // Right wheels must have same velocity magnitude as left wheels, but opposite sign.
83- EXPECT_DOUBLE_EQ (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
84- -calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]);
85- EXPECT_DOUBLE_EQ (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX],
86- -calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]);
8794}
8895
8996TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_y)
9097{
91- // Test -y/backwards
98+ // Test -y/right
9299 target_euclidean_velocity = {0 , -1 , 0 };
93100 calculated_wheel_speeds =
94101 euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
95102
103+ // Back wheels must be - velocity, front wheels must be + velocity.
104+ EXPECT_GT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
105+ EXPECT_GT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
106+ EXPECT_LT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
107+ EXPECT_LT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
108+ }
109+
110+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_w_sign)
111+ {
112+ // Test w / counter-clockwise
113+ target_euclidean_velocity = {0 , 0 , 1 };
114+ calculated_wheel_speeds =
115+ euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
116+
96117 // Right wheels must be + velocity, Left wheels must be - velocity.
97118 EXPECT_LT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
98- EXPECT_GT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
99- EXPECT_GT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
119+ EXPECT_LT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
120+ EXPECT_LT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
100121 EXPECT_LT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
122+ }
101123
102- // Right wheels must have same velocity magnitude as left wheels, but opposite sign.
103- EXPECT_DOUBLE_EQ (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
104- -calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]);
105- EXPECT_DOUBLE_EQ (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX],
106- -calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]);
124+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_w_sign)
125+ {
126+ // Test w / clockwise
127+ target_euclidean_velocity = {0 , 0 , -1 };
128+ calculated_wheel_speeds =
129+ euclidean_to_four_wheel.getWheelVelocity (target_euclidean_velocity);
130+
131+ // Right wheels must be + velocity, Left wheels must be - velocity.
132+ EXPECT_GT (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX], 0 );
133+ EXPECT_GT (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], 0 );
134+ EXPECT_GT (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], 0 );
135+ EXPECT_GT (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], 0 );
107136}
108137
109- #ifdef DEBUG_WHEEL
110- TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_w)
138+ // #ifdef DEBUG_WHEEL
139+ #if CHECK_VERSION(2026)
140+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_w_magnitude)
111141{
112142 // Test +w/counter-clockwise
113143 target_euclidean_velocity = {0 , 0 , 1 };
@@ -116,20 +146,23 @@ TEST_F(EuclideanToWheelTest, test_target_wheel_speeds_positive_w)
116146
117147 // Because the wheels are offset, their speed at 1 rad/s equals their
118148 // exact physical lever arm (in meters), NOT the nominal robot_radius.
119- // Based on the physical offsets, the lever arm evaluates to 0.0746 meters.
120- double expected_lever_arm = 0.0746 ;
121149
122- EXPECT_NEAR (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
150+ // i have no idea what it's yapping about above but i ignored it lol
151+
152+ // Based on the physical offsets, the lever arm evaluates to 0.0749 meters.
153+ double expected_lever_arm = 0.0749 ;
154+
155+ EXPECT_NEAR (std::abs (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX]),
123156 expected_lever_arm, 0.001 );
124- EXPECT_NEAR (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], expected_lever_arm,
157+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
125158 0.001 );
126- EXPECT_NEAR (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], expected_lever_arm,
159+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
127160 0.001 );
128- EXPECT_NEAR (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], expected_lever_arm,
161+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
129162 0.001 );
130163}
131164
132- TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_w )
165+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_w_magnitude )
133166{
134167 // Test -w/clockwise
135168 target_euclidean_velocity = {0 , 0 , -1 };
@@ -138,20 +171,20 @@ TEST_F(EuclideanToWheelTest, test_target_wheel_speeds_negative_w)
138171
139172 // Because the wheels are offset, their speed at -1 rad/s equals their
140173 // exact physical lever arm (in meters) multiplied by the negative velocity.
141- double expected_lever_arm = - 0.0746 ;
174+ double expected_lever_arm = 0.0749 ;
142175
143- EXPECT_NEAR (calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX],
176+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[FRONT_RIGHT_WHEEL_SPACE_INDEX]) ,
144177 expected_lever_arm, 0.001 );
145- EXPECT_NEAR (calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX], expected_lever_arm,
178+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[FRONT_LEFT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
146179 0.001 );
147- EXPECT_NEAR (calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX], expected_lever_arm,
180+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[BACK_LEFT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
148181 0.001 );
149- EXPECT_NEAR (calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX], expected_lever_arm,
182+ EXPECT_NEAR (std::abs ( calculated_wheel_speeds[BACK_RIGHT_WHEEL_SPACE_INDEX]) , expected_lever_arm,
150183 0.001 );
151184}
152185#else
153186
154- TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_w )
187+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_positive_w_magnitude )
155188{
156189 // Test +w/counter-clockwise
157190 target_euclidean_velocity = {0 , 0 , 1 };
@@ -169,7 +202,7 @@ TEST_F(EuclideanToWheelTest, test_target_wheel_speeds_positive_w)
169202}
170203
171204
172- TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_w )
205+ TEST_F (EuclideanToWheelTest, test_target_wheel_speeds_negative_w_magnitude )
173206{
174207 // Test -w/clockwise
175208 target_euclidean_velocity = {0 , 0 , -1 };
0 commit comments