Projet-2014-2015-RobAIR: Difference between revisions

From air
Jump to navigation Jump to search
Line 170: Line 170:
== Week 8 (March 02nd - March 08th) ==
== Week 8 (March 02nd - March 08th) ==
== Week 9 (March 09th - March 15th) ==
== Week 9 (March 09th - March 15th) ==
Carte non viable suite a l'installation d'Open OCD

== Week 10 (March 16th - March 22th) ==
== Week 10 (March 16th - March 22th) ==
Carte non viable suite a l'installation d'Open OCD
Carte non viable suite a l'installation d'Open OCD

Revision as of 17:06, 4 April 2015

Présentation

RobAIR est une plate forme de télé-présence. Sa principale fonction est d'agir à la place de son utilisateur, lorsque ce dernier ne peut être physiquement présent dans un lieu. Ses domaines d'application sont variés, on peut notamment citer le cas des conférenciers ne pouvant pas se permettre un déplacement, ou bien pour qu'un élève continue d'assister à ses cours lors d'une hospitalisation. Il s'agit d'un projet qui a débuté il y a quelques années, sur lequel nous travaillons en parallèle avec la filière 3I. Nous reprenons aussi le travail effectué précédemment par des élèves de l'ENSIMAG. Notre objectif est le portage sur une nouvelle gamme utilisant le micro-contrôleur STM32 au lieu d'Arduino. Ainsi que l'ajout d'une carte MEMS intégrant divers capteurs, et communiquant avec une tablette via Bluetooth low consomation. Nous prendrons aussi en compte l'implémentation d'une interface sous FirefoxOS pour le téléguidage.

Équipe

Encadrant/Client

  • Olivier Richard(olivier.richard@imag.fr)
  • Didier Donsez(didier.donsez@imag.fr)

Étudiants

  • KLIPFFEL Tararaina (tararaina.klipffel@e.ujf-grenoble.fr) <-- Chef de projet
  • MICHEL Vivien (vivien.michel@e.ujf-grenoble.fr)
  • HAMMERER Jeremy (jeremy.hamerer@e.ujf-grenoble.fr)
  • VIALLET Etienne (etienne.viallet@e.ujf-grenoble.fr)

Gestion de projet

The project started January 14th, 2015.

Progression du projet

Week 1 (January 13th - January 18th)

Découverte de la Fab Lab et du robot "RobAIR"

Week 2 (January 19th - January 25th)

Réflexion sur les Exigences :

  • Prise en main de la documentation de la carte STM32F030R8T6.
  • Initialisation de la board par GitHub :
  • Lancement d'un programme de test des leds de la carte

Problèmes rencontrés

Après avoir installé les fichiers de configurations, nous n'arrivons pas à compiler le programme d'exemple "hello-world". En effet la board STM32F030R8T6 n'a pas encore était implémentée (board inexistante). Il est ainsi pour le moment impossible de flasher celle ci.

Week 3 (January 26th - February 01st)

  • Récupération des ressources software :
    • Code git des Ensimag : [1]
    • Documentation des Ensimag : [2]

Problèmes rencontrés

Après avoir installé les fichiers de configurations, nous avons réussi à flasher le programme d'exemple "hello-world" sur la board STM32F407VGT6 Discovery. Cependant, notre objectif premier est de faire le portage d'une carte Arduino à une STM32f-NUCLEO et non une STM32f-DISCOVERY. En effet, les cartes NUCLEO sont nettement plus performantes et compatibles avec les cartes MEMS et les cartes ARDUMOTO. Pour l'instant nous prenons connaissance de l'utilisation de la carte.

Week 4 (February 02nd - February 08th)

Tutorial d'initialisation du projet

ATTENTION --- Si vous tournez sur une machine de 64 bit, vous devez installer le paquet gcc-multilib, pour pouvoir compiler avec succés sur RiotOS. explication

| sudo apt-get install gcc-multilib


Dans un premier temps nous allons récupérer toute les librairie nécessaire pour commencer notre projet.

  • Récupération des différentes board sur GitHub
  • Récupération du compilateur ARM
  • Récupération de STLINK pour flasher la carte (autre solution : OpenOCD)
| Download le ZIP
| Créer un nouveau dossier (par exemple LIBRAIRIE_EXT dans votre $HOME )
| Placer l'archive dans ce dossier et l'extraire


ATTENTION --- pour STLINK vous devez faire quelques manipulations supplémentaires.

| Rentrer dans le dossier stlink-master et executer les lignes suivantes.
| # ./autogen
| # ./configure 
| # make
|
| PS : Si vous obtenez la ligne d'erreur suivante " configure: error: *** Required libusb-1.0 >= 1.0.0 not installed ***"
| Pas de panique! Il vous manque seulement une librairie.
| sudo apt-get install libusb-1.0
| N'oubliez pas de rajouter le chemin des dossiers extraits dans votre $PATH.
| # export PATH=$PATH:$HOME/LIBRAIRIE_EXT/Dossier_a_ajouter

