dimanche 5 octobre 2008

MOC : NXTPolis 500

Voici mon participant au quatrième challenge nxtasy, c'est à dire un véhicule robotisé capable de suivre une ligne au sol.
But du jeu : Être le plus rapide à effectuer l'ovale fourni avec le Mindstorms NXT.
Petite précision : Le robot ne doit pas utiliser de roues pour se déplacer.

Je ne suis pas expert en robots marcheurs, et les solutions classiques permettent rarement d'effectuer des virages. Je retiens la solution d'un marcheur multijambes.

La solution la plus simple est un mouvement de jambe circulaire actionné par une manivelle. Le problème est que le pied à peu de contact avec le sol ou que le marcheur est particulièrement secoué de mouvements verticaux. Cela demande beaucoup de couple et gène particulièrement le capteur de lumière en charge de voir la ligne noire.

J'ai donc développé un mouvement ovale mut par deux manivelles synchronisées : La plus petite assure le mouvement vertical et la plus grande le mouvement horizontal.

Il y a 4 pieds ( sorte de skis ) sous lesquels sont fixé des patins caoutchouc (livrés avec le NXT). Voir la troisième photo : Chaque ski est maintenu par deux jambes (avant et arrière) qui assurent le mouvement vertical grâce à un vilebrequin de moteur factice (pistons ronds), la jambe est une poutre studless 5L. Dans l'axe de l'engrenage 24T le plus bas se trouve le second vilebrequin qui a un rayon de 1 tenon et qui via une bielle assure le mouvement horizontal du ski.

Pour chaque côté du robot il y a deux skis en opposition de phase, c'est à dire quand un ski est levé, l'autre est posé au sol.
Ainsi le robot peut tourner stoppant une paire de skis du même côté.
Compris ?

Les yeux rouges et les antennes oranges permettent au robot de s'orienter par temps de brouillard. Il sautille frénétiquement en grignotant sa ligne directrice jusqu'à s'arrêter après avoir méthodiquement compté ses pas un à un jusqu'à l'arrivée.

Ce fut un projet très intéressant, je regrette vraiment que le créateur de nxtasy n'ai plus le temps d'animer correctement son site et les challenges internationaux.

Voici les photos et la vidéo :









Et en prime le programme en NXC :
#include "NXCDefs.h"
int distanceC, distanceB, t0;

task main()
{
SetSensorType(IN_3, IN_TYPE_LIGHT_ACTIVE);
SetSensorMode(IN_3, IN_MODE_RAW);
SetIOMA(OutputIOUpdateFlags(OUT_B), UF_UPDATE_RESET_ROTATION_COUNT);
SetIOMA(OutputIOUpdateFlags(OUT_C), UF_UPDATE_RESET_ROTATION_COUNT);

Wait(500);
//400-510
OnRev(OUT_C,100);
OnRev(OUT_B,100);

distanceB=0;
distanceC=0;
t0 = CurrentTick();

while ( (distanceB + distanceC) > (-24840))
{
distanceB=MotorRotationCount(OUT_B);
distanceC=MotorRotationCount(OUT_C);

if (Sensor(S3)>470)
{// on tourne à gauche
OnRev(OUT_C,100);
OnRev(OUT_B,0);
}
else
{// tout droit
OnRev(OUT_C,100);
OnRev(OUT_B,100);
}
}
Off(OUT_BC);

NumOut(0, LCD_LINE3, true, CurrentTick()-t0);
Wait(60000);
}

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.