Aller au contenu


Photo
- - - - -

Base Roulante Mark I


22 réponses à ce sujet

#1 Sparda

Sparda

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male

Posté 18 octobre 2014 - 04:08

Bonjour :ignat_02:
 
Je me lance enfin dans la réalisation d’un robot un peu plus sophistiqué et upgradable

Pour commencer, le robot sera en mesure de se déplacer de façon téléguidé sur des sols de types intérieurs (non chaotique) puis avec un mode autonome (évitement d’obstacles simple : murs, objets au sol…). Il présentera une autonomie d’alimentation de minimum une heure. Un mode nuit (allumage de diode lorsque la luminosité devient trop faible).
Il ne sera qu’une « base mobile » pour de futures améliorations auxquelles je réfléchis encore.

En ce qui concerne les pièces :
Toutes les informations et décisions seront collectées et prises via une carte Arduino Uno alimenté par une pile 9V avec un interrupteur branché sur la régulation de l’Arduino (Borne +5V et Ground).
Le contrôle des quatre moteurs CC 6V (récupérés sur vieux lecteur CD) en PWM sur la carte Uno sera fait par l’intermédiaire de deux puces H-Bridge L293D (intégrant deux ponts, max 600mA/canaux, avec déjà les diodes de roues libres (type Schotty)) et alimentées avec quatre piles LR6 (1,5V et 2600mAh).
La détection d’obstacle sera faite par un capteur IR : Sharp GP2D120N (portée théorique de 10 à 80 cm, sortie analogique 0,4—3,1V ; consommation moyenne de 30mA). La photodiode et les diodes d’éclairage sont des diodes récupérées à droite et à gauche (typiquement rouge/blanche soit 30mA/diodes).
La communication à distance sera faite au moyen de deux modules Bluetooth XBee (série1) (consommation 50mA/module), le premier relié à l’Arduino via un shield et la seconde reliée avec une carte d’interface USB pour l’ordinateur.
Le châssis sera en bois léger (épaisseur 2mm), les moteurs montés dessus avec les roues directement placées sur leurs axes.
 

 
J’ai déjà un peu réfléchi sur certains points mais toute remarque est la bienvenue :

  •  
  • Quatre moteurs !? Un choix personnel ^^’ :Gigakach_01:
  • Des roues montées sur les axes moteurs sans réducteurs !? :dash2: Je veux une base qui roule de façon « correcte » et à coût réduit grâce à un peu de récup. Dès qu’il « tourne » bien, je verrai pour l’investissement de motoréducteur.

La commande des pièces n’a pas été encore passé, elle sera fait fin de semaine prochaine je pense.

Je crois que j’ai dit tout ce à quoi j’ai réfléchi pour ce projet, j’attends avec impatience vos remarques :)

Image(s) jointe(s)

  • Schéma_général.PNG
  • Liste Achats.PNG


#2 Tirog

Tirog

    Nouveau membre

  • Membres
  • 14 messages

Posté 18 octobre 2014 - 05:48

Salut Sparda,

 

Je vais essayer de bien suivre ton projet car, j'envisage un second robot (après mon Cocotix v1 qui tourne en rond) qui puisse éviter les obstacle à distance à l'aide de capteur IR.

 

Je ne pourrais malheureusement pas trop t'aider car je débute, mais je vais essayer de piquer des idées... :ignat_02:

 

Bon courage

 

Tirog



#3 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 18 octobre 2014 - 06:38

Bonsoir,

 

 

Des roues montées sur les axes moteurs sans réducteurs !?

Sans réduction tes moteurs n'auront certainement pas le couple requis pour déplacer l'ensemble du robot ne serais-ce qu'en ligne droite. Pour tourner il faudra un couple encore suppérieur. C'est d'autant plus vrai sachant que tu souhaite utiliser des moteurs de lecteur CD!


N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#4 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France
  • Interests:La robotique, l'électronique et la réalisation de projets concrets

Posté 18 octobre 2014 - 06:59