Pour éviter de taper cette commande à chaque initialisation de terminal, vous pouvez la placer dans votre fichier ".bashrc". Ci dessous, voici les lignes de code ajouté à mon ".bashrc". Noté que vous devez remplacer les variables $HOME par votre propre chemin!

|# LIGNE STLINK pour flash une carte
|export PATH=$PATH:$HOME/LIBRAIRIE_EXT/stlink-master
|
|# LIGNES AJOUTEES POUR RIOT_OS compilateur ARM
|export PATH=$PATH:$HOME/LIBRAIRIE_EXT/arm-2014.05/arm-none-eabi/bin
|export PATH=$PATH:$HOME/LIBRAIRIE_EXT/arm-2014.05/bin

Votre projet est maintenant initialisé, nous pouvons commencer la partie sérieuse.

Tutoriel d'utilisation de RiotOS

Voici un très bon tutoriel de RiotOS : lien

| Ce placer dans un dossier d'exemple "hello-world"
| # cd $HOME/LIBRAIRIE_EXT/RIOT-master/examples/hello-world/
| Compiler le programme en fonction de la BOARD utilisée
| make BOARD=nucleo-l1
| Ce mettre en super utilisateur, puis flasher le programme sur la carte 
| # sudo -s
| # st-flash write bin/nucleo-l1/hello-world.hex 0x8000000

Si votre programme renvoie une réponse, vous pouvez y accédez à l'aide de ces commandes :

| # cd RIOT-master/dist/tools/pyterm/
| # ./pyterm -p /dev/ttyACM0

Prise en main de Mbed

  • Récupération du code de Didier Donsez sur mbed.
  • Adaptation de ce code pour qu'il fonctionne avec la carte Ardumoto branché à la STM32-NUCLEO avec le Compilateur Mbed.
  • Pour tester le programme d'activation des moteurs, il suffit de glisser le fichier motor_NUCLEO_L152RE.bin[3] dans la carte STM32-NUCLEO

Prise en main de ROS-INDIGO

Voici un très bon tutoriel pour prendre en main ROS[4]

  • Installation de ROS-INDIGO[5]
  • Prise en main de CATKIN [6]


Initialisation au début du projet

| Set your Locale
| # sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
| Setup your sources.list
| # sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
| Set up your keys
| # wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -

Création Pakage Workspace

| You should have created this in the Creating a Workspace Tutorial
| # cd ~/catkin_ws/src
| # catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

Concept de Node

| roscore --> Programme master principal
|
| rosnode list
|
| rosrun [package_name] [node_name] --> Lancer un programmme
| rosrun rqt_graph rqt_graph--> Graphique de dépendance
|
| rostopic echo [topic] --> Recupéré des informations d'un topic
|
| rostopic type [topic]
| rosmsg show geometry_msgs/Twist
|
| rostopic pub [topic] [msg_type] [args]

Problème rencontrés

Le projet des Ensimag fonctionne avec la version Hydro de ROS. Cependant "ROS Hydro ONLY supports Precise, Quantal, and Raring for debian packages"[7]. Pour une utilisation avec ROS Indigo, il sera nécessaire de modifier quelques éléments pour obtenir la compatibilité.

Week 5(February 09th - February 15th)

Export de projet via Mbed

- Sur la page de projet personnel
Exemple : http://developer.mbed.org/users/Nom/code/XXXX/
- A droite de la page cliquer sur Export to desktop IDE
- Choisir la carte sur laquelle vous souhaitez compiler
- Choisir la toolChain avec laquelle vous souhaitez compiler
- Une archive est téléchargée avec un Makefile pour compiler


Utilisation de la carte MEMS

-Le tutoriel pour l'utilisation du programme de démo est à l'adresse suivante:

http://developer.mbed.org/teams/ST-Americas-mbed-Team/wiki/Getting-Started-with-Nucleo-Sensors 

-Pour visualiser le résultat (Sous Windows):

http://developer.mbed.org/teams/ST-Americas-mbed-Team/wiki/Creating-Console-Output 

-Sous Linux/Mac:

http://developer.mbed.org/handbook/Terminals
-Installer screen:
sudo apt-get install screen
-Lancer screen pour visualiser le bon device:
screen /dev/<devicename>

Le port par défaut pour la carte est actuellement ttyACM0

Week 6 (February 16th - February 22th)

Week 7 (February 23rd - March 01st)

Week 8 (March 02nd - March 08th)

Week 9 (March 09th - March 15th)

Carte non viable suite a l'installation d'Open OCD

Week 10 (March 16th - March 22th)

Carte non viable suite a l'installation d'Open OCD

Week 11 (March 23th - March 29th)

Week 12 (March 30th - April 4th)

Références