Aller au contenu


Contenu de mopi

Il y a 18 élément(s) pour mopi (recherche limitée depuis 05-mai 13)


#38114 code robot autonome

Posté par mopi sur 16 janvier 2012 - 02:08 dans Programmation

C'est loin d'être chiant c'est moi qui vient demander de l'aide ^^
J'ai 2 capteurs ultrasons 1 à drotie l'autre à gauche du robot et je veux qu'il se balade dans une pièce donc il avance tout le temps sauf si il y a 1 obstacle qui se présente à gauche ou à droite ou dans ce cas là il tourne à droite ou à gauche.
Mais là je ne sais pas pourquoi mon robot tourne sur lui même comme si il y avait tout le temps un obstacle à gauche.
Pourtant les valeurs distance droite et distance gauche valent bien toujours plus de 150cm (j'ai mis mon robot au milieu de mon appartement.)
Merci pour ton aide.

PS: C'est marrant que ce soit toi qui me réponde depuis le début je m'inspire de ton robot j'ai la même base et j'ai acheté la télécommande IR que je vais programmé un peu comme toi dès que je règle le problème des capteurs ultrasons donc merci^^



#38102 code robot autonome

Posté par mopi sur 16 janvier 2012 - 11:46 dans Programmation

Salut
Merci pour ta réponse.
En fait le serial monitor je m'en sert seulement pour vérifier si les capteurs ultrasons renvoyaient bien les bonnes valeurs. Et ils renvoient bien une distance (il récupère 1 durée que je divise pour obtenir une distance comme c'est expliqué dans le datasheet des capteurs.)
Je pense vraiment que c'est dans mon "if" qu'il y a 1 problème?
Merci



#38068 code robot autonome

Posté par mopi sur 15 janvier 2012 - 09:33 dans Programmation

