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