Conception et implémentation en C++ d'un simulateur pour ... - CoDE
Conception et implémentation en C++ d'un simulateur pour ... - CoDE
Conception et implémentation en C++ d'un simulateur pour ... - CoDE
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Une fois la gestion des paramètres terminée, la simulation démarre par<br />
l'appel de Start du r<strong>en</strong>der activé (par défaut ou par les paramètres). Cela va<br />
provoquer une boucle d'appels vers TakeSimulationStep du simulator<br />
("simulator" désigne l'obj<strong>et</strong> de CSimulator, à ne pas confondre avec le<br />
<strong>simulateur</strong> <strong>en</strong> tant que programme). Pour rappel, la Figure 5 donne un<br />
aperçu des relations de par<strong>en</strong>talité qui exist<strong>en</strong>t <strong>en</strong>tre les divers élém<strong>en</strong>ts<br />
<strong>d'un</strong>e simulation. Le simulator comm<strong>en</strong>ce par faire <strong>en</strong> sorte que les swarm-<br />
bots perçoiv<strong>en</strong>t leur <strong>en</strong>vironnem<strong>en</strong>t. Ensuite comm<strong>en</strong>ce la cascade d'appels<br />
de la fonction SimulationStep à travers tous les obj<strong>et</strong>s ayant le <strong>simulateur</strong> à<br />
un quelconque degré de par<strong>en</strong>talité. Etant donné que le simulator ne<br />
redéfinit pas c<strong>et</strong>te méthode, c'est celle par défaut, définie dans CSimObject,<br />
qui est appelée. Celle-ci provoque l'appel récursif à SimulationStep sur les<br />
<strong>en</strong>fants de l'obj<strong>et</strong> actif. Les <strong>en</strong>fants du simulator sont l'arène <strong>et</strong> les swarm-<br />
bots ; la fonction SimulationStep de l'arène est donc appelée <strong>et</strong> comme<br />
l'arène n'a pas d'<strong>en</strong>fant, on remonte dans la hiérarchie <strong>et</strong> on passe aux autres<br />
<strong>en</strong>fants du simulator : les swarm-bots. Le swarm-bot redéfinit la fonction <strong>et</strong><br />
dans celle-ci il comm<strong>en</strong>ce par forcer l'appel de SimulationStep sur ses<br />
<strong>en</strong>fants : les S-bots. C<strong>et</strong>te fonction est égalem<strong>en</strong>t redéfinie <strong>pour</strong> les S-bots <strong>et</strong><br />
elle se décompose <strong>en</strong> trois parties : gestion de la vitesse souhaitée par<br />
rapport à la vitesse courante, gestion de la manipulation de la pince du robot<br />
<strong>et</strong> <strong>en</strong>fin appel à SimulationStep de ses <strong>en</strong>fants. Ses <strong>en</strong>fants sont le<br />
contrôleur, les capteurs <strong>et</strong> les activateurs. Ces deux derniers n'ont pas<br />
redéfini la fonction SimulationStep <strong>et</strong> n'ont pas d'<strong>en</strong>fants : la cascade<br />
d'appels se termine ici <strong>pour</strong> eux. Le contrôleur n'a pas d'<strong>en</strong>fant mais il<br />
redéfinit la fonction : elle définit le comportem<strong>en</strong>t à adopter <strong>pour</strong> le robot.<br />
On remonte maint<strong>en</strong>ant la cascade d'appels jusqu'à rev<strong>en</strong>ir au swarm-bot :<br />
après avoir provoqué les appels de SimulationStep sur ses <strong>en</strong>fants, il m<strong>et</strong> à<br />
jour les positions <strong>et</strong> rotations de tous les S-bots qui le compos<strong>en</strong>t.<br />
La cascade d'appels se termine <strong>et</strong> on revi<strong>en</strong>t au simulator à qui il ne<br />
reste plus qu'à m<strong>et</strong>tre à jour le temps virtuel de la simulation <strong>et</strong> vérifier que<br />
celui-ci ne dépasse pas la limite év<strong>en</strong>tuellem<strong>en</strong>t définie par l'utilisateur.<br />
Après cela, le r<strong>en</strong>der provoque à nouveau l'appel à TakeSimulationStep du<br />
simulator <strong>et</strong> c'est reparti <strong>pour</strong> un tour de simulation.<br />
15