Bonjour,
Je suis en train de réaliser un robot à apprentissage automatique basé sur la régression linéaire (Le robot n'est à la base pas programmé pour se déplacer dans une pièce mais après l'avoir guidé avec une télécommande il comprend les tensions qu'il doit envoyé dans ses moteurs en fonction des valeurs retournées par ses capteurs.)
Bref, tout d'abord, il faut que je sache programmé le robot de façon à ce qu'il se déplace dans une pièce tout seul (comme roby) pour après passer à la partie intelligence artificielle.
Mais voilà je bloque. Je sais que mes fonctions avancer,reculer,droite,gauche sont juste (j'ai fait un programme ou le robot effectue les déplacements que je lui demande). Je sais aussi que les capteurs ultrasons sont programmés correctement puisque qu'avec le serial monitor j'ai vérifié que les valeurs retournées étaient justes.
C'est dans ma fonction "if" que j'ai des doutes...et j'ai peur aussi que je me trompe quand j'essaye de retourner les valeurs des capteurs obtenues dans les différentes fonctions. Pourtant j'ai vérifié qu'elles sont bien supérieurs à la valeur que je test mais le robot tourne sur lui même à droite.
Voilà le code si quelqu'un pouvait m'aider.
Merci beaucoup

/*--------------------------------------------------------*/
/** Déclaration des prototypes des fonctions **/
/*--------------------------------------------------------*/

// Capteurs US
void requete();
int mesure_distance(char capteur);
int mesure_reponse(char capteur);
void affichage();

//Déplacement
void avancer(char a,char B);
void reculer(char c,char d);
void droite(char e,char f);
void gauche(char g,char h);


/*--------------------------------------------------------*/
/** Déclaration des constantes et variables blobales **/
/*--------------------------------------------------------*/
//capteurs US
const int capteurdroit=7;
const int capteurgauche=8;
long duree;
int distance_cm;
int distancedroite, distancegauche;

//Moteurs
const int E1 = 5; // contrôle la vitesse du moteur 1 (gauche)
const int E2 = 6; // contrôle la vitesse du moteur 2 (droite)
const int M1 = 4; //contrôle la direction (avancer ou reculer) du moteur 1 (gauche)
const int M2 = 7; //contrôle la direction (avancer ou reculer) du moteur 2 (gauche)






/*--------------------------------------------------------*/
/** Début du programme - Setup **/
/*--------------------------------------------------------*/
void setup() {
Serial.begin(9600);

//direction robot
pinMode(M1, OUTPUT); //met la pin du moteur 1 en sortie
pinMode(M2, OUTPUT); //met la pin du moteur 2 en sortie
pinMode(E1, OUTPUT); //met la pin de E1 en sortie
pinMode(E2, OUTPUT); //met la pin de E2 en sortie
//direction robot
}

/*--------------------------------------------------------*/
/** Boucle principale du programme **/
/*--------------------------------------------------------*/
void loop()
{
distancedroite=mesure_distance(capteurdroit); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur droit:");
//affichage(); //affiche cette distance

distancegauche=mesure_distance(capteurgauche); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur gauche:");
//affichage(); //affiche cette distance

if (distancegauche<20) //si un obstacle se presente à gauche
{
droite (100,100); //on tourne à droite
delay(400); //pendant 0,4 secondes
}

else if (distancedroite<20) //si un obstacle se presente à droite
{
gauche (100,100); //on tourne à gauche
delay(400); //pednant 0,4 secondes
}

else
{
avancer (130,130); //sinon on avance tout le temps
}
//delay(1000); //attend pour un affichage plus clair
}




/*--------------------------------------------------------*/
/** Fonctions relatives aux capteurs US **/
/*--------------------------------------------------------*/
int mesure_distance(char capteur)
{
requete(capteur); //envoie la demande au capteur
mesure_reponse(capteur); //recupere la distance mesurée
return distance_cm;
}


void requete(char capteur)
{
pinMode(capteur,OUTPUT);

digitalWrite(capteur, LOW);
delayMicroseconds(2); //delai d'attente au départ, au niveau 0
digitalWrite(capteur, HIGH);
delayMicroseconds(15); // delai de 15 uS, imposant un niveau '1' au capteur
digitalWrite(capteur, LOW);
}




int mesure_reponse(char capteur)
{
pinMode(capteur,INPUT);

duree=pulseIn(capteur,HIGH); // attend l'impulsion du capteur, et retourne sa durée en microseconde

//if(duree>30000) //test de la condition d'abscence d'obstacle
// duree=0;

distance_cm=duree/58;
return distance_cm;
}


void affichage()
{

// if(duree==0) // Si on a détécté precedemment qu'il n'y a pas d'obstacle, on l'affiche
// Serial.println("Pas d'obstacle!!!!!");

// else // Si non, on affiche la distance
// {
Serial.print(duree);
Serial.println("uS");

Serial.print(distance_cm);
Serial.println("cm");
// }
}



/*--------------------------------------------------------*/
/** Fonctions relatives aux moteurs **/
/*--------------------------------------------------------*/


void avancer(char a,char B) //avancer
{
analogWrite (E1,a); //PWM Speed Control a permet de changer la vitesse du moteur 1
digitalWrite(M1,HIGH); //M1 avance
analogWrite (E2,B);
digitalWrite(M2,HIGH); //M2 avance
}

void reculer(char c,char d) //reculer
{
analogWrite (E1,c); //PWM Speed Control
digitalWrite(M1,LOW); //M1 recule
analogWrite (E2,d);
digitalWrite(M2,LOW); //M2 recule
}

void droite(char e,char f) //tourner à droite
{
analogWrite (E1,e); //PWM Speed Control
digitalWrite(M1,HIGH);
analogWrite (E2,f);
digitalWrite(M2,LOW);
}

void gauche(char g,char h) //tourner à gauche
{
analogWrite (E1,g); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,h);
digitalWrite(M2,HIGH);
}



#36166 robot prevision

Posté par mopi sur 20 novembre 2011 - 10:59 dans Intelligence artificielle

Merci pour ces précisions.
Disons que je suis très motivé seulement on a beaucoup de travail à côté mais je pense pouvoir gérer çà.
Si ça ne te dérange pas je te tiendrais au courant de mon avancé et j'aurais certainement de nombreuses questions pour toi. Mais promis j'essayerais de me débrouiller un maximum tout seul.
Pourquoi ne pas faire un tuto sur mon expérience de gros gros débutant une fois mon TIPE finit!! Je verrais.
Merci encore
A bientôt pour de nouvelles questions
cordialement
mopi



#36164 robot prevision

Posté par mopi sur 20 novembre 2011 - 05:50 dans Intelligence artificielle

Bonsoir,
Merci pour t'as réponse Black Templar sa m'a permit de me lancer dans des achats compulsifs^^
J'ai donc acheter la carte romeo j'espère que je n'ai pas fait d'erreur car si j'ai bien compris celel que tu me conseillais était pour controler 1 moteur CC alors que la romeo peut en contrôler 2 c'est bien sa? La voilà:
http://www.robotshop.com/microcontroleur-romeo-tout-dfrobot-atmega-328-2.html

Bon sinon j'ai acheté ce châssis de développement pour plus de facilité:
http://www.robotshop.com/productinfo.aspx?pc=RB-Dfr-16&lang=fr-CA

Et ces encodeurs pour les roues codeuses qui s'adaptent sur les roues du châssis précédent:
http://www.robotshop.com/encodeurs-simple-2pk-robots-3pa-ou-4wd-dfrobot-2.html

J'ai aussi acheté 2 capteurs de contact, 2 capteurs ultrasons, une tourelle avec 2 servos moteurs et un écran lcd pour afficher des petits messages.
Qu'en penses tu? j'ai 1 mois pour mettre tout cela au point théoriquement en dehors de mes cours et j'aurais 2 mois après pour faire le robot...
Tu penses que c'est réalisable?
Et pour la carte romeo, c'est une carte que je met en plus de ma carte arduino uno ou elle l'a remplace carrément?
Et pour les encodeurs est ce qu'il faut autre chose pour pouvoir savoir ou se trouve le robot ou les 2 encodeurs suffisent?
Merci beaucoup, je pense que je vais pouvoir découvrir le monde de la robotique grâce à tes conseils :)
cordialement
mopi



