struct mcl_robot_odo *odo = FSM_EVENT_PTR;
mcl->predict(mcl, odo);
free(odo);
+ struct mcl_robot_pos *est = robot.mcl->estimated;
+ ROBOT_LOCK(est_pos);
+ robot.est_pos.x = est->x;
+ robot.est_pos.y = est->y;
+ robot.est_pos.phi = est->angle;
+ ROBOT_UNLOCK(est_pos);
break;
}
case EV_LASER_RECEIVED: {
#if 1
struct TrajectoryConstraints trajectoryConstraintsDefault = {
- maxv: 0.9, // m/s
+ maxv: 0.3, // m/s
maxomega: 1.5, // rad/s
maxangacc: 2, // rad/s^2
maxacc: 0.3, // m/s^2
robot.laser.width = PLAYGROUND_WIDTH_M; /* in meters */
robot.laser.height = PLAYGROUND_WIDTH_M; /* in meters */
/* the noises */
- robot.laser.pred_dnoise = 0.01;
+ robot.laser.pred_dnoise = 0.001;
robot.laser.pred_anoise = DEG2RAD(2);
robot.laser.aeval_sigma = DEG2RAD(4);
robot.mcl = mcl_laser_init(&robot.laser, 1000);
robot_trajectory_add_point_trans(2, 0.5);
robot_trajectory_add_point_trans(2, 1.5);
robot_trajectory_add_point_trans(1, 1.5);
- robot_trajectory_add_final_point_trans(1, 0.5, TURN(DEG2RAD(90)));
+ robot_trajectory_add_final_point_trans(1, 0.5, NO_TURN());
}
FSM_STATE(rectangle)
follow_rectangle();
break;
case EV_TRAJECTORY_ERROR:
- FSM_TRANSITION(turn);
+// FSM_TRANSITION(turn);
break;
case EV_MOTION_DONE:
- FSM_TRANSITION(turn);
+// FSM_TRANSITION(turn);
break;
default:
break;