DO_POS | DO_BD | DO_POWER;
strat_db_init();
+ strat_conf.prev_wait_obstacle = -5;
strat_conf_dump(__FUNCTION__);
strat_db_dump(__FUNCTION__);
}
return;
printf_P(PSTR("-- conf --\r\n"));
- printf_P(PSTR("opp_orange = %d\n"), strat_conf.opp_orange);
- printf_P(PSTR("orphan_tomato = %d\n"), strat_conf.orphan_tomato);
printf_P(PSTR("our_orange = %s\n"),
(strat_conf.flags & STRAT_CONF_OUR_ORANGE) ? "y":"n");
+ printf_P(PSTR("wait_obstacle = %s\n"),
+ (strat_conf.flags & STRAT_CONF_WAIT_OBSTACLE) ? "y":"n");
+ printf_P(PSTR("opp_orange = %d\n"), strat_conf.opp_orange);
+ printf_P(PSTR("orphan_tomato = %d\n"), strat_conf.orphan_tomato);
}
void strat_event_enable(void)
strat_set_acc(ACC_DIST, ACC_ANGLE);
strat_set_speed(SPEED_CLITOID_SLOW, SPEED_ANGLE_SLOW);
+ l1:
err = line2line(0, LINE_UP, 2, LINE_R_DOWN, TRAJ_FLAGS_NO_NEAR);
+ if (err == END_OBSTACLE &&
+ strat_conf.flags & STRAT_CONF_WAIT_OBSTACLE &&
+ time_get_s() > strat_conf.prev_wait_obstacle + 5) {
+ strat_conf.prev_wait_obstacle = time_get_s();
+ time_wait_ms(2000);
+ goto l1;
+ }
if (!TRAJ_SUCCESS(err))
return err;
+ l2:
err = line2line(2, LINE_R_DOWN, 2, LINE_R_UP, TRAJ_FLAGS_NO_NEAR);
+ if (err == END_OBSTACLE &&
+ strat_conf.flags & STRAT_CONF_WAIT_OBSTACLE &&
+ time_get_s() > strat_conf.prev_wait_obstacle + 5) {
+ strat_conf.prev_wait_obstacle = time_get_s();
+ time_wait_ms(2000);
+ goto l2;
+ }
if (!TRAJ_SUCCESS(err)) {
return err;
}
return END_TRAJ;
}
+static uint8_t strat_beginning2(uint8_t do_initturn)
+{
+ uint8_t err;
+
+ strat_set_acc(ACC_DIST, ACC_ANGLE);
+
+ if (do_initturn) {
+ strat_set_speed(600, 90); /* OK */
+ trajectory_d_a_rel(&mainboard.traj, 1000, COLOR_A(-40));
+ err = WAIT_COND_OR_TRAJ_END(trajectory_angle_finished(&mainboard.traj),
+ TRAJ_FLAGS_STD);
+ if (err == 0)
+ return END_TRAJ;
+ }
+ else {
+ trajectory_goto_forward_xy_abs(&mainboard.traj,
+ 375, COLOR_Y(597));
+ err = wait_traj_end(TRAJ_FLAGS_STD);
+ }
+ return err;
+}
+
/* dump state (every 5 s max) */
#define DUMP_RATE_LIMIT(dump, last_print) \
do { \
}
/* harvest the first cobs + balls */
- err = strat_beginning(do_initturn);
+ if (strat_conf.flags & STRAT_CONF_STRAIGHT_BEGIN)
+ err = strat_beginning2(do_initturn);
+ else
+ err = strat_beginning(do_initturn);
if (!TRAJ_SUCCESS(err))
strat_unblock();