Conception d'un prototype de robot guide : Différence entre versions

De Wiki de Projets IMA
(Page créée avec « Préparation du projet Matériel requis Pour réaliser notre projet, nous avons besoin: -un tablette -un adk arduino -un robot Matériel à acheter Aucun matériel à achete... »)
 
(Réalisations concrètes)
 
(34 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Préparation du projet
+
 
Matériel requis
+
== '''Préparation du projet''' ==
 +
 
 +
 
 +
== '''Matériel requis''' ==
 +
 
 
Pour réaliser notre projet, nous avons besoin:
 
Pour réaliser notre projet, nous avons besoin:
 
-un tablette
 
-un tablette
Ligne 6 : Ligne 10 :
 
-un robot
 
-un robot
  
Matériel à acheter
+
 
 +
== '''Matériel à acheter''' ==
 +
 
 
Aucun matériel à acheter, Polytech'Lille a déjà fourni.
 
Aucun matériel à acheter, Polytech'Lille a déjà fourni.
  
Avancement du projet
 
  
Objectifs suggérés par les encadrants
+
== '''Avancement du projet''' ==
 +
 
 +
 
 +
 
 +
=== '''Réalisations concrètes''' ===
 +
* Faire la préparation de projet.(base de données, techniques utilisées)
 +
 
 +
* Interface de tablette qui peux afficher la location, nom, description de marchandise
 +
 
 +
* Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra
 +
 
 +
* Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.
 +
 
 +
* Faire la recherche de adk.
 +
 
 +
* Réaliser l'envoi de données par adk.
 +
 
 +
* Réaliser la réception de données par adk.
 +
 
 +
* Réaliser un renouvellement de interface en temps réel, les données lesquelles venus de adk qu'il va afficher sur l'interface.
 +
 
 +
* Réaliser un controleurs sur l'interface de Android
 +
 
 +
* Réaliser de donner les commandes de contrôleurs vers arduino adk mega
 +
 
 +
* Réaliser le synchronisation entre arduino adk mega et arduino UNO par les pattes TX/RX(note:on ne utlise pas câble USB est parce que un connecteur esclave de arduino adk mega est réservé à android, c'est pas possible de faire la communication entre adrduino UNO par 2 connecteurs hôtes)
 +
 
 +
* Réaliser la Sync entre les contrôleurs de android et arduino Uno , et arduino adk mega fonctionne comme un intermédiare.
 +
 
 +
* Réaliser la rotation , avancement de robot
 +
 
 +
* Faire la recherche sur le reconnaissance vocale
 +
 
 +
* L’installation de reconnaissance vocale
 +
 
 +
* Faire la recherche sur le capteur sonar
 +
 
 +
* Obtenir les valeurs de sonar et synchroniser sur la tablette
 +
 
 +
* Faire la recherche sur le NFC
 +
 
 +
* Installer dans l’arduino et synchroniser avec la tablette
 +
 
 +
* Faire la recherche sur le movement de robot sur un bande noire
 +
 
 +
* Demander responsable d’acheter les matériaux
 +
 
 +
====Le code de arduino de robot est la suivante====
 +
 
 +
void loop() // run over and over
 +
{
 +
  if(c ++ % 100000 == 0) { // quand c module 100000 égal 0 , on envoie la valeur de sonar une fois
 +
    s11.trigger();
 +
    s12.trigger();
 +
    s13.trigger();
 +
    i[0] = s11.getDist();
 +
    i[1] = s12.getDist();
 +
    i[2] = s13.getDist();
 +
    Serial.println(i[0]);
 +
    Serial.println(i[1]);
 +
    Serial.println(i[2]);   
 +
    mySerial.write(i, 6); // envoyer les valeurs de sonars
 +
    mySerial.flush();
 +
  }
 +
  if (mySerial.available()) {
 +
    int  res = mySerial.read();
 +
    if(res != -1 && res != 0) {
 +
      Serial.println(res);
 +
      switch(res) {
 +
      case 0:
 +
      break;
 +
      case 1:
 +
        avance();
 +
        delay(100);
 +
        break;
 +
      case 2:
 +
        back();
 +
        delay(100);   
 +
        break;
 +
      case 3:
 +
        left();
 +
        delay(100);         
 +
        break;
 +
      case 4:
 +
        right();     
 +
        delay(100);
 +
        break;
 +
      case 5:
 +
        rotatel();
 +
        delay(100);
 +
        break;
 +
      case 6:
 +
        rotater();
 +
        delay(100);
 +
        break;
 +
      case 7:
 +
        setMotorAllStop();
 +
        delay(100);
 +
        break;     
 +
      }         
 +
    }
 +
  }
 +
 
 +
====Le code au-dessous est pour adk, adk à ce moment là est un intermédiaire entre arduino robot et tablette , donc ce qu’il va faire est seulement recevoir la valeur et émettre tout de suite====
 +
 
 +
 
 +
SoftwareSerial mySerial(10, 2); // RX, TX
 +
void setup() 
 +
{
 +
  // Open serial communications and wait for port to open:
 +
  Serial.begin(115200);
 +
  acc.powerOn();
 +
  Serial.println("Goodnight moon!");
 +
  // set the data rate for the SoftwareSerial port
 +
  mySerial.begin(4800);
 +
  mySerial.println("Hello, world?");
 +
}
 +
//electech
 +
void loop() // run over and over
 +
{
 +
  // Serial.println("cdw");
 +
  byte msg[3];
 +
  if (mySerial.available() > 6) {
 +
    byte  res = mySerial.read();
 +
    Serial.print("msg0:\n");
 +
    Serial.println(res);
 +
    byte  res1 = mySerial.read();
 +
    Serial.print("msg1:\n");
 +
    Serial.println(res1);
 +
    byte  res2 = mySerial.read();
 +
    Serial.print("msg2:\n");
 +
    Serial.println(res2);
 +
    byte  res3 = mySerial.read();
 +
    Serial.print("msg3:\n");
 +
    Serial.println(res3);
 +
    byte  res4 = mySerial.read();
 +
    Serial.print("msg4:\n");
 +
    Serial.println(res4);
 +
    byte  res5 = mySerial.read();
 +
    Serial.print("msg4:\n");
 +
    Serial.println(res5);
 +
    msg2[0]=res;
 +
    msg2[1]=res1;               
 +
    msg2[2]=res2;   
 +
    acc.write(msg2, sizeof(msg2));     
 +
  }
 +
  if (acc.isConnected()) {
 +
    int len = acc.read(msg, sizeof(msg), 1);
 +
    Serial.println(msg[0]);
 +
    mySerial.write(msg[0]);
 +
    delay(50); //le temps on ne doit defini trop petit ou trop grand, sinon il y a probleme de synchronisation
 +
  }
 +
}
 +
 
 +
 
 +
====Reconnaissance vocale====
 +
 
 +
    /**
 +
    * Fire an intent to start the speech recognition activity.
 +
    */
 +
    private void startVoiceRecognitionActivity() {
 +
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 +
 
 +
        // Spécifier le package appelant pour identifier votre application
 +
        intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
 +
 
 +
        // Affichage d'un indice à l'utilisateur sur ce qu'il doit dire.
 +
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
 +
 
 +
        // Étant donné un indice pour le module de reconnaissance de ce que l'utilisateur va dire
 +
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
 +
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
 +
 
 +
        //  Indiquez le nombre de résultats que vous souhaitez recevoir. Les résultats seront triés
 +
        // où le premier résultat est le plus élevé avec une confiance.
 +
        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
 +
 
 +
        // Spécifiez la langue de reconnaissance. Ce paramètre doit être spécifié que si l'
 +
        // reconnaissance doit se faire dans une langue spécifique et non celui par défaut (c.-à-
 +
        //  système de localisation). La plupart des applications ne possèdent pas de régler ce paramètre.
 +
       
 +
        if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) {
 +
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
 +
                    mSupportedLanguageView.getSelectedItem().toString());
 +
        }
 +
 
 +
        startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
 +
    }
 +
 
 +
 
  
réaliser un app qui peux guider les robots vers la location de marchandise, et qu'il y a un controleur qu'on peux donner les commandes manuellement
+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 +
        if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
 +
            // Remplissez la vue de liste avec les chaînes de la reconnaissance pensé qu'il aurait pu entendre
 +
            ArrayList<String> matches = data.getStringArrayListExtra(
 +
                    RecognizerIntent.EXTRA_RESULTS);
 +
            mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
 +
                    matches));
 +
        }
  