Tu ne pourra pas avoir une heure d'autonomie avec une pile 9V.
Je te conseil une batterie 9V, ça t'évitera d'acheter plein de piles.
01110.01001.00011.01111.01100.00001.10011

#5 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France
  • Interests:La robotique, l'électronique et la réalisation de projets concrets

Posté 18 octobre 2014 - 07:08

Une seul batterie remplace toutes tes piles.
Tu as juste à faire des ponts diviseurs de tension pour adapter la tension à l'arduino et aux moteurs.

PS: Fais attention aux pertes qui seront générées du fait que l'intensité est légèrement supérieur à 0A
01110.01001.00011.01111.01100.00001.10011

#6 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 18 octobre 2014 - 07:12

Le régulateur intégré de l'arduino sera plus efficace qu'un pont diviseur.


Christian

#7 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France
  • Interests:La robotique, l'électronique et la réalisation de projets concrets

Posté 18 octobre 2014 - 07:34

Oui mais il faut en faire un qui descend la tension de 9V à 5V pour alimenter l'Arduino
01110.01001.00011.01111.01100.00001.10011

#8 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 18 octobre 2014 - 09:27

 

Tu as juste à faire des ponts diviseurs de tension pour adapter la tension à l'arduino et aux moteurs.

A proscrire. On n'allimente pas un robot (ni quoi que ce soit d'autres) via un pont div !... Enfin, sauf si le but est de faire un petit feu de camp.


N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#9 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France
  • Interests:La robotique, l'électronique et la réalisation de projets concrets

Posté 18 octobre 2014 - 09:42

Pourquoi ça ?
01110.01001.00011.01111.01100.00001.10011

#10 Taupiot_Jr

Taupiot_Jr

    Habitué

  • Membres
  • PipPip
  • 232 messages
  • Gender:Male

Posté 19 octobre 2014 - 09:15

Hello,

 

Le pont diviseur ne doit servir que pour fournir une référence de tension, il n'est pas "électriquement conçu" pour de la puissance, je veux dire par la que son rendement est faible et que dès que du courant commence à être tiré, il y a de grosses pertes d'énergie en chaleur. De plus, les résistance devraient pouvoir supporter cette chaleur à dissiper,... 

 

Pour abaisser une tension, il y a d'autres schémas beaucoup plus efficaces et pas plus compliqué, par exemple un régulateur de tension. Ce n'est pas le système possédant le meilleur rendement, mais il est simple à mettre en oeuvre ;)



#11 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 19 octobre 2014 - 10:30

Je tique seulement mais je préfère rectifier maintenant:

 

La communication à distance sera faite au moyen de deux modules Bluetooth XBee (série1)

 Les modules Xbee serie 1 n'utilisent pas le protocole bluetooth (standard IEEE 802.15.1) mais Zigbee qui se base sur Le standard IEEE 802.15.4. Le débit y est moins grand mais la portée est supérieure.


 

Par contre chez DFrobot il me semble qu'il vendent une sorte de clone des xbee appelés bluetooth bee qui sont donc basé sur le bluetooth.


N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#12 Sparda

Sparda

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male

Posté 19 octobre 2014 - 07:15

Bonsoir,

 

Je n'avais pas encore testé les moteurs mais c'est vrai que le couple n'est pas assez puissant pour vaincre le frottement et lancer le châssis "nu" malheureusement.

Je suis tombé sur ceci http://www.pololu.com/product/1598 qui me parait correcte.

Après quelques recherches sur les calculs de couples, réducteurs et vitesses, et si je ne suis pas trop bête :

Avec une roue de 9 cm de diamètre, une vitesse d'axe moteur de 120 tr/min. On a une vitesse de (3,14 * 0.09) / (1/(120/60)) = 0.56 m/s?
Son couple étant de 2.5kg.cm (Couple = Force*rayon) en théorie il peut porter une charge de F = 2500 / (9/2)  = 555g ?
Par conséquent avec quatre, ça me donne une masse maximale de 2,2 kg ?
Remarques :

