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); } }
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; }
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; }
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; }
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; }
task main() { writeValueToLEDs(0); autonomousOptimized = true; initSwerve(); initLift(); lineFollowerInit(); writeValueToLEDs(IDLE); waitForStart(); initGyro(); setModulePositions(1440); resetDistance(); while ( !driveToCenter(false) ) { updateGyro(); updateSwerve(); updateLift(); } }
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; }
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; }