Ejemplo n.º 1
0
void updateDrivetrain()
{
	updateGyro();
	if ( drivetrainTurning )
	{
		int output = calcPID(drivetrainTurnPID, getGyroAngle());
		output = hlLimit(output, 45, -45);
		setDrivetrainSpeeds(output, -output);
	}
	else
	{
		int output = hlLimit(calcPID(drivetrainPID, getDrivetrainDistance()), 100, -100);
		int left = hlLimit(output, drivetrainMaxSpeed, -drivetrainMaxSpeed);
		int right = hlLimit(output, drivetrainMaxSpeed, -drivetrainMaxSpeed);
		if ( drivetrainGyroDrivestraight )
		{
			drivetrainTurnPID.error = drivetrainTurnPID.target-getGyroAngle();
			int turnAmt = drivetrainTurnPID.error*DRIVETRAIN_ANGLECORRECT_CONSTANT;
			nxtDisplayString(2, "%i %i", turnAmt, DRIVETRAIN_ANGLECORRECT_CONSTANT);
			left += turnAmt;
			right -= turnAmt;
		}
		setDrivetrainSpeeds(left, right);
	}
}
Ejemplo n.º 2
0
void turn( int deg, int power )
{
	resetGyro();
	if( deg < 0 )
		power = -1 * power;

	while( abs(gyroVal) < abs(deg) )
	{
		motor[right] = power;
		motor[left] = -1 * power;
		updateGyro();
	}

	motor[right] = 0;
	motor[left] = 0;
}
Ejemplo n.º 3
0
inv_error_t MPU9250_DMP::update(unsigned char sensors)
{
	inv_error_t aErr = INV_SUCCESS;
	inv_error_t gErr = INV_SUCCESS;
	inv_error_t mErr = INV_SUCCESS;
	inv_error_t tErr = INV_SUCCESS;

	if (sensors & UPDATE_ACCEL)
		aErr = updateAccel();
	if (sensors & UPDATE_GYRO)
		gErr = updateGyro();
	if (sensors & UPDATE_COMPASS)
		mErr = updateCompass();
	if (sensors & UPDATE_TEMP)
		tErr = updateTemperature();

	return aErr | gErr | mErr | tErr;
}
Ejemplo n.º 4
0
void turn( int deg, int power, bool ramp)
{
	resetGyro();
	float rampMult = 1.0;
	if( deg < 0 )
		power = -1 * power;

	while( abs(gyroVal) < abs(deg) )
	{
		if(ramp){rampMult = rampFunc(abs(gyroVal)/(float)abs(deg));}
		motor[right] = power * rampMult;
		motor[left] = -1 * power * rampMult;
		updateGyro();
	}

	motor[right] = 0;
	motor[left] = 0;
}
Ejemplo n.º 5
0
void turn( int deg, int power )
{
	resetGyro();
	if( deg > 0 )
		power = -1 * power;

	while( abs(gyroVal) < abs(deg) )
	{
		motor[FL] = power;
		motor[BL] = power;
		motor[FR] = power;
		motor[BR] = power;
		updateGyro();
	}

	motor[FL] = 0;
	motor[BL] = 0;
	motor[FR] = 0;
	motor[BR] = 0;
}
Ejemplo n.º 6
0
task main()
{
	writeValueToLEDs(0);
	autonomousOptimized = true;
	initSwerve();
	initLift();
	lineFollowerInit();
	writeValueToLEDs(IDLE);
	waitForStart();
		initGyro();

	setModulePositions(1440);

	resetDistance();
	while ( !driveToCenter(false) )
	{
		updateGyro();
		updateSwerve();
		updateLift();
	}
}
Ejemplo n.º 7
0
void turn( int deg, int power )
{
	resetGyro();
	if( deg > 0 )
		power = -1 * power;
	ClearTimer(T1);
	while( abs(gyroVal) < abs(deg)) // turn until the gyro is correct
	{
		if(time1[T1] > 3000) // timeout if stalled
			break;
		motor[FL] = power;
		motor[BL] = power;
		motor[FR] = power;
		motor[BR] = power;
		updateGyro();
	}

	motor[FL] = 0;
	motor[BL] = 0;
	motor[FR] = 0;
	motor[BR] = 0;
}
Ejemplo n.º 8
0
void turn( float deg, float power )
{
	resetGyro();
	if( deg > 0 )
		power = -1 * power;
	ClearTimer(T1);
	while( abs(gyroVal) < abs(deg)) // turn until the gyro is correct
	{
		if(time1[T1] > 3000) // timeout if stalled
			Stop(1);
		motor[FrontL] = -power;
		motor[BackL] = -power;
		motor[FrontR] = power;
		motor[BackR] = power;
		updateGyro();
		writeDebugStreamLine("gyro is reading %f" , gyroVal);
	}

	motor[FrontL] = 0;
	motor[BackL] = 0;
	motor[FrontR] = 0;
	motor[BackR] = 0;
}