13.07.2013 Views

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Dans la suite de ce travail, les notation <strong>et</strong> conv<strong>en</strong>tion suivantes seront<br />

adoptées :<br />

Les distances sont exprimées <strong>en</strong> mètres, les temps <strong>en</strong> seconde, les<br />

angles <strong>en</strong> radians, les vitesses <strong>en</strong> mètre par seconde <strong>et</strong> les vitesses<br />

angulaires <strong>en</strong> radians par seconde.<br />

- x est la position <strong>en</strong> x de l'e-puck, y est sa position <strong>en</strong> y, rotation est sa<br />

rotation.<br />

- newX est sa future position <strong>en</strong> x, newY est sa future position <strong>en</strong> y,<br />

newRotation est sa future rotation<br />

- leftSpeed est la vitesse de sa roue gauche, rightSpeed la vitesse de sa<br />

roue droite, Ω (omega) sa vitesse angulaire.<br />

- step_time est la durée <strong>d'un</strong> pas de simulation.<br />

3.5.1.1. Déplacem<strong>en</strong>t rectiligne<br />

Si l'e-puck est <strong>en</strong> train d'avancer ou de reculer <strong>en</strong> ligne droite<br />

(leftSpeed=rightSpeed), les équations du mouvem<strong>en</strong>t sont tout simplem<strong>en</strong>t<br />

les suivantes :<br />

3.5.1.2. Déplacem<strong>en</strong>t circulaire<br />

newX = x + leftSpeed ⋅ step _ time × cos<br />

newY = y + leftSpeed ⋅ step _ time × sin<br />

( rotation)<br />

( rotation)<br />

Si, au contraire, le robot doit tourner (leftSpeed!=rightSpeed), les<br />

équations du mouvem<strong>en</strong>t sont moins triviales. Dans ce cas de figure, le<br />

mouvem<strong>en</strong>t est un mouvem<strong>en</strong>t circulaire. Il convi<strong>en</strong>t de calculer la vitesse<br />

angulaire de rotation du robot, le rayon du cercle sur lequel le mouvem<strong>en</strong>t<br />

s'effectue, les coordonnées de ce c<strong>en</strong>tre du mouvem<strong>en</strong>t <strong>et</strong> <strong>en</strong>fin les position<br />

<strong>et</strong> rotation finales du mouvem<strong>en</strong>t.<br />

La vitesse angulaire du robot <strong>et</strong>, par conséqu<strong>en</strong>t, sa rotation seront<br />

fonction de la différ<strong>en</strong>ce des vitesses des roues. Etant donné le référ<strong>en</strong>tiel<br />

choisi, il n'est pas nécessaire de considérer deux cas différ<strong>en</strong>ts <strong>en</strong> fonction<br />

du signe de c<strong>et</strong>te différ<strong>en</strong>ce des vitesses des roues. En eff<strong>et</strong>, si le robot<br />

tourne vers la gauche, il ira dans le s<strong>en</strong>s de rotation positif <strong>et</strong> la rotation<br />

29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!