I. Rappel du cahier des charges :
L'objectif du projet a subit quelques modifications. Celles-ci ont étaient proposées par Xargos. Elles consistent à rajouter un paramètre à l'environnement de la colonie. C'est un système de prédation. Des robots prédateurs, que l'on nommera carnivores, agissent eux aussi dans l'arène. Le mode de déplacement n'est plus imposé.
Voici le nouveau cahier des charges. (Si des imprécisions sont présentes, si certaines choses sont impossibles, le cahier des charges pourra être modifié.)
-- Il faut délimiter une zone fermée,
plutôt grande.
-- En son centre un carré, " la colonie "
-- Lorsqu'ils sont inactifs, les automates sont à l'intérieur
de la
colonie.
-- On dispose dans l'arène des objets qui représenteront des
aliments.
-- Les aliments, dont le nombre est connu, seront ramenés dans
la colonie pour
former des réserves.
--> La quantité d'aliments dans l'arène devra déterminer
l'activité de
la colonie. Je parle d'hibernation car la gestion (par
nous) de la
quantité d'aliments peut faire apparaître des cycles
d'activité/
inactivité de la colonie.
On s'impose :
-- Le mode de déplacement est à déterminer.
-- la fonction de communication infra-rouge sera utilisé pour
que les
automates puissent communiquer entre eux.
-- Une pince servira au déplacement des aliments.
-- Le capteur de lumière pourra servir à déterminer
l'emplacement de la
colonie.
On s'interdit :
-- que le système tombe en léthargie permanente. (C-a-d. que
les
automates se bloquent dans la colonie.)
-- L'automate communique une information à un seul autre
automate. Après
la communication, l'automate porteur de l'information
l'oublie. (Cette
interdiction est importante pour
empêcher qu'un automate active
toute la colonie en une seule fois.)
Question : Comment programmer le plus simplement possible un
automate
pour satisfaire au cahier des charges ? Proposez des
éléments de
réponses, chaque mois une synthèse des solutions sera
faite afin
d'avancer vers la meilleur.
A cela on rajoute (apport de Xargos) :
Des robot
"carnivores" (les prédateurs) et des robots herbivores
(ceux qui composent la colonie)
-- Chaque robot commence avec 100 points d énergie
-- Des qu il se déplace 10 secondes a vitesse 5 le robot perd 1
point d énergie
-- Des qu il se déplace 10 secondes a vitesse 8 le robot perd 3
point d énergie (le robot cour)
Pour regagner des points d énergie :
-- Les robot herbivores doivent manger des boules d energies (qui
seront représentées par des balles, des briques ou n importe
quoi d autre), chaque boule d énergie lui fait gagner 10 Point d
énergie, quand le robot herbivore trouve de la nourriture alors
qu il est déjà a 100 points d énergie il vas stocker la
nourriture a un endroit precis (ou il pourra aller la recherche
par exemple) qui sera délimite par un lampe (comme le rangebot
de bapt)
-- Les robots carnivores doivent manger des robots herbivores,
ils repèrent les robot herbivores grace aux signaux émis par
les herbivores (messages IR fixés)
-- Des qu un robot carnivore mange un robot herbivore il lui
enlevé 20 pt d énergie et en gagne 10 (histoire de faire un
petit déséquilibre en énergie)
-- Des qu un robot arrive a 10 pt d énergie il entre en
métabolisme lent (il roule très lentement et très peu)
-- Des qu il arrive a 0 il meurt et peux être relancer comme
nouveau robot
Spec des robots :
-Les herbivores ont une pince pour prendre la nourriture
-Les carnivores ont un "bras" pour attraper l herbivore
(en fait pour toucher un capteur qui serait au dessus de l
herbivore)
-les herbivores émettent des signaux (messages 255 par exemple)
en permanence
-Les herbivores ont un capteur pour trouver la lumière et aller
déposer la nourriture, un senseur tactile pour ne pas être
coincé dans le décor, un capteur pour voir si ils sont
attrapée par le carnivore
-Les carnivores ont un capteur pour tracker l herbivore,1 capteur
tactile pour pas rester plante ds le décor et pour sentir si il
touche sa proie
Des voies d'études sont les suivantes :
-- déterminer le comportement global de l'automate sans se
préoccuper des
détails de réalisation pratique. (Le
plus important)
-- Détection d'aliment et rapatriement de celui-ci dans la
colonie. (Le
plus simple)
-- Positionnement correct de deux automates pour qu'il puisse y
avoir
communication. (Le plus dure).
-- Les herbivores sont au hasard dans tout les sens a la
recherche de nourriture
-- Les carnivores tournent jusqu'a repérer un herbivore
-- Le capteur de l avant sur les carnivores permet de ne pas
se planter dans le décor, mais quand il détecte un herbivore et
qu il sent que sont capteur est enfoncé il sait qu il est devant
un herbivore, il met avoir en marche son "arme" pour
toucher le capteur tactile de l herbivore (qui sera un gros
bouton au dessus de l herbivore) l herbivore émet alors un
message comme quoi il a été touche et le robot carnivore s en
vat et n attaque pas pendant 10 secondes
I.i Aspect pratique
Les carnivores et les herbivores peuvent être développés en parallèle. Il suffit que deux équipes se forment. Le rajout de Xargos ne devrait pas poser de problèmes de temps pour la réalisation.
L'arène aurait l'aspect suivant (les dimensions ne sont pas définies).
Le rapport entre le nombre de carnivores et d'herbivores : 1/3.
II. Propositions
II.i Herbivores
II.i.a partie mécanique
Voici les premiers éléments de réponses. D'abord la pince. Modèle proposé par Nanobapt :
Il prévoit de l'améliorer, notamment en y rajoutant un système pour lever les objets. Il est nécessaire de prévoir la partie de code pour la diriger. Cela ne devrait pas être trop compliqué. Il faut aussi prévoir un chassis pour la supporter.
Le système de déplacement. Pourquoi ne pas prévoir une sorte de membre articulé ? Comme par exemple :
Vous auraient tous reconnus un système proposé sur le site officiel. Comme il y a seulement deux moteurs pour le déplacement, il faut prévoir un système de poutres pour communiquer le mouvement aux pates avant et arrière (à la façon d'une locomotive à vapeur). Le problèmes de ce mode de déplacement est la synchronisation des deux parties pilotée par un moteur chacune.
Le décompte d'énergie lorsqu'un herbivore se fait toucher. Pour l'instant les solutions restent assez vague :
--- nanobapt suggère : Il faut que le
capteur de contact des herbivores soient facilement touchable
pour que les carnivores puissent le touchés facilement.
Pour cela je pense qu'il faudrait :
-donner une hauteur du capteur sur laquelle ni les carnivores ,
ni les bordures de l'aire de jeu ne puisse toucher ce capteur.
Les herbivores devront avoir leur capteur opposé au sens avant
de leur marche de façon que les herbivores ne se touche pas
entre eux ...
capteur à utiliser
- deux tactile (1 pour le parechoc et 1 pour le capteur)
- un lumière : detection d'aliments + lumière
Pour ma part, je pense qu' effectivement la couleur de l'aliment se caractérisera par une plage de valeurs renvoyé par le capteur.
Xargos suggère lui : Oui, simplement un capteur tactile qui pointe vers le haut avec une "plaque" par dessus (qui serais soutenue par des "bras ressorts"(une piece LEGO technic dont je ne connais pas le nom) a chaque coins, ou sinon pourquoi pas un très simple capteur fait maison : 2 plaques de metal pose trey près l une del autre, avec un peu de mouse sur les bords(mais entre les plaques) et quand le choc serais assez grand les 2 plaques se mettraient en contact et fermeraient le circuit tout simplement.
Pratiquement je pense qu'une synthèse des deux solution sera nécessaire. Il faut que des gens s'y intéresse. Comme pour la pince il faudra prévoir la partie code qui gère le capteur.
II.i.b Partie logiciel
Il n'y a rien pour la partie logiciel. Cela ne devrait pas durer. Programmons pour l'instant de façon indépendante chaque comportement. On fera l'intégration de tous ces éléments par la suite. Voir le cahier des charges.
Il est nécessaire de coder la partie manipulation de la pince.
Il est nécessaire de coder la partie détection attaque carnivore.
II.ii Carnivores
II. ii. a. Partie mécanique
Pour l'instant rien à communiquer. Voir le cahier des charges.
II. ii. b. Partie logiciel
Xargos propose l'élément de programmation suivant. Il devrait envoyer un programme d'ici peu. Voilà son idée:
Programme carnivore
1)Tourne sur lui même par 0.1 seconde
Regarde si il reçoit un message 255
2)Si Oui
Avance tout droit pendant 0.3 secondes
Regarde si il reçoit toujours le message 255
Si Oui : reviens en 2)
Si Oui : reviens en 2)
Si Non :
Recommence a tourner sur lui même
Et ajoute 1 au compteur
SENSOR WATCH :
Compteur : Si le compteur arrive a 200 il avance pendant 1 seconde tourne sur lui même pendant un tempe au hasard entre 0.1 et 2 secondes puis avance pendant un temps au hasard et reviens et 1)
Senseur tactile enfoncé:
-Ne reçois pas de message 255 : Recule en arrière pendant un tempe entre 0.5 et 1 seconde puis tourne sur lui même pendant un temps au hasard entre 0.1 et 2 secondes
-Reçois un message 255 = utilise son arme :
baisse son bras (un genre de pik)
Attends de voir si il reçoit un message 200
Si Non : refrape
Si Non : tourne un peu a droite et refrape
Si Non : tourne un peu a gauche et refrape
Si Non : reviens en 1
3) Recule pendant 1 seconde (ou 2 ou 3 je sait pas) et attends 10 secondes sans rien faire il digère)
III. Synthèse
Soyons honnête, il n'y a pour l'instant rien de bien concret, mais des éléments de réponse commence à arriver. Nous allons encore attendre un peu avant de fixer les solutions qui seront utilisées car il y a encore trop peu d'éléments, et ceux-ci sont encore trop vagues. C'est à travers le forum que les idées se préciseront. N'hésitez à y participer.
Rappelons que :
-- une pince a été proposé. Il faut le programme pour la gérer.
-- une proposition de mode de déplacement a été proposé. Il faut l'essayer, voir les problèmes que cela peut soulever...
-- une idée de détection pour les herbivores d'une attaque carnivore. Il faut un réalisation pratique ainsi que le code de gestion du capteur associé.
-- le comportement global d'un herbivore. C'est le squelette du programme à partir duquel on pourra insérer des éléments de comportements. Il faut le développer en toute urgence.
Au moment où j'ai écris cette page, d'autres éléments m'ont étaient envoyées. Je n'ai pas pu (manque de temps) les insérer. Nous sommes le 14-01-01. Je donnes rendez-vous le 28-01-01 pour une nouvelle mis à jour. Cela laisse 2 semaines pour proposer et améliorer de nouveaux éléments.