Robot Asuro, langage C

Discutez d'informatique ici !
PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

Robot Asuro, langage C

par PrépaQuébec » 30 Juil 2008, 04:42

Hello again,

je vous présente ici le robot Asuro, petit robot à bas prix conçu dans une école d'ingé allemande, idéal pour s'initier à l'électronique, la soudure, et la programmation.

Quelques photos de mon exemplaire:

http://picasaweb.google.com/jalisastef/Asuro/photo#5225302997736400114

http://picasaweb.google.com/jalisastef/Asuro/photo#5225303016136799074

Une vidéo sympa:

http://www.youtube.com/watch?v=kAeUM5qSVfk&feature=related

L'Asuro est équipé d'un micro-contrôleur ATmega 8 bits, dont voici une description:

http://silicium628.chez-alice.fr/electron/atmega/atmega.htm

Pour finir, last but not least, le site de Arexx Engineering, fabricant de l'Asuro:

http://www.arexx.com/arexx.php?cmd=system&cparam=set_pg_lang(home.dat|EN|true)

Je n'ai eu aucun problème pour le montage, j'avais déjà une petite expérience en soudure... malgré ça, vu le nombre de composants, j'ai quand même poussé un soupir de soulagement quand la phase de test s'est terminée avec succès! Matériellement tout fonctionne bien, toute erreur ne peut être désormais que de programmation. :++:

J'utilise Code::Blocks pour la programmation et la compilation, puis un petit programme fourni sur le CD-rom accompagnant le robot pour "flasher" mon code via le transmetteur IR.

Pour le moment j'étudie le fonctionnement de chaque capteur, et je vois comment je peux faire inter-agir tout ça... pour donner quelque chose d'amusant!

Si la robotique vous intéresse je vous conseille vivement l'achat d'un Asuro, très abordable et très bien conçu (non je ne bosse pas pour Arexx!) Le seul problème de conception à mon avis vient des axes des engrenages, fixation à la glue pas très solide, on voit bien que ça n'a pas été conçu par des mécanos!!

Je posterai ici mes codes (j'en vois au moins deux parmi vous qui pourront m'aider à les optimiser!) et autres aventures Asuresques...

Stef



Anonyme

par Anonyme » 30 Juil 2008, 05:01

=O

:scotch: non je déconne, je ne pouvais pas m'enpêcher de la faire ... :lol:

Sinon moi ça m'intéresse, heu... pas les soudures et toute la mécanique :langue: mais tout ce qui est question de programmation (sachant que je ne suis pas un pro :crash:) car c'est l'avenir de l'automatisation (he oui malheureusement :doh: ), donc je serais intéresser par ton code et ton raisonnement ... (je sais je suis curieux ... :zen: )
Bon ben j'espère que ce post ne va pas partir en c****** :spy: :look_up:

Et perso la patience est tout un art qu'il faut savoir maitriser, donc aucune reponse interessante en 4 jour, c'est pas anormale surtout en periode de vacance ...

Voilà, j'espère voir vite la suite de ton sujet :king:

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 14:00

par Dominique Lefebvre » 30 Juil 2008, 09:42

--flens-- a écrit:=O

:scotch: non je déconne, je ne pouvais pas m'enpêcher de la faire ... :lol:

Sinon moi ça m'intéresse, heu... pas les soudures et toute la mécanique :langue: mais tout ce qui est question de programmation (sachant que je ne suis pas un pro :crash:) car c'est l'avenir de l'automatisation (he oui malheureusement :doh: ), donc je serais intéresser par ton code et ton raisonnement ... (je sais je suis curieux ... :zen: )
Bon ben j'espère que ce post ne va pas partir en c****** :spy: :look_up:

Et perso la patience est tout un art qu'il faut savoir maitriser, donc aucune reponse interessante en 4 jour, c'est pas anormale surtout en periode de vacance ...

Voilà, j'espère voir vite la suite de ton sujet :king:

Bonjour,
Cette discussion sera ce qu'on en fera... Et s'il te plait modère ton utilisation des smileys, cela nuit à la clarté de ton style...
Je reviens sur cette affirmation : "tout ce qui est question de programmation (sachant que je ne suis pas un pro ) car c'est l'avenir de l'automatisation " . Elle est passablement dépassée. On aurait pu l'écrire il y a 40 ans... Aujourd'hui, la programmation et l'automatisation font partie de la panoplie industrielle, et ce depuis belle lurette ! Réfléchis : la programmation des robots devient un jeu d'enfants (mais non Stef, je ne dis pas que tu es un gosse!), au sens propre du terme, car j'ai quelque part sur mes étagères un robot Lego, dont le micro-contrôleur aurait fait mon rêve il y 25 ans!

