Exemplo n.º 1
0
task main(){
	nMotorEncoder[port2] = 0;
	nMotorEncoder[port3] = 0;
	//startTask(killswitch);
	TurnRobot(90,100,dia,trc,fix);
	MoveDist(100,100,dia);
	TurnRobot(90,100,dia,trc,fix);
	MoveDist(100,100,dia);
	TurnRobot(90,100,dia,trc,fix);
	MoveDist(100,100,dia);
	TurnRobot(90,100,dia,trc,fix);
	MoveDist(100,100,dia);
}
Exemplo n.º 2
0
task main(){
	MoveDist(105,80,dia);
	motor[clawMotor] = -100;
	wait1Msec(300);
	motor[clawMotor] = -10;
	motor[armMotor] = 100;
  wait1Msec(1000);
	motor[armMotor] = 10;
	MoveDist(-20,80,dia);
  TurnRobot(90,100,dia,trc,leftMotor,rightMotor);
  MoveDist(68,50,dia);
  TurnRobot(85,130,dia,trc,leftMotor,rightMotor);
  MoveDist(100,50,dia);
  motor[armMotor] = -50;
  wait1Msec(700);
  motor[armMotor] = 10;
  motor[clawMotor] = 100;
  wait1Msec(500);
  MoveDist(-75,80,dia);
  TurnRobot(-108,90,dia,trc,leftMotor,rightMotor);
  MoveDist(45,80,dia);
  motor[clawMotor] = -100;
  wait1Msec(500);
  motor[clawMotor] = -20;
  motor[armMotor] = 100;
  wait1Msec(700);
  motor[armMotor] = 10;
  MoveDist(-50,80,dia);
  TurnRobot(90,100,dia,trc,leftMotor,rightMotor);
  MoveDist(74,100,dia);
  motor[armMotor] = -50;
  wait1Msec(700);
  motor[armMotor] = 10;
  motor[clawMotor] = 100;
  wait1Msec(500);
  motor[clawMotor] = 0;
  MoveDist(-20,100,dia);
}
Exemplo n.º 3
0
/*----------------------------------------------------------------------------*/
void BlueAuto2(void)
{
	///4 PRELOADS 3 PILE
	/// STARTING TYLE IS FURTHERST TYLE
	int YouAreGoodToCount = 0;
	Transmission(1);
	BallCounter = 4;
	ShootingMode = 1;
	IntakeShoot(6000);//SHOOT 4 PRELOADS // * FAILSAFE POINT
	ShootingMode = 4;
	DistanceCalculatorTurn(1);
	while(DistanceCalculatorTurn(0) < 15) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		Move(-1, 50);
	}
	Break2(100,-10);
	delay(200);
	stage = 1;
	SetRPM(2200);
	DistanceCalculator(1);
	while(DistanceCalculator(0) < 12) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		Move(2, 127);
	}
	clearTimer(T3);
	while(SensorValue[IR1] == 1 ) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		IntakeOnAuto();
		Move(2, 20);
		if(time1[T3] > 6000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1Fail1();/////////////////////RED1FAIL1
		IntakePower(0);
	Break(100,10);
	while(MoveDist(-1, 20,0) == 1) // DO WE NEED FAILSAFE HERE?
	{
		IntakeOnAuto();
	}
	while(MoveDist(35, 40,3000) == 1)//17 // DO WE NEED FAILSAFE HERE?
	{
		IntakeOnAuto();
		if(FailSafeEngaged == 1)Blue1FailInfinite();/////////////////////RED1FAIL1
	}
	IntakePower(0);
	while(LineStatus() == 0)
	{
		Move(-2, 100);
	}
	Break(100,-10);
	while(MoveDist(3, 30,0) == 1);
	delay(200);
	SetRPM(2200);
	while(LineStatus() == 0) //TURN UNTIL YOU SEE THE LINE
	{
		Move(1, 20);
	}
	DistanceCalculator(1);
	while(LineStatus() == 1) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(40);
		if(LineStatusOffset() == 1)
		{
			DistanceCalculator(1);
			YouAreGoodToCount = 1;
		}
		if(DistanceCalculator(0) > 18 && YouAreGoodToCount == 1)
		{
			DistanceCalculator(1);
			break;

		}
	}
	if(DistanceCalculator(0) < 50 && YouAreGoodToCount == 0)Blue1FailInfinite();//**FAIL GOOD
		Break(100,20);
	delay(500);
	IntakePower(127);///SHOT FIRST PILE
	delay(3000);
	ShootingMode = 3;
	StopDrive();
	stage = 1;
	DistanceCalculator(1);
	while(SensorValue[IR1] == 1 && LineStatus() == 1) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(35);
		IntakeOnAuto();
	}
	Break(100,20);
	StopDrive();
	clearTimer(T3);
	while(stage == 1) // WHAT IF TWO BALLS ARE STUCK FOREVER? TIMER?
	{
		if(time1[T3] > 10000)
		{
			break;
		}
		IntakeOnAuto();
	}
	clearTimer(T3);
	while(LineStatus() == 1 && DistanceCalculator(0) < 37 )//*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(35);
		IntakeOnAuto();
		if(time1[T3] > 10000)
		{
			break;
		}
	}
	MoveTime(500,127);
	StopDrive();
	delay(500);
	IntakePower(127);///SHOT BAR SHOTS
	delay(3500);
	IntakePower(0);
	SetRPM(2200);
	stage = 1;
	//////////////////////////////////////////////////////SHOT 8 COMPLETE
	DistanceCalculator(1);
	while(DistanceCalculator(0) < 50) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		Move(-2, 127);
	}
	Break(200,-15);
	delay(200);
	DistanceCalculatorTurn(1);
	clearTimer(T3);
	while(DistanceCalculatorTurn(0) < 62) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		Move(-1, 100);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite();
	Break2(100,10);
	delay(300);
	DistanceCalculator(1);
	clearTimer(T3);
	while(DistanceCalculator(0) < 24) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		Move(2, 127);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite();
	clearTimer(T3);
	while(SensorValue[IR1] == 1 )//PILE BY THE WALL
	{
		IntakeOnAuto();
		Move(2, 20);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite();
	IntakePower(0);
	Break(100,10);
	while(MoveDist(-1, 20,0) == 1) // DO WE NEED FAILSAFE HERE?
	{
		IntakeOnAuto();
	}
	while(MoveDist(19, 35,2000) == 1) // DO WE NEED FAILSAFE HERE?
	{
		IntakeOnAuto();
	}
	IntakePower(0);
	///////////////////////////////////////////////////////////////////////////////////PICK UP 3RD
	SetRPM(2200);
	clearTimer(T3);
	while(LineStatus() == 0 )
	{
		Move(-2, 127);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite(); //**FAIL GOOD
		Break(200,-15);
	while(MoveDist(3, 40,0) == 1);
	clearTimer(T3);
	while(LineStatus() == 0) // TURN UNTILL IT SEES LINE (WHAT IF WE NEVER SEE LINE)
	{
		Move(1,22);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite(); //**FAIL GOOD
		DistanceCalculator(1);
	clearTimer(T3);
	while(LineStatus() == 1 && DistanceCalculator(0) < 12)//*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(35);
		if(time1[T3] > 5000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Blue1FailInfinite(); //**FAIL GOOD
		Break(100,20);
	StopDrive();
	delay(500);
	IntakePower(127);///SHOT LAST BALLS BAR SHOTS
	delay(3000);
	TurnDegree(-45,100,2000);
	while(MoveDist(24, 40,0) == 1);
	ShootingMode = 4;
	KillALL();
	while(1);
}
Exemplo n.º 4
0
void RedAuto1(void)
{
	int Launch = 0;
	Transmission(1);
	BallCounter = 4;
	ShootingMode = 1;
	IntakeShoot(6000);//SHOOT 4 PRELOADS // * FAILSAFE POINT
	ShootingMode = 4;
	stage = 1;
	TurnDegree(-10,40,0); // DO WE NEED FAILSAFE HERE?
	delay(200);
	Move(2,127);
	delay(500);
	clearTimer(T3);
	while(SensorValue[IR1] == 1) //*FAILSAFE ?WHAT IF WE DONT SEE ANY BALLS
	{
		IntakeOnAuto();
		Move(2,20);
		if(time1[T3] > 8000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Red1Fail1();/////////////////////RED1FAIL1
		IntakePower(0);
	Break(100,10);
	while(MoveDist(-1, 20,0) == 1) // DO WE NEED FAILSAFE HERE?
	{
		IntakeOnAuto();
	}
	while(MoveDist(40, 50,0) == 1) //*FAILSAFE ?WHAT IF WE ARE BLOCKED (ROBOT FINISHED ABOUT MID COURT)
	{
		if(FailSafeEngaged == 1)Red1Fail1();/////////////////////RED1FAIL1
			IntakeOnAuto();
	}
	IntakePower(0);
	TurnDegree(-45,127,2000); //*FAILSAFE ?WHAT IF WE ARE BLOCKED
	if(FailSafeEngaged == 1)Red1FailInfinite();
	delay(200);
	SetRPM(2250);//LAUNCHER ON (NEXT SHOOTING RPM)
	clearTimer(T3);
	while(LineStatus() == 0) //*FAILSAFE AT WHAT POINT DO WE STOP MOVING? WHAT IF WE ARE OF COURSE?
	{
		Move(-2,30);
		if(time1[T3] > 3500)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Red1FailInfinite();
	Break(100,-20);
	delay(200);
	while(MoveDist(7, 30,0) == 1){} // DO WE NEED FAILSAFE HERE?
	clearTimer(T3);
	while(LineStatus() == 0) // TURN UNTILL IT SEES LINE (WHAT IF WE NEVER SEE LINE)
	{
		Move(1,22);
		if(time1[T3] > 3000)
		{
			FailSafeEngaged = 1;
			break;
		}
	}
	if(FailSafeEngaged == 1)Red1FailInfinite();
	while(LineStatus() == 1 && LineStatusOffset() == 0) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(40);
		if(LineStatus() == 1 && LineStatusOffset() == 1) Launch = 1;//WE REACHED THE CROSS(MIDDLE OF FIELD SET FLAG
	}
	if(LineStatus() == 1 && LineStatusOffset() == 1) Launch = 1;
	Break(100,20);
	StopDrive();
	delay(300);
	if(Launch) //IF LAUNCH FLAG WAS SATISFIED EARLIER THEN WE CAN LAUNCH BALLS
	{
		IntakePower(127); // SHOOT MID COURT
		delay(3000);
	}
	stage = 1;
	ShootingMode = 3;
	DistanceCalculator(1);
	while(SensorValue[IR1] == 1 && LineStatus() == 1 && DistanceCalculator(0) < 55) //*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(35);
		IntakeOnAuto();
	}
	Break(100,20);
	StopDrive();
	while(stage == 1) // WHAT IF TWO BALLS ARE STUCK FOREVER? TIMER?
	{
		IntakeOnAuto();
	}
	while(LineStatus() == 1 && DistanceCalculator(0) < 55)//*FAILSE WHAT IF WE GET OFF THE LINE ( WHAT IF ROBOT BLOCKS PATH AND WE ARE STILL ON THE LINE)
	{
		FollowLine(35);
		IntakeOnAuto();
	}
	MoveTime(300,127);
	StopDrive();
	IntakePower(127);///SHOT LAST BALLS BAR SHOTS
	delay(4000);
	stage = 1;
	///////////
	KillALL();
	while(1);
}
//メソッド:void 競技走行する()
void ExtraStageLookUp::ExtraRun()
{

	/* 停止部分 */
	int stopTime = m_pDeviceInterface->m_pCClock->now();
	DV dv_now;
	while(1){
		dv_now = m_pDeviceValueGet->DeviceValueGetter();
		if(m_pDeviceInterface->m_pCClock->now() - stopTime  < 1500){
			dv_now = m_pRunningCalculation->RunningCalculate(dv_now, 0);
			m_pMotorDrive->TailMotorDrive(3);
			ev3_lcd_draw_string("EXrun section0start", 0, 70);
		}
		else if(m_pDeviceInterface->m_pCClock->now() - stopTime  < 2000){
			dv_now.GYRO_OFFSET = -10;
			dv_now = m_pRunningCalculation->RunningCalculate(dv_now, 0);
			m_pMotorDrive->TailMotorDrive(80);
			ev3_lcd_draw_string("EXrun section0 < 3500", 0, 80);
		}
		else{
			break;
		}

		m_pMotorDrive->LRMotorDrive(dv_now.Lmotor_pwm, dv_now.Rmotor_pwm);
		m_pDeviceInterface->m_pCClock->sleep(3); /* 4msec周期起動 */
	}

	ev3_lcd_draw_string("EXrun fin", 0, 90);



	//
	float	fTailAngle = m_fTailAngleStand;	// しっぽ立ち上がり

	int		nLmotor = 20;
	int		nRmotor = 20;
//	int16_t	nDistance = 9999;

	m_uStartTime	= m_pDeviceInterface->m_pCClock->now();	// 開始時間

	//ログ出力
	char*	cLogBuff	= m_pUIGet->GetBlueT()->pcLogBuff;
	sprintf(cLogBuff,"ExtraStageLookUp::ExtraRun go 1: %lu,%d,%d,sizeof(int)=%d\n", GetElapsedTime(),
			nLmotor,
			nRmotor,
			sizeof(int)
			);
	m_pUIGet->WriteLog(cLogBuff);


//BBBBBBBBBBB
// テストデータ取得
//	Spin( 'N', 3600, fTailAngle );
//
//	PauseEt( 3000, fTailAngle);	// ポーズ
//
//	// 5000mm 進む
//	MoveDist( 'N', 5000, fTailAngle, nLmotor, nRmotor );
//	PauseEt(3000, fTailAngle);	// ポーズ
//BBBBBBBBBBB

//	PauseEt(500, fTailAngle);	// ポーズ

//	// 0 しっぽを出しながら止まる
//	MoveDist( 'N', 100, fTailAngle, 5 );

	// ① →

	//ゲートまで近づく
//	GoGate('R', fTailAngle);
	GoGate('N', fTailAngle);
	PauseEt(500, fTailAngle);	// ポーズ

	// ② →

	//走行体をリンボー
	fTailAngle	= Limbo( 'N', fTailAngle);
	PauseEt(500, fTailAngle);	// ポーズ

	// ゲートを潜る為、230mm 進む
	MoveDist( 'N', 230, fTailAngle, 10 );
	PauseEt(500, fTailAngle);	// ポーズ

	// ③ U
	// Uターン 180度回転
	Spin(185, fTailAngle);
	PauseEt(500, fTailAngle);	// ポーズ

	// 戻り
	// ③ ←
	// ゲートを潜る、330mm 戻る
	MoveDist( 'N', 330, fTailAngle, 10 );
	PauseEt(500, fTailAngle);	// ポーズ

	// ④ U
	// 再度Uターン -180度回転
	Spin(-185, fTailAngle);
	PauseEt(500, fTailAngle);	// ポーズ

	// ④ →
	// ゲートを潜る、360mm 進む
	MoveDist( 'N', 360, fTailAngle, 20 );


	// ⑤ →
	// トレースを可能とする為に上体を起こす
	fTailAngle = StandUpTail(fTailAngle);	// しっぽを立てる

	PauseEt(2222, fTailAngle);	// ポーズ

	PauseEt(2222, fTailAngle);	// ポーズ

//
//	// トレースを確実に行う為に故意に右側にはみ出す
//	Spin(-10, fTailAngle);		// -10度回転
//	PauseEt(500, fTailAngle);	// ポーズ
//	MoveDist( 'N', 40, fTailAngle, 10 );	// 3cm進む
//	PauseEt(500, fTailAngle);	// ポーズ

	// ⑥ →
	// ガレージまで走る!!
	// 距離 m_nFinalRunDist	// ■■<最終調整が必要>

	// トレース走行
//	MoveDist( 'R', m_nFinalRunDist, fTailAngle, 10 );
	MoveDist( 'N', m_nFinalRunDist, fTailAngle, 10 );

	MoveDist( 'N', 50, fTailAngle,  5 );	// 急停止すると倒れる場合があるので減速走行

	// ゲートイン
	fTailAngle = StandUpTailFine(fTailAngle);	// しっぽを思い切り立てる
	PauseEt(4000, fTailAngle);	// ポーズ

	// ゲートに届かなかった場合を考慮して、微速前進とポーズを繰り返す
	// ※ゲートイン判定が出た後は、ゲートにぶつかってもお構いなしなはず
	for( int i=0 ; i< 5 ; i++ ){
		MoveDist( 'N', 30, fTailAngle,  5 );	// ゲートまで再度トライ
		PauseEt(4000, fTailAngle);	// ポーズ
	}
	MoveDist( 'N', 30, fTailAngle,  5 );	// ゲートまで再度トライ

//	Ending();

	PauseEt(5000, fTailAngle);	// ポーズ

}