Robot Centaure : Différence entre versions

De Wiki de Projets IMA
(Kinect)
(Kinect)
Ligne 87 : Ligne 87 :
 
Nous pouvons constater que l'image ainsi obtenu n'est pas très esthétique, mais cela permettra à l’algorithme de décision de la trajectoire de travailler sur des valeurs de profondeurs quasiment correcte.
 
Nous pouvons constater que l'image ainsi obtenu n'est pas très esthétique, mais cela permettra à l’algorithme de décision de la trajectoire de travailler sur des valeurs de profondeurs quasiment correcte.
 
De plus, la simpliciter de l'algorithme permettra de ne pas utiliser trop de ressource processeur.
 
De plus, la simpliciter de l'algorithme permettra de ne pas utiliser trop de ressource processeur.
 +
 +
 +
 +
Nous avons également quasiment finalisé l'algorithme de décision de la trajectoire.
 +
Tout d'abord, il faut savoir que l'algorithme ne travail que sur une certaine zone de l'image. En effet un objet situé trop à gauche (ou trop en haut ou à droite) ne gênera pas le robot. Du coup seul une partie du champ de vision de la Kinect est utilisé. Pour régler ces constantes nous avons afficher 3 lignes délimitant l'espace de considération du robot.
 +
 +
L’algorithme en lui même consiste à calculer la moyenne des profondeurs de la partie gauche et droite de l'image.
 +
Ensuite, nous calculons la différence entre ces 2 valeurs. Avec cette différence nous pouvons discerner 3 cas :
 +
* différence < -C  =>  tourner à gauche
 +
* -C <= différence <= C  => continuer tout droit
 +
* différence < -C  =>  tourner à droite
 +
(avec C une constante)
 +
 +
Par ailleurs, la décision de la trajectoire est prioritairement influencé par la présence d'objet très proche :
 +
* Si un objet très proche est détecter à gauche et à droite le robot s'arrêtera
 +
* Si un objet très proche est détecter à gauche le robot ira à droite dans tout les cas
 +
* Si un objet très proche est détecter à droite le robot ira à gauche dans tout les cas

Version du 12 février 2013 à 11:32

Introduction

Etude du robot

Phase de l'inventaire matériel

Dès la première séance nous avons vu que les batteries du robot étaient hors d'usage. Nous avons donc noté les référence et demandé à Polytech d'en faire la commande. Ceci pour ne pas être bloqué par la source d'énergie. Le robot nécessite de nombreuse réparation pour qu'il soit de nouveau utilisable. Nous allons "supprimer" des capteurs et recâbler les capteurs utilisé de façon efficace pour faire une économie de place et pour trouver une solution plus propre au niveau du câblage.


Résumé du matériel à acheter:

- 2 batteries 12V et 24Ah


Résumé des changement préalable :

- Nettoyage totale du robot

- Câblage des capteurs avec des câbles fins

- Réparation des supports capteurs endommagés


Robot Centaure

L'inventaire du travaille qui semble a réaliser

- Réparation de certains support de capteurs

- Recâblage des capteurs et actionneurs

- Trouver les éléments à acheter pour avoir une solution de câblage propre

- Choisir et programmer un microcontrôleur permettant d'être évolutif (Choix d'un Arduino Mega)

- Trouver une solution viable et propre de connectique sur l'Arduino

- Réaliser une carte de convertion PWM -> Tension pour le contrôle des moteurs (Moteurs contrôler en tension) Utilisation possible du logiciel PSIM à but de test.


intérieur du robot Centaure

Bilan des séances

1er et 2ème séances

La Kinect

Nous avons dans un premier temps pris en main la bibliothèque (Freenect) permettant de gérer la Kinect. Nous avons commencé par analyser et modifier un exemple de programme livré avec la bibliothèque (glview.c). Nous avons toutefois relevé un problème inhérent à la Kinect : la projection des infrarouge projecte des ombres sur l'arrière plan. Ceci risque de posé des problèmes pour l'algorithme de décision de la trajectoire.