_-Gaara-_
Membre Complexe
Messages: 2813
Enregistré le: 03 Nov 2007, 16:34

par _-Gaara-_ » 30 Juil 2008, 10:08

Dominique Lefebvre a écrit:Réfléchis : la programmation des robots devient un jeu d'enfants (mais non Stef, je ne dis pas que tu es un gosse!), au sens propre du terme, car j'ai quelque part sur mes étagères un robot Lego, dont le micro-contrôleur aurait fait mon rêve il y 25 ans!


Salut,

je suis d'accord avec ça =)

maintenant avec internet il faut juste savoir chercher.. mais vraiment ^^ :D

on est en pleine ère de l'information et comme la chance, l'information faut la chercher :ptdr:

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 01:53

par Patastronch » 30 Juil 2008, 16:22

Ce robot manque cruellement de possibilités ! Je préfère encore m'amuser avec mes legos technique (ou investir dans des lego NXT => http://patastream.com/index.php?page=page_view&id=370) qui me permettent de vraiment faire ce dont j'ai envie et non me restreindre à des capteurs sur 2 roues asynchrones alimentés par des piles AAA.

Sinon je ne comprends pas trop l'objet de ton topic. Tu t'étonnes dans une autre conversation d'une réponse minable au bout de 4 jours, mais disons le, personnellement je vois pas quel est ton but quand tu postes ce topic, c'est pas clair (au début j'ai penché pour une pub mais tu maintiens dur comme fer que tu n'es pas sponsorisé par Asuro). Alors :

-> Si tu recherches des idées d'algo à mettre dans ton joujou, pour ma part, sur ce genre de robot très limité des algos d'apprentissages pour la navigation serait ce qu'il y a de plus intéressant. Si tu es encore un profane dans ce domaine, oriente toi vers des méthodes d'apprentissage par système de classeur ou méthode de svm et oublie pour le moment les approches par réseaux de neurones plus compliqué à mettre en œuvre.

-> Si tu recherches des conseils pour bien programmer, donne déjà le langage dans lequel tu comptes travailler (bon on se doute qu'il s'agit du C++ au vu de ton éditeur mais sait-on jamais).
[edit : j'avais pas vu que tu avais mis le langage dans ton titre]

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 14:00

par Dominique Lefebvre » 30 Juil 2008, 17:38

Tiens un autre fan de Lego techniques et des robots Lego, sympa... Je me sens moins seul! Et moins idiot aussi peut-être...

bombastus
Membre Complexe
Messages: 2295
Enregistré le: 29 Nov 2007, 23:35

par bombastus » 30 Juil 2008, 20:34

Bonjour,

Patastronch a écrit:Ce robot manque cruellement de possibilités ! Je préfère encore m'amuser avec mes legos technique (ou investir dans des lego NXT => http://patastream.com/index.php?page=page_view&id=370) qui me permettent de vraiment faire ce dont j'ai envie et non me restreindre à des capteurs sur 2 roues asynchrones alimentés par des piles AAA.

Je ne suis pas d'accord, je ne l'ai pas testé mais d'après ce que j'ai lu ça m'a l'air d'être un robot d'apprentissage plutôt sympa qui a un gros avantage par rapport à ton lego NXT : le prix... il vaut peut être mieux se faire la main sur ce type de robot : réaliser un montage, tester différents capteurs (optique ,de contact,...) et se familiariser avec la programmation C que d'acheter un robot 300 euros pour au final le regarder danser...

Patastronch a écrit:-> Si tu recherches des idées d'algo à mettre dans ton joujou, pour ma part, sur ce genre de robot très limité des algos d'apprentissages pour la navigation serait ce qu'il y a de plus intéressant. Si tu es encore un profane dans ce domaine, oriente toi vers des méthodes d'apprentissage par système de classeur ou méthode de svm et oublie pour le moment les approches par réseaux de neurones plus compliqué à mettre en œuvre.

et tu conseillerais à un débutant de commencer par l'apprentissage supervisé?? :doh: la méthode des svm est plutôt lourde à mettre en place (et pas beaucoup plus évidente que les réseaux de neurones...). Il vaut mieux qu'il se familiarise avec des règles simples de navigation en faisant des tests sur des parcours.

En tout cas PrépaQuébec , je trouve que c'est une bonne initiative de le présenter :++: et tiens-nous au courant des possibilités du robot!

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 31 Juil 2008, 04:27

Excuse moi de ne pas avoir été exhaustif dans la description de l'Asuro... Je ne m'étais pas rendu compte que j'avais donné l'impression que ceci pouvait se résumer à "3 piles LR3 et deux roues asynchrones"
Personnellement, j'aime beaucoup le concept de cet objet: bas prix (merci Bombastus de l'avoir relevé), logiciels freeware, initiation à la prog en C, initiation aux micro-contrôleurs, aux différents types de capteurs, à la soudure...et j'en oubli. Je pense que ça peut intéresser les jeunes qui voudraient se lancer dans un projet de lycée (j'en ai déjà vu en S monter un projet autour de l'Asuro) pour ma part je regrette que ceci n'ai pas existé quand j'étais moi-même au lycée, il y a 10 ans.
Voilà, si ça ne t'intéresse pas "patastronch" , passe simplement ton chemin, et va jouer aux legos :we: merci quand même pour ta participation, ça m'a permis de me rendre compte que j'avais manqué de précision.