#36146 robot prevision

Posté par mopi sur 19 novembre 2011 - 06:17 dans Intelligence artificielle

Personne ne peut m'aider pour que je sache par ou commencer?
Quelques liens?
merci beaucoup



#35518 robot prevision

Posté par mopi sur 02 novembre 2011 - 08:00 dans Intelligence artificielle

Merci pour vos réponses
En fait Luj, tu l'avais conseillé à moi même ce sujet^^ et il a été validé donc merci.
Pour la base roulante j'avais déjà fais le robot roby (le tuto) donc j'en avais fabriqué 1 et il marchais plutôt bien.
Seulement je pense quand même acheter une base roulante toute faite parce que la mienne est moyenne. Laquelle me conseillez vous s'il vous plait?
http://www.robotshop.com/robot-chassis-kit-pololu-bleu-solide-3.html
http://www.robotshop.com/chassis-robotique-debutant-v2-dagu-2.html

Je pense que c'est des moteurs CC du coup il va falloir que j'achète sa non?
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertMoteurCCControlerSensVitesseRotation

Est ce plus dur à piloter les moteurs à CC que des servomoteurs?

Enfin pour mon sujet je ne comprend pas vraiment si le robot a par exemple 6 capteurs de contact et qu'il va dans une première partie devoir se prendre des murs pour comprendre?
Faut t-il aussi ajouter des capteurs infra rouge?
Je ne comprends pas trop ce que le robot va apprendre?
Étant donné que je n'ai pas vraiment le droit de faire un programme qui utilise des capteurs infra rouge directement sinon ce serait de la vision et non de la prévision?
Merci beaucoup
cdt
mopi



#35390 robot prevision

Posté par mopi sur 28 octobre 2011 - 09:57 dans Intelligence artificielle

