Aller au contenu


Photo
- - - - -

[WIP] Premier robot "intelligent"


34 réponses à ce sujet

#1 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 17 juillet 2011 - 02:03

Bonjour, je suis entrain de construir mon Premier robot "intelligent", et j'aimerais solliciter votre aide pour sa programmation.

Il est contrôler par un arduino UNO, un platforme motor shield ICI, et un capteur infrarouge sharp.
Voici le chassis:
Image IPB
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 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 17 juillet 2011 - 03:04

C'est marrant,

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 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 17 juillet 2011 - 03:52

Dans la vidéo le robot est contrôle par une commande filaire, pour le moment je suis incapable de faire fonctionner mon µc avec le controleur de moteur...

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 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 17 juillet 2011 - 06:49

Pas d’inquiétude pour es resembences, je ressemble comme deux goute d'eau à Georges Clouney, mais je bois du thé et pas de Nespresso. ;-)

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

 


#5 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 17 juillet 2011 - 07:19

Ouais super ce site, merci. ^^

#6 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

Posté 18 juillet 2011 - 12:35

même si on peut coder cet algorithme de manière linéaire,je t'invite à regarder les machines à états. Ce sera plus clair et plus évolutif.

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

#7 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 19 juillet 2011 - 06:54

Nouvelle vidéo:

Voilà je suis en ce moment en train de refaire un châssis en aluminium brossé, a voir si j'aime le look sinon je remettrais mon plexi ;)

#8 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 19 juillet 2011 - 08:25

Bonsoir Julien décidément, tu es (nous sommes) partout ce soir ;-)

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

 


#9 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 19 juillet 2011 - 08:42

En faite il y a une bande de 5 leds ultra lumineuse entre les moteurs et le devant du robot, elle sont alimenté en 3,6V, c'est juste pour le style. ;)

Aujourd'hui j'ai récupéré un panneau solaire, qui peut fournir 7v ^^.

#10 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

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.

#11 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 20 juillet 2011 - 07:54

Pourquoi ne pas lavoir montré ça plus tôt
Une véritable torture d'attendre 1moi pour la tester
À quand un IDE pour iPhone ? ;-)

 


#12 George Degrop

George Degrop

    Membre

  • Membres
  • 18 messages
  • Gender:Male

Posté 20 juillet 2011 - 08:56

Bonjour,

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 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 20 juillet 2011 - 01:04

Merci, mais je n'utilise pas de servo moteur modifié, j'utilise des moteur en cc, donc pour les contrôler j'ai une carte ici me permettant de controller mes moteurs , pour le moment niveau programmation j'arrive a faire avancé mon robot droit avec ce code
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 George Degrop

George Degrop

    Membre

  • Membres
  • 18 messages
  • Gender:Male

Posté 20 juillet 2011 - 03:11

Je ne crois pas que la carte gère la marche arrière mais n'étant pas un expert, je ne peux faire que des suppositions.
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 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 20 juillet 2011 - 07:05

Mes moteurs sont alimenté par un batterie a part, les relais je ne connais pas du tout donc je vais éviter si possible,mais si sa revient moins chère que une carte avec pont en H, ok pour le relais.

Sinon je n'arrive toujours pas a programmé un changement de direction lors de l'activation du capteur Sharp...

#16 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

Posté 20 juillet 2011 - 08:25

Oh la la. Ta carte gère très bien le sens de rotation avec m1 et m2 : passe à LOW et tu verras.

Avant de changer de direction, testes déjà l'arrêt.

#17 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 21 juillet 2011 - 12:01

Voilà j'arrive a programmer un arrêt, mais mes moteur sont nuls, je vais en commander avec encodeur, si je ne me trompe pas je n'ai pas besoin d'un autre support pour commander, et gérer les information des encodeur et du capteur sharp.

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.

#18 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

Posté 21 juillet 2011 - 12:38

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...


C'est parce que tu utilises le mode roue libre de ton pont en H !
Regarde les autres modes et tu auras un arrêt freiné.

Cordialement.

#19 Luj

Luj

    Habitué

  • Membres
  • PipPip
  • 295 messages
  • Gender:Not Telling

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 Jean-Airplus

Jean-Airplus

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:69 dans ma grote

Posté 21 juillet 2011 - 01:32

Ha ouais il utilise les mêmes, ont'il un problème?

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:
Image IPB vue d'ensemble.

Image IPB la carte.

Image IPB led allumée.

Image IPB batterie.

J'aime ma façon de câbler " à l'arrache" ^_^.

Image IPB 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