X-Git-Url: https://defiant.homedns.org/gitweb/?p=ros_wild_thumper.git;a=blobdiff_plain;f=avr%2Fmotor_ctrl%2Fmain.c;h=fbdc1cecd5ed095a1cec4eb3f6f5186c3dfc2283;hp=1fd829253bd09f76c7e45800fa41cdedfe0255b2;hb=c79c0e44c7fdd7603a1910bc92fd80b6eb60ee78;hpb=2dbdb0777dda392369a9782812556f712ac1c1e2 diff --git a/avr/motor_ctrl/main.c b/avr/motor_ctrl/main.c index 1fd8292..fbdc1ce 100644 --- a/avr/motor_ctrl/main.c +++ b/avr/motor_ctrl/main.c @@ -106,7 +106,7 @@ #define KI 0.051429 #define KD 0.000378 #define PID_T 0.01 -#define STEP_PER_M 3376.1 // wheel diameter=12cm, encoder=48cpr, gear ratio=1:34 +#define STEP_PER_M 4171.4 // wheel diameter=12cm, encoder=48cpr, gear ratio=1:34 #define WHEEL_DIST 0.252 enum mode { @@ -346,10 +346,12 @@ ISR(TWI_vect) break; case 0x94: // Front Handicap backward front_handicap_bwd = TWDR; + cmd_vel.bUpdate = 1; TWI_ACK; break; case 0x95: // Aft Handicap forward aft_handicap_fwd = TWDR; + cmd_vel.bUpdate = 1; TWI_ACK; break; case 0xff: // bootloader @@ -776,7 +778,7 @@ static void update_pos(void) { angle_new = angle.f + angle_diff; if (angle_new > 2*M_PI) angle_new-=2*M_PI; - else if (angle_new < 2*M_PI) angle_new+=2*M_PI; + else if (angle_new < -2*M_PI) angle_new+=2*M_PI; translation = (diff_left_m + diff_right_m)/2.0; pos_x_new = pos_x.f + cos(angle_new)*translation; @@ -963,22 +965,22 @@ int main(void) { speed_wish_left*=STEP_PER_M; speed_wish_right*=STEP_PER_M; - if (speed1_wish > 0 && aft_handicap_fwd > 0) { + if (speed_wish_left > 0 && aft_handicap_fwd > 0) { speed1_wish = speed_wish_left * (100-aft_handicap_fwd)/100.0; } else { speed1_wish = speed_wish_left; } - if (speed2_wish > 0 && front_handicap_bwd > 0) { + if (speed_wish_left < 0 && front_handicap_bwd > 0) { speed2_wish = speed_wish_left * (100-front_handicap_bwd)/100.0; } else { speed2_wish = speed_wish_left; } - if (speed3_wish > 0 && front_handicap_bwd > 0) { + if (speed_wish_right < 0 && front_handicap_bwd > 0) { speed3_wish = speed_wish_right * (100-front_handicap_bwd)/100.0; } else { speed3_wish = speed_wish_right; } - if (speed4_wish > 0 && aft_handicap_fwd > 0) { + if (speed_wish_right > 0 && aft_handicap_fwd > 0) { speed4_wish = speed_wish_right * (100-aft_handicap_fwd)/100.0; } else { speed4_wish = speed_wish_right;