Bonjour,
Je suis un étudiant qui possède peu de connaissance en robotique, j'ai seulement réalisé le robot roby mais je suis loin de maitriser le code.
Dans le cadre des TIPE dont le sujet est "prévision"(aléa,déterminisme,indédermination,risque,systèmes évolutifs,validation-écart)on voulait faire un robot détecteur d'obstacle mais ce sujet a été refusé pour cause de vision et non de prévision.

On a donc modifié le projet avec un robot qui évite les obstacles, en choisissant la direction en fonction de son historique. Il devient un système à apprentissage qui choisira la direction d'évitement (à droite ou à gauche) en fonction de ce qu'il a déjà rencontré. Connu en robotique sous le nom de réseaux de neurones et algorithme génétique d'apprentissage.
On ne sait pas encore si on fera un robot ou si on fera seulement une étude théorique car cela semble complexe mais très intéressant.
Pensez vous qu'un robot est réalisable?
Avez vous des conseils à me donner ou des liens vers des sites qui expliquent de zero comment cela fonctionne?
merci beaucoup
cordialement
mopi



#35236 robot prevision tipe

Posté par mopi sur 24 octobre 2011 - 09:22 dans Aide pour projets scolaire

Bonsoir,

Certes le filtre de Kalman est super (et devrait être au niveau d'un bon élève de maths spé, fainéant s'abstenir). Au vu de mon expérience dans l'encadrement de TIPE, je conseillerais de choisir une bonne mise en application concrète reposant sur la conception d'un système plutôt que l'implémentation d'un filtre connu..

Ma proposition est de faire un robot qui évite les obstacles, en choisissant la direction en fonction de son historique. Tu en fais un système à apprentissage qui choisira la direction d'évitement (à droite ou à gauche) en fonction de ce qu'il a déjà rencontré. Il y a plein de façons de modéliser le problème et de choisir un algorithme, à toi de trouver le tien, ça aura plus de valeur pour ton TIPE.


Bonjour,
Alors pour information je suis en prepa intégrée et on est loin loin loin d'avoir le niveau d'élève de math spé.
Je ne connais rien sur le filtre de Kalman mais pourquoi pas essayer?
Enfin pour le côté "système à apprentissage" du robot, pensez vous que c'est réalisable pour un débutant parce que j'ai fait le robot roby et j'en ai bavé pour y arriver pourtant tout est bien expliqué.
merci
cdt
mopi



#35229 robot prevision tipe

Posté par mopi sur 23 octobre 2011 - 11:04 dans Aide pour projets scolaire

Merci à tous les 2.
Yves, Black Templar a bien répondu a ta question si tu as des idées maintenant je suis preneur :)
Merci pour ta réponse Black Templar je vais regarder sur le net tous les thèmes que tu me proposes car je n'en connais pas un seul :S
Merci beaucoup
cdt
mopi



#35222 robot prevision tipe

Posté par mopi sur 23 octobre 2011 - 03:49 dans Aide pour projets scolaire

