@@ -91,6 +91,12 @@ extern "C"
9191 {
9292 // We have arrived
9393
94+ // wrap q to +- pi
95+ for (int i = 0 ; i < ets->n ; i++)
96+ {
97+ q (i) = std::fmod (q (i), PI);
98+ }
99+
94100 // Check for joint limit violation
95101 if (reject_jl)
96102 {
@@ -107,9 +113,6 @@ extern "C"
107113 // Jacobian Matric J
108114 _ETS_jacob0 (ets, q.data (), (double *)NULL , J);
109115
110- // g = J.T @ We @ e
111- // robot.q += np.linalg.inv(J.T @ We @ J) @ g
112-
113116 g = J.transpose () * We * e;
114117 Jw = J.transpose () * We * J;
115118
@@ -222,6 +225,12 @@ extern "C"
222225 {
223226 // We have arrived
224227
228+ // wrap q to +- pi
229+ for (int i = 0 ; i < ets->n ; i++)
230+ {
231+ q (i) = std::fmod (q (i), PI);
232+ }
233+
225234 // Check for joint limit violation
226235 if (reject_jl)
227236 {
@@ -339,6 +348,12 @@ extern "C"
339348 {
340349 // We have arrived
341350
351+ // wrap q to +- pi
352+ for (int i = 0 ; i < ets->n ; i++)
353+ {
354+ q (i) = std::fmod (q (i), PI);
355+ }
356+
342357 // Check for joint limit violation
343358 if (reject_jl)
344359 {
@@ -447,6 +462,12 @@ extern "C"
447462 {
448463 // We have arrived
449464
465+ // wrap q to +- pi
466+ for (int i = 0 ; i < ets->n ; i++)
467+ {
468+ q (i) = std::fmod (q (i), PI);
469+ }
470+
450471 // Check for joint limit violation
451472 if (reject_jl)
452473 {
@@ -553,6 +574,12 @@ extern "C"
553574 {
554575 // We have arrived
555576
577+ // wrap q to +- pi
578+ for (int i = 0 ; i < ets->n ; i++)
579+ {
580+ q (i) = std::fmod (q (i), PI);
581+ }
582+
556583 // Check for joint limit violation
557584 if (reject_jl)
558585 {
0 commit comments