Skip to content

Commit dfa1933

Browse files
committed
Added back tool angle for solve, I was trying to solve it for 3 joints...
1 parent 1222aa5 commit dfa1933

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

src/FABRIK2D.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ uint8_t Fabrik2D::solve2(
278278
}
279279

280280
uint8_t Fabrik2D::solve(float x, float y, float toolAngle, int lengths[]) {
281-
return 0; // Makes no sense to solve this, remove in the future
281+
return solve2(x, y, 0, toolAngle, 0, lengths);
282282
}
283283

284284
uint8_t Fabrik2D::solve(
@@ -287,7 +287,7 @@ uint8_t Fabrik2D::solve(
287287
float grippingOffset,
288288
int lengths[]
289289
) {
290-
return 0; // Makes no sense to solve this, remove in the future
290+
return solve2(x, y, 0, toolAngle, grippingOffset, lengths);
291291
}
292292

293293
uint8_t Fabrik2D::solve2(float x, float y, float z, int lengths[]) {

test/unit_tests.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,30 @@ unittest(test_solve)
146146
assertEqualFloat(100, fabrik2D_3_2DOF.getX(2), fabrik2D_3_2DOF.getTolerance());
147147
assertEqualFloat(100, fabrik2D_3_2DOF.getY(2), fabrik2D_3_2DOF.getTolerance());
148148

149+
// Solve 4 joints, 3DOF
150+
fprintf(stderr, "Solve 4 joints, 3DOF\n");
151+
Fabrik2D fabrik2D_3_3DOF(3, lengths_4_joints, 10);
152+
success = fabrik2D_3_3DOF.solve(150, 50, -HALF_PI, lengths_4_joints);
153+
assertEqual(1, success);
154+
155+
assertEqualFloat(150, fabrik2D_3_3DOF.getX(3), fabrik2D_3_3DOF.getTolerance());
156+
assertEqualFloat(50, fabrik2D_3_3DOF.getY(3), fabrik2D_3_3DOF.getTolerance());
157+
158+
assertEqualFloat(150, fabrik2D_3_3DOF.getX(2), fabrik2D_3_3DOF.getTolerance());
159+
assertEqualFloat(250, fabrik2D_3_3DOF.getY(2), fabrik2D_3_3DOF.getTolerance());
160+
161+
// Solve 4 joints, 3DOF, Gripping offset
162+
fprintf(stderr, "Solve 4 joints, 3DOF, Gripping offset\n");
163+
Fabrik2D fabrik2D_3_3DOF_GO(3, lengths_4_joints, 1);
164+
success = fabrik2D_3_3DOF_GO.solve(150, 50, -HALF_PI, 10, lengths_4_joints);
165+
assertEqual(1, success);
166+
167+
assertEqualFloat(150, fabrik2D_3_3DOF_GO.getX(3), fabrik2D_3_3DOF_GO.getTolerance());
168+
assertEqualFloat(60, fabrik2D_3_3DOF_GO.getY(3), fabrik2D_3_3DOF_GO.getTolerance());
169+
170+
assertEqualFloat(150, fabrik2D_3_3DOF_GO.getX(2), fabrik2D_3_3DOF_GO.getTolerance());
171+
assertEqualFloat(260, fabrik2D_3_3DOF_GO.getY(2), fabrik2D_3_3DOF_GO.getTolerance());
172+
149173
// Solve 4 joints, 3DOF
150174
fprintf(stderr, "Solve 4 joints, 3DOF\n");
151175
Fabrik2D fabrik2D_4_3DOF(4, lengths_4_joints, 1);

0 commit comments

Comments
 (0)