コード例 #1
0
void bringback2cube(){
	//claw up
	motor(Motor_Up,Motor_up_speed);
	//zurück 1s 
	drive(1000,-Drivespeed,-Drivespeed);
	//turn right 90
	drive(970,Turnspeed,-Turnspeed);
	//vor to calibrate
	drive(1000,Drivespeed,Drivespeed);
	//back
	drive(500,-Drivespeed,-Drivespeed);
	//turn so little bit b4 cubes
	drive(1130,Turnspeed,-Turnspeed);
	//vor
	drive(900,Drivespeed,Drivespeed);
	//wait for claw up
	claw_up();
	//camera fix
	camera_update();
	//hide your cubes
	cube_is_near();
	//back
	drive(1000,-Drivespeed,-Drivespeed);
	//turn left more than 90 idk
	drive(1330,-Turnspeed,Turnspeed);
	//start to down motor
	motor(Motor_Up,Motor_down_speed);
	//vor to calibrate
	drive(1000,Drivespeed,Drivespeed);
	
	//langsamer weil wackeldackel
	drive(2000,Drivespeed_middle+20,Drivespeed_middle+20);
	//back
	drive(400,-Drivespeed,-Drivespeed);
	//turn more than 90 lulz
	drive(980,-Turnspeed,Turnspeed);
	//light left and shit
	drive(5000,Drivespeed_middle*2,(Drivespeed_middle*2)-7);
	//light back and shit
	drive(1000,-Drivespeed_middle*2,(-Drivespeed_middle*2)+7);
	//wait for claw down
	while(!digital(Sensor_Down)){
		if(seconds()>start+113){
			claw_open();
			disable_servos();
		}
	}
	freeze(Motor_Up);
	msleep(2000);
	claw_open();
	disable_servos();
}
コード例 #2
0
void cube_is_near(){
	camera_update();
	msleep(500);
	camera_update();
	enable_servos();
	claw_open();
	printf("cube is near");
	freeze(Motor_Left);
	freeze(Motor_Right);

	if(get_object_count(0)!=0){
		printf("gleich gefunden\n");
		if(get_object_bbox(0,0).width > 20){
			printf("groß genug");
			funden=1;
			found_something();
		}
	}
	double s=seconds();
	motor(Motor_Right,30);
	while(funden==0){//nichts gefunden
		camera_update();
		printf("nach rechts\n");
			if(get_object_count!=0){
				printf("1 gefunden \n");
				if(get_object_bbox(0,0).width > 20){
					printf("groß genug");
					found_something();
					funden=1;
					break;
				}
			}
			if(seconds()>s+2){
				printf("zeit rechts\n");
				freeze(Motor_Right);
				break;
			}
		}
		s=seconds();
		motor(Motor_Left,30);
		while(funden==0){
			camera_update();
			printf("nach links drehen \n");
			if(get_object_count!=0){
				printf("1 gefunden \n");
				if(get_object_bbox(0,0).width > 20){
					printf("groß genug");
					found_something();
					funden=1;
					break;
				}
			}
			if(seconds()>s+4){
				printf("zeit links\n");
				freeze(Motor_Left);
				break;
			}
		}
	}
