Robot de guidage
Sommaire
Présentation
Ce projet s'inscrit dans le cadre de notre quatrième année d'étude au département IMA de l'école d'ingénieur Polytech'Lille. Il a été proposé par le département R&D de l'entreprise Oxylane dans le cadre d'une coopération avec le département. L'objectif de ce projet est de créer un robot de guidage qui devrait être utilisable dans un magasin quel qu'il soit. Ce robot devrait être capable de se localiser dans un magasin suivant les produits recherchés, le principe étant que le client puisse sélectionner les produit sur une tablette tactile associée au robot. Ce dernier commandé par un contrôleur arduino relié à la tablette devrai utiliser des point de repères afin de déterminer l'emplacement de chaque rayon. L'ensemble du matériel nécessaire ( robot, tablette, capteur, etc...) à ce projet sont commandés via des fournisseur et sur proposition des étudiants au tuteur de projet. Les étapes de réalisation de ce projet sont détaillées dans les parties suivantes.
Préparation du projet
Matériel requis
- Robot + capteurs
- Tablette
- Arduino
- Outils de programmation
Matériel à acheter
- Platine ADK
- Robot
- capteur
- quincaillerie
Avancement du projet
Objectifs des différentes séances
1ere séance: Lors de cette première séance Nous nous sommes fixés comme objectifs d'effectuer une recherche des caractéristiques du robot de guidage et une conception d'un cahier des charges réduit. Il s'est donc agit de faire une recherche sur internet des différents modèles de robots respectant notre budget.
2ème séance: La deuxième séance s'est axée sur l'installation des différents paquets nécessaires pour créer une application Android permettant l'affichage d'un message sur l'écran de la tablette tactile.
3ème et 4ème séance: Ces 2 séances sont axées sur la création d'une application Android permettant de sélectionner une liste de produit et de commander le robot par la suite. Il s'agit donc de créer une base de données comportant les objets et les selections effectuées par l'utilisateur.
5ème séance: Les bases de données ayant été créées il faut à présent relier ces bases à notre interface utilisateur de manière à stocker les images et les différentes informations du magasin et des choix utilisateurs.
Réalisations concrètes
Séances
Première séance
Nous avons effectué des recherches sur internet concernant différents modèles de robot pouvant respecter le cahier des charges. Nous avons comparé différents modèles et avons choisi un robot mobile FB004 fabriqué par FiveBot.
2 fournisseurs différents proposent ce robot : Robotshop à 751.83 euros et génération robots à 705 euros ( seul problème chez ces derniers le robots n'est pas en stock) . Ce robot possède les caractéristiques indiqué ci dessous.
Ainsi afin de respecter la norme de taille d'environ 1,5m pour un utilisateur humain, nous avons décidé de rajouter des barres en alluminium commandées chez radiospares
( Disponibilité disponible(s) - En stock pour livraison le lendemain Code RS 493-8319 Fabricant Bosch Rexroth Référence fabricant R987160855 Etat RoHS Sans objet) Pour abaisser le centre de gravité du robot complet nous utiliserons des roulettes de soutients qui permettront de gérer l'équilibre de robot
La liste des éléments livrés par commande reste la meme quel que soit le fournisseur du robot
Kit Robot Mobile à 2 Roues Motrices Compatible Arduino
Caractéristiques techniques du robot Fivebot FB-004 Châssis
- Apparence : châssis circulaire
- Longueur : 357mm
- Largeur : 313mm
- Hauteur : 267mm
- Garde au sol : 39mm
- Matériau du châssis : Aluminium, acier
- Vitesse max : 0.8m/s
- Propulsion : 2 roues motrices différentielles, 1 roue libre
- Pente franchissable : 20°
- Charge utile : 10kg
- Compatibilité mini-ITX : Oui
Encodeurs
- Technologie : optique
- Nombre de voies : 2
- Résolution : 12 tops par tour de roue
Alimentation
- Batterie : 12V Ni-Mh
- Chargeur : Recharge lente Vin : 100-240V – Vout : 2.4-12V
- Durée de charge : 2 heures
- Autonomie : 30 minutes en continu
Roues
- Diamètre : 143mm
- Largeur : 30mm
- Matériau : polyuréthane
Motorisation
- Type : Faulhaber 12V DC sans fer
- Puissance : 17W
- Vitesse de rotation : 120 tours par minute
- Diamètre : 30mm
- Longueur : 42mm
- Longueur totale : 85mm
- Longueur de l’axe : 35mm
- Diamètre de l’axe : 6mm
- Courant à vide : 75mA
- Courant en charge : 1400mA
- Rapport de boîte de vitesse : 64 :1
Carte de contrôle principale
- Microcontrôleur ATMEGA328
- 14 Entrées / Sorties numériques
- 6 canaux de PWM
- 8 Entrées / Sorties analogiques
- Interface USB
- Circuit de protection électrique
- Interface série niveau TTL
- Support du module radio APC220
- 5 interfaces I2C
- Électronique de commande moteur 2A max
- Alimentation : USB ou alimentation externe 7-12V
- Ports d’alimentations disponibles : 5V/3.3V stabilisées et alimentation batterie
Carte d’extension
- Contrôle de 2 moteurs supplémentaires
- Support RS-485
- Support module Xbee
Programmation
- Environnement de programmation Arduino
- AVR Studio avec programmation par USB
Pour l'utilisation du robot, nous avons prévu en ce qui concerne l'alimentation d'utiliser des points de chargements muraux. Les suivis de trajectoire seront quant à eux adaptés à notre rythme d'avancement dans le projet. Nous partons tout de meme dans l'idée d'utiliser des capteur RFID au final. Nous essayerons avant cela de réaliser des suivi de lignes colorées ou blanches.
Deuxième séance
Nous avons installé les différents paquets java et eclipse nécessaire pour réaliser les programmes sous android. Nous avons connu de nombreux problèmes lors de l'installation des plugins sur eclipse. Ces problèmes ont été dus en premier lieu à un problème de proxy que nous avons par la suite configuré puis à un problème de lien de téléchargement qui n'était plus existants. Nous avons alors récupéré un dossier de plugins déjà téléchargés que nous avons associé au logiciel. Nous avons alors créé une application affichant " hello world" sur l'écran d'une tablette ( Motorola XOOM). Le code correspondant à l'affichage d'un message sur l'écran est le suivant:
package com.google.android.hellosdz;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloSdZ extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello World !");
setContentView(tv);
}
}
Troisième et quatrième séances
Nous avons conçu une application permettant à l'utilisateur de sélectionner un produit suivant une galerie. Pour Cela nous avons d'abord utilisé une base de d'images correspondant au produits. L'utilisateur peut ainsi choisir le produit et appuyer sur un bouton pour valider. Cette première version, nous avons pensé l'améliorer en utilisant une base de données permettant de modifier plus facilement les données enregistrées. Nous avons donc commencé par étudier la syntaxe du SQLite avec Android à l'aide d'un exemple portant sur une base de données de livres. Le programme nous permet ainsi de réaliser 3 opérations: entrez une donnée, modifier une donnée et supprimer une donnée. Ceci nous permet d'envisager des choix multiples pour l'utilisateur qui verra le robot corriger l'ordre de ses choix suivant la distance de chaque produit.
Cinquième séance
Nous avons amélioré l'interface utilisateur de la tablette en incluant des boutons "add" "delete" et "confirm". Ces derniers permettant à l'utilisateur d'ajouter un produit à une liste ou de la supprimer et également de la valider cette liste. Nous n'avons par contre pas pu tenir nos objectifs vis à vis de la base de données. En effet nous créé une base de données de produit et avons réussi à faire correspondre les informations produits avec certaines images produits. Mais au niveau de l'application sur la tablette le fonctionnement ne correspond pas à celui attendu puisque les images n'apparaissent pas lorsqu'on relie la base de donnée et seule les informations sont visibles. Nous avons donc pensé à une nouvelles méthode d'approches qui pourrait simplifier l'interface. L'objectif final étant surtout la communication entre la tablette et le robot.