Obrim en canal els lluitadors de sumo del DI Racing Team (DIRT1 & DIRT2)

Posteado por
18May

En aquest post desvetllarem alguns dels secrets que amaguen els dos lluitadors de sumo construïts pels col·laboradors del Departament d’Informàtica. Sentiu-vos lliures d’inspirar-vos en qualsevol punt dels que aquí es descriuen així com de fer qualsevol suggeriment.

Ambdós robots utilitzen el mateix firmware (codi font) i estan basats en un LSMaker estàndard. Tal i com es veu a la següent imatge, l’aspecte exterior és força similar excepte per les cintes de color vermell als laterals del DIRT2 i la diferència de gruix dels pals de les banderes. De fet, si mirem els pesos dels dos lluitadors veiem que el DIRT1 pesa 1155 grams en front als 1108 grams del DIRT2. Els més observadors, notaran una lleugera diferència geomètrica en la posició de les rampes així en com en la tècnica de subjecció.

En aquest post, ens centrarem en detallar les entranyes del lluitador que va quedar millor classificat en el combat de sumo; el DIRT2:

Aquest robot està fortament inspirat en el codi font de la API v0.3. Mitjançant aquesta API vam implementar un software (que en els propers dies penjarem a la zona de descàrregues) que feia que el robot anés de punta a punta del tatami sense caure: avançava fins a trobar la línia blanca del tatami i donava la volta (com que les funcions de posició de la API menteixen més que no pesen el robot mai es donava la volta de la mateixa manera i això feia que escombrés aleatòriament el tatami).  Oportunament, vam batejar aquest algorisme amb el nom de Seek & Destroy 1.0. La clau d’aquest algorisme eren els detectors de blanc i negre:

D’aquesta foto destaca el cable blau que creua la placa dels detectors de blanc i negre: això s’ha fet així per tal de només haver de pujar una única tira de pins cap a la placa base de l’LSMaker. Tal i com veurem més endavant, els connectors de les tires de pins tenen tendència a topar amb la rampa, per tant, és important escatimar en el nombre de connectors. Fixeu-vos que en aquest cas únicament hem tingut prou amb dos sensors de blanc i negre situats a la part frontal del robot.

També és interessant observar la prodigiosa tècnica per aguantar les piles del robot; sí, les piles tenen tendència a caure del porta-piles!

En acabar l’algorisme de Seek & Destroy vam dotar al robot d’una rampa per tal de fer que els robots que ens ataquessin (o als que ataquéssim) es quedessin sense tracció i inclús poguessin bolcar (depenent de la distribució de pesos):

Per a fer-ho vam utilitzar un tros de xapa d’alumini que (1) hàbilment retallat per a que no xoqués amb els connectors ni amb el metacrilat i (2) col·locat en un angle determinat per a que els que enfilessin la rampa tinguessin tendència a bolcar . Francament, la rampa ens va donar molt bons resultats: http://www.youtube.com/watch?v=bz6PRLqR4ec&NR=1

Al portar la rampa, el robot s’excedia de les mides establertes pel reglament. Com que no hi ha cap limitació pel que fa a l’alçada dels robots vam decidir posar un eix i que la rampa es desplegués durant el combat:

Una de les coses a millorar de la família de lluitadors DIRT és que per ara la rampa s’aguanta amb el pal de la bandera, cosa que es força inestable i fa que en alguns combats no s’arribi a desplegar.

També, per evitar possibles envestides amb altres robots que portessin rampa vam construir un nou gadget sota el nom de faldilla:

Aquesta faldilla és una peça de plàstic oportunament reforçada que redueix la distància al terra de la part posterior del robot. Cal anar amb compte, doncs si la peça arriba a tocar a terra s’entorpeix el moviment del robot:

Aquest gadget va col·locat en una petita ranura que porta ja de sèrie el metacrilat de l’LSMaker.

Com que sospitàvem que algun adversari podria emprar sensors infrarojos, vam posar a sobre de les plaques de metacrilat de l’LSMaker uns CDs de l’Ubuntu 8.04, que després d’un laboriós treball de camp vam observar que confonen, i molt, als sensors d’infrarojos.

Per últim, els DIRT porten una arma fins ara secreta: el Jammer. La versió estàndard de l’API de l’LSMaker utilitza el TAD Radio (està al directori RAW_Source en el fitxer RfTRadio.c). Aquest TAD gestiona el transceptor de ràdio que porten tots els robots LSMaker.

Mitjançant el transceptor s’escolten les comandes que emet el comandament remot associat a cada robot. Si examinem la funció:

 void ProcessaTrama(unsigned char * RXFrame);

observem que per defecte el robot escolta totes les trames indiscriminadament. No obstant, només processa aquelles que la seva adreça MAC origen coincideixi amb la MAC que te l’LSMaker escrita a la seva EEPROM.  Per tant, només cal examinar el codi de la funció:

 void RfSendTrama(unsigned char *Desti ,unsigned char OP_Code, unsigned int Data1, unsigned int Data2,
 unsigned int Data3, unsigned int Data4);

i veure que un LSMaker pot enviar comandes a un altre LSMaker tal i com si fos un comandament remot (alerta que cal saber l’adreça MAC!).

Observeu que el TAD proto (fitxer PtProto.c al directori RAW_Source) s’encarrega d’executar les comandes que li arriben pel control remot. Cada comanda té associat un OPCODE tal i com es dedueix de la funció:

 void ExecutaTrama(void);

Efectivament, els DIRT van enviant aquestes comandes remotes amb l’ordre d’apagar (opcode P_POWER_OFF). Observeu que en aquest combat hi ha un robot que sospitosament es queda aturat sense que ningú el toqui (almenys físicament)…

http://www.youtube.com/watch?v=mAW4fdayuA0

Archivado en:

Un comentario sobre Obrim en canal els lluitadors de sumo del DI Racing Team (DIRT1 & DIRT2)

  1. Im grateful for the blog article.Really thank you! Will read on…

Comentar

Tu dirección e-mail no se publicará.

Iniciar sesión