[WIP] Premier robot "intelligent"
#1
Posté 17 juillet 2011 - 02:03
Il est contrôler par un arduino UNO, un platforme motor shield ICI, et un capteur infrarouge sharp.
Voici le chassis:
J'aimerai que le programme soit:
Donnée: moteur 1: gauche
moteur2: droit
-1/le robot avance indéfiniment
-2/lorsque le capteur IR mesure une distance de -25 cm, il stop les moteur
-3/les moteurs recules 1,5 secs
-4/après le moteur 1 passe en marche avant, pendant que le moteur 2 passe en marche arrière, le tout durant environ 0,5secs.
-5/ le robot recommence l'étape 1.
Merci, et sachez que je vais bientôt (environ 1 semaine ou 2) apprendre a programmer grace a l'aide d'un ami qui en a fait son métier ^^
Avant de vous quittez, Voilà une video pour vous montrer le déplacement: http://youtu.be/0dE7YtGalmE
#2
Posté 17 juillet 2011 - 03:04
Il ressemble étrangement à SAMU ton Robot...
Trois étages de plexiglas
Des roues aux même endroits
Y a pas c'est un petit frère... ;-)
Coté code, il semble tourner à en croire ta vidéo.
Si tu arrive a faire ca je ne vois pas ce qu'il te manque.
Les capteurs Sharp sont très bien, mais tout dépend du modèle.
Il en existe 3 avec des distances différentes.
Donc lequel à tu ?
D'autre part, comme il ne sont pas complétement linéaire, il est préférable de te faire une table de contrôle.
tu connectes ton capteur
tu place un gris neutre contre un mur
tu positionne ton robot (avec le capteur dirige vers le gris neutre
Tu te fais une sorte de règle au sol (20CM 50CM, 80Cm etc)
Et tu note les valeurs que tu donne ton télémètre pour chacune de ces distances.
Tu verra que plus le télémètre est proche du mur, plus la tension est elevée.
Mais la tension que tu aura à 50cm n'est pas égale au double de celle que tu aurra à 1m.
D’où l'interet de cette table.
Ensuite, tu n'as plus qu'a mettre des conditions
Si la valeur est égale à x je fais ça
Si la valeur est égale à Y je fais ça etc...
Ou encore,
Si X est plus grand que ... Je fais ça
Si X est plus petit que ... Je fais ça...
Mais attention, car or de se plage de travaille il donne des valeurs incompressible. donc tu dois lui donner une fenêtre de travail et ne pas tenir compte des valeurs en dehors de cette fenêtre.
Cdlt
Yves
#3
Posté 17 juillet 2011 - 03:52
Le capteur sharp c'est un 10 a 80cm.
C'est vrai qu'il ressemble au Samu, lorsque j'ai construit la base avec les moteurs, (en avril), je me suis inspiré d'un robot Roomba.
Par la suite, lorsque j'aurai débloqué quelque sous, je referait le châssis en utilisant de l'aluminium 3mm d’épais, une CMU cam3, un bras manipulateur 3axes et des encodeur pour les roues.
Bref on n'as quasiment le même projet mais on n'as pas les mêmes connaissances. Je suis un débutant, toi tu a l'air plus compétant.
Voilà j'ai aussi eu la confirmation que Lundi 25 juillet, mon amis m’apprendra a programmer.
mais pour l'instant je cherche des bouts de code a droite et a gauche, mais je n'y compend rien ^^
#4
Posté 17 juillet 2011 - 06:49
Pour mes connaissances, non je suis un débutant, mais un débutant acharné.
Pour le code, moi je suis passé par là pour apprendre.
http://www.siteduzero.com/tutoriel-3-11406-programmez-avec-le-langage-c.html
Car tu trouveras plein de monde pour t'aider, mais personne pour écrire ton cade à ta place.
Donc un conseil, lis ce tuto il est vraiment bien fait et parfaitement clair.
Ensuite, va sur le site Arduino et regarde leurs exemples de codes.
En très peu de temps, tu pourras commencer et là tu trouveras du monde pour corriger tes erreurs.
Voilà, tu as les cartes en mains
Cdlt
Yves
#6
Posté 18 juillet 2011 - 12:35
Si tu cherches sur le net tu trouveras des schémas de telles machines - au sens logiciel. On pourra ensuite t aider à convertir le graphe en code.
Au fait samu ressemble aux pobots xpo... Bel hommage
#8
Posté 19 juillet 2011 - 08:25
Quand tu parles de "Machine à états", tu parles de logique combinatoire ?
Une transformation en données booléennes, puis traitement de ces booléennes de façons simple puisque de simples états binaires ?
Si c'est ça, je n'y avais pas pensé, mais oui c'est bien plus simple à gérer. Bien que cela demande un peu de réflexion pour imaginer comment retranscrire une échelle analogique en données binaires, mais oui ça me parait faisable...
Merci de l'info je vais essayer de voir comment faire. surtout que la logique combinatoire ne nécessite pas forcement un ordinateur pour y réfléchir... Une simple feuille de papier et un stylo suffisent. Mon morceau de bois sculpté en somme (Private jock)
Par contre, si ce n'est pas ça, merci de me le signaler afin que je ne perdre pas trop de temps sur un travail impossible...
@ Jean-Airplus
Se sont des bandes de LEDs que tu as mises autour de tes plaques de plexiglas ?
Cdlt
Yves
#10
Posté 19 juillet 2011 - 09:50
Bonsoir Julien décidément, tu es (nous sommes) partout ce soir ;-)
Sauf que mon message date d'hier mais maintenant oui je suis là aussi.
Quand tu parles de "Machine à états", tu parles de logique combinatoire ?
Une transformation en données booléennes, puis traitement de ces booléennes de façons simple puisque de simples états binaires ?
Non pas du tout. Un simple "switch case" amélioré : ça se dessine avec des cercles (les états) reliés par des arcs (les changements).
Un état s'implémente avec une fonction en entrant, une fonction continue qui fait quelque chose et teste l'état suivant, une fonction de sortie.
On peut trouver un exemple de machine à état dans le logiciel Urbi Studio : http://www.gostai.com/static/img/gostaistudio/gostaistudio_big.jpg
ou ici : http://www.ros.org/wiki/pr2_plugs_executive?action=AttachFile&do=get&target=smach.png
En Arduino, ça se code très bien. Il y a même des frameworks pour Arduino. J'hésite à montrer ça à Yves avant son départ en vacances, mais bon : http://arduino.cc/playground/Code/QP
Amusez-vous bien.
#12
Posté 20 juillet 2011 - 08:56
Pour le code je te conseille de regarder le tuto robby il y le code pour s’arrêter, faire marche arrière et tourner. Il faut juste que tu utilise ce code avec les capteurs sharps plutôt qu'avec les microrupteurs.
Si tu veux plus de précision sur le code ou des conseils, je commence à me débrouiller pas trop mal avec le C (et le C++)
Bonne continuation
#13
Posté 20 juillet 2011 - 01:04
int E1 = 6; int M1 = 7; int E2 = 5; int M2 = 4; void setup() { pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); } void loop() { int value; for(value = 0 ; value <= 255; value+=5) { digitalWrite(M1,HIGH); digitalWrite(M2, HIGH); analogWrite(E1, 200); //PWM Speed Control analogWrite(E2, 200); //PWM Speed Control delay(1000); }
J'apprend en lisant des codes ^^, mais je ne trouve pas de code utilisant la même carte que moi, j'aimerai réussir a programmer plusieurs mouvement a la suite histoire de tester ma nouvelle structure.
Par contre je ne suis pas sur que ma carte me permette de faire fonctionné mes moteur en arrière...
#14
Posté 20 juillet 2011 - 03:11
Une méthode simple pour la marche arrière est d'utiliser un relais qui inverse les polarités. attention cependant à la consommation de ton relais : en général ils dépassent les 50mA que peut délivrer la plaque Arduino.
Il te faudrait des relais 2x repos/travail (2 interrupteurs à 2 positions)
Mais je crois qu'ils ne sont pas donnés ...
Il faut aussi vérifier qu'ils supportent un courant suffisamment fort pour tes moteurs
#15
Posté 20 juillet 2011 - 07:05
Sinon je n'arrive toujours pas a programmé un changement de direction lors de l'activation du capteur Sharp...
#17
Posté 21 juillet 2011 - 12:01
En effet après l'envoi de l'information d’arrêt, mes moteur avance d'au moins 10 cm en roue libre avant de se stopper...
Voici les moteurs que je prévois.
Je pense qu'ils devrai allez et être assez puissants.
#19
Posté 21 juillet 2011 - 12:39
mes moteurs sont nuls
...
Voici les moteurs que je prévois.
Je pense qu'ils devrai allez et être assez puissants.
Héhé, parles en à Yves
En plus tu n'as pas la carte de contrôle de ces encodeurs. Il vaut mieux utiliser la carte que Lextronic propose, elle a déjà le connecteur pour ces encodeurs.
Mais bon, tu dois pouvoir l'adapter à ton DFRobot shield.
#20
Posté 21 juillet 2011 - 01:32
Je pense pas avoir besoin de ces deux carte qui sont plus chère que les moteur...
Ma carte me permet de de contrôler deux moteur en cc, après il me reste toutes les entrées digitales et analogiques (-1), pour gérer les informations transmisent par les encodeurs, sa devrait se faire sans trop de problème.
Désolé mais je ne connais aucun autre mode pour le moment peut tu m'éclairer a ce sujet, est-ce dans la code, sur la carte, ...
Je ne vois vraiment pas (noob inside^^)
Quelque photo:
vue d'ensemble.
la carte.
led allumée.
batterie.
J'aime ma façon de câbler " à l'arrache" .
les leds et leur batterie indépendante.
Voilà sa vous donne une meilleur idée du projet en cour, pour les moteurs je vais peut-être opté pour des servomoteur en cc, comme sur le pobot-easy, avec des odomètre encore une fois comme le pobot-easy.
Cordialement, Max.
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users