1. N'aurais-je pas intérêt à réduire le diamètre des roues?  Ce qui permets d'augmenter la masse maximale supportée mais aussi le franchissement de pente d'inclinaison plus forte ?
2. Histoire de que je ne fasse pas de confusion, le site parle de 0,8A stall, cela correspond bien à 0,8A en pointe ?

 

Merci Nvaste pour ta remarque sur la pile 9V car je n'avais pas vraiment fais les calculs de capacité pour celle-ci, mais je tombe sur une autonomie d'environ une heure.
Par contre pas de pont diviseur car la carte à déjà un régulateur intégré (ce qui est bien pratique), et le pont dissipe tout par effet Joule, je sais que l'hiver vient mais je ne pense pas faire un robot radiateur mobile (quoique ça pourrait être sympa ^^)

 

Tu as raison Transistance de me reprendre, c'était un abus de langage de ma part.

 

Bonne soirée



#13 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 19 octobre 2014 - 07:50

Le Stall current, c'est le courant maxi qu'absorbe le moteur quand il applique son couple maximum. C'est, il me semble, différent du courant de pointe.

 

Plus tes roues ont un rayon important plus ton couple en sortie de réducteur est réduit mais plus le robot se déplacera vite et pourra franchir des obstacles important. Donc oui réduire le diamètre te permettra bien de grimper une pente plus importante.

 

