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 52: Line 52:
 
     }
 
     }
 
   }
 
   }
 +
 +
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);
 +
 +
kde 'd'
  
 
== Zdroje ==
 
== Zdroje ==
 
# [http://www.amarino-toolkit.net/ Amarino toolkit]
 
# [http://www.amarino-toolkit.net/ Amarino toolkit]

Revision as of 10:44, 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.

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);

kde 'd'

Zdroje

  1. Amarino toolkit