Réalisations concrètes
+
        super.onActivityResult(requestCode, resultCode, data);
Faire la préparation de projet.(base de données, techniques utilisées)
+
    }
Interface de tablette qui peux afficher la location, nom, description de marchandise
 
Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra
 
Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.
 
Faire la recherche de adk.
 
Réaliser l'envoi de données par adk.
 
Réaliser la réception de données par adk.
 
Réaliser un renouvellement de interface en temps réel, les données lesquelles venus de adk qu'il va afficher sur l'interface.
 

Version actuelle datée du 26 février 2013 à 15:26

Préparation du projet

Matériel requis

Pour réaliser notre projet, nous avons besoin: -un tablette -un adk arduino -un robot


Matériel à acheter

Aucun matériel à acheter, Polytech'Lille a déjà fourni.


Avancement du projet

Réalisations concrètes

  • Faire la préparation de projet.(base de données, techniques utilisées)
  • Interface de tablette qui peux afficher la location, nom, description de marchandise
  • Les clients peuvent créer un marchandise soit par l'image dans le tablette ou soit par le caméra
  • Utiliser un FrameLayout de éparer l'affichage de marchandises et le plan.
  • Faire la recherche de adk.
  • Réaliser l'envoi de données par adk.
  • Réaliser la réception de données par adk.
  • Réaliser un renouvellement de interface en temps réel, les données lesquelles venus de adk qu'il va afficher sur l'interface.
  • Réaliser un controleurs sur l'interface de Android
  • Réaliser de donner les commandes de contrôleurs vers arduino adk mega
  • Réaliser le synchronisation entre arduino adk mega et arduino UNO par les pattes TX/RX(note:on ne utlise pas câble USB est parce que un connecteur esclave de arduino adk mega est réservé à android, c'est pas possible de faire la communication entre adrduino UNO par 2 connecteurs hôtes)
  • Réaliser la Sync entre les contrôleurs de android et arduino Uno , et arduino adk mega fonctionne comme un intermédiare.
  • Réaliser la rotation , avancement de robot
  • Faire la recherche sur le reconnaissance vocale
  • L’installation de reconnaissance vocale
  • Faire la recherche sur le capteur sonar
  • Obtenir les valeurs de sonar et synchroniser sur la tablette
  • Faire la recherche sur le NFC
  • Installer dans l’arduino et synchroniser avec la tablette
  • Faire la recherche sur le movement de robot sur un bande noire
  • Demander responsable d’acheter les matériaux

Le code de arduino de robot est la suivante

void loop() // run over and over {

  if(c ++ % 100000 == 0) { // quand c module 100000 égal 0 , on envoie la valeur de sonar une fois
   s11.trigger();
   s12.trigger();
   s13.trigger();
   i[0] = s11.getDist();
   i[1] = s12.getDist(); 
   i[2] = s13.getDist();
   Serial.println(i[0]);
   Serial.println(i[1]);
   Serial.println(i[2]);    
   mySerial.write(i, 6); // envoyer les valeurs de sonars
   mySerial.flush(); 
 }
 if (mySerial.available()) {
   int  res = mySerial.read();
   if(res != -1 && res != 0) {
     Serial.println(res);
     switch(res) {
     case 0:
     break;
     case 1:
       avance();
       delay(100);
       break;
     case 2:
       back();
       delay(100);    
       break;
     case 3:
       left();
       delay(100);          
       break;
     case 4:
       right();      
       delay(100);
       break;
     case 5:
       rotatel();
       delay(100);
       break;
     case 6:
       rotater();
       delay(100);
       break;
     case 7:
       setMotorAllStop();
       delay(100);
       break;       
     }          
   }
 }

Le code au-dessous est pour adk, adk à ce moment là est un intermédiaire entre arduino robot et tablette , donc ce qu’il va faire est seulement recevoir la valeur et émettre tout de suite

SoftwareSerial mySerial(10, 2); // RX, TX void setup() {

 // Open serial communications and wait for port to open:
 Serial.begin(115200);
 acc.powerOn();
 Serial.println("Goodnight moon!");
 // set the data rate for the SoftwareSerial port
 mySerial.begin(4800);
 mySerial.println("Hello, world?");

} //electech void loop() // run over and over {

 // Serial.println("cdw"); 
 byte msg[3];
 if (mySerial.available() > 6) {
   byte  res = mySerial.read();
   Serial.print("msg0:\n"); 
   Serial.println(res); 
   byte  res1 = mySerial.read();
   Serial.print("msg1:\n"); 
   Serial.println(res1); 
   byte  res2 = mySerial.read();
   Serial.print("msg2:\n"); 
   Serial.println(res2); 
   byte  res3 = mySerial.read();
   Serial.print("msg3:\n"); 
   Serial.println(res3); 
   byte  res4 = mySerial.read();
   Serial.print("msg4:\n"); 
   Serial.println(res4); 
   byte  res5 = mySerial.read();
   Serial.print("msg4:\n"); 
   Serial.println(res5); 
   msg2[0]=res;
   msg2[1]=res1;                
   msg2[2]=res2;     
   acc.write(msg2, sizeof(msg2));      
 }
 if (acc.isConnected()) {
   int len = acc.read(msg, sizeof(msg), 1);
   Serial.println(msg[0]);
   mySerial.write(msg[0]);
   delay(50); //le temps on ne doit defini trop petit ou trop grand, sinon il y a probleme de synchronisation
 }

}