Notre première tâche a donc était de développer un premier algorithme permettant de récupérer ces zones d'ombres.

Nous avons pu ensuite jeter les premières base de l’algorithme de décision de la trajectoire.

Le robot

Nous avons lors de la première scéance examiné le robot pour comprendre son fonctionnement. A partir de là, nous avons remarquer que le changement des batteries étaient nécessaire. Nous avons donc tout démonté pour prendre les références et en commander de nouvelles. Lors de la seconde scéance, nous avons listé les éléments à changer pour que le robot soit fonctionnel. Nous devons donc :

- Refaire le câblage des capteurs

- Nous avons choisi un Arduino pour réaliser la liaison Capteur / Actionneur ainsi que la liaison avec le PC. Le choix d'un Arduino Méga est la solution qui semble la plus adapté, pour permettre de rendre le robot évolutif. Sinon le nombre d'entrée / sortie risque d'être un élément bloquant pour le futur.


Nous avons aussi réfléchi sur la nouvelle connectique, qui sera de type prise "JR" utilisé dans le modélisme. Chaque prise correspondra à un capteur. Pour ce qui est de l'Arduino, nous voulons lui ajouter un Shield "Sensor" qui permet une gestion de la connectique des capteurs beaucoup plus simple. Il en existe 2 modèles, un limité à 300mA pour ce qui est de l'alimentation (ce qui peut être suffisant pour les capteurs) et un avec alimentation externe permettant l'ajout de puissance. N'ayant pas besoin de puissance pour l'envoi ou la réception de signal nous choisirons la première version.

Connectique choisie
Shield Arduino facilitant la connectique

3ème et 4ème séances

Kinect

Nous avons finis l'algorithme permettant de "reconstruire" les zones d'ombres.

L'algorithme que nous avons confectionné est relativement simple : il balaye l'image ligne par ligne, puis à chaque fois qu'il détecte une ombre il se procure la valeur de la profondeur à gauche et à droite de l'ombre. La valeur la plus lointaine sera utilisé pour remplir l'ombre, ce qui correspond à une bonne approximation.

Voici un comparatif sans et avec l’algorithme de récupération des ombres :

Sans récupération des ombres. Les 3 lignes rouges délimitent les zones en dehors du champs de considération du robot.
Avec récupération des ombres



Nous pouvons constater que l'image ainsi obtenu n'est pas très esthétique, mais cela permettra à l’algorithme de décision de la trajectoire de travailler sur des valeurs de profondeurs quasiment correcte. De plus, la simpliciter de l'algorithme permettra de ne pas utiliser trop de ressource processeur.


Nous avons également quasiment finalisé l'algorithme de décision de la trajectoire. Tout d'abord, il faut savoir que l'algorithme ne travail que sur une certaine zone de l'image. En effet un objet situé trop à gauche (ou trop en haut ou à droite) ne gênera pas le robot. Du coup seul une partie du champ de vision de la Kinect est utilisé. Pour régler ces constantes nous avons afficher 3 lignes délimitant l'espace de considération du robot.

L’algorithme en lui même consiste à calculer la moyenne des profondeurs de la partie gauche et droite de l'image. Ensuite, nous calculons la différence entre ces 2 valeurs. Avec cette différence nous pouvons discerner 3 cas :

  • différence < -C => tourner à gauche
  • -C <= différence <= C => continuer tout droit
  • différence < -C => tourner à droite

(avec C une constante)

Par ailleurs, la décision de la trajectoire est prioritairement influencé par la présence d'objet très proche :

  • Si un objet très proche est détecter à gauche et à droite le robot s'arrêtera
  • Si un objet très proche est détecter à gauche le robot ira à droite dans tout les cas
  • Si un objet très proche est détecter à droite le robot ira à gauche dans tout les cas