コード例 #3
0
void bringback(){
	//zurück zur linie
	drive_till_line_backward();
	
	//vor damit nicht insert into create
	drive(1200,Drivespeed_middle,Drivespeed_middle);
	
	//turn left 90
	//drive(1100,-1*Drivespeed_middle-20,Drivespeed_middle+20);
	
    motor(Motor_Left,-Drivespeed_middle*2);
    while(analog(Sensor_Line_Left) < Sensor_Black){}
    msleep(400);
    while(analog(Sensor_Line_Left) > Sensor_Black){}
    msleep(100);
    freeze(Motor_Left);
	
	//start claw down
	motor(Motor_Up,Motor_down_speed);
	
	//gerade but leicht links so it twerks
	drive(9000,Drivespeed,Drivespeed);
	
	wisch();
	//vor to calibrate
	drive(5000,Drivespeed_middle+20,Drivespeed_middle+20);
	
	//back
	drive(400,-Drivespeed,-Drivespeed);
	
	//turn more than left 90
	drive(980,-Turnspeed,Turnspeed);
	
	//leicht rechts to calibrate
	drive(5000,Drivespeed_middle*2,(Drivespeed_middle*2)-7);
	
	//leicht back rechts to calibrate && würfel fit in tube
	drive(800,-Drivespeed_middle*2,(-Drivespeed_middle*2)+7);
	
	//wait for claw down
	while(!digital(Sensor_Down)){}
	freeze(Motor_Up);
	
	msleep(2000);
	claw_open();
	msleep(2000);
}
コード例 #4
0
void put_out(){
	printf("put out \n");
	set_servo_position(CAM_SERVO,CAM_SERVO_POSITION_RIGHT);
		forward();
		msleep(1300);
		claw_open();
		back();
		msleep(1800);
		while(analog10(LEFT_SENSOR)>=left_blk-150&&analog10(RIGHT_SENSOR)>=right_blk-150){}
		claw_close();
		forward();
		msleep(2100);
		back();
		msleep(1100);
		find_line_position_again();
		
		set_servo_position(CAM_SERVO,CAM_SERVO_POSITION_RIGHT);
		camera_update(); 
}
コード例 #5
0
int main() {
	printf("In Drivepath test\n");
	
	
	//light_start(0);
	shut_down_in(119.5);
	arm_drive();
	claw_open();
	bin_down();
	enable_servos();
	
	//forward(100);
	
	forward(10);
	int green = 0;	//whether green has been collected
	int red = 0;	//whether red has been collected
	
	start();	//start timer
	int pile1Result = pom_collection();
	backward(pom_collection_turn * 5);
	pom_collection_turn = 0;	//reset turn
	if(pile1Result == 0) {
		green = 1;
		printf("Collecting first pile of green poms\n");
	}
	else if(pile1Result == 1) {
		red = 1;
		printf("Collecting first pile of red poms\n");
	}
	//backward(5);
	left(15, ks/2);
	off(MOT_RIGHT);
	off(MOT_LEFT);
	collect_poms();
	collect_poms();
	msleep(1000);
	
	disable_servos();
	ao();
	return 0;
	
}
コード例 #6
0
int main() {
	light_start(0);
	shut_down_in(119.5);
	arm_up();
	claw_open();
	bin_down();
	enable_servos();
	
	collect_poms();
	printf("Collected Initial Poms in base\n");
	
	/*
	forward(70);
	msleep(500);
	left(35, 0);
	msleep(300);
	//face 1st pile
	forward(45);
	pomPileOne();
	*/
	forward(50);
	msleep(500);
	left(28, 0);
	//face 1st pile
	forward(59);	//needs to be exact or else claw will hit table divider
	msleep(500);
	pomPileOne();
	
	/*
	//4/9/16 Test Code
	forward(20);
	msleep(500);
	left(15, 0);
	msleep(300);
	//face 1st pile
	forward(80);
	pomPileOne();
	*/
	
	//go to pile 2
	multforward(45, 0.50);
	msleep(100);
	forward(15);
	msleep(300);
	left(85, ks/2);
	msleep(300);
	backward(2);
	//forward(2);
	pomPileTwo();
	
	
	/*
	if(green == 1 && red == 1) {
		printf("Collected all\n");
		//go to bin
		right(60, ks/2);
		forward(100);
		right(100, ks/2);
		msleep(500);
		bin_mid();
		msleep(500);
		bin_dump();
	}
	else {
		//do pom pile three only if robot does not have both one red and one green
		pomPileThree();
		//go to bin
		left(60, ks/2);
		forward(60);
	}
	*/
	backward(5);
	right(80, ks/2);
	msleep(300);
	forward(130);
	msleep(300);
	right(50, ks/2);	//turn against the wall
	msleep(300);
	backward(5);
	msleep(500);
	/*
	arm_mid();
	msleep(300);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	*/
	right(40, ks/2);
	msleep(500);
	backward(15);
	
	servo(MAIN_ARM, 1200);	//move away arm from box
	msleep(300);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	
	/*
	int i = 0;
	for(i = 0; i < 3; i++) {
		forward(2);
		msleep(300);
		backward(2);
		msleep(300);
	}
	*/
	
	msleep(1000);
	right(30, ks/2);
	forward(90);
	
	msleep(2000);
	disable_servos();
	ao();
	return 0;
}
コード例 #7
0
int main() {
	//light_start(0);
	shut_down_in(119.5);
	arm_up();
	claw_open();
	bin_down();
	enable_servos();
	
	collect_poms();
	printf("Collected Initial Poms in base\n");
	
	/*
	forward(70);
	msleep(500);
	left(35, 0);
	msleep(300);
	//face 1st pile
	forward(45);
	pomPileOne();
	*/
	forward(47);
	msleep(500);
	left(30, 0);
	//face 1st pile
	forward(60);	//needs to be exact or else claw will hit table divider
	pomPileOne();
	
	/*
	//4/9/16 Test Code
	forward(20);
	msleep(500);
	left(15, 0);
	msleep(300);
	//face 1st pile
	forward(80);
	pomPileOne();
	*/
	
	//go to pile 2
	multforward(45, 0.50);
	msleep(100);
	forward(15);
	msleep(300);
	left(85, ks/2);
	msleep(300);
	forward(10);
	pomPileTwo();
	
	if(green == 1 && red == 1) {
		printf("Collected all\n");
		//go to bin
		right(60, ks/2);
		forward(100);
		right(100, ks/2);
		msleep(500);
		bin_mid();
		msleep(500);
		bin_dump();
	}
	else {
		//do pom pile three only if robot does not have both one red and one green
		pomPileThree();
		//go to bin
		left(60, ks/2);
		forward(60);
	}
	
	msleep(2000);
	disable_servos();
	ao();
	return 0;
}
コード例 #8
0
ファイル: ClawTest.c プロジェクト: mananshah99/botball2013
void claw_down(){//claw down and open
	claw_open();
	servo_set(SERV_WRIST,1650,.7);
}