Les deux buts de ce topic:
-faire connaître ce robot sympa (allez voir les vidéos sur youtube, et dites moi après ça que l'Asuro a "peu de possibilités"!) but ultime: susciter des vocations :happy2:
-améliorer mes codes (faut être égoïste aussi parfois dans la vie)

Voilà... j'espère que j'en ai terminé avec la polémique, now let's talk in C language!

Stef

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 01:53

par Patastronch » 31 Juil 2008, 09:48

si ça ne t'intéresse pas "patastronch" , passe simplement ton chemin, et va jouer aux legos


Oula inutile d'être arogant, le ton est pas très sympathique d'un coup. C'est peut-être de ma faute j'en sais rien, mais si j'ai été agressif je m'en excuse d'avance car ce n'était pas voulu.

Si je dis tout ça c'est parceque les robots je commence un peu a connaitre, étant dans un laboratoire d'intelligence artificielle, dans mon labo on peut y voir des département comme animatlab => http://animatlab.lip6.fr/Accueil ou autres département de système multi-agent et j'en passe. Enfin tout ça pour dire que c'est presque mon job les robot et leur programmation et que je maintiens toujours qu'un robot qui ne fait que rouler peut très rapidement ennuyer (la présence d'une pince seulement peut démultiplier l'intérêt et les possibilités du robot). Ensuite le prix est une chose en effet, j'ignore combien vaut l'asuro mais si c'est comme pour le Picooz (hélico téléguidé très peu cher : les 2 pour 30 euros) son prix en fait juste une belle arnaque (hélico en polystyrène, moteur de mauvaise qualité, fragilité ...).
En ce qui concerne l'apprentissage de la programmation C, t 'as pas besoin d'un robot pour ça :) Et je doute que les legos soient moins didactique que l'Asuro personnellement.

En ce qui concerne les algo d'apprentissage, je ne crois pas qu'un svm soit compliqué a coder. A comprendre peut etre ( et encore minimiser des distances c'est pas bien sorcier dans l'idée) mais pas à coder. Je proposais seulement ce type d'algo parceque c'est ce qui m'éclate le plus dans ce genre de petite application : poser un robot dans un environnement inconnu et voir qu'il arrive à très bien se débrouiller (si l'apprentissage s'est bien passé du moins), je trouve ça magique à chaque fois. Alors que regarder un robot appliquer une suite d'opération toutes prédéfini qui ne marche que dans un certain environnement je trouve ça rapidement lassant.

Enfin bon , inutile de polémiquer pour savoir ce qui est le mieux, et amuse toi bien avec ton robot !

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 31 Juil 2008, 14:46

Ce n'était pas agressif Patastronch, j'ai juste pensé à la phrase si répandue: "va jouer aux légos" j'ai trouvé ça de circonstance, ne l'interprète pas mal! Les joies des forums heins... :we:
Je suis assez d'accord avec ce que tu dis, dans le sens où vu ton niveau l'Asuro peut peut-être sembler simpliste, mais comme dit, c'est une initiation! Et mieux qu'un lego quand même, je persiste et signe: pas de soudure en lego par exemple, l'Asuro "fait un peu plus technicien" (j'ai pensé à un peu plus "sérieux", mais le terme n'est pas très heureux quand même)

Stef

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 01:53

par Patastronch » 31 Juil 2008, 20:45

Dominique Lefebvre a écrit:Tiens un autre fan de Lego techniques et des robots Lego, sympa... Je me sens moins seul! Et moins idiot aussi peut-être...

J'avais loupé ton message,oui je suis un grand fan des lego technique et des mecanos ! Je trouve ces joujoux très bien pensés, ils ont reussi a rendre le bricolage amateur a la portée de tous :)

PrépaQuébec, je doute pas que tu dois beaucoup t'amuser avec l'asuro, j'en aurais fait surement autant y a quelques années, mais l'avantages des legos quand on est amateur c'est qu'il suffit de faire une fois un gros achat et apres tu peux concevoir ton robot de la forme qu'il te plait et faire un robot qui remplit la tache de ton choix (comme pour le rubis cube par exemple). C'est la ou pour moi il y a une grande faiblesse dans l'asuro, il ne fait que rouler et ne fera jamais que rouler (avec des capteurs qui sont a mon avis loin d'etre tres fiable si le prix est si bas que tu le dis) !!! Avec tes legos (surement 3 a 4 fois plus cher que ton asuro je le nie pas) il te suffit de rajouter un bras pour augmenter énormément l'intérêt de ton robot :)

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 04 Aoû 2008, 05:58

