Advertisement
Guest User

zadanie 1 roboty mobilne

a guest
Mar 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include "Aria.h"
  2. #include <stdio.h>
  3. /* Główna Metoda */
  4. void fwd(int mm, int s, void *fun());
  5. void rot(int deg, int s, void *fun());
  6. void ifnotmoved();
  7. int main(int argc, char **argv)
  8. {
  9.     /* Robot I jego urządzenia */
  10.     Aria::init(); //Zainicjowanie biblioteki ARIA
  11.     ArRobot robot; //Deklaracja głównej klasy roboczej ArRobot
  12.     ArArgumentParser parser(&argc, argv); //Deklaracja parsera
  13.     parser.loadDefaultArguments(); //Ładuje domyślne ustawienia parsera
  14.     ArRobotConnector robotConnector(&parser, &robot);
  15.     ArLaserConnector laserConnector(&Parser, &robot, &robotConnector);
  16.     Parser.addDefaultArgument("-connectLaser");
  17.     //Deklaracja połączenia z serverem (mikrokonrolerem)
  18.     /* Połączenie z robotem */
  19.     if(Parser.checkHelpAndWarnUnparsed())
  20.     {
  21.         cout << "Unknown settings\n"; //Jeśli błąd parsera, zamknij program
  22.         Aria::exit(1);
  23.     }
  24.  
  25.     if (!robotConnector.connectRobot(&robot))
  26.     {
  27.         cout << "Unable to connect\n"; //Jeśli brak połączenia, zamknij
  28.         Aria::exit(1);
  29.     }
  30.     robot.runAsync(true); //Uruchomienie w trybie asynchronicznym
  31.    
  32.     fwd(1100,200,ifnotmoved());
  33.     rot(-30,10,ifnotmoved());
  34.     fwd(1000,100,ifnotmoved());
  35.     rot(-80,15,ifnotmoved());
  36.     fwd(1600,250,ifnotmoved());
  37.     rot(15,20,ifnotmoved());
  38.     fwd(600,300,ifnotmoved());
  39.    
  40.    
  41.     Aria::exit(0); //Zakończenie programu
  42. }
  43. void fwd(int mm, int s, void (*fun)()){
  44.     robot.setTransVelMax(s);
  45.     fun();
  46.     robot.lock();
  47.     fun();
  48.     robot.move(mm); // Przemieszczenie o 1100mm
  49.     fun();
  50.     while(!robot.isMoveDone()){
  51.             fun();
  52.     }
  53.     robot.unlock();
  54. }
  55. void rot(int deg, int s, void (*fun)()){
  56.     robot.setRotVelMax(s);
  57.     fun();
  58.     robot.lock();
  59.     fun();
  60.     robot.setDeltaHeading(deg);
  61.     fun();
  62.     while(!robot.isHeadingDone(0))){
  63.         fun();
  64.     }
  65.     robot.unlock();
  66. }
  67. void ifnotmoved(){
  68.     int i=0;
  69.     while(robot.checkRangeDevicesCumulativePolar(-10, +10)<600){
  70.         Ar::sleep(1000);
  71.         i++;
  72.        
  73.     }
  74.     if(i==10)Aria::exit(0);
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement