Пример #1
0
void robotField::keyPressEvent(QKeyEvent *event)
{
    if(event->key()==Qt::Key_Up)
        moveRobot(-5);

    if(event->key()==Qt::Key_Down)
        moveRobot(5);

    if(event->key()==Qt::Key_Right)
        rotateRobot(10);;

    if(event->key()==Qt::Key_Left)
        rotateRobot(-10);
    if(event->key()==Qt::Key_0)
        rotateRobot(15);
}
Пример #2
0
bool PewPewBot::camYawAlign()
{
	//if (camera->hasData()){
	cout << "Gyro: " << drive->getGyro() << " Error: "
	<< drive->turnPID->GetError() << endl;
	yawAlignState = true;
	if (rotateRobot(270,5))
	{
		yawAlignState = false;
		return true;
	}
	return false;
}
Пример #3
0
int robotField::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QGraphicsView::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: moveRobot((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 1: rotateRobot((*reinterpret_cast< int(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 2;
    }
    return _id;
}
Пример #4
0
void PewPewBot::Autonomous()
{
	GetWatchdog().SetEnabled(true);
	GetWatchdog().SetExpiration(0.2);

	drive->shift(false);
	drive->resetEncoders();
	autonomousMode = kCollect;
	stableCount = 0;

	//Cleaning
	collector->clean();

	double startTime = System::currentTimeMillis();

	//Spinup shooter
	updateShooter(true);

	drive->setLight(true);
	hasResetItem = false;

	while (IsAutonomous() && !IsDisabled())
	{
		if (PID_SLIDER> .2095)
		{
			shooter->setPIDAdjust(0.0762 * log(PID_SLIDER) + 0.0407);
		} else
		{
			shooter->setPIDAdjust(-0.15);
		}
		shooter->update();
#if KINECT
		if (kinect->getKinectMode())
		{
			autonomousMode = kKinect;
		}
#endif

		drive->updateCompressor();
		collector->update();
#if KINECT
		kinect->update();
#endif
		updateDriverStation();

		switch (autonomousMode)
		{
		case kDoYawAlign:
			break;
		case kDoDepthAlign:
			if (lineDepthAlign())
				autonomousMode = kCollect;
			break;
		case kCollect:
			if (collectAllBalls())
				autonomousMode = kShoot;
			break;
		case kShoot:
			if (shootAllBalls(AUTONOMOUS_DELAY_SWITCH?startTime + AUTONOMOUS_DELAY:-1))
			{
				//If there are balls left, cycle back to the collect stage
				if (collector->getSense(0) || collector->getSense(1)
						|| collector->getSense(2))
				{
					autonomousMode = kCollect;
				} else if (AUTONOMOUS_FULL_AUTO_SWITCH)
				{
					autonomousMode = kRotate180;
				} 
#if KINECT
				else if (kinect->hasKinect())
				{
					autonomousMode = kKinect;
				}
#endif
				else
				{
					autonomousMode = kDone;
				}
			}
			break;
		case kRotate180:
			if (rotateRobot(180, 5))
				autonomousMode = kMoveToBridge;
			break;
		case kMoveToBridge:
			if (!hasResetItem)
			{
				drive->resetEncoders();
				hasResetItem = true;
			}
			drive->setSpeedL(.25);
			drive->setSpeedR(.25);
			double distance = (drive->getLPosition() + drive->getRPosition())
					/ 2.0;
			if (fabs(distance - 7.0) < 0.5)
			{
				hasResetItem = false;
				autonomousMode = kTipBridge;
			}
			break;
		case kTipBridge:
			drive->tip(true);
			autonomousMode = kDone;
			break;
		case kKinect:
#if KINECT
			kinectCode();
#else
			autonomousMode = kDone;
#endif
			break;
		default:
			//We are done
			updateShooter(false);
			break;
		}
		drive->setLight(false);
		GetWatchdog().Feed();
		Wait(0.02);
	}

}
Пример #5
0
int rightChecker1() {
  rotateRobot(1);
  return frontChecker();
}
Пример #6
0
int leftChecker1() {
  rotateRobot(-1);
  return frontChecker();
}