2 * rectangle.cc 07/08/01
4 * Movement test: move in a rectangle.
6 * Copyright: (c) 2007 CTU Dragons
7 * CTU FEE - Department of Control Engineering
12 #include <movehelper.h>
20 UL_LOG_CUST(ulogd_rectangle); /* Log domain name = ulogd + name of the file */
22 FSM_STATE_DECL(rectangle);
27 /* Where we are at the begining? */
33 FSM_TRANSITION(rectangle);
34 if (!robot.localization_works) {
35 robot_set_est_pos_trans(0.5, 0.5, DEG2RAD(0));
38 robot_set_est_pos_trans(robot.est_pos_uzv.x, robot.est_pos_uzv.y, DEG2RAD(0));
46 void follow_rectangle()
48 double rectangle[][2] = { { 0.5, 0.5 },
52 static bool backward = false;
53 struct TrajectoryConstraints tc = trajectoryConstraintsDefault;
59 /* Allocate new trajectory */
61 robot_trajectory_new(&tc);
63 robot_trajectory_new_backward(&tc);
66 for (i=0; i<sizeof(rectangle)/sizeof(rectangle[0]); i++) {
67 if (!backward) j=(i+1)%4;
70 robot_trajectory_add_point_trans(rectangle[j][0], rectangle[j][1]);
72 robot_trajectory_add_final_point_trans(rectangle[j][0], rectangle[j][1], TURN(0));
75 //backward = !backward;
85 //FSM_TRANSITION(turn);
97 robot_trajectory_new(NULL);
98 robot_trajectory_add_final_point_trans(1, 0.5,
99 TURN_CCW(DEG2RAD(0)));
102 FSM_TRANSITION(wait);
115 FSM_TRANSITION(rectangle);
122 void transition_callback(struct robo_fsm *fsm)
124 ul_loginf("fsmcb %s: %s(%s)\n", fsm->debug_name, fsm->state_name, fsm_event_str(fsm->events[fsm->ev_head]));
134 if (rv) error(1, errno, "robot_init() returned %d\n", rv);
136 //robot.fsm.main.transition_callback = transition_callback;
137 //robot.fsm.motion.transition_callback = transition_callback;
138 //robot.fsm.main.debug_states = 1;
139 robot.fsm.motion.debug_states = 1;
141 robot.fsm.main.state = &fsm_state_main_init;
144 if (rv) error(1, errno, "robot_start() returned %d\n", rv);