Reconnaissance vocale

   /**
    * Fire an intent to start the speech recognition activity.
    */
   private void startVoiceRecognitionActivity() {
       Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
       // Spécifier le package appelant pour identifier votre application
       intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
       // Affichage d'un indice à l'utilisateur sur ce qu'il doit dire.
       intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
       // Étant donné un indice pour le module de reconnaissance de ce que l'utilisateur va dire
       intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
               RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
       //  Indiquez le nombre de résultats que vous souhaitez recevoir. Les résultats seront triés
       // où le premier résultat est le plus élevé avec une confiance.
       intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
       // Spécifiez la langue de reconnaissance. Ce paramètre doit être spécifié que si l'
       // reconnaissance doit se faire dans une langue spécifique et non celui par défaut (c.-à-
       //  système de localisation). La plupart des applications ne possèdent pas de régler ce paramètre.
        
       if (!mSupportedLanguageView.getSelectedItem().toString().equals("Default")) {
           intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
                   mSupportedLanguageView.getSelectedItem().toString());
       }
       startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
   }


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
           // Remplissez la vue de liste avec les chaînes de la reconnaissance pensé qu'il aurait pu entendre
           ArrayList<String> matches = data.getStringArrayListExtra(
                   RecognizerIntent.EXTRA_RESULTS);
           mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                   matches));
       }
       super.onActivityResult(requestCode, resultCode, data);
   }