[WikiItic] [TitleIndex] [WordIndex

Dissenyar un sensor LEGO per fer un robot seguidor de línia

El problema

* Un robot seguidor de línia és capaç d'anar seguin un circuit marcat sobre una superfície. Una línia negra sobre fons blanc (o al revés). En podeu veure un exemple aquí http://www.youtube.com/watch?NR=1&v=PzZhslIrsE0

* El kit de robòtica LEGO Mindstorms NXT inclou un sensor capaç de distingir una zona fosca d'una zona clara. Però en té un de sol i això és un problema: suposant que la línia és negra sobre fons blanc, què faig si el sensor detecta "blanc"? Vaig a la dreta o vaig a l'esquerra? Això es soluciona amb un algorisme que segueix la frontera entre blanc i negre: Si veig blanc, giro a la dreta i si veig negre giro a l'esquerra. Això és força primitiu, donat que no sabem quant hem de girar. Si girem poc i el camí fa una corba pronunciada, possiblement perdrem el camí. Per tant, normalment girem molt per assegurar el tret, però això provoca moltes ziga-zagues.

* Estaria bé tenir un sensor més elaborat, per exemple, amb 3, 5 o 7 sensors i que indiqués quin dels sensors és "negre". Si veig que el negre està un xic a l'esquerra, giro un xic a l'esquerra. Si veig que gairebé surt per l'esquerra, giro molt més.

Idees per la solució

Sobre els sensors

Cal buscar elements que puguin servir per distingir negre de blanc. (expandir: què hi ha disponible, quant costa, com s'alimenta, etc)

Sobre com transmetem la informació

El cervell del kit NXT (en direm NXT) està pensat per sensors analògics i sensors digitals.

Els analògics proporcionen una tensió analògica que són digitalitzats per un conversor A/D al NXT. Per exemple, un sensor acústic (disponible al kit versió 1.0) dóna una tensió analògica proporcional al nivell de soroll que es detecta. Quan es programa, disposem d'un nombre que va entre 0 i 100% i podem prendre decisions a partir d'això.

Podríem dissenyar un sensor que proporcionés una tensió entre 0 i Vmax, de forma que valors entre 0 i 20% indiquessin el sensor de l'esquerra de tot, i així anar fent: entre 40% i 60% voldria dir que estem centrats, etc (suposant 5 sensors individuals).

D'altra banda, els sensors digitals fan servir el protocol I2C (http://www.nxp.com/documents/other/39340011.pdf). Per aquesta via, el sensor és un dispositiu esclau que és interrogat pel mestre (NXT) i retorna una tira de (típicament 8) bits. Aquesta tira de bits pot ser llegida des del programa i decidir adequadament. Per exemple, podríem transmetre 00000001 per indicar que el sensor que veu negre és el de la dreta, 00000100 per indicar el del mig i 00010000 per indicar el de l'esquerra (novament suposant 5 sensors). O bé altres codificacions.

Per tant, tenim una solució analògica i una digital. L'analògica requereix coneixements de "Teoria de Circuits" i "Circuits i Sistemes Lineals" i la digital, coneixements de "Digitals" i "Dispositius Programables". Suggeriment: explorem simultàniament les dues vies?

Via analògica

(Circuits candidats)

Via digital

(Programar un esclau I2C amb l'Arduino. Triar un microcontrolador més petit, capaç de fer la feina. Disseny de tot plegat)

Aspectes mecànics

(Quin aspecte ha de tenir? Com el muntem sobre un robot?)


2023-07-03 11:37