X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat.c;h=db2221faec66889775952e9e2072f2c364798ccb;hp=3ef6675f5837a3535a9e001a497fb5c28f55a77a;hb=092caa88280f71fb58e5938114304fe2e94d6855;hpb=0a6dcb3bfa4b8b424975f91b8bcd57f0832deb9e diff --git a/projects/microb2010/mainboard/strat.c b/projects/microb2010/mainboard/strat.c index 3ef6675..db2221f 100644 --- a/projects/microb2010/mainboard/strat.c +++ b/projects/microb2010/mainboard/strat.c @@ -116,8 +116,8 @@ void strat_event_disable(void) void strat_init(void) { #ifdef HOST_VERSION - position_set(&mainboard.pos, 298.16, - COLOR_Y(308.78), COLOR_A(70.00)); + position_set(&mainboard.pos, 258., + COLOR_Y(246.), COLOR_A(45.)); #endif /* we consider that the color is correctly set */ @@ -155,18 +155,33 @@ void strat_exit(void) #endif } -/* called periodically (10ms) */ -void strat_event(void *dummy) +/* mark tomato as not present */ +static void check_tomato(void) +{ + int16_t x, y; + uint8_t i, j; + + x = position_get_x_s16(&mainboard.pos); + y = position_get_y_s16(&mainboard.pos); + + if (xycoord_to_ijcoord(&x, &y, &i, &j) < 0) + return; + + if (strat_db.wp_table[i][j].type != WP_TYPE_TOMATO) + return; + + strat_db.wp_table[i][j].present = 0; +} + +/* mark corn as not present and give correct commands to the cobboard + * for spickles */ +static void check_corn(void) { uint8_t flags; int8_t lcob_near, rcob_near; uint8_t lcob, rcob; uint8_t lidx, ridx; - /* ignore when strat is not running */ - if (strat_running == 0) - return; - /* read sensors from ballboard */ IRQ_LOCK(flags); lcob = ballboard.lcob; @@ -255,9 +270,19 @@ void strat_event(void *dummy) else i2c_cobboard_deploy(I2C_RIGHT_SIDE); } +} + +/* called periodically (10ms) */ +void strat_event(void *dummy) +{ + /* ignore when strat is not running */ + if (strat_running == 0) + return; + check_tomato(); + check_corn(); /* limit speed when opponent is near */ - strat_limit_speed(); + //strat_limit_speed(); } @@ -325,10 +350,9 @@ static uint8_t strat_beginning(void) uint8_t err; strat_set_acc(ACC_DIST, ACC_ANGLE); - strat_set_speed(600, 60); /* OK */ - //strat_set_speed(250, 28); /* OK */ + strat_set_speed(400, 150); /* OK */ - trajectory_d_a_rel(&mainboard.traj, 1000, COLOR_A(20)); + trajectory_d_a_rel(&mainboard.traj, 800, COLOR_A(45)); err = WAIT_COND_OR_TRAJ_END(trajectory_angle_finished(&mainboard.traj), TRAJ_FLAGS_STD);