Bonjour,
Dans le cadre des Tipe, j'aimerai réaliser un robot. Le sujet est Prévision(aléa,déterminisme,indétermination,risque,systèmes évolutifs,validation-écart).
Mon premier projet a été refusé :( je voulais faire un robot qui évite les obstacles et les trous et pour le fun faire une matrice a LED sur son dos qui écrit les mots "obstacles" ou "trous".
Seulement les responsable ont jugés que ce n'était pas de la prévision mais de la vision!!!Donc je dois changer de sujet mais je n'ai pas d'autre idée j'aimerai rester dans le domaine de la robotique.
Imaginons que je fasse un robot qui doit aller d'un point A à un point B. au milieu du parcours je le dévie légèrement de sa trajectoire et le but du robot est de recalculer le trajet pour aller au point B il doit donc corriger sa trajectoire..pensez vous que c'est dans le thème prévision et que c'est réalisable?
Avez vous d'autres idées s'il vous plait?
merci
cdt
mopi



#33796 Réalisation du robot Roby - carte arduino commande moteur

Posté par mopi sur 02 septembre 2011 - 06:34 dans Mécanique

Bonjour et merci pour ta réponse
Etant un gros débutant j'avais finalement acheté 2 servomoteurs pour pouvoir suivre le tuto...
Seulement maintenant que je commence à comprndre comment sa marche avec des servo j'aimerais bien y arriver aussi avec des moteurs cc.
Je n'ai aucune idée du rôle du L293 mais j'ai une question
si je branche mon moteur cc sur mon arduino en 6V il tourne dans un sens, maintenant si j'inverse les fils il tourne dans l'autre sens.
Alors pourquoi ne pas brancher 2 fils sur la borne + du moteur et 2 autres sur la borne - ainsi chaque borne du moteur est aussi bien reliée au +6v qu'à la masse...il ne reste plus qu'après à décider si on décide de l'alimenter dans un sens ou dans l'autre pour reculer ou avancer??? pourquoi à ton besoin du L293?
merci beaucoup



#32320 roby capteur sharp

Posté par mopi sur 16 juillet 2011 - 04:11 dans Programmation

il faut régler la vitesse du serial monitor égale à celle du sketch (en bas à droite du serial monitor) : ici on a 115200 (l'instruction serial.begin(115200); )
ainsi tu devrai recevoir des valeurs entre 0 et 1023, avec un passage à la ligne entre chaque.


ok merci ton programme a parfaitement marché même si mon erreur ne venait pas d'un capteur défectueux, je n'étais pas connecté sur une entrée analogique et c'est ton A0 qui m'a éclairé. merci
Par contre, j'ai essayé de faire quelques tests avec ton programme et je trouve des valeurs différentes du tuto roby pour des distances de 10 cm ou autre est ce normal étant donné que c'est le même capteur?
De plus, mon robot détecte les objet 1 fois sur 2 et des fois au dernier moment voir même après avoir tapé un mur...est ce du à la qualité des capteurs?
Enfin, j'aimerai savoir comment tu as eu l'idée de tester ce programme ? as tu un livre ou une méthode à suivre pour débutant ?
merci pour ton aide



#32318 roby capteur sharp

Posté par mopi sur 16 juillet 2011 - 01:39 dans Programmation

pas besoin d'utiliser processing.

utilise le programme suivant:


const int Voie_0=0; 
int mesure_brute=0;


void setup()   {  

Serial.begin(115200); 
} 

void loop(){ 
  
mesure_brute=analogRead(Voie_0); 

Serial.println(mesure_brute); 

delay(100);

}


et ouvre le serial monitor (le bouton le + à doite du logiciel arduino), règles sur 115200

branches ton sharp sur la voie A0 (en l'alimentant comme il faut évidemment)


J'ai brancher mon sharp sur gnd 5v et A0
après je compile et envoie le code dans mon arduino
puis j'ouvre le serial monitor et voilà ce que j'obtiens:
ýþþÿýúúýÿýúÿþúÿýÿýþøþýüúúýüüúýÿýýúýÿþûøøüÿúýüüûÿþþþüýüüüüþÿÿýüÿýÿøúúúû

Voilà je n'y arrive pas le seul point positif c'est que lorsque je met 1 doigt devant le capteur il apparait un ø
Pouvez vous m'expliquer plus en détail s'il vous plaît?
merci beaucoup



#32313 roby capteur sharp

Posté par mopi sur 15 juillet 2011 - 09:34 dans Programmation

merci pour cette réponse rapide
Comment faire pour visualiser les valeurs en processing peux tu me détailler comment procéder ou alors me donner un liens ou ils l'expliquent.
merci



#32310 roby capteur sharp

Posté par mopi sur 15 juillet 2011 - 08:22 dans Programmation

Bonjour,

Voilà, cela fait bientôt 2 semaines que je tente de réaliser le robot roby mais je n'arrive pas à résoudre un problème.
Je suis arrivé jusqu'aux capteurs UPPD ils marchent parfaitement.
Mais la dernière étape qui consiste à utiliser un capteur IR sharp je n'y arrive pas je ne sais pas si c'est mon programme qui ne va pas ou si c'est que le capteur ne fonctionne pas (est ce que lorsque j'ai soudé les 3 fils j'ai grillé le capteur?)

voilà le bout de programme qui ne fonctionne pas (le robot recul et part à droite indéfiniment) comme s'il détectait un obstacle constemment et j'ai éssayé de changer la valeur 180 en 250 (il recule et va a droite 2 fois puis va tout le temps tout droit) et en 400 (il va tout le temps tout droit) :

void sharp()
{
int v = analogRead(4);
if (v >= 180) // si on est à moins de 10 cm d'un obstacle
{
move(ARRIERE); //on recule
delay(300);
move(DROITE); //puis on part sur la droite
delay(900);
}
else if (v >= 100) //sinon si on est à moins de 30 cm d'un obstacle
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0); // on ralentit simplement la roue droite pour engager un virage en douceur
delay(1500);
}
}


si quelqu'un voit d'ou peut provenir le problème je l'en remerci


Ah oui et aussi les capteur uppd ne fonctionne plus quand je rajoute ce programme



#32309 roby capteur sharp

Posté par mopi sur 15 juillet 2011 - 08:20 dans Programmation

Bonjour,

Voilà, cela fait bientôt 2 semaines que je tente de réaliser le robot roby mais je n'arrive pas à résoudre un problème.
Je suis arrivé jusqu'aux capteurs UPPD ils marchent parfaitement.
Mais la dernière étape qui consiste à utiliser un capteur IR sharp je n'y arrive pas je ne sais pas si c'est mon programme qui ne va pas ou si c'est que le capteur ne fonctionne pas (est ce que lorsque j'ai soudé les 3 fils j'ai grillé le capteur?)

voilà le bout de programme qui ne fonctionne pas (le robot recul et part à droite indéfiniment) comme s'il détectait un obstacle constemment et j'ai éssayé de changer la valeur 180 en 250 (il recule et va a droite 2 fois puis va tout le temps tout droit) et en 400 (il va tout le temps tout droit) :

void sharp()
{
int v = analogRead(4);
if (v >= 180) // si on est à moins de 10 cm d'un obstacle
{
move(ARRIERE); //on recule
delay(300);
move(DROITE); //puis on part sur la droite
delay(900);
}
else if (v >= 100) //sinon si on est à moins de 30 cm d'un obstacle
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0); // on ralentit simplement la roue droite pour engager un virage en douceur
delay(1500);
}
}


