Example #1
0
void BASE_Halt(void)
{
  BASE_TranslateAcceleration(transDeceleration);
  BASE_TranslateHalt();
  BASE_RotateAcceleration(rotDeceleration);
  BASE_RotateHalt();
  BASE_TranslateAcceleration(transDeceleration);
  BASE_RotateAcceleration(rotDeceleration);
}
Example #2
0
void BASE_reset(void)
{
  struct timeval poll_interval;

  JoystickDisable();
  HalfDuplex();
  setErrorDelay(128); /* number of 256Hz cycles between error and shutdown. */
  TorqueLimit(100);
  BASE_RotateAcceleration(rotAcceleration);
  BASE_TranslateAcceleration(transAcceleration);
  //  BASE_RotateVelocity(init_rot_speed);
  //  BASE_TranslateVelocity(init_trans_speed);
  BASE_StatusReportData(SR_POS_X |
			SR_POS_Y |
			SR_TOP_HEADING |
			SR_BASE_HEADING |
			SR_TRANS_VELOCITY |
			SR_TRANS_STATUS |
			SR_ROT_VELOCITY |
			SR_ROT_STATUS |
			SR_TRANS_MOTOR_PULSE |
			SR_ROT_MOTOR_PULSE);

  /* commands in the streaming data from base */
  BASE_SetIntervalUpdates(STREAMING_MILLISECONDS);
  poll_interval.tv_usec = 0;
  poll_interval.tv_sec = CHECKING_SECONDS;
  devStartPolling(base_device.dev, &poll_interval, BASE_report_check, NULL);
  BASE_InstallHandler((Handler)BASE_SetRotationReference, STATUS_REPORT,
		      (Pointer) NULL, TRUE);
}
Example #3
0
void COLLI_SetMode( int mode)
{
  int intMode = (int) mode;
  
  if (intMode >= NUMBER_OF_MODES || intMode < 0) {
    fprintf(stderr, "Wrong mode number (%d). Use default mode.\n", intMode);
    ACTUAL_MODE = mode_structure_array[DEFAULT_MODE];
    mode_number = DEFAULT_MODE;
  }
  else {
    ACTUAL_MODE = mode_structure_array[intMode];
    mode_number = intMode;
    if ( mode_number == ARM_OUT_MODE) {
      armState = OUTSIDE;
/*       COLLI_GoBackward(); */
    }
  }

  fprintf(stderr, "\n\nmode: %d\n", intMode);
 
  fprintf (stderr, "tv      : %f  ", (ACTUAL_MODE->target_max_trans_speed));
  fprintf (stderr, "ta      : %f\n", (ACTUAL_MODE->target_trans_acceleration));
  fprintf (stderr, "rv      : %f  ", (RAD_TO_DEG(ACTUAL_MODE->target_max_rot_speed)));
  fprintf (stderr, "ra      : %f\n", (RAD_TO_DEG(ACTUAL_MODE->target_rot_acceleration)));
  fprintf (stderr, "velocity: %f \n", (ACTUAL_MODE->velocity_factor));
  fprintf (stderr, "angle   : %f\n", (ACTUAL_MODE->angle_factor));
  fprintf (stderr, "distance: %f\n", (ACTUAL_MODE->distance_factor));

  /* Set the corresponding values. */
  BASE_TranslateVelocity(             ACTUAL_MODE->target_max_trans_speed);
  BASE_RotateVelocity( RAD_TO_DEG(    ACTUAL_MODE->target_max_rot_speed));
  BASE_TranslateAcceleration(         ACTUAL_MODE->target_trans_acceleration);
  BASE_RotateAcceleration(RAD_TO_DEG( ACTUAL_MODE->target_rot_acceleration));
}
Example #4
0
void BASE_TranslateForward(void)
{
  if (rwi_base.emergency)
    return;
  if (rwi_base.trans_current_speed == 0 ||
      (rwi_base.trans_direction != POSITIVE &&
       rwi_base.trans_set_speed != 0.0))
    {
      BASE_TranslateAcceleration(transAcceleration);

      SET_ROBOT_STATE(trans_set_direction, POSITIVE);
    
      SET_ROBOT_STATE(trans_set_speed, FABS(rwi_base.trans_set_speed));
    
      WriteCommand("T+", 0, 0);
    }
}