Voici le premier programme un peu élaboré (je dis bien un peu, il n'y a que la fonction main en dehors de la librairie asuro.h :we: ) que je tente de faire pour Asuro, le but est de le faire filer tout droit, et de réagir en cas de rencontre d'obstacle en faisant marche arrière dans une direction donnée suivant le capteur activé.

Je ne vous donne pas encore le code, juste un message d'erreur que j'ai obtenu:

test.c:31: error: parse error before "else"

Qu'est-ce donc?

Stef

abcd22
Membre Complexe
Messages: 2426
Enregistré le: 13 Jan 2006, 16:36

par abcd22 » 04 Aoû 2008, 12:26

Bonjour,
Probablement un oubli de point-virgule (le compilateur tombe sur « else » alors qu'il attendait autre chose avant).

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 05 Aoû 2008, 17:16

Voici le code en question, que j'ai mis au point avec un camarade allemand:

#include "asuro.h"

int main(void)
{
Init();
unsigned char Tc=0, Tc2=0;
StatusLED(RED);

while(1)
{
Tc==PollSwitch();
Tc2==PollSwitch();
if ((Tc==0) && (Tc==Tc2))
{
MotorDir(FWD,FWD);
MotorSpeed(120,120);
BackLED(ON,ON);
} else {
MotorDir(RWD,RWD);
MotorSpeed(200,200);
BackLED(OFF,OFF);
}
Sleep(255);
}
return 0;
}

Il ne fonctionne pas, l'Asuro se lance moteurs en avant 120, led arrières allumées, mais rien ne se passe si un switch est activé. Je vais reprendre le code à zéro, si quelqu'un a une suggestion...

Stef

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 05 Aoû 2008, 17:27

:lol: vu!

A quoi sert la fonction Pollswitch ? (ça c'est juste pour mon information)

Les lignes qui contiennent ce mot ne servent à rien. En effet, tu as confondu opérateur de comparaison et opérateur d'affectation.

Vrai ou faux ?

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 05 Aoû 2008, 17:46

Flodelarab a écrit::lol: vu!

A quoi sert la fonction Pollswitch ? (ça c'est juste pour mon information)

Les lignes qui contiennent ce mot ne servent à rien. En effet, tu as confondu opérateur de comparaison et opérateur d'affectation.

Vrai ou faux ?


Veux tu dire que j'aurais dû écrire Tc=PollSwitch() plutôt que Tc==PollSwitch?
AAAAaaah il me reste du boulot en C! Bon c'est bien pourquoi j'ai construit ce robot aussi...!

Je vais reprendre ça. Un autre problème, c'est que je n'ai pas trouvé de description de la librairie asuro.h... PollSwitch fait partie de cette librairie, mais je ne sais pas exactement comment l'utiliser; j'ai fait d'après le manuel de l'Asuro, qui est très très très succint sur ce point. je crois qu'il ne me reste qu'à décortiquer asuro.h. Sitôt dit sitôt fait, extrait de asuro.h:

#ifndef ASURO_H
#define ASURO_H

#include
#include
#include

#define FALSE 0
#define TRUE 1

#define OFF 0
#define ON 1

#define GREEN 1
#define RED 2
#define YELLOW 3

...

/* function to read out switches */
unsigned char PollSwitch (void);
/* for working with Interrupt */
void StartSwitch(void);
void StopSwitch(void);

Ca m'aide pas vraiment en vérité. :marteau:

Stef

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 05 Aoû 2008, 17:54

abcd22 a écrit:Bonjour,
Probablement un oubli de point-virgule (le compilateur tombe sur « else » alors qu'il attendait autre chose avant).


Tu avais raison, une faute de frappe.

Stef

Flodelarab
Membre Légendaire
Messages: 6574
Enregistré le: 29 Juil 2006, 16:04

par Flodelarab » 05 Aoû 2008, 18:11

Oui, je suis une mère pour toi. Non, ne me remercie pas. Arrête les flashs, ça me gêne.

Il y a 6 capteurs appelés K1, K2, K3, K4, K5, K6. Pas vrai ?

Comment je le sais ?


:zen: C'est là que je t'apporte le lien qui va te sauver la vie


Quoi ? Comment ça "Espèce de boulet, je connaissais déjà !" ?
Et bien tout est écrit: tu récupères la position des switchs dans un nombres à 8 chiffres dont les 6 premiers (les plus petits) donnent la position recherchée des Ki.

:++:

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 05 Aoû 2008, 18:25

Flodelarab a écrit:Oui, je suis une mère pour toi. Non, ne me remercie pas. Arrête les flashs, ça me gêne.

Il y a 6 capteurs appelés K1, K2, K3, K4, K5, K6. Pas vrai ?

Comment je le sais ?


:zen: C'est là que je t'apporte le lien qui va te sauver la vie


Quoi ? Comment ça "Espèce de boulet, je connaissais déjà !" ?
Et bien tout est écrit: tu récupères la position des switchs dans un nombres à 8 chiffres dont les 6 premiers (les plus petits) donnent la position recherchée des Ki.

:++:


Non c'est moi le boulet, je ne connaissais pas! :we:
Merci, tu me sors de l'impasse, tu mérites les flashs... maman :party:
Je vois ce que je peux faire et t'en donne des nouvelles; pour l'instant je suis occupé avec le livre "digital design, principles and practices", qui m'apporte lui aussi son lot d'interrogations! :livre:

Stef

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 15:57

par PrépaQuébec » 20 Aoû 2008, 05:49

Voici mon premier code concernant le suivi de ligne:

#include "asuro.h"
int main(void)
{
unsigned int lineData[2];
Init();
FrontLED(ON);
StatusLED(GREEN);
MotorDir(FWD,FWD);
while (1){
LineData(lineData);
if (lineData[0]lineData[1]) {
MotorSpeed (25,100);
}
else if (lineData[0]==lineData[1]) {
MotorSpeed (100,100);
}
}
return 0;
}


:ptdr: je viens de refaire un test et je m'aperçois que j'ai fait une erreur sur le moteur à accélérer pour le suivi de ligne... voici le bon code:

#include "asuro.h"
int main(void)
{
unsigned int lineData[2];
Init();
FrontLED(ON);
StatusLED(GREEN);
MotorDir(FWD,FWD);
while (1){
LineData(lineData);
if (lineData[0]lineData[1]) {
MotorSpeed (100,25);
}
else if (lineData[0]==lineData[1]) {
MotorSpeed (100,100);
}
}
return 0;
}


C'est mieux, et ça marche (ça marche, j'ai enfin réussi à faire quelque chose qui maaaarche).
Par contre je m'interroge sur l'utilité de la ligne ==, cette condition ne se produira probablement jamais et les deux autres doivent suffire...
Que pensez-vous de ce code?

Le suivi de ligne se fait par la lecture des photo-transistors en dessous de l'asuro. Il faut donner une adresse de mémoire qui peut accueillir deux entiers relatifs. La fonction LineData "rempli" l’adresse avec les valeurs du convertisseur A/D des deux photo-transistors. Le premier entier
relatif reçoit la valeur de conversion du photo-transistor gauche et le deuxième la valeur du photo-transistor droit. La luminosité maximale correspond à une valeur de "1023 ", l’obscurité correspond à une valeur de "0".

J'ai tracé une ligne au marqueur noir sur plusieurs feuilles blanches. Ça fonctionne très bien en vitesse réduite.

Stef

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite