Difference between revisions of "Visual navigation for Acrob or SBOT robot with Android with camera ( Marek Kádek, Jana Sucháneková)"

From RoboWiki
Jump to: navigation, search
(Postup riešenia)
(Postup riešenia)
Line 15: Line 15:
 
# Na android zariadenie nainštalujeme [http://code.google.com/p/amarino/downloads/detail?name=Amarino_2_v0_55.apk&can=2&q= Amarino].
 
# Na android zariadenie nainštalujeme [http://code.google.com/p/amarino/downloads/detail?name=Amarino_2_v0_55.apk&can=2&q= Amarino].
 
# Vytvoríme projekt v eclipse a do build path pridáme [http://code.google.com/p/amarino/downloads/detail?name=AmarinoLibrary_v0_55.jar&can=2&q= knižnicu].
 
# Vytvoríme projekt v eclipse a do build path pridáme [http://code.google.com/p/amarino/downloads/detail?name=AmarinoLibrary_v0_55.jar&can=2&q= knižnicu].
 +
# Vytvoríme a nacvičíme neurónovú sieť
  
 
Ukážka nadviazania spojenia pomocou knižnice:
 
Ukážka nadviazania spojenia pomocou knižnice:
Line 59: Line 60:
  
 
Na strane arduina potom pripravíme funkciu nasledovne:
 
Na strane arduina potom pripravíme funkciu nasledovne:
# includujeme hlavičku - #include <MeetAndroid.h>
+
1. includujeme hlavičku - #include <MeetAndroid.h>
# v setupe nabindujeme 'd' na funkciu zatoč
+
2. v setupe nabindujeme 'd' na funkciu zatoč
 
     MeetAndroid meetAndroid;
 
     MeetAndroid meetAndroid;
 
     void setup()   
 
     void setup()   
Line 68: Line 69:
 
         ...
 
         ...
 
     }
 
     }
# pripravíme si funkciu zatoc
+
3. pripravíme si funkciu zatoc
 
     void zatoc(byte flag, byte numOfValues)
 
     void zatoc(byte flag, byte numOfValues)
 
     {
 
     {
Line 75: Line 76:
 
         ...
 
         ...
 
     }
 
     }
# do loopu pridáme kód na príjmanie a spracovanie správ  
+
4. do loopu pridáme kód na príjmanie a spracovanie správ  
 
     void loop()   
 
     void loop()   
 
     {
 
     {
Line 83: Line 84:
 
     }
 
     }
  
kde 'd'
+
Na tvorbu neurónovej sieťe sme použili knižnicu Neuroph
  
 
== Zdroje ==
 
== Zdroje ==
 
# [http://www.amarino-toolkit.net/ Amarino toolkit]
 
# [http://www.amarino-toolkit.net/ Amarino toolkit]

Revision as of 11:04, 12 June 2013

Úvod

Cieľom projektu Editing Visual navigation for Acrob with Android with camera bolo vytvoriť robota, reagujúceho na vizuálne podnety v labyrinte pomocou snímania okolia kamerou mobilu s operačným systémom Android. Robot má byť spojený s telefónom pomocou protokolu bluetooth.

Postup riešenia

V prvej etape tvorby projektu bolo základom zložiť robota. (OBBBBBBBR)

V druhej etape sme vytvorili bluetooth spojenie medzi robotom a mobilným telefónom, pomocou knižnice Amarino - Android meets Andruino. Z rôznych zdrojov a diskusií na internete sme sa dozvedeli, že vytvorenie spojenia z android bluetooth na bluetooth modul robota je mnohokrát problémové a chyby sú ťažko odhaliteľné. Veľa rád práve smerovalo na použitie knižnice Amarino na riešenie tohoto problému.

Postup tvorby spojenia:

  1. Android zariadenie spárujeme s bluetooth modulom.
  2. Na android zariadenie nainštalujeme Amarino.
  3. Vytvoríme projekt v eclipse a do build path pridáme knižnicu.
  4. Vytvoríme a nacvičíme neurónovú sieť

Ukážka nadviazania spojenia pomocou knižnice:

   private static final String DEVICE_ADDRESS =  "00:06:66:03:73:7B";
   private ArduinoReceiver arduinoReceiver = new ArduinoReceiver();
   
   @Override
   protected void onStart() {
       super.onStart();
       registerReceiver(arduinoReceiver, new IntentFilter(AmarinoIntent.ACTION_RECEIVED));
       Amarino.connect(this, DEVICE_ADDRESS);
   }
   @Override
   protected void onStop() {
       super.onStop();
       Amarino.disconnect(this, DEVICE_ADDRESS);
       unregisterReceiver(arduinoReceiver);
   }
   public class ArduinoReceiver extends BroadcastReceiver {
       @Override
       public void onReceive(Context context, Intent intent) {
       String data = null;
       final String address = intent.getStringExtra(AmarinoIntent.EXTRA_DEVICE_ADDRESS);
       final int dataType = intent.getIntExtra(AmarinoIntent.EXTRA_DATA_TYPE, -1);
       if (dataType == AmarinoIntent.STRING_EXTRA) {
           data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA);			
           if (data != null){
               try {
                   // tu mozeme spracovat data, ktore robot posle na mobil
               } 
               catch (Exception e) { 
           }
       }
    }
  }

Na odosielanie dát smerom na Arduino využívame funkciu

   Amarino.sendDataToArduino(context, address, flag, data)

v našom prípade

   Amarino.sendDataToArduino(MainActivity.this, DEVICE_ADDRESS, 'd', 5);

Na strane arduina potom pripravíme funkciu nasledovne: 1. includujeme hlavičku - #include <MeetAndroid.h> 2. v setupe nabindujeme 'd' na funkciu zatoč

   MeetAndroid meetAndroid;
   void setup()  
   {
       ...
       meetAndroid.registerFunction(zatoc, 'd');
       ...
   }

3. pripravíme si funkciu zatoc

   void zatoc(byte flag, byte numOfValues)
   {
       ...
       // kod na zatocenie
       ...
   }

4. do loopu pridáme kód na príjmanie a spracovanie správ

   void loop()  
   {
       ...
       meetAndroid.receive(); 
       ...
   }

Na tvorbu neurónovej sieťe sme použili knižnicu Neuroph

Zdroje

  1. Amarino toolkit