Ton calcul de vitesse semble effectivement juste (je calcule d'une façon différente et je tombe bien pareil).

 

 

Par conséquent avec quatre, ça me donne une masse maximale de 2,2 kg ?

Théoriquement, vu que ton robot se déplace en intérieur sur sol plat, oui.


N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#14 Sparda

Sparda

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male

Posté 27 octobre 2014 - 10:29

Oui, c'est en effet c'est différent, le courant de pointe est le courant max que peux supporter le composant pendant un très faible instant.

Merci pour ton aide Transistance, la commande a été passé, il ne reste plus qu'à attendre la livraison =D

Je vous tiendrai au courant dès que j'aurai avancé.



#15 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 971 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 28 octobre 2014 - 01:16

 

 

Son couple étant de 2.5kg.cm (Couple = Force*rayon) en théorie il peut porter une charge de F = 2500 / (9/2)  = 555g ?
Par conséquent avec quatre, ça me donne une masse maximale de 2,2 kg ?

 

 

Théoriquement, vu que ton robot se déplace en intérieur sur sol plat, oui.

 

Hum vous pouvez me dire quels sont vos considérations mécanique pour affirmer cela ? 

à titre d'exemple : Transistance regarde combien pèse ton robot explorateur combien peut il supporter de charge utile supplémentaire et quel est le couple de tes moteurs ;) 

Si on regarde la théorie pure, en prenant une roue parfaitement ronde et indéformable de diamètre non nul, exerçant un couple non nul quelconque sur un surface plane et en l'absence de frottement ( en dehors du point de contacte entre la roue et le sol bien sûre), c'est suffisant pour déplace un robot de masse infini ... par contre l'accélération d'un tel robot serait proche du nul ...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#16 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 28 octobre 2014 - 10:35

Bonjour,

 

En ce qui me concerne j'ai pas mal de lacunes en théorie pure tel que tu le dit (d'ailleurs je ne m'en suis jamais caché). Ce serait bien venu que tu détailles tout celà comme ça Sparda et moi auront une lacune de moins :yes:

 

Pour répondre à Sparda je me suis appuyé sur mes observations pratique avec mon robot d'exploration. Il pèse maintenant 6Kg à vide et 8Kg en charge. Chaque moteur développe un couple de 3Kg/cm (0.29Nm).

 

Edit: Il faut dire que dans mes calculs habituels je cherche pas à connaître le poids supplémentaire transportable par le mobile. Je me contente de chercher le couple à exercer au travers de la roue de diamètre D selon le poids du robot et la pente maxi à franchir.


N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#17 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 971 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 octobre 2014 - 01:57

Bonjour,

 

En ce qui me concerne j'ai pas mal de lacunes en théorie pure tel que tu le dit (d'ailleurs je ne m'en suis jamais caché). Ce serait bien venu que tu détailles tout celà comme ça Sparda et moi auront une lacune de moins :yes:

 

Pour répondre à Sparda je me suis appuyé sur mes observations pratique avec mon robot d'exploration. Il pèse maintenant 6Kg à vide et 8Kg en charge. Chaque moteur développe un couple de 3Kg/cm (0.29Nm).

 

Edit: Il faut dire que dans mes calculs habituels je cherche pas à connaître le poids supplémentaire transportable par le mobile. Je me contente de chercher le couple à exercer au travers de la roue de diamètre D selon le poids du robot et la pente maxi à franchir.

 

 

Alors pour répondre sur la théorie, il y a pas mal de considérations et pas mal de modélisation ...  ( Pente max, modélisation des déformation des roues et résistance => obligatoire pour modéliser correctement sur sol plat ) et tout dépend des objectifs qu'on s'impose en terme d'accélérations de vitesse et de poids du mobile ... Après en fonction de certains cas certains effets sont plus ou moins négligeable ( Je pense que tu as bien pu constater le problème que peuvent engendrer des pneus trop mou ... )

Il y a pas mal de tuto bien fait pour le dimensionnement en prenant en compte le critère de la pente max ... après il faut différentier une vitesse constante à pente max d'un système en accélération ...  La vraie question étant : à t'on besoin de telle considérations théoriques lors de la réalisation d'un robot amateur ? 

 

J'en suis pas convaincu...

 

Par contre en prenant les données du robot de transistance on peut approximer un peu le poids que pourrait faire le robot de Sparda avec ces moteurs de puissance un peu réduite ... Une simple règle de proportionnalité, "grossière" en ne prenant que le rapport de "couple " ( pour plus de détails sur la justessse de ce raisonnement : c'est en considérant le même type de roue et pour un départ à vitesse nulle.  )

Grosso modo : 8kg*2,5/3 => 6,5 Kg ...et avec de meilleures roue " plus dure" sur un sol dure tu peux déplacer un poids plus important avec une accélération plus faible ...
 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#18 Sparda

Sparda

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male

Posté 17 avril 2015 - 10:43

J'avais oublié de te répondre mais merci Mike. C'est vrai que maintenant je me rends compte, prendre autant de considérations pour un premier vrai robot n'est pas une vraiment une bonne chose.

Après ces "quelques" mois pour vous présenter la version Mark 1.1 (j'ai pris un peu de retard par rapport à ce que je comptais faire mais l'important c'est le résultat comme on dit)

Le montage est un peu fouillis, je vais essayer de voir pour faire un circuit imprimé pour la prochaine version.
Il avance et esquive les obstacles (à peu près correctement) le principal défaut est le manque de capteurs de détection (IR/Ultrasons) qui fait qu'il se mange un pied de table de temps en temps ou lors de marche arrière.
La détection Jour/Nuit a été passé pour la prochaine version car je trouve que cette version est déjà un peu bordélique. (J'ai quand même implémenter la photorésistance et le code de détection dans cette version même si il n'est pas utilisé pour actionné quoique ce soit).

Par contre j'avais une question concernant la PWM, faut-il placer un condensateur en sortie de celle-ci histoire d'avoir un signal plus "droit" ou ça ne sert à rien vu la fréquence du signal (64500Hz)?

 

Image(s) jointe(s)

  • Mark1.jpg
  • Montage.png


#19 Sparda

Sparda

    Nouveau membre

  • Membres
  • 26 messages
  • Gender:Male

Posté 13 juin 2015 - 01:22

Dans ce post, je vous fait un petit retour sur les "difficultés" que j'ai rencontré, en espérant que ce sera utile pour quelqu'un qui souhaite effectuer une base roulante similaire.
 

En premier lieu, il faut s’assurer du bon fonctionnement des moteurs. Lors de leur utilisation avec les broches Pulse Width Modular (PWM) de l’Arduino, un bruit sonore apparait et augmente lorsque la valeur de PWM augmente (0 à 255).

Il est causé par la fréquence utilisée par la PWM. En se reportant à la documentation technique de l’Arduino Uno, il existe trois horloges contrôlant les 6 sorties PWM, la première de valeur 1kHz (par défaut) pour les pins 5 et 6, la seconde de 500Hz pour les pins 9 et 10 et la troisième de 500Hz pour les pins 3 et 11. Ces fréquences sont suffisantes pour faire clignoter des LED mais deviennent gênantes pour des systèmes résonants, tels que les moteurs. (Les valeurs par défaut sont obtenues par l’application d’un facteur de division 64).

Horloge.PNG

 

Malheureusement pour changer la fréquence, il faut atteindre le registre et changer le facteur de division (appelé prescaler en anglais)  ce qui est un peu plus compliqué que du code classique.

SettingTimer.PNG

 

Il suffit d’insérer le code suivant dans le void Setup() du programme :
CodeTimer.png
 
Le passage à la fréquence maximum fait totalement disparaitre le bruit.
Sources :
http://www.arduino.cc/en/Main/ArduinoBoardUno
http://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
http://www.pobot.org/Modifier-la-frequence-d-un-PWM.html
 
http://arduino-info.wikispaces.com/Arduino-PWM-Frequency
http://usethearduino.blogspot.co.uk/
 
En second lieu, le robot réagit à son environnement grâce aux capteurs qu’il possède (obstacle, gaz, lumière...) si leur comportement n’est pas parfaitement connu, le robot ne pourra réagir efficacement.
Le principal capteur que j’ai utilisé est le SHARP GP2Y0A21YK0F : Portée 10-80cm. Lors des acquisitions, des mesures aléatoires venaient perturber le comportement du robot (détection d’obstacle inexistant). J’ai d’abord disposé un condensateur de 10µF entre l’alimentation (Vcc) et la masse (Grd) comme préconisé dans la documentation constructeur. Les perturbations persistaient, j’ai cherché à connaitre leur origine, qui est en fait dû au mode de fonctionnement du capteur lui-même. En effet, le capteur émet en continue un rayonnement IR mais n’effectue une mesure toutes les 38.3ms +/- 9.6ms, et il faut au maximum 5ms pour que celle-ci soit stabilisé. Par conséquent, on ne peut effectuer une mesure précise seulement toutes les 53ms.
MesureCapteurIR.PNG
En ajoutant un delay de 53ms entre chaque mesure, j’ai pu réduire de façon significative ce problème, cependant de temps à autre, ce comportement revenait, provoquant l’arrêt du robot. Le moyen le plus simple, fut d’adapter l’algorithme de détection d’obstacle en moyennant des séries de mesures. Plus le nombre de points est élevé, plus le moyennage est efficace, cependant il prend plus temps et diminue la réactivité du robot.
La première adaptation fut d’acquérir plusieurs points (dans mon cas, 5) et d’effectuer moyennage brut sur celles-ci. C’est le moyen le plus simple consommant que très peu de temps (0.25s) mais le résultat peut être décevant. Une seconde possibilité, un peu plus complexe est d’acquérir les points et de les stocker dans un tableau par ordre croissant, on en extrait deux valeurs médianes que l’on peut moyenner, celui-ci est un peu plus long en termes de code mais reste aussi rapide que le premier pour un résultat meilleur.
 Sources :
http://www.gotronic.fr/pj-51.pdf
http://www.pobot.org/Capteur-IR-Sharp-GP2D120.html
https://darylrobotpr...ent-les-eviter/



#20 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 252 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 13 juin 2015 - 03:52

Dans ce post, je vous fait un petit retour sur les "difficultés" que j'ai rencontré, en espérant que ce sera utile pour quelqu'un qui souhaite effectuer une base roulante similaire.
 

En premier lieu, il faut s’assurer du bon fonctionnement des moteurs. Lors de leur utilisation avec les broches Pulse Width Modular (PWM) de l’Arduino, un bruit sonore apparait et augmente lorsque la valeur de PWM augmente (0 à 255).

Il est causé par la fréquence utilisée par la PWM. En se reportant à la documentation technique de l’Arduino Uno, il existe trois horloges contrôlant les 6 sorties PWM, la première de valeur 1kHz (par défaut) pour les pins 5 et 6, la seconde de 500Hz pour les pins 9 et 10 et la troisième de 500Hz pour les pins 3 et 11. Ces fréquences sont suffisantes pour faire clignoter des LED mais deviennent gênantes pour des systèmes résonants, tels que les moteurs. (Les valeurs par défaut sont obtenues par l’application d’un facteur de division 64).

attachicon.gifHorloge.PNG

 

Malheureusement pour changer la fréquence, il faut atteindre le registre et changer le facteur de division, appelé prescaler en anglais)  ce qui est un peu plus compliqué que du code classique.

attachicon.gifSettingTimer.PNG

 

Il suffit d’insérer le code suivant dans le void Setup() du programme :
attachicon.gifCodeTimer.png
 
Le passage à la fréquence maximum fait totalement disparaitre le bruit.
Sources :
http://www.arduino.cc/en/Main/ArduinoBoardUno
http://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM
http://www.pobot.org/Modifier-la-frequence-d-un-PWM.html
 
http://arduino-info.wikispaces.com/Arduino-PWM-Frequency
http://usethearduino.blogspot.co.uk/
 
En second lieu, le robot réagit à son environnement grâce aux capteurs qu’il possède (obstacle, gaz, lumière...) si leur comportement n’est pas parfaitement connu, le robot ne pourra réagir efficacement.
Le principal capteur que j’ai utilisé est le SHARP GP2Y0A21YK0F : Portée 10-80cm. Lors des acquisitions, des mesures aléatoires venaient perturber le comportement du robot (détection d’obstacle inexistant). J’ai d’abord disposé un condensateur de 10µF entre l’alimentation (Vcc) et la masse (Grd) comme préconisé dans la documentation constructeur. Les perturbations persistaient, j’ai cherché à connaitre leur origine, qui est en fait dû au mode de fonctionnement du capteur lui-même. En effet, le capteur émet en continue un rayonnement IR mais n’effectue une mesure toutes les 38.3ms +/- 9.6ms, et il faut au maximum 5ms pour que celle-ci soit stabilisé. Par conséquent, on ne peut effectuer une mesure précise seulement toutes les 53ms.
attachicon.gifMesureCapteurIR.PNG
En ajoutant un delay de 53ms entre chaque mesure, j’ai pu réduire de façon significative ce problème, cependant de temps à autre, ce comportement revenait, provoquant l’arrêt du robot. Le moyen le plus simple, fut d’adapter l’algorithme de détection d’obstacle en moyennant des séries de mesures. Plus le nombre de points est élevé, plus le moyennage est efficace, cependant il prend plus temps et diminue la réactivité du robot.
La première adaptation fut d’acquérir plusieurs points (dans mon cas, 5) et d’effectuer moyennage brut sur celles-ci. C’est le moyen le plus simple consommant que très peu de temps (0.25s) mais le résultat peut être décevant. Une seconde possibilité, un peu plus complexe est d’acquérir les points et de les stocker dans un tableau par ordre croissant, on en extrait deux valeurs médianes que l’on peut moyenner, celui-ci est un peu plus long en termes de code mais reste aussi rapide que le premier pour un résultat meilleur.
 Sources :
http://www.gotronic.fr/pj-51.pdf
http://www.pobot.org/Capteur-IR-Sharp-GP2D120.html
https://darylrobotpr...ent-les-eviter/

Bravo! c'est du partage ca  :thank_you:  :thank_you:  :thank_you:


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users