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.