int main(){ cout<<"Hol<"<<endl; //Mat img=imread("/home/mottamx/Pictures/batman.jpg"); //namedWindow("batman"); //imshow("batman", img); //waitKey(1); cout<<"Hol<<"<<endl; ARDrone ardrone; if (!ardrone.open()){ cout<<"error de comunicación"<<endl; return -1; } cout<<"Bat: "<<ardrone.getBatteryPercentage()<<endl; sleep(2); cout<<"Bat: "<<ardrone.getBatteryPercentage()<<endl; sleep(2); cout<<"Bat: "<<ardrone.getBatteryPercentage()<<endl; sleep(2); time_t start, end; time (&start); cout.flush(); double elapsed=0; namedWindow("dron"); namedWindow("dron2"); while(elapsed<5){ //sleep(2); IplImage *im=ardrone.getImage(); Mat img = Mat(im); Mat img2; resize(img, img2, Size(), 2,2, INTER_AREA); resize(img, img, Size(), 2,2, INTER_LANCZOS4); imshow("dron", img); waitKey(1); imshow("dron2", img2); waitKey(1); time(&end); elapsed=difftime(end,start); } cout<<"Tiempo: "<<setprecision(3)<<elapsed<<"segundos"<<endl; cout<<"<dios"<<endl; ardrone.close(); ardrone.emergency(); return 0; }
// -------------------------------------------------------------------------- // main(Number of arguments, Value of arguments) // This is the main function. // Return value Success:0 Error:-1 // -------------------------------------------------------------------------- int main(int argc, char **argv) { // AR.Drone class ARDrone ardrone; // Initialize if (!ardrone.open()) { printf("Failed to initialize.\n"); return -1; } // Main loop while (!GetAsyncKeyState(VK_ESCAPE)) { // Update your AR.Drone if (!ardrone.update()) break; // Get an image IplImage *image = ardrone.getImage(); // Battery printf("ardrone.battery = %d [��] (�c���%d��)\n", battery, 12*battery/100); // Take off / Landing if (KEY_PUSH(VK_SPACE)) { if (ardrone.onGround()) ardrone.takeoff(); else ardrone.landing(); } // Emergency stop if (KEY_PUSH(VK_RETURN)) ardrone.emergency(); // AR.Drone is flying if (!ardrone.onGround()) { double x = 0.0, y = 0.0, z = 0.0, r = 0.0; // Keyboard if (KEY_DOWN(VK_UP)) x = 0.5; if (KEY_DOWN(VK_DOWN)) x = -0.5; if (KEY_DOWN(VK_LEFT)) r = 0.5; if (KEY_DOWN(VK_RIGHT)) r = -0.5; if (KEY_DOWN('Q')) z = 0.5; if (KEY_DOWN('A')) z = -0.5; // Joypad JOYINFOEX JoyInfoEx; JoyInfoEx.dwSize = sizeof(JOYINFOEX); JoyInfoEx.dwFlags = JOY_RETURNALL; // Get joypad infomations if (joyGetPosEx(0, &JoyInfoEx) == JOYERR_NOERROR) { int y_pad = -((int)JoyInfoEx.dwXpos - 0x7FFF) / 32512.0*100.0; int x_pad = -((int)JoyInfoEx.dwYpos - 0x7FFF) / 32512.0*100.0; int r_pad = -((int)JoyInfoEx.dwZpos - 0x7FFF) / 32512.0*100.0; int z_pad = ((int)JoyInfoEx.dwRpos - 0x7FFF) / 32512.0*100.0; printf("X = %d ", x_pad); printf("Y = %d ", y_pad); printf("Z = %d ", z_pad); printf("R = %d\n", r_pad); x = 0.5 * x_pad / 100; y = 0.5 * y_pad / 100; z = 0.5 * z_pad / 100; r = 0.5 * r_pad / 100; if (JoyInfoEx.dwButtons & JOY_BUTTON1) ardrone.takeoff(); if (JoyInfoEx.dwButtons & JOY_BUTTON2) ardrone.landing(); } // Move ardrone.move3D(x, y, z, r); } // Display the image cvShowImage("camera", image); cvWaitKey(1); } // See you ardrone.close(); return 0; }
// -------------------------------------------------------------------------- // controls() // This function sends commands to the drone using an Xbox Controller. // -------------------------------------------------------------------------- void controls() { // Check for Xbox Controller if(player1->IsConnected()) { // 'A' button if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_A) { // Change camera static int cameraToggle = 0; ardrone.setCamera(++cameraToggle%4); } // 'B' button if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_B) { ardrone.emergency(); } // 'X' button if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_X) { ardrone.flatTrim(); } // 'Y' button /*if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_Y) { }*/ // 'Start' button if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_START) { if (ardrone.onGround()) { ardrone.takeoff(); } else { ardrone.landing(); } } // 'Back' button if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) { // Exit the program. if (ardrone.onGround()) { exit(0); } } // Left Thumb-Stick Press /*if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) { }*/ // Right Thumb-Stick Press /*if(player1->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) { }*/ // AR.Drone flight controls //if (!ardrone.onGround()) { // Check left thumbStick double leftThumbY = player1->GetState().Gamepad.sThumbLY / STICK_RANGE; double leftThumbX = player1->GetState().Gamepad.sThumbLX / STICK_RANGE; // Check the dead zone if (leftThumbY < STICK_DEAD_ZONE && leftThumbY > -STICK_DEAD_ZONE) { leftThumbY = 0; } if (leftThumbX < STICK_DEAD_ZONE && leftThumbX > -STICK_DEAD_ZONE) { leftThumbX = 0; } // Check left thumbStick double rightThumbY = player1->GetState().Gamepad.sThumbRY / TRIGGER_RANGE; double rightThumbX = player1->GetState().Gamepad.sThumbRX / TRIGGER_RANGE; // Check the dead zone if (rightThumbY < STICK_DEAD_ZONE && rightThumbY > -STICK_DEAD_ZONE) { rightThumbY = 0; } if (rightThumbX < STICK_DEAD_ZONE && rightThumbX> -STICK_DEAD_ZONE) { rightThumbX = 0; } double rightTrigger = player1->GetState().Gamepad.bRightTrigger / TRIGGER_RANGE; double leftTrigger = player1->GetState().Gamepad.bLeftTrigger / TRIGGER_RANGE; double gaz = rightTrigger - leftTrigger; // Move ardrone.move3D(rightThumbY*10, -rightThumbX*10, gaz*10, -leftThumbX*10); } } }