From: zer0 Date: Fri, 30 Apr 2010 21:47:34 +0000 (+0200) Subject: add climb fct X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=commitdiff_plain;h=0abf8acb258a098ee79cbbdb71f284693489d678 add climb fct --- diff --git a/modules/devices/robot/trajectory_manager/trajectory_manager_core.c b/modules/devices/robot/trajectory_manager/trajectory_manager_core.c index c71def0..8ea3bd8 100644 --- a/modules/devices/robot/trajectory_manager/trajectory_manager_core.c +++ b/modules/devices/robot/trajectory_manager/trajectory_manager_core.c @@ -191,8 +191,6 @@ void trajectory_stop(struct trajectory *traj) UPDATE_A | UPDATE_D | RESET_D | RESET_A); } -//#include - /** set relative angle and distance consign to 0, and break any * deceleration ramp in quadramp filter */ void trajectory_hardstop(struct trajectory *traj) diff --git a/projects/microb2010/mainboard/commands.c b/projects/microb2010/mainboard/commands.c index e79562b..7eda8fd 100644 --- a/projects/microb2010/mainboard/commands.c +++ b/projects/microb2010/mainboard/commands.c @@ -84,6 +84,7 @@ extern parse_pgm_inst_t cmd_clitoid; extern parse_pgm_inst_t cmd_time_monitor; extern parse_pgm_inst_t cmd_strat_event; extern parse_pgm_inst_t cmd_test; +extern parse_pgm_inst_t cmd_climb; /* commands_traj.c */ extern parse_pgm_inst_t cmd_traj_speed; @@ -176,6 +177,7 @@ parse_pgm_ctx_t main_ctx[] = { (parse_pgm_inst_t *)&cmd_time_monitor, (parse_pgm_inst_t *)&cmd_strat_event, (parse_pgm_inst_t *)&cmd_test, + (parse_pgm_inst_t *)&cmd_climb, /* commands_traj.c */ (parse_pgm_inst_t *)&cmd_traj_speed, diff --git a/projects/microb2010/mainboard/commands_mainboard.c b/projects/microb2010/mainboard/commands_mainboard.c index 13a327a..fc51e8e 100644 --- a/projects/microb2010/mainboard/commands_mainboard.c +++ b/projects/microb2010/mainboard/commands_mainboard.c @@ -1252,3 +1252,75 @@ parse_pgm_inst_t cmd_test = { NULL, }, }; + + + + +/**********************************************************/ +/* Climb */ + +/* this structure is filled when cmd_climb is parsed successfully */ +struct cmd_climb_result { + fixed_string_t arg0; + int32_t radius; + int32_t dist; +}; + + +//#define DIM_BALLS_DOWN 620 +//#define DIM_BALLS_UP 700 + +#define DIM_BALLS_DOWN 530 +#define DIM_BALLS_UP 700 + +/* function called when cmd_climb is parsed successfully */ +static void cmd_climb_parsed(void *parsed_result, void *data) +{ + uint8_t err; + + printf_P(PSTR("starting Clifenger\r\n")); + strat_set_speed(SPEED_DIST_SLOW, SPEED_ANGLE_SLOW ); + + trajectory_goto_xy_abs(&mainboard.traj, 250, 250); + err = wait_traj_end(TRAJ_FLAGS_SMALL_DIST); + trajectory_a_abs(&mainboard.traj, 0); + err = wait_traj_end(TRAJ_FLAGS_SMALL_DIST); + + + + trajectory_goto_xy_abs(&mainboard.traj, 1250, 250); + err = WAIT_COND_OR_TRAJ_END(position_get_x_s16(&mainboard.pos)>DIM_BALLS_DOWN, 0xFF); + printf_P(PSTR("ball_pack\r\n")); + support_balls_pack(); + err = WAIT_COND_OR_TRAJ_END(position_get_x_s16(&mainboard.pos)>DIM_BALLS_UP, 0xFF); + printf_P(PSTR("ball_deploy\r\n")); + support_balls_deploy(); + err = wait_traj_end(TRAJ_FLAGS_SMALL_DIST); + + /* reach top, go down */ + trajectory_goto_xy_abs(&mainboard.traj, 250, 250); + err = WAIT_COND_OR_TRAJ_END(position_get_x_s16(&mainboard.pos)