diff --git a/robots/primotion/dgrobot/grobot.cc b/robots/primotion/dgrobot/grobot.cc index 5723dfaf0fe31acda1ae8b752fc1a76e98e4e159..716519d14bbea1cb282757757f1dde533240b8a0 100755 --- a/robots/primotion/dgrobot/grobot.cc +++ b/robots/primotion/dgrobot/grobot.cc @@ -260,17 +260,20 @@ void grobot::dgoto(float Dx, float Dy, float Rf) { // calculate rotation components float Rir = atan2(Dy, Dx); - float Rfr = Rf - dt_init; + float Rfr = Rf - Rir; float moveL = sqrt((pow(Dx,2)) + (pow(Dy,2))); - if (0.0f == dt_init && 0.0f == moveL && 0.0f == Rfr) { + if (0.0f == Rir && 0.0f == moveL && 0.0f == Rfr) { set_gotocomplete(); } else { // execute primitives + dt_init = Rir; + dt_final = Rfr; + // reset position estimates - dt_init = 0.0f; - dt_final = 0.0f; + + dx_est = 0.0f; dy_est = 0.0f; @@ -432,19 +435,21 @@ void grobot::setCBstatus(int id, int stat, cb_type_t cbt) { updatePosition(); - float pa_temp = (dright - dleft) / TRACK_WIDTH; + //float pa_temp = (dright - dleft) / TRACK_WIDTH; if (1 == gotomcomplete) { // first pivot has finished - dt_init = pa_temp; + // FIXME + //dt_init = pa_temp; gotop1 = stat; } else if (3 == gotomcomplete) { // second pivot has executed - dt_final = pa_temp; - dt_est = dt_init + dt_final; + // FIXME + //dt_final = pa_temp; + //dt_est = dt_init + dt_final; gotop2 = stat;