Esempio n. 1
0
int main ()
{
	float CENTER = 79.5;
	float OFFSET = 0.05;
	
	drone_connect();
	
	enable_drone_vision();	
	drone_front_camera();
	
	sleep(2);
	
	drone_takeoff();
	
	printf("Black button to exit test loop and land the drone");
	
	float x, y;
	
	track_update();
	while(!black_button())
	{
		x = OFFSET * ((track_x(0,0) - CENTER) / CENTER);
		y = OFFSET * ((track_y(0,0) - CENTER) / CENTER);
		
		if(track_count(0) > 0)
		{
			printf("Items tracking: %d\n", track_count(0));
			drone_move(0,0, x, y);
		}
		els	
		{
			printf("No items: Hovering \n");
			drone_hover();
		}
		sleep(4);
		track_update();
	}
		
	printf("Landing");
	drone_move(0,0,0,-.25);
	sleep(0.5);
	
	drone_land();
	
	drone_disconnect();
	
	return 0;
}
Esempio n. 2
0
/*
 * Class:     Drone
 * Method:    takeoff
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cbccore_ARDrone_takeoff(JNIEnv * env, jobject obj){
	
	drone_takeoff();	
}
Esempio n. 3
0
File: ui.c Progetto: kradhub/pspdc
int
ui_flight_run (UI * ui, Drone * drone)
{
	int ret = 0;
	int is_flying = 0;

	while (running) {
		SceCtrlData pad;
		SceCtrlLatch latch;
		int yaw = 0;
		int pitch = 0;
		int roll = 0;
		int gaz = 0;

		if (!drone->connected) {
			ui_msg_dialog (ui, "Connection to drone lost");
			ret = FLIGHT_UI_MAIN_MENU;
			break;
		}

		ui_flight_update (ui, drone);

		sceCtrlReadBufferPositive (&pad, 1);
		sceCtrlReadLatch (&latch);

		is_flying = (drone->state == DRONE_STATE_TAKING_OFF) ||
			(drone->state == DRONE_STATE_FLYING);

		/* Check triangle and circle transition */
		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_TRIANGLE)) {
			if (is_flying)
				drone_landing (drone);
			else
				drone_takeoff (drone);
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_CIRCLE)) {
			drone_emergency (drone);
			is_flying = 0;
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_SELECT)) {
			switch (ui->setting_select_binding) {
				case SELECT_BIND_TAKE_PICTURE:
					drone_take_picture (drone);
					break;
				case SELECT_BIND_FLIP_FRONT:
					drone_do_flip (drone, DRONE_FLIP_FRONT);
					break;
				case SELECT_BIND_FLIP_BACK:
					drone_do_flip (drone, DRONE_FLIP_BACK);
					break;
				case SELECT_BIND_FLIP_RIGHT:
					drone_do_flip (drone, DRONE_FLIP_RIGHT);
					break;
				case SELECT_BIND_FLIP_LEFT:
					drone_do_flip (drone, DRONE_FLIP_LEFT);
					break;
				default:
					break;
			}
		}

		if (EVENT_BUTTON_DOWN (&latch, PSP_CTRL_START)) {
			if (ui_flight_main_menu (ui, drone) ==
					FLIGHT_MAIN_MENU_QUIT) {
				ret = FLIGHT_UI_MAIN_MENU;
				break;
			}
		}

		/* Send flight control */
		if (pad.Buttons != 0) {
			if (pad.Buttons & PSP_CTRL_CROSS)
				gaz += ui->setting_gaz;
			if (pad.Buttons & PSP_CTRL_SQUARE)
				gaz -= ui->setting_gaz;

			if (pad.Buttons & PSP_CTRL_LTRIGGER)
				yaw -= ui->setting_yaw;
			if (pad.Buttons & PSP_CTRL_RTRIGGER)
				yaw += ui->setting_yaw;

			if (pad.Buttons & PSP_CTRL_UP)
				pitch += ui->setting_pitch;
			if (pad.Buttons & PSP_CTRL_DOWN)
				pitch -= ui->setting_pitch;

			if (pad.Buttons & PSP_CTRL_LEFT)
				roll -= ui->setting_roll;
			if (pad.Buttons & PSP_CTRL_RIGHT)
				roll += ui->setting_roll;
		}

		if (gaz || yaw || pitch || roll)
			drone_flight_control (drone, gaz, yaw, pitch, roll);

		sceDisplayWaitVblankStart ();
		SDL_Flip (ui->screen);
	}

	return ret;
}