si quelqu'un voit d'ou peut provenir le problème je l'en remerci



#32013 Réalisation du robot Roby - carte arduino commande moteur

Posté par mopi sur 30 juin 2011 - 03:36 dans Mécanique

Bonjour à tous,

Je suis débutant et je voulais me lancer dans la réalisation du robot roby
J'ai récupéré toutes les pièces sur des vieilles voitures télécommandées.
Pour ce qui est des moteurs, je les ai récupéré sur un modèle d'une voiture qui avait 2 moteurs indépendant puisque la direction de cette voiture se faisait non pas par 2 roues avant directionnelles mais 2 roues arrières indépendantes. Voici le modèle http://img.2ememain.be/f/normal/81457264_1-voiture-telecommandee-ricochet.jpg

Les moteurs sont des Mabuchi 370

Mais voilà j'ai rencontré un problème que je n'arrive pas à résoudre depuis 1 semaine.

Les moteurs ne possèdent que 2 fils et non pas 3 comme sur le tuto de roby (site robotix)

Je ne sais donc pas comment faire mes branchements sur ma carte arduino pour pouvoir les piloter avec seulement 2 fils.
Quand je les branche je peux les faire tourner en même temps c'est tout mais je ne peux pas les arrêter autrement qu'en appuyant sur l'interrupteur.

Est ce qu'il faut absolument acheter des servomoteurs avec un 3ème fil de commande ou est ce qu'avec ces moteurs à 2 fils c'est possible?si oui est ce que le code proposé dans le tuto va changé?

merci beaucoup