PFC

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 164

PROGRAMACIN Y ANLISIS DE DISPOSITIVOS DE SENSORIZACIN Y COMUNICACIONES PARA ROBOTS MVILES

Trabajo realizado por Pau Tornero Sala Dirigido por ngel Valera Fernndez
1

NDICE
I......................................................................................................................................................................3 ........................................................................................................................................................................3 INTRODUCCIN.......................................................................................................................................3 II....................................................................................................................................................................6 DESARROLLO TERICO........................................................................................................................7 III.................................................................................................................................................................52 DESARROLLO PRCTICO...................................................................................................................52 En el desarrollo pr !"#!o se $an #do es"%d#ando los sensores d#spon#&les %no por %no' (#endo s%s d#s"#n"os )odos de *%n!#ona)#en"o' s% )e+or rend#)#en"o' las !ond#!#ones #deales de "ra&a+o para !ada sensor o las d#s"#n"as *or)as de pro,ra)arlo. Para ello )e ,%s"ar-a a,rade!er a n,el .alera' el "%"or del pro/e!"o' por "odo el )a"er#al pres"ado d%ran"e el desarrollo del pro/e!"o para la !orre!"a real#0a!#1n del )#s)o.................................................................................................................53 Pr#)ero se $a "ra&a+ado !on los prop#os sensores de la !asa Le,o' los 2%e en"rar-an en el 34#" & s#!o3 del ro&o" !%ando se ad2%#ere. Son los sensores ) s !ono!#dos / %"#l#0ados /a 2%e los "#ene "odo el )%ndo' pero "a)&#5n son los ) s s#)ples en el sen"#do de 2%e en ,eneral apor"an po!a #n*or)a!#1n de %"#l#dad al ro&o" so&re s% en"orno.................................................................................53 Desp%5s "ra&a+are)os !on los sensores *a&r#!ados por o"ras )ar!as !o)o 6#"e!$n#!. En!on"rare)os en ellos )a/or d#(ers#dad de sensores as- !o)o "a)&#5n )a/or !o)ple+#dad a la $ora de pro,ra)ar' /a 2%e )%!$os de ellos se p%eden pro,ra)ar )an%al)en"e a "ra(5s de I2C o %"#l#0ando l#&rer-as /a #)ple)en"adas en Ro&o"C..................................................................................53 Ta)&#5n real#0are)os %na apl#!a!#1n en la 2%e se %"#l#!en (ar#os de los sensores al )#s)o "#e)po para darnos %na #dea de las pos#&#l#dades 2%e nos o*re!e la !o)&#na!#1n de sensores. 7!o)&#na!#on.!8.........................................................................................................................................53 9.Sensores LE:O;......................................................................................................................................5< 2. Sensores NO LE:O;..............................................................................................................................7= .I...............................................................................................................................................................969 Ane>os.......................................................................................................................................................969

INTRODUCCIN
3

Los sensores vendran a ser para un robot lo que para nosotros son nuestros sentidos, van a servir para proporcionar informacin sobre el exterior al robot y as podr reaccionar de forma conveniente segn la informacin que obtenga gracias a ellos. As como el ser humano slo dispone de sentidos !vista, odo, gusto, olfato y tacto", las tecnologas actuales nos permiten dotar a los robots de #sentidos$ que para nosotros no existen !porque directamente no disponemos de ellos", o que traba%an en rangos mayores que los nuestros y por lo tanto son capaces de percibir estmulos que a nosotros se nos escapan del rango de funcionamiento !&o podemos ver los rayos infrarro%os o escuchar ultrasonidos, por e%emplo".

'l proyecto que se va a reali(ar va a consistir en el estudio en profundidad de la mayora de sensores para el robot mvil L')* +indstorms &,- fabricados tanto por la propia L')* como por otras empresas como podra ser .i-echnic.

La plataforma mvil L')* +indstorms &,- se ha convertido en una herramienta interesante para la docencia en el campo de la robtica y la mecatrnica debido a que se trata de una herramienta bastante potente y econmica comparada a otras plataformas, y en la que un gran nmero de gente y de otras empresas y fabricantes adems de L')* se ha volcado a desarrollar paralelamente sus propias herramientas de desarrollo, entornos de programacin y sensores para el robot.

/ebido a la bsica informacin que los fabricantes ad%untan a estos sensores se hace necesario el estudio a fondo de cada uno de ellos as como de los entornos de programacin para poderles dar un uso que vaya ms all de lo bsico. As se podr crear tambi0n una buena documentacin que podr ser consultada en el futuro sobre el funcionamiento y la programacin de cada uno de estos sensores.

-ambi0n se marca como ob%etivo la reali(acin de aplicaciones vistosas para cada uno de estos sensores con el fin de que se pueda entender y comprobar la funcin que reali(a el sensor y mostrar de forma prctica algunos de los usos que se les puede dar para incorporar estas funcionalidades en aplicaciones ms comple%as si se desea.

1e propone tambi0n la reali(acin de una de estas aplicaciones comple%as en las que intervendrn al mismo tiempo e interactuarn entre ellos varios de los sensores.

'n principio, los sensores sobre los que se va a traba%ar, son los siguientes2 3 4uscador de rayos infrarro%os. 3 4r%ula. 3)irscopo. 3 /etector de color. 35eb6am 1e unen a estos sensores los propios de la casa L')*2 3 1onar. 3 /etector de lu(. 3 /etector se sonido. 3 /etector de tacto. 5

6omo actuadores tendremos los motores que vienen incluidos con el robot y que usados correctamente y con algo de imaginacin nos van a proporcionar una gran funcionalidad. 7inalmente traba%aremos la comunicacin del robot &,- con el 86 a trav0s del dispositivo 4luetooth desarrollando una aplicacin que sea capa( de mandar datos al robot y que 0ste los interprete para llevar a cabo las acciones que le hayamos indicado.

II

DESARROLLO TERICO

1. Introdu

!"n # $# ro%"t! #&

1.1. D'(!n! !"n d' ro%ot& &o hay acuerdos ni una definicin precisa de lo que se considera un robot, y es posible encontrar un gran nmero de definiciones distintas de esta palabra. 9eamos algunas de las definiciones que ms nos interesan en el mbito de este proyecto2 La :;A !:obot ;ndustries Association" lo define as2 un robot es un manipulador reprogramable y multifuncional, dise<ado para mover cargas, pie(as, herramientas o dispositivos especiales, segn trayectorias variadas y programadas. 'n resumen se puede decir2 3 1u caracterstica fundamental es poder mane%ar ob%etos !es decir, manipulador". =n robot se dise<a con este fin, teniendo en cuenta que ha de ser muy verstil a la hora de utili(ar herramientas y mane%arlas.

3 La segunda peculiaridad que lo diferencia de otras mquinas automticas es su capacidad para reali(ar traba%os completamente diferentes adaptndose al medio, e incluso pudiendo tomar decisiones. !A eso es a lo que se refiere lo de multifuncional y reprogramable". =n robot es un dispositivo generalmente mecnico, que desempe<a tareas automticamente, ya sea de acuerdo a supervisin humana directa, a trav0s de un programa predefinido o siguiendo un con%unto de reglas generales, utili(ando t0cnicas de inteligencia artificial. )eneralmente estas tareas reempla(an, aseme%an o extienden el traba%o humano, como ensamble en lneas de manufactura, manipulacin de ob%etos pesados o peligrosos, traba%o en el espacio, etc.

-ambi0n hay definiciones de lo que es un robot basndose en las propiedades o caractersticas que deben poseer. =n robot, es un agente artificial mecnico o virtual. 's una mquina usada para reali(ar un traba%o automticamente y que es controlada por una computadora.

'n general, un robot, para ser considerado como tal, debera presentar algunas de estas propiedades2 3 3 3 3 3 3 3 &o es natural, sino que ha sido creado artificialmente. 8uede sentir su entorno. 8uede manipular cosas de su entorno. -iene cierta inteligencia o habilidad para tomar decisiones basadas en el ambiente o en una secuencia preprogramada automtica. 's programable. 8uede moverse en uno o ms e%es de rotacin o traslacin. 8uede reali(ar movimientos coordinados. 8

1.). *!+tor!# d' $# Ro%"t! #& 'l deseo de construir mquinas capaces de reali(ar tareas que descargasen al hombre de su traba%o ha sido una constante en nuestra historia. /esde hace cientos de a<os antes de 6risto, ya se intentaban crear dispositivos, denominados artefactos o mquinas, que tuvieran un movimiento sin fin y que no estuvieran controlados ni supervisados por personas. Los primeros autmatas que aparecen en la historia son ingenios mecnicos, ms o menos complicados, que desarrollaban una tarea de forma continua. 1in embargo, las primeras mquinas construidas no tenan una utilidad prctica, sino que su principal ob%etivo era entretener a sus due<os. )eneralmente funcionaban por medio de movimientos ascendentes de aire o agua caliente. 'l vertido progresivo de un lquido o la cada de un peso provocaba rupturas de equilibrio en diversos recipientes provistos de vlvulas> otros mecanismos se basaban en palancas o contrapesos. +ediante sistemas de este tipo se construan p%aros artificiales que podan #cantar? o ?volar?, o puertas que se abran solas.

'l origen de los autmatas se remonta al Antiguo 'gipto, donde las estatuas de algunos de sus dioses despedan fuego por los o%os, posean bra(os mecnicos mane%ados por los sacerdotes del tempo o emitan sonidos cuando los rayos del sol los iluminaba. 'stos ingenios pretendan causar temor y respeto entre la gente del pueblo. 1in embargo, los primeros datos descriptivos acerca de la construccin de un autmata aparecen en el siglo ;. 'l matemtico, fsico e inventor griego .ern de Ale%andra describe mltiples ingenios mecnicos en su libro Los Autmatas, por e%emplo aves que vuelan, gor%ean y beben. -odos ellos fueron dise<ados como %uguetes, sin mayor inter0s por encontrarles una aplicacin. 1in embargo, se describen algunos ingenios que s presentaban una funcin til, como es el caso de un molino de viento para accionar un rgano o un precursor de la turbina de vapor, conocida como 'olpila. 9

7igura @2 La 'olpila

Las construcciones de la escuela de Ale%andra se extendieron por todo el ;mperio :omano y posteriormente por el mundo rabe, siendo estos genuinos aparatos los antecesores de los autmatas actuales.

La cultura rabe hered y difundi los conocimientos griegos, utili(ndolos no slo para reali(ar mecanismos con ob%etivos ldicos, sino que adems les dieron una aplicacin prctica, introduci0ndolos en la vida cotidiana de la reale(a. 6abe mencionar entre estos inventos el relo% mecnico y sistemas dispensadores automticos de agua que servan para beber o lavarse.

/el siglo ,;;; son otros autmatas de los que no han llegado referencias suficientemente bien documentadas, como el .ombre de .ierro de Alberto +agno o la 6abe(a 8arlante de :oger 4acon. *tro e%emplo relevante de la 0poca y que an se conserva en la actualidad es el )allo de 'strasburgo, situado en la catedral de esta misma ciudad, que mueve el pico y las alas al dar las horas.

10

7igura A2 'l )allo de 'strasburgo

/urante los siglos ,9 y ,9; algunas de las figuras ms relevantes del :enacimiento tambi0n reali(aron sus propias aportaciones a la historia de los autmatas. 'l ms famoso qui( sea el Len +ecnico, desarrollado por Leonardo /a 9inci para el rey Luis ,;; de 7rancia, que abra su pecho con la garra y mostraba el escudo de armas del rey. 'n 'spa<a, Buanelo -urriano, inventor, arquitecto y relo%ero real del emperador 6arlos 9, construy un autmata de madera con forma de mon%e conocido como el .ombre de 8alo, construido con el fin de recolectar limosnas.

'n el siglo ,9;;;, y en plena fiebre por los autmatas, 5olfgang 9on Cempelen llev a cabo uno de los fraudes ms conocidos en la historia de los autmatas, inventando 'l -urco, una mquina capa( de %ugar al a%edre(. +s tarde se comprob que un maestro del a%edre(, escondido en el interior de la ca%a, era el encargado de mane%ar el maniqu que mova las fichas. La mquina via% por toda 'uropa y 'stados =nidos, derrotando a persona%es tan ilustres como &apolen y 4en%amn 7ranDlin.

11

7igura E2 'l -urco

'n @FEG, Bacques de 9aucanson construy uno de los autmatas ms famosos de la historia, el 8ato con aparato digestivo, considerado su obra maestra. 'l pato tena ms de HII partes mviles, y poda batir sus alas, beber agua, digerir grano e incluso defecar. Los alimentos los digera por disolucin y eran conducidos por unos tubos hacia el ano, donde haba un esfnter que permita evacuarlos. 9aucanson tambi0n construy otros autmatas, entre los que destaca 'l 7lautista, un pastor que tocaba la flauta capa( de tocar hasta @A melodas diferentes. 'l ingenio consista en un comple%o mecanismo de aire que causaba el movimiento de todos las diferentes partes del engrana%e interno del mu<eco. 'l resultado era una msica melodiosa, que tena el mismo encanto y precisin en las notas que un flautista de carne y hueso.

A finales del siglo ,9;;; y principios del ,;,, en plena :evolucin ;ndustrial, se desarrollaron diversos ingenios mecnicos utili(ados fundamentalmente en la industria textil. 'ntre ellos se puede citar la hiladora giratoria de .argreaves !@FFI", la hiladora mecnica de 6rompton !@FFJ", el telar mecnico de 6artKright !@FG ", el telar de Bacquard !@GI@", que constituy con sus tar%etas perforadas los primeros precedentes histricos de las mquinas de control num0rico. +s tarde se incorporaron los automatismos en las industrias 12

mineras y metalrgicas. 8ero sin duda, el automatismo que caus mayor impacto por tener un papel fundamental en la :evolucin ;ndustrial lo reali(a 8otter a principios del siglo ,9;;;, automati(ando el funcionamiento de las vlvulas en la mquina de vapor atmosf0rica, creada por el inventor ingl0s -homas &eKcomen.

1in embargo, no fue hasta @JA@ cuando se escuch por primera ve( la palabra robot, utili(ada por el escritor checo Carel 6apeD en su obra de teatro :.=.: !:ossumLs =niversal :obots". La palabra robot viene del vocablo checo M:obotaN que significa #traba%o$, entendido como servidumbre, traba%o for(ado o esclavitud. 'n esta obra se representa a una sociedad deshumani(ada inmersa en un mundo tecnolgico que desarrolla el concepto de la fabricacin en lnea e%ecutada por robots androides. 7inalmente, 0stos se revelan contra sus amos destruyendo toda vida humana, a excepcin de sus creadores, con la frustrada esperan(a de que les ense<en a reproducirse.

Los primeros robots industriales empe(aron producirse a principios de los a<os OI y estaban dise<ados principalmente para reali(ar traba%os mecnicos difciles y peligrosos. Las reas donde estos robots tuvieron su aplicacin fueron traba%os laboriosos y repetitivos, como la carga y descarga de hornos de fundicin. 'n @JO@ el inventor norteamericano )eorge /evol patentaba el primer robot programable de la historia, conocido como =nimate, estableciendo las bases de la robtica industrial moderna.

13

7igura H2 =nimate

'ste robot industrial era un manipulador que formaba parte de una c0lula de traba%o en la empresa de automviles 7ord +otors 6ompany, dise<ado para levantar y apilar grandes pie(as de metal caliente, de hasta AA Dg, de una troqueladora de fundicin por inyeccin. /ebido a los continuos avances en la informtica y la electrnica, a partir de @JFI fueron desarrollados diversos robots programables, siendo de gran importancia en la industria mecnica, tanto en las lneas de ensambla%e como en aplicaciones como la soldadura o pintura. 'n los ltimos a<os, los robots han tomado posicin en todas las reas productivas industriales. La incorporacin del robot al proceso productivo ha representado uno de los avances ms espectaculares de la edad moderna. 'n poco ms de cuarenta a<os, hemos pasado de aquellos primeros modelos, rudos y limitados, a sofisticadas mquinas capaces de sustituir al hombre en todo tipo de tareas repetitivas o peligrosas, y adems, hacerlo de forma ms rpida, precisa y econmica que el ser humano. .oy en da, se calcula que el nmero de robots industriales instalados en el mundo es de un milln de unidades, unos AI.III en 'spa<a, siendo Bapn el pas ms tecnolgicamente avan(ado, con una media de EAA robots por cada @I.III traba%adores. 1.,. C$#+!(! # !"n d' $o+ ro%ot+& 14

&ingn autor se pone de acuerdo en cuntos y cules son los tipos de robots y sus caractersticas esenciales por lo se pueden clasificar de varias maneras, veamos las ms comunes2

1.,.1. C$#+!(! # !"n d' $o+ ro%ot+ +'-.n +u -'n'r# !"n

@P

)eneracin2

+anipuladores

1on

sistemas

mecnicos

multifuncionales con un sencillo sistema de control, bien manual, de secuencia fi%a o de secuencia variable. 3 AP )eneracin2 :obots de aprendi(a%e :epiten una secuencia de movimientos que ha sido e%ecutada previamente por un operador humano. 'l modo de hacerlo es a trav0s de un dispositivo mecnico. 'l operador reali(a los movimientos requeridos mientras el robot le sigue y los memori(a. 3 EP )eneracin2 :obots con control sensori(ado 'l controlador es una computadora que e%ecuta las rdenes de un programa y las enva al manipulador para que realice los movimientos necesarios. 3 HP )eneracin2 :obots inteligentes 1on similares a los anteriores, pero adems poseen sensores que envan informacin a la computadora de control sobre el estado del proceso. 'sto permite una toma inteligente de decisiones y el control del proceso en tiempo real.

1.,.). C$#+!(! # !"n d' $o+ ro%ot+ +'-.n +u #r/u!t' tur#& Los dispositivos y mecanismos que pueden agruparse ba%o la denominacin gen0rica del :obot son muy diversos y es por tanto difcil establecer una clasificacin coherente de los mismos que resista un anlisis crtico y riguroso. La subdivisin de los :obots, en base a su arquitectura, se hace en los 15

siguientes grupos2 Po$!#rt! u$#do+0 M"1!$'+0 Andro!d'+0 Zoo2"r(! o+ ' *3%r!do+.

Po$!#rt! u$#do+& 4a%o este grupo estn los :obots de muy diversa forma y configuracin cuya caracterstica comn es la de ser bsicamente sedentarios !aunque excepcionalmente pueden ser guiados para efectuar despla(amientos limitados" y estar estructurados para mover sus elementos terminales en un determinado espacio de traba%o segn uno o ms sistemas de coordenadas y con un nmero limitado de grados de libertad. 'n este grupo se encuentran los manipuladores, los :obots industriales, los :obots cartesianos y se emplean cuando es preciso abarcar una (ona de traba%o relativamente amplia o alargada, actuar sobre ob%etos con un plano de simetra vertical o reducir el espacio ocupado en el suelo.

7igura 2 :obot poliarticulado industrial 8uma M"1!$'+& 'n este campo es donde se clasificara el robot L')* con el que vamos a traba%ar, ya que se trata de un robot mvil. 1e trata de robots con gran capacidad de despla(amiento, basados en carros o plataformas y dotados de un sistema locomotor de tipo rodante. 1iguen su camino por telemando o guindose por la informacin recibida de su entorno a trav0s de sus sensores.

16

'ntre otras funciones, a nivel industrial, estos :obots aseguran el transporte de pie(as de un punto a otro de una cadena de fabricacin. )uiados mediante pistas materiali(adas a trav0s de la radiacin electromagn0tica de circuitos empotrados en el suelo, o a trav0s de bandas detectadas fotoel0ctricamente, pueden incluso llegar a sortear obstculos y estn dotados de un nivel relativamente elevado de inteligencia. Andro!d'+& 1on :obots que intentan reproducir total o parcialmente la forma y el comportamiento cinemtica del ser humano. Actualmente los androides son todava dispositivos muy poco evolucionados y sin utilidad prctica, y destinados, fundamentalmente, al estudio y experimentacin. =no de los aspectos ms comple%os de estos :obots, y sobre el que se centra la mayora de los traba%os, es el de la locomocin bpeda. 'n este caso, el principal problema es controlar dinmica y coordinadamente en el tiempo real el proceso y mantener simultneamente el equilibrio del :obot.

7igura O2 :obot androide Asimo Zoo2"r(! o+& Los :obots (oomrficos, que considerados en sentido no restrictivo podran incluir tambi0n a los androides, constituyen una clase caracteri(ada

17

principalmente por sus sistemas de locomocin que imitan a los diversos seres vivos. A pesar de la disparidad morfolgica de sus posibles sistemas de locomocin es conveniente agrupar a los :obots (oomrficos en dos categoras principales2 caminadores y no caminadores. 'l grupo de los :obots (oomrficos no caminadores est muy poco evolucionado. 6abe destacar, entre otros, los experimentados efectuados en Bapn basados en segmentos cilndricos biselados acoplados axialmente entre s y dotados de un movimiento relativo de rotacin. 'n cambio, los :obots (oomrficos caminadores multpedos son muy numeroso y estn siendo experimentados en diversos laboratorios con vistas al desarrollo posterior de verdaderos vehculos terrenos, piloteando o autnomos, capaces de evolucionar en superficies muy accidentadas. Las aplicaciones de estos :obots sern interesantes en el campo de la exploracin espacial y en el estudio de los volcanes.

7igura F2 1anddragon, +icrobot con ruedas tipo oruga

*3%r!do+ 'stos :obots corresponden a aquellos de difcil clasificacin cuya estructura se sita en combinacin con alguna de las anteriores ya expuestas, bien sea por con%uncin o por yuxtaposicin. 8or e%emplo, un dispositivo segmentado articulado y con ruedas, es al mismo tiempo uno de los atributos de los :obots mviles y de los :obots (oomrficos. 18

/e igual forma pueden considerarse hbridos algunos :obots formados por la yuxtaposicin de un cuerpo formado por un carro mvil y de un bra(o seme%ante al de los :obots industriales. 'n parecida situacin se encuentran algunos :obots antropomorfos y que no pueden clasificarse ni como mviles ni como androides, tal es el caso de los :obots personales.

1.,.,. C$#+!(! # !"n %#+#d# 'n +u 4ro4"+!to o (un !"n& 5 Indu+tr!#$'+ 1on aquellos empelados en procesos industriales, suele tratarse de robots fi%os con tres o ms e%es multipropsito, controlados automticamente y reprogramables.

5P'r+on#$'+6 Edu #t!1o+ 'n esta categora entraran todos los robots empleados con fines pedaggicos como podra ser el Lego &,- y tambi0n aquellos destinados al ocio o a reali(ar tareas personales como podra ser tambi0n el robot Lego o robots limpiadores como el :oomba. 5M!$!t#r'+ 6omo su nombre indica son robots fabricados con fines militares. 1uelen ser los robots ms avan(ados tecnolgicamente ya que normalmente son los que disfrutan de mayores inversiones.

8odramos seguir haciendo clasificaciones robots atendiendo a otras caractersticas, como el 1istema de coordenadas empleado, el &mero de 19

grados de libertad del efecto formal, la )eneracin del sistema control, pero no es ob%eto del proyecto profundi(ar tanto en la clasificacin de los robots, por lo que si se desea encontrar ms informacin relativa a este tema, se puede consultar la bibliografa recomendada al final del proyecto.

). Introdu

!"n #$ $'-o N7T

'n @JJG L')* proporcion el primer con%unto +indstorms2 :obotics ;nvention 1ystem !:;1 @.I". 'n 0l, adems de las pie(as tpicas de L')*, el Dit proporcionaba motores de corriente continua, sensores y, lo ms importante, el :6,. 'l :6, es el #ladrillo$ !bricD" programable de L')* que permita no slo el movimiento, sino la sensori(acin y la respuesta al entorno. 'st basado en el microprocesador .G de .itachi, y proporciona convertidores analgicoQ digital, comunicacin serie y tempori(adores. 'l :6, se desarroll en colaboracin entre L')* y el +;- R S, ROS. 'n la primera versin el :6, permita O puertos de entrada y de salida, aunque posteriormente se limitaron a los E actuales por ra(ones de consumo. /ebido a su coste relativamente barato y las grandes posibilidades que ofrece con sus componentes, no ha tardado en ganarse un sitio en el mercado 20

adems de contar con gran nmero de entusiastas que nos muestran por internet sus monta%es o aplicaciones y que tambi0n han contribuido en ampliar tanto el hardKare como el softKare desarrollando !entre otras cosas" entornos de programacin para este sistema o fabricando nuevos sensores para que los aficionados puedan sacar un mayor partido a su robot. :ecientemente se han publicado traba%os basados en esta plataforma en ediciones especiales de revistas como ;''' :obotics and Automation +aga(ine R@S3RAS o ;''' 6ontrol 1ystems +aga(ine RES. 'n enero de AIIO se present en el ;nternational 6onsumer 'lectronics 1hoK la siguiente generacin2 el L')* +indstorms &,-. La nueva versin adems de otros cambios menores en los sensores electrnicos y las pie(as de construccin, incorpora una unidad de control nueva2 el &,-. Al igual que pasaba con la versin anterior, combinando los bloques de construccin, la fcil programacin del &,- y su interfa( de entrada y salida se puede obtener un sistema de prototipado rpido para el desarrollo de una gran variedad de actividades, lo que ha permitido que este sistema haya sido ampliamente aceptado como una herramienta para la investigacin y la educacin universitaria.

7igura @2 6omponentes bsicos del &,-

21

7igura A2 8osibles monta%es con &,-

9eamos ahora ms detenidamente en qu0 consiste y las partes que componen el Dit de Lego +indstorms &,-.

).1. Co24on'nt'+ d'$ L'-o M!nd+tor2+ N7T& Los componentes ms importantes del L')* +indstorms &,- son la unidad de control basada en microcontrolador !bricD", los sensores electrnicos y los actuadores. 8or otro lado tendremos las pie(as de monta%e que aunque no tan sofisticadas, dotan al robot de una estructura y de su buen monta%e dependern muchas caractersticas del mismo. Br! 8& 8osiblemente se trate de la pie(a ms importante del robot. 'l bricD vendra a ser el cerebro del &,- gracias a su procesador, que en las ltimas versiones 22

est alcan(ando grados de potencia sorprendentes si pensamos en el Lego como un %uguete. 1e alimenta con O pilas @, sensores que est0n traba%ando en ese momento. 'ste bricD puede tomar entradas de hasta cuatro tipos de sensores y controlar hasta tres motores diferentes a trav0s de unos cables :B@A !unos cables parecidos a los de la lnea telefnica". 8ara ayudarnos a navegar por los distintos mens se tiene una pantalla de @II x OH pxeles en blanco y negro adems de un altavo( que reproduce sonidos a G D.(. Las caractersticas t0cnicas ms importantes son las siguientes2 9 AA o con una batera recargable de Litio cuya autonoma depender del nmero de actuadores y de

=n procesador de EA bits a HG+.( A-J@1A+F1A O con A O C4 de memoria flash y OH C4 de memoria :A+.

=n microcontrolador A-megaHG de G bits a H +.( con H C4 de memoria flash y @A bytes de memoria :A+.

8antalla L6/ monocroma de @II x OH pxeles. 1e puede programar en cualquiera de los sistemas operativos ms utili(ados como pueden ser 5indoKs, Linux y +ac.

=n puerto =14 para transferir programas compatible con el estndar =14 A.I.

=n puerto de comunicacin 4luetooth de clase ;; para transferir programas y para controlar los robots de manera inalmbrica como puede ser a traves de un mvil, 8/A u otro dispositivo que tenga capacidad de transmisin a trav0s de bluetooth.

H puertos de entrada formados por O cables digitales !uno de ellos incluye un ;'6 O@@ G 7ield4us -ype HQ'& I @FI para usos futuros".

E puertos de salida formados por O cables digitales.

23

Adems soporta comunicacin Kireless a trav0s de bluetooth. 'l bricD del &,puede conectarse inalmbricamente a otros tres dispositivos a la ve(, pero cada intervalo de tiempo slo lo puede hacer con uno exclusivamente. S'n+or'+& Los sensores, como base de este proyecto, van a ser el componente del &,en el que ms vamos a profundi(ar, explicando detenidamente cada uno de ellos en el desarrollo prctico. La nueva versin del L')* proporciona H tipos de sensores electrnicos2 de contacto, de lu(, de sonido y de distancia. Los sensores de contacto y de lu( son una versin me%orada de los sensores para el :6,. Los nuevos sensores de sonido permiten medir niveles de sonido tanto en decibelios !d4" como en decibelios a%ustados !d4A", de manera que el sensor se adapta a la sensibilidad del odo humano !frecuencias entre E y O D.(".

A parte de los sensores de lu(, el &,- tiene otros sensores que permiten #ver$ a los robots2 los sensores de distancia. 1e trata de sensores basados en ultrasonidos, que permiten medir distancias entre I y A de TQ3 E cm. cm, con una precisin

7igura E2 1ensores del L')* +indstorms &,Adems de los sensores bsicos que se incluyen en el Dit de robtica de L')* +indstroms &,-, existen otros sensores que han fabricado empresas como .i-echnic que amplan las posibilidades del robot, siendo posible medir las aceleraciones que sufre el robot o distinguir colores entre otras funciones. Los sensores que ms detenidamente estudiaremos en el desarrollo prctico son2 3 /etector de rayos infrarro%os. 24

3 4r%ula. 3 )irscopo. 3 /etector de color. 35eb6am A tu#dor'+& 1e trata de tres motores de corriente continua que incorporan integrados sensores de rotacin. 'stos sensores tienen una precisin de @ grado, me%orando mucho la precisin de los encoders de la versin anterior.

7igura H2 Actuador del L')* +indstorms &,Adems, gracias a un tren de engrana%es interno que tiene el motor, 0ste puede suministrar pares de fuer(a muy altos puesto que alimentado a J9 y funcionando a @@F rpm proporciona un par de @O.F&Qcm con un consumo de corriente de I. A.

8ara proteger el motor de intensidades muy altas, estn equipados por una resistencia 8-6 montada en serie con el motor, de manera que su valor incrementa rpidamente cuando la temperatura aumenta, limitando de esta forma la intensidad suministrada al motor. =na descripcin ms detallada sobre los motores del L')* +indstorms &,se puede encontrar en RHS.

P!'9#+ d' 2ont#:'& 8ara montar y reali(ar dise<os propios se incluyen en el set un con%unto de OFA pie(as entre las que se incluyen ruedas, engrana%es, soportes, que son 25

compatibles con otras pie(as de Lego que podamos tener de otros productos. -ambi0n podemos usar o fabricar nuestras propias estructuras sin necesidad de que se trate de pie(as de Lego para montar el robot que deseemos, aunque los sensores, los actuadores y el bricD estn dise<ados para ser montados con pie(as de Lego.

,. L'n-u#:'+ d'+#rro$$o6Pro-r#2# !"n L'-o


-al es el 0xito de la programacin de los bricDs del &,- que se han implementado diferentes lengua%es para desarrollar aplicaciones que controlen las diferentes partes del robot. Adems, al tratarse el firmKare de cdigo de libre distribucin se pueden se puede adaptar a diferentes 1istemas *perativos. 6ada lengua%e presenta sus venta%as y sus inconvenientes, no podramos nombrar ninguno como el me%or para todo, del mismo modo que no existe fuera del mbito de la robtica un lengua%e de programacin con el que desarrollar cualquier aplicacin. La eleccin de un lengua%e determinado ser en funcin de la aplicacin que queramos generar y de sus caractersticas A la hora de reali(ar el proyecto para estudiar los sensores del robot, se plante la duda sobre qu0 lengua%e utili(ar de entre todo el abanico de 26

posibilidades. 8asaremos ahora a ver las opciones que se plantearon y posteriormente veremos con cul nos quedamos y por qu0. 'n los siguientes puntos se citarn una serie de lengua%es para compararlos entre s y ver para qu0 funciones un lengua%e nos ofrece ms facilidades y rapide( que otros.

La primera opcin que se puede utili(ar es programar directamente el &,- con los botones que tiene disponibles. 8ara ello se tiene un sistema basado en iconos que permite programar algoritmos muy simples. +ediante estos iconos se pueden especificar el tipo de movimiento, los sensores a utili(ar as como tiempos de espera mediante instrucciones. 8or supuesto, debido a que este sistema es muy simple, esto limita mucho las aplicaciones que se pueden desarrollar y, por lo tanto, no es adecuado para el desarrollo de aplicaciones comple%as.

,.1. LENGUA;ES COMERCIALES&

&,-3) 'ducacin2 'st basado en LabvieK, un lengua%e por bloques que es muy intuitivo, rpido y sencillo de programar que ha sido producido en colaboracin con &ational ;nstruments. Anteriormente dicha empresa desarrollaba el lengua%e :obolab que era mucho ms parecido al LabvieK !figura @".

27

7igura @2 'ntorno de programacin LabvieK

's compatible compatible con +ac *1 , y 5indoKs ,8. 'l softKare funciona a base de iconos, disponiendo de dos paletas de programacin !?fcil? y ?avan(ada?" y de una serie de HI tutoriales animados para ayudar a los estudiantes !y profesores" a conocer como programar un robot totalmente funcional. 8or defecto este lengua%e lleva programadas rutinas que hacen que an sea ms rpida la programacin !figura A". 'l problema que tiene este lengua%e es que est destinado para alumnos de ense<an(a obligatoria con lo cual el aprovechamiento que puede proporcionar esta herramienta no es muy elevado.

28

7igura A2 'ntorno de programacin &,-3)

:*4*-62 's un lengua%e muy parecido a 6, de hecho parece un micro 6 que hace uso de un firmKare ms rpido que el original. ;ncluye una interfa( de programacin tpica de texto, con ayudas de rellenado, sintaxis en color, una barra lateral donde se describen las funciones que tiene implementadas :obotc para ayudar a controlar los sensores, etc. y adems un depurador para facilitar la labor a los programadores. /entro de la aplicacin se pueden encontrar numerosos e%emplos escritos en dicho lengua%e para probarlos directamente con el robot para comprobar su funcionamiento.

,.). LENGUA;ES DE LIBRE UTILIZACIN&

4ricx662 4ricx 6ommand 6enter es un conocido ;/' que soporta programacin del :6, con &U6, 6, 6TT, 8ascal, 7orth, y Bava 29

utili(ando bricD*1, pb7orth y leB*1. 6on 4ricx66 se pueden desarrollar programas en &46 y &,6. -anto &46 como &,6 utili(an el firmKare estndar del &,-. 'ste softKare est disponible en cdigo abierto. Bohn .ansen ofrece diversas utilidades, que poco a poco va incluyendo en 4ricx66.

&46 ! &ext 4yte 6odes"2 &46 es un lengua%e dirigido a programadores con una sntesis de lengua%e ensamblador. 1e puede utili(ar como editor 4ricx66. 1orosy.com ofrece un depurador para la programacin con &46.

&,62 &,6 es un lengua%e de alto nivel similar a 6. =tili(a el firmKare original de L')* y est disponible para 5indoKs, +ac *1, y Linux !iaEA". .a sido desarrollado por Bohn .ansen. .ay disponible una gua 4ricxcc. del programador y un tutorial en ingles !http2QQbricxcc.sourceforge.netQnbc" y se puede utili(ar como editor

leB*1 &,B2 'ste programa esta escrito en lengua%e Bava. Al contrario que algunos programas, 0ste ha escrito el firmKare propio y no ha utili(ado el original y se tiene la posibilidad de poder utili(arse tanto en 5indoKs como en Linux. 'st en una etapa de desarrollo preco( pero poco a poco se le va a<adiendo funcionalidad e incorporando nuevos servicios. 8ara programar se puede utili(ar el conocidisimo ;/' 'clipse. -ambi0n existen diferentes libros sobre leB*1 como ?+aximum L')* &,4uilding :obots Kith Bava 4rains? !http2QQKKK.variantpress.comQbooDsQmaximum3lego3nxt".

30

pbLua2 's un lengua%e textual heredero del pb7orth desarrollado para el :6,. 'st basado en Lua y tiene como principales caractersticas estar escrito en 6 con mnimos recursos de e%ecucin, se puede compilar en el &,-, es peque<o, fcil de leer y escribir y hay documentacin disponible en la red.

&,-6V2 /entro de los lengua%es que interesan este es uno de ellos. 1e trata de un lengua%e escrito en 6V de +icrosoft para la plataforma .&'- que tiene implementadas una serie de m0todos que nos permiten controlar parte de la funcionalidad del &,- pro una aplicacin escrita en 6V o 9isual 4asic .&'- trav0s de bluetooth. 1olamente se puede utili(ar ba%o 5indoKs.

La lista de lengua%es que se ha expuesto es algo ms extensa pero no era la finalidad de este apartado comentar todas las posibilidades. 1in embargo se va a proceder a agrupar todas las caractersticas comunes a todos los lengua%es para hacer una comparativa mucho ms visual y rpida. 'n las siguientes tablas no se recogen todas las caractersticas que tiene cada uno de los lengua%es pero puede ser suficiente para hacerse una idea para elegir el lengua%e que me%or se adapte a las circunstancias. 'n la siguiente tabla se ha reali(ado un programa de prueba que reali(a las siguientes pruebas de rendimiento2

9elocidad2 &mero de veces que es capa( de hacer un bucle durante OI segundos. +emoria2 -ama<o que ocupa dentro de la memoria del &,-. -iempo de escritura2 8ara los profesionales, el tiempo que lleva escribir un programa de e%emplo de este tipo.

31

1i se est buscando encontrar el me%or softKare, dicha bsqueda no resultar sencilla puesto que como se ha comentado antes no existe el lengua%e que lo reco%a todo y lo implemente me%or que el resto, sino se tendr que elegir segn lo que se quiera reali(ar, el conocimiento que uno tenga del lengua%e en que se basa, etc. A menudo ests cuestiones no suelen estar lo suficientemente claras. !-A4LA@".

'n lo que refiere a sistemas remotos de control, hay diferentes tipos en el &,-. La mayora no requieren ningn tipo de programacin en el &,-. Lo que suele suceder es que el usuario implemente y e%ecute un programa en el 86 que mandar mensa%es al &,- para obtener valores de sensores, de posicin, de velocidad, etc. !-A4LAA".

-abla @2 6aractersticas 1oftKare de 8rogramacin

32

-abla A2 :esultados programa de prueba

33

-abla E2 6ontroles :emotos

34

<. D'+ r!4 !"n d' Ro%ot C


1i se observa la tabla de las pruebas, :obotc es un lengua%e de programacin que de momento supera al resto de lengua%es. La principal causa por la que se ha elegido :obot6 para reali(ar el proyecto es por la cantidad de posibilidades que tiene para programar con sensores y por las funciones disponibles para el traba%o con bluetooth. 'n las tablas hemos podido comprobar que tiene compatibilidad con el protocolo ;A6, adems de algunas libreras ya implementadas que nos va a permitir traba%ar con sensores digitales !Uue son la mayora de los fabricados por #-hird 8arties$ como .itechnic o +id1ensors. -ambi0n hemos visto en las tablas que prcticamente todos los lengua%es de desarrollo presentaban esta compatibilidad, sin embargo :obot6, adems de la compatibilidad con ;A6 tambi0n presenta una interfa( bastante cmoda para el estudio de los sensores que funcionen con dicho protocolo. An as, si nos resultara complicado programar utili(ando este protocolo, :obot6 incluye libreras para los sensores ms importantes tanto de Lego como de otras compa<as para poder traba%ar con ellos sin tener que preocuparnos de no saber mane%ar correctamente ;A6.

Adems otro factor muy interesante es la familiaridad que se tiene con el lengua%e 6, lengua%e que se ha ido estudiando con mayor mpetu durante los cinco a<os de carrera que se han cursado en la 7acultad. -odo ello incluido a que se tiene una licencia que compr el /epartamento de ;ngeniera de 1istemas y Automtica, hace que sea el lengua%e elegido para desarrollar el proyecto.

:*4*-6 es un potente lengua%e de programacin basado en 6 que funciona con el entorno de 5indoKs. 6on 0l se pueden escribir los programas que, despu0s de su compilacin, se descargarn y e%ecutarn en el robot de Lego.

35

:*4*-6 es una plataforma cru(ada que adems permite una depuracin en tiempo real de las aplicaciones del robot. 'l entorno de programacin dispone de una serie de utilidades muy interesantes puesto que por e%emplo permite configurar de una forma muy simple los actuadores y sensores a utili(ar, dispone de un administrador de archivos que permite cargar y descargar ficheros en el &,-, monitori(ar en tiempo real el estado de los motores, sensores y las variables ms importantes del sistema, etc. :*4*-6 facilita tambi0n una serie de funciones de ba%o nivel que permiten, entre otras cosas2 verificar y controlar el estado de las bateras del robot establecer el control de las tareas que se e%ecutan concurrentemente programar relo%es que permiten especificar los periodos de muestreo requeridos en las aplicaciones control de los motores de corriente continua del sistema obtener los valores de los sensores analgicos yQo digitales establecer las comunicaciones 4luetooth facilitar una librera con las funciones matemticas ms importantes permitir la interaccin con el usuario a partir de los botones y la pantalla del &,-, leer y escribir ficheros de texto, etc. La figura E muestra el entorno de programacin :*4*-6. 'n 0ste se pueden observar, adems del sistema de men tpico de aplicaciones 5indoKs, E ventanas. La de la i(quierda tiene un acceso directo a las funciones y variables del sistema. La ventana superior derecha se corresponde con el editor de texto que se utili(a para la programacin del robot. 'n la ventana inferior derecha aparecen los mensa%es de error y Karnings del compilador.

36

7igura E2 'ntorno de programacin :*4*-6 =na ve( desarrollado y validado el programa fuente, el compilador de :*4*-6 genera el cdigo mquina que puede descargar mediante un cable =14 en el ladrillo &,-. =na ve( cargado en el robot mvil se puede lan(ar la e%ecucin el programa. 'sto se puede hacer o desde el propio entorno de :*4*-6 !si el cable =14 est todava conectado al robot" o desde los botones del &,-. /ebido a que con el entorno de programacin que se acaba de comentar se traba%a con un lengua%e de programacin parecido a 6, la comple%idad de las tareas a reali(ar por el robot y de los algoritmos de control puede ser mucho mayor.

6omo ya hemos comentado antes, una de las funciones que ms nos interesa de :obot6 ser el poder traba%ar con los sensores empleando el protocolo ;A6, para ello, simplemente tendremos que decirle en el men de motores y sensores que el sensor es de tipo ;A6, o elegir directamente el sensor de la librera ya implementada si es que disponemos de la misma.

37

7igura H2 1eleccin de sensores de third parties p de tipo ;A6.

'n el caso de que hayamos elegido hacer las cosas manualmente eligiendo el sensor de tipo ;A6, en robot6 dispondremos de una utilidad como la que se 38

muestra en la figura y que explicaremos posteriormente que nos permitir traba%ar ms cmodamente con sensores digitales.

7igura 2 +en para traba%ar cmodamente con ;A6.

=.C#r# t'r3+t! #+ d' o2un! # !"n d'$ L'-o M!nd+tor2 N7T


39

6omo se ha comentado anteriormente, el &,- soporta comunicacin Kireless a trav0s de bluetooth. 'l bricD del &,- puede conectarse inalmbricamente a otros tres dispositivos a la ve(, pero cada intervalo de tiempo slo lo puede hacer con uno exclusivamente. 8ara lograr est funcionalidad ha tenido que implementarse con ayuda del #1erial 8ort 8rofile$ !188", el cual puede considerarse como un puerto serie. *tra caracterstica importante es que para comunicarse con el bricD se han de cumplir dos requisitos, uno, que se cumpla el protocolo de comunicacin que el &,- implementa mediante una serie de mensa%es en tramas de bytes y dos, que el resto de dispositivos soporte el 188. 's posible e%ecutar programas a la ve( que se envan comandos y se reciben respuestas a estos. 8ara que la autonoma del robot sea elevada la tecnologa ha sido implementada como un dispositivo bluetooth de clase ;;, cuya distancia se restringe a menos de @I metros de longitud ya que a mayor distancia consume ms bateras y eso hace que la autonoma decre(ca significativamente, al fin y al cabo es el factor a me%orar con diferencia en la robtica mvil.

=.1. E+tru tur# d'$ 'ntorno d' tr#%#:o 'l caso de estudio que est relacionado con el proyecto general reali(ado entre varios de los alumnos progresivamente, es un entorno donde se encuentra una cmara 5eb que estar instalada en un ordenador de capacidad de clculo elevada donde ir captando imgenes continuamente para que con ayuda de t0cnicas de anlisis y segmentacin de las imgenes podr obtener trayectorias de referencia para ser transmitidas a diferentes ordenadores a trav0s de conexiones -68Q;8 basadas en socDets mediante cable 'thernet, donde en cada uno de estos, mediante un dispositivo inalmbrico mandarn la informacin recibida a cada uno de los robots &,que tenga conectados. 6omo se ha comentado anteriormente, aprovechando la capacidad que tienen estos robots de recibir Q mandar informacin por 4luetooth ser dicha tecnologa la que se utili(ar para transmitir. ;ntrnsecamente tambi0n se podrn mandar mensa%es y ordenes entre los distintos &,- mediante el uso de un protocolo de comunicacin implementado. 40

server

Wireless communications

control PCs Ethernet

7igura @2 'ntorno de desarrollo 6omo es lgico los robots &,- son robots relativamente modernos y llevan poco tiempo en el mercado cosa que hace que se hayan probado poco y que vayan surgiendo limitaciones sobre la marcha pero pese a eso se han ido desarrollando e implementado programas para aprovechar al mximo posible las posibilidades de este microcontrolador que ms adelante se explicar. Ahora se tratarn de explicar las diferentes caractersticas del &,- y las respectivas comunicaciones comentadas anteriormente.

=.). >un !on#$!d#d on '$ N7T Br! 8 La comunicacin bluetooth entre &,- est basada en una estructura maestro 3 esclavo. 'sto significa que solamente un &,- puede ser el maestro de, cmo 41

mucho, otros tres ms y el resto han de ser obligatoriamente esclavos de ese maestro, ya que el maestro es el que proporciona el relo% que marca la comunicacin por el canal. 'l significado de la palabra maestro no es otro que el dispositivo que iniciali(a la conexin con otro dispositivo, 0ste enva una peticin y si al otro extremo est de acuerdo la conexin se establece. *tra caracterstica interesante es que mientras el maestro est0 escuchando a un cierto esclavo, si le llegan mensa%es del resto de esclavos, no los tendr en cuenta hasta que no escuche a cada uno de los esclavos. /ichos mensa%es quedarn guardados en #bu(ones$ que ms tarde el maestro comprobar.

Los roles de maestro 3 esclavo son completamente incompatibles a la ve(, es decir, ningun &,- podr ser esclavo de un maestro y a su ve( maestro de otros dispositivos ya que podra causar la perdida de informacin y por esa ra(n los creadores del &,- han decidido obviar esa posibilidad y desactivarla en el firmKare de L')* +;&/1-*:+ &,-. 8ara comunicarse con los &,-, el maestro dedica un canal para cada conexin que reali(a, siendo as posible tener abiertos hasta tres canales diferentes para enviar comunicacin. 'n cambio, los esclavos slo tienen un canal para transmitir, por eso el problema de tener que tratar secuencialmente los mensa%es que mandan 0stos al maestro. -odos ellos transmiten por el canal I mientras que el maestro transmite datos por el canal @,A y E a cada uno de los &,-.

=.,. T!4o+ d' o2un! # !on'+ '+tud!#d#+

1egn la estructura explicada en el apartado A.@ se va a proceder a explicar con un poco de detalle en qu0 consisten las comunicaciones implementadas. 8or lo tanto se dividir est seccin en tres partes, una parte para comentar la comunicacin entre los 861 mediante -68Q;8, otra parte para la comunicacin bluetooth y una tercera que explicar el tipo de protocolo que

42

utili(a el &,- para entender las rdenes que le llegan a trav0s de la conexin bluetooth del 86.

Co2un! # !"n TCP6IP

'l t0rmino -68Q;8 hace referencia a un con%unto de protocolos de red en la que se basa por e%emplo ;nternet y la finalidad que tiene es de transmitir datos entre 86s. 'l nombre tiene sentido ya que, en las comunicaciones entre redes de computadores, los protocolos ms importantes son el -68 !8rotocolo de 6ontrol de -ransmisin" y ;8 !8rotocolo de ;nternet" . /ichos protocolos se pueden fragmentar en capas que se van pasando los datos a enviar una tras otra para acabar mandando la trama resultante por la red para que sea reencaminada por los routers correspondientes hasta que llegue a su destino y sea defragmentada en orden inverso por las mismas capas hasta recuperar el dato inicial. La construccin y reconstruccin de la trama y el paso por las diferentes capas se pueden observar en las figuras A y E2

7igura A2 'ncapsulacin -68Q;8

43

7igura E2 8ila -68Q;8

-68Q;8 comen( siendo utili(ado para fines militares con lo cual las principales funciones que tiene son2

/ividir el mensa%e en paquetes. /etectar errores de transmisin. 'nrutar los paquetes. =tili(ar un sistema de direcciones.

=na de las principales caractersticas de -68Q;8 que lo hacen popular es que los estndares de los protocolos son abiertos con la posibilidad de conectar equipos de diferentes fabricantes sin problema adems de estar 0stos muy estandari(ados y tener multitud de servicios, tambi0n es independiente al medio de transmisin fsico y tiene un esquema de direccionamiento amplio y comn.

44

A continuacin se explican brevemente las capas anteriormente citadas en las figuras predecesoras !A y E".

A4$! # !"n& 's la capa que corresponde a las aplicaciones que estn disponibles para los usuarios, como -'L&'-, 7-8, 1&+8W !todas ellas orientadas a conexin, es decir -68" o /&1, &71, :;8W!todas ellas sin orientacin o =/8".

Tr#n+4ort'& 8rovee comunicacin de extremo a extremo desde un programa de aplicacin al otro. 8uede proveer un transporte orientado a conexin !-68" asegurndose que los datos llegan sin errores y en la secuencia correcta. 6oordina a mltiples aplicaciones para que los datos que interactan a la ve( con la red compartida lleguen a su destino correctamente a la aplicacin remota. Los protocolos que se encuentra en dicha capa son el -68 y el =/8 !no orientado a la conexin, por lo cual no asegura la llegada y si llegan no asegura el orden".

R'd& 6ontrola la comunicacin entre un equipo y otro. 6onforma los paquetes ;8 que sern enviados por la capa inferior. ;gualmente en el destino desencapsula los paquetes ;8 para que sean pasados a la capa superior. 'l protocolo que reali(a dicha funcin se denomina ;8. Las funciones bsicas que debe reali(ar son2 definir el datagrama ya que es la unidad bsica de transmisin por la red, definir el esquema de direccionamiento de ;nternet, enrutar los datagramas hacia el destino correctamente !direccionar" y reali(ar la fragmentacin y reensamblado de los mensa%es para las capas 7sica y de -ransporte respectivamente.

'+o # R'd& 's el nivel hardKare formado por la tar%eta de red, los drivers y

los programas asociados. 1e encarga de enviar bit a bit a trav0s de una tar%eta fsica los datos de un extremo a la red mediante un estilo de codificacin. 1e han de conocer los detalles de la red fsica. Las funciones ms importantes de 45

esta capa son, encapsulacin de los datagramas dentro de las marcas a transmitir por la red y la traduccin de las direcciones ;8 a direcciones fsicas de la red.

=.<. Mod'$o C$!'nt'5S'r1!dor La arquitectura cliente3servidor se basa en un intercambio de mensa%es entre dos computadores, en la cual uno de ellos es cliente que reali(a las peticiones que desea al servidor que anali(a la propuesta y aprovechando su capacidad de clculo reenvia via red la respuesta de dicho servicio.

7igura H2 +odelo 6liente X 1ervidor La idea es tratar a una computadora como un instrumento, que por s sola pueda reali(ar muchas tareas, pero con la consideracin de que realice aquellas que son ms adecuadas a sus caractersticas. 1i esto se aplica tanto a clientes como servidores se entiende que la forma ms estndar de aplicacin y uso de sistemas 6lienteQ1ervidor es mediante la explotacin de los 86s a trav0s de interfaces grficas de usuario> mientras que la administracin de datos y su seguridad e integridad se de%a a cargo de computadoras centrales tipo mainframe. =sualmente la mayora del traba%o pesado se hace en el proceso llamado servidor y el o los procesos cliente slo se ocupan de la interaccin con el usuario !aunque esto puede variar". 'n otras palabras la arquitectura 6lienteQ1ervidor es una extensin de programacin modular en la que la base fundamental es separar una gran pie(a de

46

softKare en mdulos con el fin de hacer ms fcil el desarrollo y me%orar su mantenimiento. 'sta arquitectura permite distribuir fsicamente los procesos y los datos en forma ms eficiente lo que en computacin distribuida afecta directamente el trfico de la red, reduci0ndolo grandemente.

C$!'nt'

'l cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se le conoce con el t0rmino front3 end. 'l 6liente normalmente mane%a todas las funciones relacionadas con la manipulacin y despliegue de datos, por lo que estn desarrollados sobre plataformas que permiten construir interfaces grficas de usuario !)=;", adems de acceder a los servicios distribuidos en cualquier parte de una red. Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes puntos2

Y Administrar la interfa( de usuario. Y ;nteractuar con el usuario. Y 8rocesar la lgica de la aplicacin y hacer validaciones locales. Y )enerar requerimientos de bases de datos. Y :ecibir resultados del servidor. Y 7ormatear resultados.

S'r1!dor
's el proceso encargado de atender a mltiples clientes que hacen peticiones de algn recurso administrado por 0l. Al proceso servidor se 47

le conoce con el t0rmino bacD3end. 'l servidor normalmente mane%a todas las funciones relacionadas con la mayora de las reglas del negocio y los recursos de datos. Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes puntos2 Y Aceptar los requerimientos de bases de datos que hacen los clientes. Y 8rocesar requerimientos de bases de datos. Y 7ormatear datos para trasmitirlos a los clientes. Y 8rocesar la lgica de la aplicacin y reali(ar validaciones a nivel de bases de datos. =.<.1. C#r# t'r3+t! #+ d' $# #r/u!t' tur# C$!'nt'6S'r1!dor Las caractersticas bsicas de una arquitectura 6lienteQ1ervidor son2 Y 6ombinacin de un cliente que interacta con el usuario, y un servidor que interacta con los recursos compartidos. 'l proceso del cliente proporciona la interfa( entre el usuario y el resto del sistema. 'l proceso del servidor acta como un motor de softKare que mane%a recursos compartidos tales como bases de datos, impresoras, mdems, etc. Y Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos de cmputo como velocidad del procesador, memoria, velocidad y capacidades del disco y input3output devices. Y 1e establece una relacin entre procesos distintos, los cuales pueden ser e%ecutados en la misma mquina o en mquinas diferentes distribuidas a lo largo de la red. Y 'xiste una clara distincin de funciones basada en el concepto de ?servicio?, que se establece entre clientes y servidores. Y La relacin establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos. Y Los clientes corresponden a procesos activos en cuanto a que son 0stos los que hacen peticiones de servicios a los servidores. 'stos 48

ltimos tienen un carcter pasivo ya que esperan las peticiones de los clientes. Y &o existe otra relacin entre clientes y servidores que no sea la que se establece a trav0s del intercambio de mensa%es entre ambos. 'l mensa%e es el mecanismo para la peticin y entrega de solicitudes de servicio. Y 'l ambiente es heterog0neo. La plataforma de hardKare y el sistema operativo del cliente y del servidor no son siempre la misma. 8recisamente una de las principales venta%as de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas. Y 'l concepto de escalabilidad tanto hori(ontal como vertical es aplicable a cualquier sistema 6lienteQ1ervidor. La escalabilidad hori(ontal permite agregar ms estaciones de traba%o activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite me%orar las caractersticas del servidor o agregar mltiples servidores.

=.<.). V'nt#:#+ d'$ '+/u'2# C$!'nt'6S'r1!dor 'ntre las principales venta%as del esquema 6lienteQ1ervidor estn2 Y =no de los aspectos que ms ha promovido el uso de sistemas 6lienteQ1ervidor, es la existencia de plataformas de hardKare cada ve( ms baratas. 'sta constituye a su ve( una de las ms palpables venta%as de este esquema, la posibilidad de utili(ar mquinas considerablemente ms baratas que las requeridas por una solucin centrali(ada, basada en sistemas grandes. Adems, se pueden utili(ar componentes, tanto de hardKare como de softKare, de varios fabricantes, lo cual contribuye considerablemente a la reduccin de costos y favorece la flexibilidad en la implantacin y actuali(acin de soluciones. Y 'l esquema 6lienteQ1ervidor facilita la integracin entre sistemas diferentes y comparte informacin permitiendo, por e%emplo que las 49

mquinas ya existentes puedan ser utili(adas pero utili(ando interfaces mas amigables al usuario. /e esta manera, podemos integrar 86s con sistemas medianos y grandes, sin necesidad de que todos tengan que utili(ar el mismo sistema operacional. Y Al favorecer el uso de interfaces grficas interactivas, los sistemas construidos ba%o este esquema tienen mayor interaccin y ms intuitiva con el usuario. 'n el uso de interfaces grficas para el usuario, el esquema 6lienteQ1ervidor presenta la venta%a, con respecto a uno centrali(ado, de que no es siempre necesario transmitir informacin grfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar me%or el ancho de banda de la red. Y =na venta%a adicional del uso del esquema 6lienteQ1ervidor es que es ms rpido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes !por e%emplo los servidores de 1UL o las herramientas de ms ba%o nivel como los socDets o el :86". Y La estructura inherentemente modular facilita adems la integracin de nuevas tecnologas y el crecimiento de la infraestructura computacional, favoreciendo as la escalabilidad de las soluciones. Y 'l esquema 6lienteQ1ervidor contribuye adems, a proporcionar, a los diferentes departamentos de una organi(acin, soluciones locales, pero permitiendo la integracin de la informacin relevante a nivel global.

=.<.,. D'+1'nt#:#+ d'$ '+/u'2# C$!'nt'6S'r1!dor 'ntre las principales desventa%as del esquema 6lienteQ1ervidor estn2 Y 'l mantenimiento de los sistemas es ms difcil pues implica la

interaccin de diferentes partes de hardKare y de softKare, distribuidas por distintos proveedores, lo cual dificulta el diagnstico de fallas. Y 1e cuenta con muy escasas herramientas para la administracin y a%uste del desempe<o de los sistemas.

50

's importante que los clientes y los servidores utilicen el mismo

mecanismo !por e%emplo socDets o :86", lo cual implica que se deben tener mecanismos generales que existan en diferentes plataformas. Y Adems, hay que tener estrategias para el mane%o de errores y para mantener la consistencia de los datos. Y La seguridad de un esquema 6lienteQ1ervidor es otra preocupacin importante. 8or e%emplo, se deben hacer verificaciones en el cliente y en el servidor. Y 'l desempe<o es otro de los aspectos que se deben tener en cuenta en el esquema 6lienteQ1ervidor. 8roblemas de este estilo pueden presentarse por congestin en la red, dificultad de trfico de datos, etc.

51

III

DESARROLLO PRCTICO

52

'n el desarrollo prctico se han ido estudiando los sensores disponibles uno por uno, viendo sus distintos modos de funcionamiento, su me%or rendimiento, las condiciones ideales de traba%o para cada sensor o las distintas formas de programarlo. 8ara ello me gustara agradecer a Zngel 9alera, el tutor del proyecto, por todo el material prestado durante el desarrollo del proyecto para la correcta reali(acin del mismo. 8rimero se ha traba%ado con los propios sensores de la casa Lego, los que entraran en el ?Dit bsico? del robot cuando se adquiere. 1on los sensores ms conocidos y utili(ados ya que los tiene todo el mundo, pero tambi0n son los ms simples en el sentido de que en general aportan poca informacin de utilidad al robot sobre su entorno. /espu0s traba%aremos con los sensores fabricados por otras marcas como .itechnic. 'ncontraremos en ellos mayor diversidad de sensores as como tambi0n mayor comple%idad a la hora de programar, ya que muchos de ellos se pueden programar manualmente a trav0s de ;A6 o utili(ando libreras ya implementadas en :obot6. -ambi0n reali(aremos una aplicacin en la que se utilicen varios de los sensores al mismo tiempo para darnos una idea de las posibilidades que nos ofrece la combinacin de sensores. #combinacion.c$

8or ltimo se ha programado una aplicacin en 6V y en 6TT con la plataforma 9isual 1tudio AIIG en la que podremos controlar al robot desde el 86 a trav0s de bluetooth empleando unas funciones de :obot6

53

1.Sensores LEGO:
1.1. S'n+or d' u$tr#+on!do+
5 INTRODUCCIN AL SENSOR
'l sensor de ultrasonidos fabricado por +indstorms es uno de los cuatro sensores bsicos que vienen incluidos en el pacD cuando se adquiere el &,-. Bunto con el sensor de Lu( son los dos sensores bsicos que van a proporcionar visin al robot, posteriormente se han fabricado otros como el de infrarro%os o color que tambi0n ayudarn al robot a reconocer el entorno en el que se encuentran. 1e trata de un sensor analgico que mide distancias en centmetros y en pulgadas. 's capa( de medir distancias de I a A precisin de TQ3 E cm. centmetros con una

5 >UNCIONAMIENTO
'l sensor de ultrasonidos funciona con el mismo principio cientfico que la orientacin de los murci0lagos. 1e trata de medir la distancia calculando el tiempo que le cuesta a las ondas de sonido golpear un ob%eto y volver. !6omo el eco". La velocidad de propagacin del sonido en el aire a I [6 es de EE@mQs y la velocidad aumenta en I.OmQs por cada @ [6 de aumento de temperatura. 8or lo que a @ [6 la velocidad de propagacin del sonido es de EHImQs. 6onociendo este valor y el tiempo que ha tardado el sonido en ir y volver al sensor despu0s de rebotar en un ob%eto, podremos calcular a que distancia se encuentra el mismo. 'n el e%emplo de la figura@, suponiendo que nos encontramos en una habitacin a @ [6, el sensor de =ltrasonidos manda una onda de sonido que tarda @ms desde que sale hasta que llega de nuevo al sensor.

54

1i en @ segundo el sonido recorre EHIm, en @ milisegundo habr recorrido EH cm, por lo que el sensor habr detectado que hay un ob%eto que se encuentra a @Fcm ya que @ms es el tiempo que tarda en ir y en volver la onda de sonido.

7igura @2 '%emplo de funcionamiento del sensor. -odos estos clculos el sensor ya los hace automticamente asignando una constate a la velocidad del sonido y nos devuelve la distancia a la que se encuentran los ob%etos. Las me%ores lecturas las vamos a obtener si los ob%etos son grandes y con superficies duras. 1i se trata de ob%etos curvos !como un baln" o muy finos o peque<os, puede resultar difcil para el sensor detectarlos.

Not#& .ay q tener en cuenta que si tenemos dos o ms sensores de =ltrasonidos traba%ando en la misma habitacin podemos obtener lecturas errneas si se me(clan las ondas de sonido.

5PROGRAMACIN
'n :obot6 podremos programar fcilmente el 1onar, solo tenemos que decirle en que puerto est conectado el sensor. 8ara ello haremos lo siguiente2 en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin 1onar. /e este modo se nos devolver la distancia a la que se encuentran los ob%etos que hay frente al 55

sensor entre I y A

cm. 'l siguiente programa es un e%emplo muy simple en el

que leemos el valor del sensor de =ltrasonidos y lo mostramos por pantalla.

Pro-r#2# u$tr#.
//*!!Sensor, //*!!Start !!*// const tSensors Sonar = (tSensors) S3 //sensorSONAR S3, automatically Sonar, sensorSONAR, generated , code.

configuration

/* !ste c"digo se genera autom#ticamente al $a%er seleccionado &ue en el 'uerto S3 se (a a conectar el sensor de ultrasonidos tal y como $emos descrito antes*/ tas) main()* +$ile(,)* n-t.is'lay/e-t0ine(1,2.istancia3 4d2,Sensor5alue(Sonar)) //A&u6 sim'lemente motramos el (alor de(uelto 'or 'antalla 7

5CONCLUSIONES DEL SENSOR


1e trata de un sensor que cumple su funcin. /etectar ob%etos cerca de alrededor dos metros y medio es una distancia aceptable para la mayora de aplicaciones ya que con el tama<o del robot tenemos distancia de sobra para esquivar obstculos. 8uede resultar sin embargo una distancia de deteccin escasa si nos encontramos en espacios abiertos y queremos dirigirnos a ob%etos que se encuentren ms le%os. 1lo detecta ob%etos que se encuentran frente al sensor, por lo que tendremos que girar el robot completamente si queremos detectar algo en los laterales o detrs del sensor. 56

'l sensor va a permitir aproximaciones a ob%etos con Ecm de precisin, por lo que si vamos a reali(ar traba%os muy delicados deberamos complementar el sensor con algo ms para ser ms precisos. -raba%ar me%or con superficies grandes y lisas que con superficies peque<as o redondeadas ya que son mucho ms fciles de detectar y producen lecturas ms fiables pero si se trata de detectar nicamente la presencia traba%a bien con casi cualquier ob%eto que sea visible y de tama<o adecuado. !=n alfiler no lo va a detectar, y con un bolgrafo va a tener problemas" 1i hay dos o ms sensores traba%ando a la ve( en un radio cercano, pueden producirse interferencias entre ellos y generar lecturas errneas. Al funcionar con ondas de sonido, la iluminacin del entorno no influye en la calidad con la que se detectan los ob%etos.

ANLISIS& 3 /etecta casi cualquier ob%eto que tenga en frente en una distancia de entre @Icm y A. metros 3 3 8recisin de TQ3Ecm &o indica la ubicacin de los ob%etos, solo la distancia frontal del ob%eto con el sensor. 3 &o detecta todos los ob%etos con la misma facilidad ni fiabilidad. Algunos ob%etos peque<os pueden pasarse por alto. 'sto se acenta con distancias largas. =n ob%eto que se detecta fcilmente a AIcm cuando se encuentra a Am no se detecta con la misma facilidad. 3 A o ms sensores de ultrasonidos traba%ando a la ve( pueden producir lecturas errneas.

57

&o depende de la lu( para presenciar ob%etos.

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]iaDvq,&GI)'^feature]related http2QQKKK.youtube.comQKatch\v]ebfx_A=4K3I^feature]related http2QQKKK.youtube.comQKatch\v]A`x+;D 9D:s^feature]related

58

1.). S'n+or d' Cont# to


5 INTRODUCCIN AL SENSOR
'l sensor de contacto fabricado por +indstorms es otro de los cuatro sensores bsicos que vienen incluidos en el pacD cuando se adquiere el &,-. 8osiblemente se trate del sensor ms sencillo de todos. 'l sensor es bsicamente en un interruptor que nos devuelve un valor de @ mientras est pulsado, o un valor de I mientras est sin pulsar. Aunque se trate de un sensor muy sencillo puede resultar muy til para ciertas aplicaciones como por e%emplo para saber si el robot tiene algo en sus bra(os para cogerlo, para cerrar puertas, detectar choques, o para iniciar cualquier tipo de evento cuando se produ(ca la pulsacin del sensor.

5 >UNCIONAMIENTO
6omo ya hemos comentando antes, el funcionamiento de este sensor es como el de un interruptor. /ispone de un muelle que mantiene separados los dos extremos. 1i e%ercemos presin sobre el muelle, 0ste se encoger permitiendo que los dos extremos hagan contacto y permitan la circulacin de la corriente.

7igura @2 7uncionamiento del sensor de contacto.

59

8or lo tanto, si el sensor no est en contacto con nada nos devolver un I mientras que si se encuentra en contacto con cualquier cosa nos devovler un @. Not#& La superficie del interruptor es bastante peque<a, por lo que tendremos que controlar bien donde colocamos el sensor segn lo que queramos que detecte ya que si queremos topar con ob%etos peque<os puede resultar complicado llegar a entrar en contacto con ellos. *tra opcin es montar una #extensin$ al sensor que incremente la superficie de contacto con el interruptor.

5PROGRAMACIN
'n :obot6 podremos programar fcilmente el sensor de contacto, solo tenemos que decirle en que puerto est conectado el sensor. 8ara ello haremos lo siguiente2 en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin -ouch. /e este modo se nos devolver @ I dependiendo de si el interruptor se encuentra presionado o no. 'l siguiente programa es un e%emplo muy simple en el que leemos el valor del sensor y lo mostramos por pantalla. 6omprobaremos como cambia el valor si apretamos el interruptor del sensor. Pro-r#2# ont# to.
const tSensors 8ontacto = (tSensors) S9 //sensor/ouc$

/* !ste c"digo se genera autom#ticamente al $a%er seleccionado &ue en el 'uerto S9 se (a a conectar el sensor de contacto tal y como $emos descrito antes*/ tas) main()* +$ile n-t.is'lay:igStringAt(9;,3;,24d2,Sensor5alue(8ontacto)) //A&u6 sim'lemente motramos el (alor de(uelto 'or 'antalla con un //te-to grande 7 (,)*

60

5CONCLUSIONES DEL SENSOR


1e trata del sensor ms sencillo por lo que cumple su funcin sin ningn tipo de problemas. 8odramos encontrar que la superficie de funcionamiento del sensor resulta demasiado peque<a, pero este problema se puede arreglar con las ya mencionadas extensiones. +e%or que el sensor tenga una superficie que no ocupe mucho y que tenga la opcin de ampliarse de mltiples maneras !como en el e%emplo de la foto y de los posteriores videos" por si queremos que la (ona susceptible de entrar en contacto sea mayor, que no que directamente sea un sensor demasiado grande y no tenga posibilidades de reducir sus dimensiones. Aunque resulte un sensor muy sencillo, puede resultar muy til para muchas aplicaciones que pueden ir desde un disparador de eventos a un detector de colisiones. 'so ya depende de la imaginacin de cada uno.

ANLISIS& 3 3 1ensor muy sencillo de utili(ar. 's posible que tengamos que hacer monta%es extra para poder dar el uso adecuado al sensor.

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]L.6v3AB+,xo^feature]related http2QQKKK.youtube.comQKatch\v])sp1UfvIAoH http2QQKKK.youtube.comQKatch\v]_3(bK%G%L(I^feature]related

61

1.,. S'n+or d' Lu9


5 INTRODUCCIN AL SENSOR
'l sensor de Lu( fabricado por +indstorms es otro de los cuatro sensores bsicos que vienen incluidos en el pacD cuando se adquiere el &,-. Bunto con el sensor de =ltrasonidos son los dos sensores bsicos que van a proporcionar visin al robot, posteriormente se han fabricado otros como el de infrarro%os o color que tambi0n ayudarn al robot a reconocer el entorno en el que se encuentran. 'l sensor de Lu( permite distinguir entre la lu( y la oscuridad. 8uede leer por e%emplo la intensidad de lu( en una habitacin o superficies de distintos colores 1e trata de un sensor analgico que nos devuelve valores entre I y @II dependiendo de si recibe menos o ms lu(. la intensidad de lu( de

5 >UNCIONAMIENTO
'l sensor de lu( mide la intensidad de lu( que le llega a la lente de modo que cuanto mayor sea la intensidad de lu( que recibe, mayor es el valor que devuelve y viceversa. 6omo se puede observar en la figura@.

7igura @2 :elacin de intensidad de lu( recibida con los valores devueltos. =na de las derivaciones de poder medir la intensidad de lu( ser la de poder hacer una distincin muy bsica entre unos colores u otros, ya que cuanto ms oscuro es un color ms lu( absorbe y por lo tanto menor ser el valor que nos devuelva el sensor. Aunque con este sensor resulte muy difcil interpretar el 62

color exacto de una superficie, s que podremos determinar si un color es ms claro u oscuro que otro. 'n la figuraA podemos ver la diferencia entre lo que vemos nosotros y lo que el robot va a percibir.

7igura A2 8ercepcin de los colores con el sensor de lu(. Adems de una lente, el sensor de lu( tambi0n dispone de una lmpara que sirve para iluminar y as poder traba%ar en ambientes ms oscuros, de modo que deberemos elegir si queremos que el sensor traba%e con la lmpara encendida o apagada. 9er 7iguraE.

7igura E2 =bicacin de la lente y de la lmpara 6omo es lgico, en ambientes igualmente iluminados el sensor traba%ando con la lmpara encendida siempre devolver valores ms altos que traba%ando con la lmpara apagada. Not#& 1 que tendremos que tener en cuenta al traba%ar con la lmpara del sensor encendida el tama<o del recinto cuya iluminacin deseemos medir, ya que si medimos con la lmpara encendida en un recinto muy peque<o y oscuro como podra ser una ca%a de (apatos podremos obtener valores ms altos que si estuvi0ramos fuera de la ca%a de (apatos ya que se trata de un recinto tan 63

peque<o que estamos leyendo la intensidad de la lu( de la propia lmpara.

5PROGRAMACIN
'n :obot6 podremos programar fcilmente el sensor de Lu(, solo tenemos que decirle en que puerto est conectado el sensor. 8ara ello haremos lo siguiente2 en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin Light Active o Light ;nactive dependiendo de si queremos que la lmpara est0 encendida o apagada. 'l siguiente programa es un e%emplo muy simple en el que hemos elegido la opcin de tener la lmpara encendida y nos dedicamos a mostrar los valores que nos devuelve el sensor por pantalla. Pro-r#2# Lu9A t!1#.
//*!!Sensor, const tSensors S9, 0u< 0u<, sensor0ig$tActi(e, = (tSensors) S9

//sensor0ig$tActi(e /*8"digo generado autom#ticamente al seleccionar &ue en el 'uerto S9 se (a a conectar un sensor de lu< con la l#m'ara acti(ada*/ tas) main()* +$ile(,)* n-t.is'lay/e-t0ine(,,20u<34d2,Sensor5alue(0u<)) /*=ostramos sensor*/ 7 7 'or 'antalla los (alores &ue nos (a de(ol(iendo el

5CONCLUSIONES DEL SENSOR


64

'l sensor de Lu( fabricado por +indstorms

resulta muy til en cualquier

aplicacin en la que la intensidad de la lu( sea un factor a medir. As como en otros sensores en los que interviene la lu( !como el sensor de color" la distancia a la que traba%an bien tiene que ser muy reducida !Acm", con el sensor de lu( podemos distinguir el blanco del negro en una superficie con facilidad a unos @ cm de distancia. 1i lo que queremos es medir la intensidad de lu( de una habitacin, la distancia ya no es un factor a tener en cuenta. *tra caracterstica interesante que presenta el sensor es la posibilidad de traba%ar en ambientes oscuros para distinguir superficies claras de otras oscuras. )racias a la lmpara, si no disponemos de un sensor de ultrasonidos podremos detectar la presencia de ob%etos con los cambios de lu( que se produ(can. 'sta caracterstica adems, funciona me%or en ambientes oscuros. ANLISIS& 3 Lee la lu( ambiental de forma muy precisa. !+e%or con la lmpara apagada". 3 /istingue muy bien la oscuridad o claridad del color de las superficies de los ob%etos a distancias inferiores a @ cm. 3 3 7unciona tanto en ambientes bien iluminados como oscuros. La lmpara encendida nos puede permitir detectar la presencia de ob%etos. !1lo situados en frente del sensor".

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]LnA_y`l:9/U^feature]related http2QQKKK.youtube.comQKatch\v]+pG_Ay%9Hf=^feature]related

65

1.<. S'n+or d' Son!do


5 INTRODUCCIN AL SENSOR
'l sensor de sonidos fabricado por +indstorms es uno de los cuatro sensores bsicos que vienen incluidos en el pacD cuando se adquiere el &,-. 'ste sensor nos servir por e%emplo para distinguir si nos encontramos en un ambiente ruidoso o tranquilo o para iniciar o cambiar si traba%o si se produce un evento sonoro que el sensor sea capa( de distinguir.

7igura @2 1ensor de sonidos.

5 >UNCIONAMIENTO
1e pueden escribir varios libros hablando nicamente del sonido y de su funcionamiento pero para poder mane%ar el sensor no necesitamos profundi(ar tanto. 4asta con que sepamos que la intensidad del sonido se mide en decibelios. =n decibelio es una medida de la presin del sonido. =n umbral de audicin de I d4 es equivalente a un sonido con una presin de AI micropascales. 1e trata de una escala logartmica porque la sensibilidad que presenta el odo humano a las variaciones de intensidad sonora sigue una escala aproximadamente logartmica, no lineal. 8or ello el belio !4" y su submltiplo el decibelio !d4", resultan adecuados para valorar la percepcin de los sonidos por un oyente. 1e define como la comparacin o relacin entre dos sonidos porque se vio que un oyente, al que se le hace escuchar un solo sonido, no puede dar una indicacin fiable de su intensidad, mientras que, si se le hace escuchar dos sonidos diferentes, es capa( de distinguir la diferencia de intensidad. 66

Los sonidos que percibimos deben superar el umbral auditivo !I d4" y no llegar al umbral de dolor !@HI d4". 8or esto que estamos comentando, el sensor puede detectar decibelios Rd4S y decibelios a%ustados Rd4AS. dBA& 'n la opcin de detectar decibelios a%ustados, la sensibilidad del sensor se adapta al umbral de audicin del odo humano. 's decir, los sonidos que nosotros somos capaces de or. !'ntre I y @HI d4"

dB& /etectando decibelios sin a%ustar, todos los sonidos sern medidos con la misma sensibilidad. /e este modo se incluirn sonidos que pueden resultar ser demasiado altos o ba%os para los humanos los puedan or. 'l sensor de sonidos puede llegar a medir hasta unos JId4 en la presin de sonido. !Uue viene a ser el ruido que hace una cortadora de c0sped". 6omo interpretar todas las presiones de sonido en d4 y traba%ar con escalas logartmicas puede resultar complicado, las lecturas del sensor son mostradas en porcenta%es. 6uanto ms ba%o sea el porcenta%e ms silencioso ser el ambiente. 8or e%emplo2 Y H3 a 1era la medida de una habitacin en silencio. Y 3@Ia 6orrespondera al sonido de alguien hablando desde cierta distancia. Y @I3EIa 1e tratara de una conversacin normal cercana al sensor o la msica sin estar muy alta. Y EI3@IIa 's gente gritando o con la msica puesta con mucho volumen. Not#& -endremos que tener en cuenta el modo con el que estamos traba%ando con el sensor, ya que si estamos en modo d4 el sensor puede devolvernos porcenta%es altos de ruido sin que nosotros estemos escuchando nada ya que puede haber sonidos que se escapan de nuestro umbral de percepcin. Adems al ser mucho ms sensible resulta muy difcil mantener estable un valor de sonido concreto.

67

5PROGRAMACIN
'n :obot6 podremos programar fcilmente el 1onar, solo tenemos que decirle en que puerto est conectado el sensor. 8ara ello haremos lo siguiente2 en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin 1ound d4 o 1ound d4A segn cual de las dos opciones queramos emplear. 'n el siguiente programa hemos elegido que traba%e en modo d4 y simplemente nos dedicamos a mostrar los valores que devuelve el sensor por pantalla.

Pro-r#2# Son!do.
const tSensors Sonido /*!ste c"digo se $a%r# generado = (tSensors) S9 autom#ticamente //sensorSound.: cuando le $ayamos

dic$o &ue en el 'uerto S9 ir# un sensor de sonido en modo d: tal y como $emos comentado antes*/ tas) main()* +$ile(,)* n-t.is'lay/e-t0ine(,,2Sonido3 4d2,Sensor5alue(Sonido)) /*=ostramos 'or 'antalla el 'orcenta>e de sonido &ue $ay*/ 7 b

5CONCLUSIONES DEL SENSOR


1e trata de un sensor muy sensible al sonido. cnicamente reacciona a la intensidad del sonido que hay, pero no es capa( de distinguir sonidos graves de los agudos u otras caractersticas del sonido que podran haber resultado interesantes. 8or lo que las aplicaciones en las que este sensor nos puede 68

resultar til se ven muy reducidas para medir el ruido de entornos, etcW

y para aplicaciones muy especficas.

'ventos que solo empiecen cuando hay una determinada cantidad de sonido, :esulta interesante que podamos traba%ar de los dos modos ya comentados de manera que si necesitamos mucha sensibilidad lo pondremos en modo d4 y si queremos valores ms estables u orientados al odo humano lo pondremos en modo d4A. 1i traba%amos en un ambiente al aire libre en el que haya viento el sensor se confunde debido al ruido que produce 0ste al pasar.

ANLISIS& 3 3 8uede traba%ar en dos modos2 d4 y d4A :esulta muy sensible traba%ando en modo d4, es muy difcil conseguir un valor estable. 3 'n modo d4 podemos detectar sonidos que pasan inadvertidos para el odo humano. 3 'l viento es un elemento a tener muy en cuenta ya que puede convertir en intil a este sensor en ambientes abiertos en los que no nos interese el ruido generado por el viento.

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v],_A7;5:I*'g http2QQKKK.youtube.comQKatch\v]p@'A@9,_Hc'^feature]related

69

2. Sensores NO LEGO:
).1. Bu+ #dor d' r#?o+ !n(r#rro:o+
5 INTRODUCCIN AL SENSOR
'l buscador de rayos infrarro%os para &,- es uno de los sensores digitales fabricado por .itechnic que sirve para identificar la ubicacin de fuentes de rayos infrarro%os !como la lu( solar, lmparas de calor infrarro%o, esferas que emiten este tipo de lu( y se pueden usar como balones, etcW". A la hora de buscar fuentes de lu( infrarro%a con el sensor, tendremos que tener en cuenta dos factores que van a influir en el funcionamiento del mismo. La lu( ambiente y la intensidad con la que la fuente emite la lu(. 'sto significa que si traba%amos en un ambiente en el que tenemos mucha lu( solar y nuestro emisor de infrarro%os es relativamente d0bil, el sensor seguramente se confundir y no detectar correctamente la fuente que deseamos, o puede que tengamos que acercar mucho la fuente al sensor para que la detecte. 'n este caso sera conveniente ale%arnos de las ventanas, ba%ar las persianas o cambiarnos a un sitio ms oscuro. 1in embargo, si la fuente con la que traba%amos tiene bastante intensad y adems nos encontramos en un sitio con poca lu( solar el sensor traba%ar mucho me%or y detectar la fuente desde una distancia mayor. 'l baln de .itechinc que emite una fuente de lu( ms bien d0bil puede ser detectado a una distancia de un metro ms o menos en un lugar poco iluminado por la lu( solar. 6omentar tambi0n que el emisor de infrarro%os no tiene por qu0 encontrarse exactamente en el mismo plano que el sensor para ser detectado. dste se 70

puede encontrar por encima o por deba%o del mismo y el sensor lo encontrar igualmente.

5 >UNCIONAMIENTO
'l buscador de infrarro%os consta de detectores situados en distintas (onas detectores

del sensor de modo que cada uno de ellos mide la fuer(a con la que recibe la lu( infrarro%a desde la fuente. 6on los valores que devuelven estos se divide el espacio en el que se puede encontrar la fuente en J (onas. As en lugar de tener que ir interpretando los valores que cada detector obtiene, el sensor nos devolver directamente un valor del @3J dependiendo de la (ona en la que se encuentre la fuente de infrarro%os. 'sto se aprecia me%or en la 7igura @.

7igura @2 /ivisin del espacio en (onas. d ] detector

8or e%emplo si la fuente de infrarro%os se encuentra a la i(quierda y detrs del sensor, 0ste devolver @, mientras que si se encuentra %usto en frente nos devolver . 1i se encuentra detrs del sensor y a la derecha obtendremos un J como respuesta. S' d'1u'$1' @ +! no +' d't' t# n!n-un# +'A#$.

71

7igura A2 '%emplo de posicin de la fuente y el valor devuelto por el sensor.

Adems de la direccin, el buscador de infrarro%os tambi0n devuelve la fuer(a de la se<al obtenida por cada uno de los detectores de modo que con estos valores se pueden hacer estimaciones de la distancia a la que se encuentra la fuente.

7igura E2 '%emplo con un emisor cercano al sensor.

72

7igura H2 '%emplo con un emisor le%ano al sensor. 'n las figuras E y H observamos una fuente de lu( infrarro%a que se encuentra en la (ona F en ambas pero a distinta distancia, por nos podemos dar cuenta de que el detector nmero H da un valor mayor cuando la fuente est ms cercana al sensor.

8ara indicarnos todos estos valores, al tratarse de un sensor digital en ve( en analgico, dispone de @AG posiciones de memoria en las que va escribiendo todos los datos que el fabricante ha considerado necesarios. NOTA& 'n este y otros sensores el fabricante no especifica el contenido de todos y cada uno de los registros de memoria, por lo que si queremos comprobar que vienen todos los campos explicados en el manual o si hay algunos que se han de%ado !en este sensor slo vena explicado hasta el campo de la direccin IxHF" podemos entrar en la utilidad de ;A6 de robot 6. :obot &,- 4ricD -est ;A6. All tendremos que elegir ;A6 6ustom en el puerto que tenemos conectado el sensor, un valor de A en *utput +essage y en :eply Len pondremos el nmero de registros que queremos leer cada ve(. .aremos clicD en *nce e iremos viendo el contenido de los registros. -odo esto se puede ver en la 7igura .

73

7igura 2 6aptura de la utilidad ;A6

74

II3IF 3e 6hars &mero de versin del sensor IG3I7 3e 6hars 7abricante @I3@F 3e 6hars -ipo de sensor HA 3e 4yte `ona !I3J" HE 3e 4yte 7uer(a de la se<al en el detector @ HH3e 4yte 7uer(a de la se<al en el detector A H 3e 4yte 7uer(a de la se<al en el detector E HO3e 4yte 7uer(a de la se<al en el detector H HF3e 4yte 7uer(a de la se<al en el detector HG 3e 4yte /istancia de la fuente al sensor HJ 3e 4yte 7uer(a de la se<al en el detector @ !A bits" HA 3e 4yte 7uer(a de la se<al en el detector A !A bits" H4 3e 4yte 7uer(a de la se<al en el detector E !A bits" H6 3e 4yte 7uer(a de la se<al en el detector H !A bits" H/ 3e 4yte 7uer(a de la se<al en el detector H' 3e 4yte 9alor mayor de los detectores !A bits"

'l campo N.2'ro d' 1'r+!"n d'$ +'n+or simplemente nos indica la versin del sensor en el formato #f9n.m$ donde n es el principal nmero de versin y m es el nivel de revisin.

B S'rC '+4# !o 'n %$#n o

/i r . x

II 7/ f

I@ O 9

IA E@ @

IE A' . -abla @ 75

IH EA A

I AI g

IO AI g

IF AI g

'l campo >#%r! #nt' en este caso contiene #.i-echnc$.

/i r . x

IG HG .

IJ OJ i

IA H -

I4 O e -abla A

I6 OE c

I/ OG h

I' O' n

I7 OE c

'l campo T!4o d' S'n+or contiene #;: /ir.$.

/i r . x

@I HJ ;

@@ A :

@A AI g

@E HH / -abla E

@H OJ i

@ FA r

@O A' .

@F AI g

'l campo Zon# nos devolver la direccin en la que se encuentra la se<al infrarro%a con un valor de I3J, correspondiente a las (onas vistas en la 7igura @. Los campos >u'r9# d' $# +'A#$ 'n '$ d't' tor nos van a devolver la fuer(a de la se<al infrarro%a que cada uno de los detectores ha recibido. 'stos valores como ya hemos comentado dependern de la fuer(a de la se<al y de la distancia de la fuente. 'l campo D!+t#n !# nos va a indicar la distancia a la que se encuentra la fuente del sensor devolvi0ndonos un valor entre I y A . 6uanto mayor sea el valor devuelto ms cerca estaremos de la fuente, con ms intensidad les llegar la lu( a los detectores, y cuanto ms peque<o sea el valor devuelto, ms le%os estaremos de la fuente. 6omentar que tiene mucha ms precisin a la hora de estimar distancias cortas !sobre los 3@I cm" que largas.

76

'n los campos de >u'r9# d' $# +'A#$ 'n '$ d't' tor on ) %!t+ !en la tabla en amarillo" se normali(an los valores recibidos por los detectores de forma que los valores devueltos no van a depender ni de la fuer(a de la se<al ni de la distancia de la fuente. *btendremos II si la fuer(a de la se<al es despreciable en ese detector. *btendremos I@ si la fuer(a de la se<al es d0bil en ese detector. *btendremos IA si la fuer(a de la se<al es fuerte en ese detector. /e este modo como observamos !en amarillo" en la -ablaH segn la

disposicin de estos valores en los detectores podemos tambi0n delimitar en cul de las J (onas se encuentra la fuente. 'l campo M#?or simplemente nos devuelve el mayor valor de intensidad de los detectores. 's decir, el mayor valor entre los registros IxHE, IxHH, IxH , IxHO, IxHF.

77

;`U `ona <) 01 02 03 04 05 06 07 08 09 @ <, AG @E IF II II II II II II

-abla H 7=':`A /' LA 1'hAL A << II AF @@ IO II II II II II /': E <= II II II IE IA IO I II II H <D II II II II IH I6 @H IF II /ist <F @4 EE @E I4 I@ I' @F IA @J
d@

D!r .x

<E II II II II II II I@ IH AA

<G IA I@ II II II II II II II

dA <A II IA IA IA II II II II II

dE <B II II II I@ IA I@ II II II

dH <C II II II II II IA IA IA II

d <D II II II II II II II I@ IA

+ayor <E AG AF @@ IO IA I6 @H IF AE

5PROGRAMACIN O4 !"n 1&


'xiste la posibilidad en :obot6 de tratar al sensor de ;: como si fuera un 1onar, seleccionndolo en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin 1onar. 1i utili(amos este modo se nos devolver la (ona en la que encuentra la fuente con los valores I3J, y podremos hacer programas de forma muy simple con este dato. 1in embargo no podremos acceder a otra informacin como la fuer(a con la que se recibe la se<al en cada uno de los detectores o la distancia a al que se encuentra la fuente del sensor. 'l siguiente programa hace uso del sensor de infrarro%os tratndolo como si fuera un 1onar haciendo que un robot con dos motores persiga una bola que va emitiendo rayos infrarro%os. Pro-r#2# IR o2o+on#r.
//*!!Sensor, S,, ?RSensor, sensorSONAR, = (tSensors) S,

//*!!Start automatically generated configuration code const tSensors ?RSensor //sensorSONAR

78

/*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S, $a%r6a un sensor de ti'o Sonar &ue $emos llamado ?RSensor*/

(oid seguir'elota()*

if(Sensor5alue(?RSensor)A;)* /*.e este modo 'odemos leer el (alor del sensor de muy sim'lemente como si de un sonar se tratara*/ +$ile(Sensor5alue(?RSensor)A;)* motorBmotor:C = D1; motorBmotor8C = 1; 7 7 if(Sensor5alue(?RSensor)G;)* +$ile(Sensor5alue(?RSensor)G;)* motorBmotor:C = 1; motorBmotor8C = D1; 7 7 if(Sensor5alue(?RSensor)==;) * +$ile(Sensor5alue(?RSensor)==;)* motorBmotor:C = 1; motorBmotor8C = 1; 7 7 //Seguimos Recto ///enemos &ue girar a la .!R ///enemos &ue girar a la ?EF

tas) main()*

79

+$ile(,)* seguir'elota() n-t.is'lay/e-t0ine(9, 2?R349d2,Sensor5alue(?RSensor))

+ait,=sec(,H) 7

C#r# t'r3+t! #+& 3 8rogramacin igual de sencilla que los sensores con los que no necesitamos traba%ar con el protocolo ;A6 ya que no necesitamos ir leyendo ningn registro.

Limitado en cuanto a posibilidades, no aprovecharemos el todo el potencial que ofrece el sensor, simplemente podremos detectar en qu0 (ona se encuentra la fuente de infrarro%os.

O4 !"n )&
=sando las funciones de ;A6 de las que dispone robot6 se puede acceder a los registros e ir leyendo las posiciones de memoria que nos interesen para nuestra aplicacin. /e este modo por e%emplo se puede hacer fcilmente un programa que siga a un baln que emite infrarro%os. _ si adems notamos que el baln est le%os porque la fuer(a con la que el detector lee la se<al es muy d0bil, podemos pedir ms velocidad a los motores. 'l programa que se muestra a continuacin es un e%emplo en el que se leen directamente los registros que nos interesan y se muestran por la pantalla del &,-. 8ara seleccionar esta configuracin deberemos ir a la configuracin del sensor y decirle que se trata de un sensor tipo ;A6, para ellos iremos a :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin sensor;A6custom.

80

Pro-r#2# Pru'%#I)C.
//*!!Sensor, //*!!Start !!*// const tSensors ?RSensor = (tSensors) S, //sensorI2Ccustom //*!!!!*// /*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S, $a%r6a un sensor de ti'o ?18 est#ndar &ue $emos llamado ?RSensor*/ tas) main() * int dir,f,,f1,f3,f9,f; ty'edef struct* %yte /am=s> %yte .ir.is'ositi(o %yte .ir?nicio 7 Salida?18 /* 8reamos una estructura en la &ue 'onemos el tamaIo del mensa>e &ue (amos a en(iar, &ue normalmente es 1, la direcci"n del dis'ositi(o &ue suele ser H-H1 ((iene es'ecificada 'or el fa%ricante) y la direcci"n donde (amos a em'e<ar a leer los datos, &ue en este caso nos interesa &ue sea la H-91 'or&ue es el 'rimer registro &ue &ueremos leer*/ %yte re'ly=essageBJC /*8reamos un (ector de J %ytes en el &ue se escri%ir#n los registros le6dos, &ue en este caso ser#n desde el H-91 al H-9K, si &uisieramos leer m#s registros, tendr6amos crear un (ector con m#s 'osiciones*/ n?18:ytesReadyBS,C=H /* Lunci"n de ro%ot8 'ara ?18 en la &ue iniciali<amos los :ytes S,, automatically IRSensor, sensorI2Ccustom generated configuration code.

're'arados del 'uerto S, a H*/

81

+$ile(n?18StatusBS,C== S/A/M8O==MN!N.?NO) +ait,=sec(1) /* Lunci"n de ro%ot8 &ue nos indica el estado del :us. A&u6 nos dedicamos a es'erar mientras el :us estP ocu'ado*/

Salida?18 Salida Salida./am=s> = 1 Salida..ir.is'ositi(o = H-H1 Salida..ir?nicio = H-91 /*?niciali<amos nuestra estructura con los (alores &ue nos interesen*/ +$ile(true) * n?18:ytesReadyBS,C=H send?18=sg(S,,Salida./am=s> ,J) /*Luncion de ro%ot8 en la &ue mandamos un mensa>e al 'uerto S, con el tamaIo &ue $emos indicado a J 'osicione consecuti(as de memoria*/ +$ile (n?18StatusBS,C==S/A/M8O==MN!N.?NO) +ait,=sec(1) /*!s'eramos a &ue el %us de>e de estar ocu'ado del mismo modo &ue antes*/ if (n?18StatusBS,C==NOM!RR) * /*Si no se $a 'roducido ningQn error en el %us*/ read?18Re'ly(S,, re'ly=essageBHC, J) /*0eemos la res'uesta del 'uerto S, y la escri%imos en el (ector &ue $emos creado*/ dir = (int)re'ly=essageBHC // ?ndica la direccion

82

f, = (int)re'ly=essageB,C f1 = (int)re'ly=essageB1C f3 = (int)re'ly=essageB3C f9 = (int)re'ly=essageB9C f; = (int)re'ly=essageB;C

//Luer<a en la <ona , // Luer<a en la <ona 1 //Luer<a en la <ona 3 //Luer<a en la <ona 9 //Luer<a en la <ona ;

/*8on(ertimos los :ytes en el ti'o &ue nos interese*/ n-t.is'lay/e-t0ine(,, 2dir3 4d2, dir) n-t.is'lay/e-t0ine(1, 2f, 4d2, f,) n-t.is'lay/e-t0ine(3, 2f1 4d2, f1) n-t.is'lay/e-t0ine(9, 2f3 4d2, f3) n-t.is'lay/e-t0ine(;, 2f9 4d2, f9) n-t.is'lay/e-t0ine(J, 2f; 4d2, f;) /*R los escri%imos en la 'antalla del NS/*/ 7 else * n-t.is'lay/e-t0ine(3, 2i1c err 4d2, n?18StatusBS,C) /* Si se $a 'roducimo algQn error, lo mostramos 'or la 'antalla de NS/*/ b b

C#r# t'r3+t! #+& 3 8rogramacin algo ms comple%a ya que requerimos estar pendientes de funcionar bien con el protocolo ;A6.

8odemos aprovechar todo el potencial que nos ofrece el sensor accediendo a todos los registros, lo que nos va a permitir anali(ar cosas como la fuer(a con la que cada detector recibe lu( de la fuente, la distancia a la que 0sta se encuentra, etcW

83

5CONCLUSIONES DEL SENSOR


1e trata de un sensor que traba%a muy bien a media distancia para encontrar o seguir ob%etos y adems con bastante precisin y fiabilidad, aportando muchos datos sobre la ubicacin y estado de la fuente de infrarro%os, de modo que con una buena programacin se pueden hacer aplicaciones muy buenas. Al ser un sensor especficamente dise<ado para encontrar fuentes de lu( infrarro%a, nos va a permitir distinguir cualquier ob%eto que tenga esta caracterstica, mientras que con otros sensores como el sonar distinguir ob%etos entre s se converta en una tarea muy difcil. 'sto nos va a permitir hacer seguimiento de ob%etos aunque haya otros elementos en el rea de funcionamiento del robot como por e%emplo en un partido de ftbol si la pelota emite en infrarro%os. =na desventa%a que nos encontramos con que el sensor es que no cubre completamente los EOI[, !se de%a algo menos de JI[ en la parte trasera en los que no detecta nada". _ como ya hemos comentado antes, el buen funcionamiento del sensor no depende nicamente de 0l mismo ya que se puede confundir o perder fiabilidad en recintos en los que haya lu( solar o cuando la fuente de infrarro%os no sea al suficientemente potente.

84

ANLISIS& 3 -raba%ando con la bola de .itechnic reci0n cargada, la detecta en un radio de GIcm X @m. 6onforme la batera de la bola se va agotando, la distancia se reduce. 3 &o puede detectar fuentes de lu( infrarro%a situados %usto detrs del sensor. -iene unos JI[ de ngulo ciego.

+ayor precisin estimando distancias cortas que estimando distancias largas.

La fuente no tiene por qu0 estar necesariamente en el mismo plano que el sensor, puede encontrarse detectando igual. por arriba o por deba%o y la seguir

85

3 3

&o es necesario que el sensor est0 en paralelo con la hori(ontal, sigue detectando igual el sector en el que se encuentra la fuente.

&o puede detectar las fuentes de infrarro%os si hay obstculos por el medio. La lu( infrarro%a directamente no le llega y no la puede medir.

/epende de la lu( solar para tener mayor o menor precisin detectando las fuentes. !6uanta menos lu( solar haya, me%or".

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]p@H5lc8iJJI

86

).). Br.:u$#
5 INTRODUCCIN AL SENSOR
La br%ula para &,- es un sensor fabricado por .itechnic que contiene una br%ula digital magn0tica que mide el campo magn0tico de la tierra y calcula la orientacin del sensor. 1e trata de un sensor con una precisin de @ grado !de los EOI[ de una circunferencia" y toma medidas @II veces por segundo. .ay que tener en cuenta a la hora de colocar el sensor que 0ste se encuentre en paralelo con el plano hori(ontal, ya que de no ser as aunque el robot gire el valor de la orientacin no cambiar. -ambi0n intentaremos que no se encuentre muy cerca de los motores del robot ya que pueden producir interferencias en la lectura y como ocurre con el resto de br%ulas evitaremos acercar imanes al sensor porque lo pueden descalibrar.

5 >UNCIONAMIENTO
'ste sensor no tiene mayor misterio que las tpicas br%ulas. 1abe en todo momento donde se encuentra en norte y te indica tu orientacin a partir de ese dato como si de una circunferencia se tratase. 'sto implica que a diferencia de las br%ulas de siempre que con una flecha te indican la orientacin, este sensor nos va a devolver un nmero que ir desde I a E J. 6orrespondi0ndose cada valor con una orientacin. I[ &orte. JI[ 'ste. 87

@GI[1ur. AFI[*este. La 7igura @ nos muestra distintos e%emplos del funcionamiento de la br%ula.

7igura @2 4r%ula orientada hacia el norte y br%ula orientada a @OI[.

88

8ara indicarnos todos estos valores, al tratarse de un sensor digital en ve( en analgico, dispone de @AG posiciones de memoria en las que va escribiendo todos los datos que el fabricante ha considerado necesarios. NOTA& 'n este y otros sensores el fabricante no especifica el contenido de todos y cada uno de los registros de memoria, por lo que si queremos comprobar que vienen todos los campos explicados en el manual o si hay algunos que se han de%ado !en este sensor slo vena explicado hasta el campo de la direccin IxHF" podemos entrar en la utilidad de ;A6 de robot 6. :obot &,- 4ricD -est ;A6. All tendremos que elegir ;A6 6ustom en el puerto que tenemos conectado el sensor, un valor de A en *utput +essage y en :eply Len pondremos el nmero de registros que queremos leer cada ve(. .aremos clicD en *nce e iremos viendo el contenido de los registros. -odo esto se puede ver en la 7iguraA.

7igura A2 6aptura de la utilidad ;A6 89

II3IF 3e 6hars &mero de versin del sensor IG3I7 3e 6hars 7abricante @I3@F 3e 6hars -ipo de sensor H@ 3e 4yte +odo de 6ontrol HA 3e 4yte *rientacin con A grados de precisin HE3e 4yte )rado adicional de precisin HH, H 3e 4yte *rientacin !LoK byte, .igh 4yte"

'l campo N.2'ro d' 1'r+!"n d'$ +'n+or simplemente nos indica la versin del sensor en el formato #f9n.m$ donde n es el principal nmero de versin y m es el nivel de revisin.

B S'rC '+4# !o 'n %$#n o D! r .x @@ 7/ f @1 O 9 @) E@ @ @, A' . -abla @ 'l campo >#%r! #nt' en este caso contiene #.i-echnc$. @< EA A @= EE E @D AI g @E AI g

D! r .x

@F HG .

@G OJ i

@A H -

@B O e -abla A

@C OE c

@D OG h

@E O' n

@> OE c

'l campo T!4o d' S'n+or contiene #6ompass $. 90

D!

1@

11 O7 o

1) O/ m

1, FI p

1< O@ a

1= FE s

1D FE s

1E AI g

r .x HE 6

-abla E

'l campo Modo d' Contro$ !IxH@" sirve para elegir el modo de funcionamiento del sensor. -iene dos modos, 2'd!r !valor del registro IxII" que es el que viene por defecto, y #$!%r#r !valor del registro IxHE". 'sto es porque cabe la posibilidad de que la br%ula pierda la calibracin debido a la proximidad de imanes, campos magn0ticos, interferencias, etc W 'n caso de que esto ocurriese tendramos que poner el sensor en modo calibrar escribiendo un IxHE en la posicin IxH@, orientar el sensor hacia el norte con una br%ula manual y una ve( lo tengamos orientado al norte escribir IxII en la posicin IxH@ para volver al modo medir con la br%ula bien orientada.

D!r .x

A[ *rientacion <) 4E

@[ adicional <, I@ -abla H

LoK 4yte << OF

.igh 4yte <= I@

'l campo Or!'nt# !"n on ) -r#do+ d' 4r' !+!"n nos devolver la orientacin de A grados en A grados porque el tipo byte slo llega hasta A O mientras que nosotros necesitamos EOI por eso tambi0n necesitamos el campo Gr#do #d! !on#$ d' 4r' !+!"n que puede valer I o @ para para sumarse o no a la orientacin con A grados de precisin y completar as hasta E J grados.

Los registros IxHH y IxH son otro modo de medir la Or!'nt# !"n. 6uando el registro IxH !.igh 4yte" valga I, el registro IxHH !LoK byte" tomar valores 91

de I a A

que correspondern a los primeros A O[. 6uando .igh 4yte valga @

se sumar A O al valor que tenga registro LoK 4yte que ir de I a @IE para poder llegar a los EOI[.

NOTA& A la hora de convertir el tipo byte a entero, vamos a obtener valores negativos a partir del @AF de la siguiente forma2 4yte F' !@AO" F7 !@AF" GI !@AG" G@ !@AJ" GA !@EI" GE !@E@" GH !@EA" /e modo que tendremos que convertir correctamente los valores para no obtener orientaciones errneas. =na forma de hacer esto por e%emplo sera la siguiente2 ;f!L4iI" L4]!@AGTL4"T@AG> 'nter o @AO @AF 3@AG 3@AF 3@AO 3@A 3@AH

'n la figura A vemos el funcionamiento de los campos .igh 4yte !.4" y LoK 4yte !L4".

92

7igura A 9amos a ver un e%emplo de cmo calcularamos la orientacin de las dos formas con los valores de la tabla2 Con $o+ r'-!+tro+ @H<)0 @H<,. A[ de orientacin ] Ix4E !int" 3FF 6orresponde a @FJ @[ adicional ] IxI@ !int" @ La frmula que usaremos ser2 *rientacin ] !A[ de orientacinfA" T @[ adicional *rientacin ] !@FJfA" T @ ] E J[ Con $o+ r'-!+tro+ @H<<0 @H<=. 93

.igh 4yte IxI@ .ay que sumar A O al valor de LoK 4yte LoK 4yte IxOF !int" @IE *rientacin ] A OT@IE ] E J

'l resto de registros hasta el @AF tendrn II. D! r .x <D II <E II <F II .... EC ED II EE II E> II

II II -abla

5PROGRAMACIN O4 !"n 1&


'n la versin @.H de robot6 ya se ha a<adido la posibilidad de decirle directamente al programa que se trata del sensor br%ula de .itechnic seleccionndolo en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos AlloK Erd el puerto y en el men desplegable seleccionamos .i-echnic 8arty 1ensors from .i-echnic y si vemos que no aparece 6ompass. /eberemos asegurarnos de que tenemos seleccionada la pesta<a asegurarnos de tener la opcin 5indoK +enu Level 'xpert activada. 6on esta configuracin podremos tratar como un sensor ms sin necesidad de hacer uso del protocolo ;A6, podemos leer directamente el valor del sensor que nos devolver un valor entre I y E J.

Pro-r#2# Bru:u$#N.

94

//*!!Sensor, //*!!Start !!*// const tSensors

S9, automatically :ru>ula

:ru>ula, sensor?18@i/ec$nic8om'ass, generated configuration = (tSensors) code. S9

//sensor?18@i/ec$nic8om'ass// /*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S9 $a%r6a un sensor de ti'o @i/ec$nic 8om'ass al &ue $emos llamado :ru>ula*/

tas) main()* +$ile(,)* n-t.is'lay/e-t0ine(9,2.ireccion3 4d2,Sensor5alue(:ru>ula)) 7 7 /*.e este modo 'odemos leer el (alor del sensor de muy sim'lemente como si de un sensor analogico se tratara y 'oder $acer con el lo &ue &ueramos*/

C#r# t'r3+t! #+& 3 8rogramacin igual de sencilla que los sensores con los que no necesitamos traba%ar con el protocolo ;A6 ya que no necesitamos ir leyendo ningn registro y adems obtenemos las mismas prestaciones que traba%ando con el protocolo ;A6.

O4 !"n )&
95

=sando las funciones de ;A6 de las que dispone robot6 se puede acceder a los registros e ir leyendo las posiciones de memoria que nos interesen para nuestra aplicacin. /e este modo por e%emplo se puede hacer fcilmente un programa que nos diga la orientacin en cada momento o cuando se la pidamos. 'l programa que se muestra a continuacin es un e%emplo en el que se leen directamente los registros que nos interesan y se muestran por la pantalla del &,-. 8ara decirle a robot6 que queremos usar las funciones de de ;A6 tendremos que configurar la br%ula como un sensor;A6 para ellos iremos a :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin sensor;A6custom. Pro-r#2# Bru:u$#.
//*!!Sensor, //*!!Start !!*// const tSensors :ru>ula = (tSensors) S9 //sensorI2CCustom //*!!!!*// /*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S9 $a%r6a un sensor de ti'o ?18 est#ndar al &ue $emos llamado :ru>ula*/ tas) main() * int @eading1deg,@eading,degadd,0:,@:,dir S9, automatically Brujula, sensorI2CCustom, generated configuration code.

ty'edef struct* %yte /am=s> %yte dir.is'ositi(o %yte dir?nicio %yte n.ata 7 Salida?18

96

/* 8reamos una estructura en la &ue 'onemos el tamaIo del mensa>e &ue (amos a en(iar, &ue normalmente es 1, la direcci"n del dis'ositi(o &ue suele ser H-H1 ((iene es'ecificada 'or el fa%ricante) y la direcci"n donde (amos a em'e<ar a leer los datos, &ue en este caso nos interesa &ue sea la H-91 'or&ue es el 'rimer registro &ue &ueremos leer*/

%yte re'ly=essageB9C /*8reamos un (ector de 9 %ytes en el &ue se escri%ir#n los registros le6dos, &ue en este caso ser#n desde el H-91 al H-9;, si &uisieramos leer m#s registros, tendr6amos crear un (ector con m#s 'osiciones*/

n?18:ytesReadyBS9C=H /* Lunci"n de ro%ot8 'ara ?18 en la &ue iniciali<amos los :ytes

're'arados del 'uerto S9 a H*/

+$ile(n?18StatusBS9C== S/A/M8O==MN!N.?NO) +ait,=sec(1) /* Lunci"n de ro%ot8 &ue nos indica el estado del :us. A&u6 nos dedicamos a es'erar mientras el :us estP ocu'ado*/

Salida?18 Salida Salida./am=s> = 1 Salida.dir.is'ositi(o = H-H1 Salida.dir?nicio = H-91 /*?niciali<amos nuestra estructura con los (alores &ue nos interesen*/ +$ile(true) * n?18:ytesReadyBS9C=H send?18=sg(S9,Salida./am=s> ,9)

97

/*Luncion de ro%ot8 en la &ue mandamos un mensa>e al 'uerto S9 con el tamaIo &ue $emos indicado a 9 'osiciones consecuti(as de memoria*/

+$ile (n?18StatusBS9C==S/A/M8O==MN!N.?NO) +ait,=sec(1) /*!s'eramos a &ue el %us de>e de estar ocu'ado del mismo modo &ue antes*/

if (n?18StatusBS9C==NOM!RR) * /*Si no se $a 'roducido ningQn error en el %us*/ read?18Re'ly(S9, re'ly=essageBHC, 9) /*0eemos la res'uesta del 'uerto S9 y la escri%imos en el (ector &ue $emos creado*/

@eading1deg = (int)re'ly=essageBHC @eading,degadd = (int)re'ly=essageB,C 0: = (int)re'ly=essageB1C @: = (int)re'ly=essageB3C

// Orientacion 1 grados //Orado adicional

// 0o+ :yte //@ig$ :yte

/*8on(ertimos los :ytes en el ti'o &ue nos interese, en este caso enteros*/

if(@:==H)* if(0:GH)* 0:=(,1TU0:)U,1T 7 /*8omo ti'o %yte a 'artir de ,1K da numeros negati(os $acemos esto 'ara 'asar a 'ositi(o $asta 1;;*/ dir=0: 7 else dir=1;JU0: /*8alculamos la ortientacion del sensor tal y como e-'lica%amos en los e>em'los de antes con @ig$ :yte y 0o+ :yte, 'odriamos $acerlo tam%ien

98

con la formula Orientaci"n = (1V de orientaci"n*1) U ,V adicional estando 'endientes de con(ertir la (aria%le @eading1deg correctamente cuando nos de(uel(a (alores negati(os*/

n-t.is'lay/e-t0ine(,, 21deg@ead3 4d2, @eading1deg) n-t.is'lay/e-t0ine(1, 2,degAdd 4d2, @eading,degadd) n-t.is'lay/e-t0ine(3, 20: 4d2, 0:) n-t.is'lay/e-t0ine(9, 2@: 4d2, @:) n-t.is'lay/e-t0ine(;, 2.ir 4d2, dir) /*R los escri%imos en la 'antalla del NS/*/ 7 else * n-t.is'lay/e-t0ine(3, 2i1c err 4d2, n?18StatusBS9C) /* Si se $a 'roducimo algQn error, lo mostramos 'or la 'antalla de NS/*/ 7 7 7

C#r# t'r3+t! #+& 3 8rogramacin algo ms comple%a ya que requerimos estar pendientes de funcionar bien con el protocolo ;A6.

-endremos que tener cuidado con los valores negativos al pasar de 4yte a ;nt

&o conseguimos ninguna me%ora significativa al programar de este modo, por lo que resultar casi siempre ms recomendable emplear la opcin anterior.

99

5CONCLUSIONES DEL SENSOR


La br%ula de .itechnic es un sensor muy robusto que nos va a indicar la orientacin de nuestro robot. Algo que puede parecer tan simple, abre muchas posibilidades a la hora de programar al &,-. 8odremos memori(ar recorridos no preestablecidos, esquivar obstculos y volver a nuestra ruta con facilidad y nos va a permitir hacer cualquier aplicacin que tenga que ver con controlar el espacio y la posicin de robot con mucha ms facilidad. -endremos que tener en cuenta para hacer funcionar correctamente a la br%ula que se encuentre en un plano paralelo a la hori(ontal. An as podremos vencer rampas o caminos abruptos y volver a calcular la orientacin una ve( nos encontremos en terreno llano. 'l otro elemento que deberemos evitar ya que puede influir en el funcionamiento de la br%ula o perturbar su calibracin es no acercar mucho el sensor a ambientes con campos magn0ticos cercanos. ANLISIS& 3 8roporciona siempre y de forma muy fiable la orientacin del robot aunque nos encontremos en espacios cerrados o con muchos obstculos convirti0ndose en un sensor bastante independiente del medio.

8uede perder la calibracin si lo introducimos en ambientes con campos magn0ticos cercanos aunque entrando en el modo de calibracin lo podremos corregir.

.ay que mantenerlo en paralelo con el plano hori(ontal para que se oriente correctamente

100

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]A-bcAc;sUqo^feature]related

101

)., G!r"+ o4o


5 INTRODUCCION AL SENSOR
'l girscopo para &,- es un sensor fabricado por .itechnic que sirve para detectar con precisin los giros de nuestro robot. 'ste sensor nos va a proporcionar los grados por segundo que se recorren en una rotacin as como tambi0n nos informar de la direccin de la rotacin. 's capa( de medir TQ3 EOI[ por segundo como mximo ratio de rotacin y podremos leer las medidas alrededor de unas EII veces por segundo. 'sto nos puede resultar muy til para cualquier aplicacin en la que debamos medir rotaciones, como por e%emplo en robots que quieran mantener el equilibrio, balanceos, etcW 'ste sensor contiene un nico e%e en el que puede detectar la rotacin y medirnos los grados recorridos por segundo, por lo que ser importante como montamos el sensor en el &,- dependiendo de en que e%e se vayan a producir los giros. 'n la 7igura @ vemos cul es el e%e de giro que es capa( de medir el girscopo.

7igura @2 '%e de rotacin que mide el sensor.

102

5 >UNCIONAMIENTO
'l giroscopio funciona gracias a un resonador de cuar(o que segn va rotando se lo va indicando al robot.

1i bien existe al menos un sensor giroscpico integrado cuyo funcionamiento contina basado en un elemento circular !un anillo, en el caso que conocemos", la realidad es que la mayora de los sensores actuales de peque<o tama<o, como en nuestro caso, estn basados en circuitos integrados cuya base son peque<smas lengjetas vibratorias, construidas directamente sobre el chip de silicio. 1u deteccin se basa en que las pie(as cermicas en vibracin son su%etas a una distorsin que se produce por el efecto 6oriolis !cambios en la velocidad angular".

5PROGRAMACIN
1e trata de un sensor analgico, por lo que no se puede utili(ar el protocolo ;A6 con el mismo. 'n :obot6 podremos programar fcilmente el girscopo, solo tenemos que decirle en que puerto est conectado el sensor. 8ara ello haremos lo siguiente2 en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin .i-echnic )yro. Adems disponemos de una librera ya implementada )yro/river.c en el que disponemos de funciones para poder mane%ar me%or el sensor. 'l siguiente programa es un e%emplo muy simple en el que hemos elegido la opcin de tener la lmpara encendida y nos dedicamos a mostrar los valores que nos devuelve el sensor por pantalla. 103

Pro-r#2# *!T' In! G?ro.


const tSensors )OyroSensor = S3 // 8onectamos el girosco'o al 'uerto 3 Winclude 2Oyro.ri(er.c2 tas) main() * float fOldAngle = D, //5aria%le 'ara almacenar el angulo anterior. // ?niciali<amos la 'antalla erase.is'lay() n-t.is'lay:igStringAt(1;, ;;, 2Oyro2) n-t.is'lay:igStringAt(,;, 3X, 2Angle2) /* !s'eramos 'ara &ue el girosco'io se esta%ilice, lo &ue le cuesta unos 'ocos segundos. Si 'refieres no tener &ue es'erar 'uedes modificar el dri(er y cam%iar el (alor de %ias del sensor con una constante en lugar de c"mo se calcula.*/ +$ile (!%?sOyro?nitiali<ed()) * // =ostramos 'or 'antalla &ue se iniciali<a if (%?sOyro?nitiali<ed()) %rea) n-t.is'lay:igStringAt(H, 13, 2 Startu' 2) +ait,=sec(1;H) // Seguimos es'erando if (%?sOyro?nitiali<ed()) %rea) n-t.is'lay:igStringAt(H, 13, 2 +ait,=sec(1;H) // Seguimos es'erando 7 // :ucle infinito mostrando el #ngulo de giro 'or 'antalla. +$ile (true) 2) //?nclu6mos la li%rer6a del sensor.

104

* if (fOyroAngle != fOldAngle) * n-t.is'lay:igStringAt(H, 13, 2 fOldAngle = fOyroAngle 7 +ait,=sec(3) 7 7 43d 2, (long) fOyroAngle)

5CONCLUSIONES DEL SENSOR


'l girscopo se trata de un sensor para ser utili(ado en ocasiones muy especficas en las que necesitemos conocer la velocidad angular del robot en un determinado e%e, funcin que reali(a con mucha precisin y muy buenas respuestas para cualquier giro que no sea extremadamente brusco y en casi cualquier circunstancia ambiental. 6omo factores a tener en cuenta, deberemos prestar atencin a la colocacin del sensor en el robot, ya que dependiendo de 0sta, medir los giros en un e%e o en otro. -ambi0n resulta interesante para obtener lecturas precisas, tomar algunas de las muestras que nos devuelve el sensor durante uno o dos segundos mientras el robot est0 quieto en una posicin y utili(ar las lecturas obtenidas para generar un valor medio de #bias$. 'n el programa de e%emplo que hemos puesto anteriormente este proceso lo reali(a la funcin %?sOyro?nitiali<ed(),
declarada en la libera Oyro.ri(er.c.

105

ANLISIS& 3 3 3 1ensor muy preciso ba%o cualquier circunstancia del entorno. .ay que tener en cuenta la colocacin del sensor en el robot. 8ara sacarle la mxima precisin, es conveniente calibrarlo inicialmente durante unos segundos.

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]Hul4:UC6KdH http2QQKKK.youtube.comQKatch\v]fG%x)sgEpI_^feature]related

106

S'n+or d' o$or


5 INTRODUCCIN AL SENSOR
'l sensor de color para &,- es un sensor fabricado por .itechnic que sirve para distinguir el color de diferentes superficies entre una gran gama de colores. 6onsta de tres diodos !Leds" que emiten lu( de diferentes colores y al iluminar una superficie miden la intensidad de cada color en la lu( refle%ada por la superficie. +idiendo la intensidad con la que cada color ha sido refle%ado, el sensor de color puede determinar de qu0 color es la superficie que nos interesa. =n sensor como 0ste nos permitir hacer aplicaciones para clasificar ob%etos de distintos colores, caminar por superficies dentro de un rango de color, o cualquier aplicacin en la que sea necesario distinguir los distintos colores de los ob%etos.

5 >UNCIONAMIENTO
'l funcionamiento es similar al del sensor de lu(, pero esta ve( s que vamos a distinguir los colores. 8ara entender me%or cmo funciona el sensor veamos un poco de teora del color sobre los materiales2 Los cuerpos opacos absorben gran parte de la lu( que los ilumina y refle%an una parte relativamente peque<a. 6uando este cuerpo absorbe todos los colores contenidos en la lu( blanca, el ob%eto parece negro y cuando refle%a todos los colores del espectro, el ob%eto parece blanco. 9er 7igura@.

107

7igura @2 Lu( sobre un ob%eto blanco y sobre un ob%eto negro. Los colores absorbidos desaparecen en el interior del ob%eto, los refle%ados llegan a nuestros o%os. Los colores que visuali(amos son, por tanto, aquellos que los propios ob%etos no absorben, sino que los refle%an. 9er figura A.

7igura A2 Lu( refle%ada por un tomate. Lo que hace el sensor de color es precisamente esto, iluminar una superficie con lu( y medir los colores de la lu( que esa superficie nos ha refle%ado para determinar de qu0 color se trata. 'n la 7igura E vemos una fotografa del sensor. Las dos cpsulas que podemos ver no son los leds. Los tres leds estn situados en la cpsula superior y podremos apreciar los tres colores que emiten cuando el sensor se pone en funcionamiento. La cpsula inferior es el sensor que mide la intensidad de la lu( refle%ada por el ob%eto.

108

7igura E2 7otografa del sensor

6uando el sensor mide la lu( recibida, la interpreta y nos devuelve un nmero correspondiente al color detectado. S! no d't' t# n!n-.n d't' t#do '+ n'-ro0 no+ d'1o$1'rC un @. 'n la figura H podemos ver un esquema del funcionamiento del sensor en el que una superficie absorbe todos los colores menos el ro%o, lo que significa que esa superficie es de color ro%o y el sensor nos devuelve el valor correspondiente. o$or o '$ o$or

7igura H2 7uncionamiento del sensor de color 'n la figura podemos ver la relacin entre los valores y el color que se le ha hecho responder a cada valor.

109

7igura 2 6orrespondencia entre el valor devuelto y los colores.

Aunque en la tabla veamos que solo hay @F colores diferentes, si indagamos un poco ms en el funcionamiento del sensor y en el contenido de cada uno de los registros, vamos a darnos cuenta de que podremos distinguir muchsimos colores ms. 9eamos cmo. /el mismo modo que el resto de sensores, el sensor de color tiene @AG posiciones de memoria en las que va escribiendo todos los datos que el fabricante ha considerado necesarios. NOTA& 'n este y otros sensores el fabricante no especifica el contenido de todos y cada uno de los registros de memoria, por lo que si queremos comprobar que vienen todos los campos explicados en el manual o si hay algunos que se han de%ado !en este sensor slo vena explicado hasta el campo de la direccin IxHF" podemos entrar en la utilidad de ;A6 de robot 6. :obot &,- 4ricD -est ;A6. All tendremos que elegir ;A6 6ustom en el puerto que tenemos conectado el sensor, un valor de A en *utput +essage y en :eply Len pondremos el nmero de registros que queremos leer cada ve(. .aremos clicD en *nce e iremos viendo el contenido de los registros. -odo esto se puede ver en la 7igura O.

110

7igura O2 6aptura de la utilidad ;A6 II3IF 3e 6hars &mero de versin del sensor IG3I7 3e 6hars 7abricante @I3@F 3e 6hars -ipo de sensor H@ 3e 4yte :eservado para futuros usos HA 3e 4yte 6olor !I3@F" HE 3e 4yte :o%o HH3e 4yte 9erde H 3e 4yte A(ul HO, HF3e 4yte 1e<al analgica de :o%o !@I bits" HG, HJ3e 4yte 1e<al analgica de 9erde !@I bits" HA, H4 3e 4yte 1e<al analgica de A(ul !@I bits" H6 3e 4yte kndice de 6olor !Obits" xx::))44 H/ 3e 4yte :o%o &ormali(ado H' 3e 4yte 9erde &ormali(ado H7 3e 4yte A(ul &ormali(ado 111

'l campo N.2'ro d' 1'r+!"n d'$ +'n+or simplemente nos indica la versin del sensor en el formato #f9n.m$ donde n es el principal nmero de versin y m es el nivel de revisin.

B S'rC '+4# !o 'n %$#n o D! r .x @@ 7/ f @1 O 9 @) E@ @ @, @< @= EE E @D AI g @E AI g

A' EA . A -abla @

'l campo >#%r! #nt' en este caso contiene #.i-echnc$. D! r .x @F HG . @G OJ i @A H @B O e -abla A 'l campo T!4o d' S'n+or contiene #6olor $. D! r .x 1@ HE 6 11 O7 o 1) O6 l 1, O7 o -abla E 1< FA r 1= AI g 1D AI g 1E AI g @C OE c @D OG h @E O' n @> OE c

'l registro IxH@ :eservado para futuros usos. NOTA& Llegados aqu 6onviene recordar que la notacin :)4 consiste en tomar el ro%o, el verde y el a(ul como colores primarios cuya me(cla entre s 112

generar el resto de colores del espectro. =na peque<a muestra de esta me(cla se puede observar en la 7iguraO. 8ara indicar con qu0 proporcin me(clamos cada color, se asigna un valor a cada uno de los colores primarios, de manera, por e%emplo, que el valor I significa que no interviene en la me(cla y, a medida que ese valor aumenta, se entiende que aporta ms intensidad a la me(cla. Aunque el intervalo de valores podra ser cualquiera !valores reales entre I y @, valores enteros entre I y EF, etc.", es frecuente que cada color primario se codifique con un byte !G bits". As, de manera usual, la intensidad de cada una de las componentes se mide segn una escala que va del I al A . ,I,I", el verde con !I,A ,I" y el a(ul

8or lo tanto, el ro%o se obtiene con !A con !I,I,A

", obteniendo, en cada caso un color resultante monocromtico. La

ausencia de color se obtiene cuando las tres componentes son I, !I,I,I". La combinacin de dos colores a nivel A !I,A ,A " y el magenta !A ,I,A ". con un tercero en nivel I da lugar a ,A ,I", el cyan

tres colores intermedios. /e esta forma el amarillo es !A

'l color blanco se forma con los tres colores primarios a su mximo nivel !A ,A ,A "

7igura F2 :)4

113

&ivel de se<al analgica


6olor : ) 4 : ) 4 kndic e :

&ormali(ado
) 4

D!r .x

<) 02 09 08 11

<, II AA H4 HO

<< II II @7 HO

<= HO II II HJ

<D II II II II

<E IA F4 // 6/

<F II II II II -abla H

<G @@ IE FH /I

<A II II II II

<B F I@ AH 7E

<C IE EI EH A4

<D II 77 77 7H

<E II II O4 7O

<> 77 II II 77

'l campo Co$or nos devolver el nmero de color que ha detectado el sensor con un valor de I3@F correspondiente a los colores vistos en la 7igura . Al devolver un rango tan limitado de colores puede que la superficie refle%ada no se corresponda exactamente con el color de la tabla, el sensor devuelve el nmero del color que ms se parece al de la superficie aunque no sea un color exactamente igual.

7igura 2 6orrespondencia entre el valor devuelto y los colores. /ebido a esto, si el usuario necesita ms precisin a la hora de estimar los colores que queramos anali(ar, podemos hacer uso del resto de los registros del sensor en el que nos viene informacin adicional.

Los campos Ro:o0 V'rd'0 A9u$ !registros IxHE, IxHH, IxH " nos devuelven el valor de cada una de las componentes de color en :)4, !:o%o, 9erde, A(ul" con valores de I a @AG. 1iendo I la ausencia de esa componente de color y 114

@AG la totalidad de la misma. 1lo nos hace falta conocer algo de teora del color y como se comportan las me(clas de colores para saber qu0 color estamos observando.

8or e%emplo2 'n la primera fila de la -ablaH el sensor nos ha devuelto un valor de IxIA en el campo 6olor, que mirando en la 7igura vemos que se corresponde con el a(ul. 1i luego nos fi%amos en los campos :o%o, 9erde, A(ul, vemos que slo el registro correspondiente al a(ul !IxH " tiene valor, lo que significa que efectivamente nos encontramos ante un color a(ul. 'n la segunda fila de -ablaHvemos que el sensor nos devuelve un valor de IxIJ en el campo 6olor, que mirando en la 7igura vemos que se trata del ro%o. 1i luego nos fi%amos en los registros del :)4 vemos que slo el campo correspondiente al ro%o tiene valor y por lo tanto nos encontramos ante un color ro%o. La tercera fila de la -ablaHya presenta alguna novedad, el campo 6olor nos devuelve un valor de IxIG correspondiente a un ro%o anaran%ado. 1i nos fi%amos ahora en los registros del :)4 vemos que tanto el campo del ro%o como el del verde tienen valor, mientras que el del a(ul no. Adems observamos que el valor del componente ro%o !IxH4" es mayor que el del componente verde !Ix@7". Al me(clar ro%o, con algo de verde, el color que obtenemos es el naran%a, mientras que si las dos cantidades de ro%o y de verde hubieran sido similares, significara que estaramos ante un color amarillo.

1i an no tuvi0ramos suficiente precisin a la hora de distinguir los colores que queremos, podemos hacer uso del campo N!1'$ d' S'A#$ An#$"-! # en el que cada componente de color viene codificado con @I bits, por lo que necesitamos A registros para cada componente de color. 'l IxHO, IxHF para el ro%o, IxHG, IxHJ para el verde y IxHA, IxH4 para el a(ul. /e este modo podremos afinar mucho ms a la hora de ver cunto hay de cada componente de color en la superficie que estamos anali(ando.

115

8or e%emplo& 'n la primera fila, con el color a(ul, en el campo :)4 veamos que tenamos un valor II de componente ro%o y de componte verde. 1in embargo y seguimos anali(ando los registros y pasamos a mirar el campo de &ivel de 1e<al Analgica nos encontramos con que en realidad s que hay unas componentes muy peque<as de color ro%o y de color verde. !IxIA y Ix@@ respectivamente" mientras que de a(ul comprobamos que sigue teniendo un valor alto comparndolo con los otros dos !Ix F" 'l #24o nd! ' d' o$or devuelve un nmero de O bits en el que los bits H codifican el ro%o, el E y A el verde y el @ y I el a(ul. 8or lo tanto si volvemos al e%emplo de la primera fila de la -ablaH vemos que el campo kndice contiene IxIE que traducido a binario es IIII II@@. 1i hacemos caso a la descripcin del campo lo que obtenemos es que2 xx:II)II4@@ de componente ro%o tenemos II, de verde II y de a(ul @@ por lo que nos encontramos con un a(ul puro. La segunda fila 6ampo kndice ] IxEI II@@ IIII xx:@@)II4II :o%o La tercera fila 6ampo kndice ] IxEH II@@ I@II xx:@@)I@4II &aran%a 8or ltimo tenemos los campos Nor2#$!9#do+ en los que asigna a cada componente de color valores de I a A . dste es el modo en el que 1e trata normalmente se traba%a en los computadores con el color. y

posiblemente de los registros ms importantes de este sensor ya que casi todas las aplicaciones para computadores traba%an con estos cdigos de color. 'n ;nternet podemos encontrar muchas pginas con tablas de colores y sus cdigos hexadecimales como por e%emplo en2 http2QQKKK.cuervoblanco.comQcoloresghexadecimales.html * aplicaciones en las que si te interesa algn color puedes escribir el cdigo hexadecimal y te da la referencia de color o seleccionas una referencia y te da

116

el

cdigo

hexadecimal

como

por

e%emplo

en2

http2QQKKK.colorschemer.comQonline.html

5PROGRAMACIN O4 !"n 1&


'n la versin @.H de robot6 ya se ha a<adido la posibilidad de decirle directamente al programa que se trata del sensor br%ula de .itechnic seleccionndolo en :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos .i-echnic 6olor. /eberemos asegurarnos de que tenemos seleccionada la pesta<a AlloK Erd 8arty 1ensors from .i-echnic y si vemos que no aparece asegurarnos de tener la opcin 5indoK +enu Level 'xpert activada. 6on esta configuracin podremos tratar como un sensor ms sin necesidad de hacer uso del protocolo ;A6 pero puede que tengamos que utili(ar funciones de libreras ya implementadas para sacarle todo el partido. Pro-r#2# Co$orN.
//*!!Sensor, //*!!Start !!*// const tSensors 8olor = (tSensors) S9 //sensor?18@i/ec$nic8olor S9, automatically 8olor, sensor?18@i/ec$nic8olor, generated configuration code.

Winclude 2Ad(ancedSensors.c2 /*/enemos &ue incluir esta li%reria 'ara 'oder $acer uso de funciones ya definidas &ue nos facilitaran la tarea. !ste fic$ero se encuentra en la car'eta ?ncludes de ro%ot8*/ tas) main()*

117

int Ro>o int 5erde int A<ul /*.efinimos una (aria%le 'ara cada color*/ +$ile (true) * getRO:(S9, Ro>o, 5erde, A<ul) /*8on la funcion del fic$ero &ue $emos incluido es'ecificamos el 'uerto al &ue esta conectado el sensor y le 'asamos como 'arametro las (aria%les*/ n-t.is'lay/e-t0ine(1, 28olor3 4d2, (s$ort) Sensor5alueB8olorC)

/*/am%ien 'odemos leer directamente el color &ue estamos (iendo*/ n-t.is'lay/e-t0ine(3, 2Red3 n-t.is'lay/e-t0ine(9, 2Oreen3 n-t.is'lay/e-t0ine(;, 2:lue3 4d2, 4d2, 4d2, Ro>o) 5erde) A<ul)

/*Linalmente las im'rimimos 'or 'antalla*/

b b

C#r# t'r3+t! #+& 3 8odemos obtener el valor del color de forma muy sencilla leyendo directamente del sensor. 3 1i queremos sacar ms partido al sensor y obtener las tres componentes de color separadas o entrar ms en detalle, deberemos utili(ar otras funciones implementadas en libreras.

O4 !"n)&

118

=sando las funciones de ;A6 de las que dispone robot6 se puede acceder a los registros e ir leyendo las posiciones de memoria que nos interesen para nuestra aplicacin. /e este modo podremos hacer programas que afinen mucho ms a la hora de determinar un color o que nos devuelva directamente las referencias de cada componente en hexadecimal. 'l programa que se muestra a continuacin es un e%emplo en el que se leen directamente los registros que nos interesan y se muestran por la pantalla del &,-. 8ara decirle a robot6 que queremos usar las funciones de de ;A6 tendremos que configurar la br%ula como un sensor;A6 para ellos iremos a :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos la opcin sensor;A6custom.

Pro-r#2# Co$or.
//*!!Sensor, !!*// const tSensors 8olorSensor = (tSensors) S, //sensor?188ustom /*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S, $a%r6a un sensor de ti'o ?18 est#ndar al &ue $emos llamado :ru>ula*/ tas) main() * int color, R,O,:l S,, 8olorSensor, sensor?188ustom, ,

ty'edef struct* %yte /am=s> %yte Ss.is'ositi(o %yte Ss?nicio %yte n.ata 7 Salida?18

119

/* 8reamos una estructura en la &ue 'onemos el tamaIo del mensa>e &ue (amos a en(iar, &ue normalmente es 1, la direcci"n del dis'ositi(o &ue suele ser H-H1 ((iene es'ecificada 'or el fa%ricante) y la direcci"n donde (amos a em'e<ar a leer los datos, &ue en este caso nos interesa &ue sea la H-91 'or&ue es el 'rimer registro &ue &ueremos leer*/ %yte re'ly=essageB,9C /*8reamos un (ector de ,9 %ytes en el &ue se escri%ir#n los registros le6dos, &ue en este caso ser#n desde el H-91 al H-9L, si &uisieramos leer m#s registros, tendr6amos crear un (ector con m#s 'osiciones*/

n?18:ytesReadyBS,C=H /* Lunci"n de ro%ot8 'ara ?18 en la &ue iniciali<amos los :ytes

're'arados del 'uerto S, a H*/

+$ile(n?18StatusBS,C== S/A/M8O==MN!N.?NO) +ait,=sec(1) /* Lunci"n de ro%ot8 &ue nos indica el estado del :us. A&u6 nos dedicamos a es'erar mientras el :us estP ocu'ado*/

Salida?18 Salida Salida./am=s> = 1 Salida.Ss.is'ositi(o = H-H1 Salida.Ss?nicio = H-91 /*?niciali<amos nuestra estructura con los (alores &ue nos interesen*/

+$ile(true) * n?18:ytesReadyBS,C=H

120

send?18=sg(S,,Salida./am=s> ,,9) /*Luncion de ro%ot8 en la &ue mandamos un mensa>e al 'uerto S, con el tamaIo &ue $emos indicado a ,9 'osiciones consecuti(as de memoria*/

+$ile (n?18StatusBS,C==S/A/M8O==MN!N.?NO) +ait,=sec(;HH) /*!s'eramos a &ue el %us de>e de estar ocu'ado del mismo modo &ue antes*/

if (n?18StatusBS,C==NOM!RR) * /*Si no se $a 'roducido ningQn error en el %us*/ read?18Re'ly(S,, re'ly=essageBHC, ,9) /*0eemos la res'uesta del 'uerto S, y la escri%imos en el (ector &ue $emos creado*/ color = (int)re'ly=essageBHC R = (int)re'ly=essageB,C O = (int)re'ly=essageB1C :l =(int)re'ly=essageB3C /*8on(ertimos los :ytes en el ti'o &ue nos interese, en este caso enteros*/ n-t.is'lay/e-t0ine(,, 28olor34s2,color) n-t.is'lay/e-t0ine(1, 2Ro>o3 4d2, R) n-t.is'lay/e-t0ine(3, 25erde3 4d2, O) n-t.is'lay/e-t0ine(9, 2A<ul3 4d2, :l) /*R los escri%imos en la 'antalla del NS/*/ 7 else * n-t.is'lay/e-t0ine(3, 2i1c err 4d2, n?18StatusBS9C) /* Si se $a 'roducimo algQn error, lo mostramos 'or la 'antalla de NS/*/

121

7 7 7

C#r# t'r3+t! #+& 3 8rogramacin algo ms comple%a ya que requerimos estar pendientes de funcionar bien con el protocolo ;A6.

8odemos aprovechar todo el potencial que nos ofrece el sensor accediendo a todos los registros, lo que nos va a permitir anali(ar los colores con mucha ms precisin y detalle.

-ambi0n podremos leer los colores en el modo que nos interese sin estar limitados por las funciones ya desarrolladas. analgicos, etcW 8odemos leer si queremos slo el campo ndice, o los colores normali(ados, o los valores

5CONCLUSIONES DEL SENSOR


1e trata de un sensor que ofrece una gran cantidad de posibilidades a la hora de determinar un color. /esde la ms general englobando todos los colores con @F valores hasta hacer una lectura analgica de la lu( recibida de cada componente y transformarlas en palabras de @Ibits, por lo que se convierte en un sensor capa( de distinguir infinidad de colores por muy parecidos que pare(can. 'l principal defecto de este sensor es que el ha( de lu( q proyecta para leer el refle%o necesita estar muy prximo a la superficie, sobre unos Acm, lo que limita bastante la funcionalidad del sensor cerrando mucho el abanico de aplicaciones que se pueden desarrollar con 0l. ANLISIS& 3 )ran precisin a la hora de distinguir colores.

122

8uedes elegir entre muchos modos diferentes de lectura para detectar un color.

&ecesita estar muy prximo a la superficie !Acm" lo que restringe mucho las posibilidades del sensor.

E;EMPLOS DE USO& http2QQKKK.youtube.comQKatch\v]CBC%Ut=f)t_^feature]related http2QQKKK.youtube.comQKatch\v] fAn AI.bh= http2QQKKK.youtube.comQKatch\v];iBdnObgEfs^feature]related

123

CC2#r# JN7TC#2K
5 INTRODUCCIN AL SENSOR
&,-6am es un sensor de Lego +ind1torm dise<ado para a<adir

caractersticas de visin artificial al robot &,-. 6omo veremos ms adelante, la cmara no enva la imagen completa de lo que est0 viendo al &,-, sino que mandar informacin relativa a la serie de ob%etos que nos puedan interesar. La cmara dispone de las siguientes funcionalidades2 31eguimiento de hasta G ob%etos de distintos colores a EI framesQsegundo 36onfiguracin de &,-6am a trav0s de =14 en 5indoKs,8 o 5indoKs 9ista 3 1oporta dos modos de seguimiento2 1eguimiento de ob%etos o de lineas. 37acilita estadsticas de los ob%etos que estn siendo seguidos en tiempo real !&mero de ob%etos, color de los ob%etos, coordenadas de las ca%as o lneas de los ob%etos" a trav0s de un puerto &,- estndar. 3 :esolucin de la imagen de GGx@HH pxels a EI framesQsegundo en modo seguimiento 3 6onsumo mximo de HAmA a H.F9 3 1oporta Auto /etecting 8arallel Architecture !A/8A" para el bus del sensor de &,-.

124

'sto significa que la cmara &,-6am puede coexistir con otros sensores de L')* o de otras casas comerciales en el mismo puerto &,-. 'l soporte A/8A permite al usuario utili(ar varios sensores en el mismo puerto sin la necesidad de un sensor multiplexor externo.

7igura @2 6mara &,-6am.

5 >UNCIONAMIENTO
'l funcionamiento de la cmara &,-6am difiere un poco del resto de los sensores, y para poder utili(arla correctamente tendremos que reali(ar algunas tareas adicionales. Antes de conectar la cmara al robot y empe(ar a traba%ar con ella, primero necesitaremos conectarla al ordenador y configurarla como me%or nos convenga. 8ara utili(ar la cmara con el robot &,- se conectar al mismo a trav0s del cable conector estndar para sensores que vienen con el &,-. 1in embargo para operaciones como configurar o programar la cmara, &,-6am se conectar al 86 a trav0s de un cable mini3=14 similar al de la figura A.

7igura A2 6onector mini3=14. 125

La primera vDe( que conectemos la cmara al ordenador, es muy posible que el 86 no la recono(ca, es por ello que deberemos instalar los drivers para el sistema operativo que tengamos instalado. 'ncontraremos los drivers y los pasos a seguir en la siguiente pgina2 http2QQKKK.mindsensors.comQ&,-6amg/riverg;nstallation.htm 6uando hayamos instalado los drivers y nuestro 86 ya recono(ca la cmara, ser necesario instalar el programa &,-6am9ieK para configurar la cmara. 1e trata de una aplicacin creada por +ind1ensor para configurar y facilitar el uso de la cmara. 'ste programa se puede descargar desde2 http2QQnxtcamvieK.sourceforge.netQ =na ve( lo tengamos instalado aparecer la siguiente pantalla2

126

7igura E2 8antalla de inicio de &,-6am9ieK. Le daremos a 6onnect para establecer la conexin con la cmara. 'l siguiente paso ser tomar una captura de pantalla sobre los ob%etos que nos interese distinguir, como por e%emplo, en este caso, una bola de color ro%o.

7igura H2 6aptura de un ob%eto de color ro%o. =na ve( reali(ada la toma, iremos a<adiendo o quitando los colores que nos interese distinguir con los botones de a<adir y quitar. 's interesante que quede sombreada la mayor parte del ob%eto que nos interese, y la menor parte del resto de ob%etos. 8odremos repetir este proceso hasta tener G ob%etos de distintos colores para diferenciar. 's interesante que no se produ(can solapamientos entre colores para confundir lo menos posible a la cmara.

127

7igura 2 6aptura de un segundo ob%eto de color a(ul. Not#; La cmara &,-6am est dise<ada para traba%ar ba%o lu( blanca fluorescente. 1i la imagen resulta demasiado ro%i(a, que suele ocurrir cuando hay mucha lu( infrarro%a en el ambiente, intenta encontrar la fuente de esa lu( infrarro%a y reducirla reempla(ndola con lu( fluorescente. 8ara operaciones avan(adas es posible cambiar la ganancia del color, el brillo y el contraste de la cmara, manipulando los valores de los registros ;A6. 1i adems nota que la imagen est desenfocada, se puede ir rotando la lente manualmente hasta encontrar el enfoque ptimo.

6uando tengamos los mapas de colores que nos interesen guardados, le damos al botn upload para cargarlos en la cmara. Ahora podremos comprobar si funciona correctamente haciendo clic en -racDing, y dndole a Start.

128

7igura O2 9entana de -racDing. 'n esta ventana podremos seleccionar las caractersticas que nos interesa visuali(ar como el color, el rea, las coordenadas, etc. y reconocer los ob%etos en tiempo real. Not#& 6abe indicar que con el fin de simplificar la programacin, el procesamiento y el traba%o en general con la cmara, los ob%etos que se visuali(an as como la informacin que nos proporcionar la cmara, sern rectngulos a los que llamaremos "blobs" . =na ve( que hayamos comprobado que funciona bien, le damos a desconectar para poder desenchufar la cmara del 86. _a estaremos en condiciones de poder programar con la cmara. 129

5PROGRAMACIN O4 !"n 1&


La manera ms cmoda de programar la cmara en :obot6 es haciendo uso de la librera ?nxtcamlib.c?, que nos proporcionar las funciones necesarias para traba%ar con la cmara. Las dos funciones ms importantes son2 void init_camera (tSensors camera 33e ;niciali(a y prepara la cmara para

encontrar ob%etos. /a por supuesto que los mapas de colores se han establecido utili(ando &,-6am9ieK o algn programa similar. void get_blobs(tSensors camera! int "nblobs! int_arra# "color! int_arra# "le$t! int_arra# "top! int_arra# "rig%t! int_arra# "bottom 33e /evuelve lo siguiente2 nblobs2 &mero de blobs visuali(ados en ese momento. color2 9ector con tantas posiciones como blobs haya visuali(ados en ese momento, en el que cada posicin del vector indica el color del blob. !'n el e%emplo que hemos estado viendo devolvera un @ para los blobs ro%os y un dos para los blobs a(ules". left2 9ector con tantas posiciones como blobs haya visuali(ados en ese momento, en el que cada posicin del vector indica la coordenada del lado i(quierdo del rectngulo !blob". top2 9ector con tantas posiciones como blobs haya visuali(ados en ese momento, en el que cada posicin del vector indica la coordenada del lado superior del rectngulo !blob".

130

right2 9ector con tantas posiciones como blobs haya visuali(ados en ese momento, en el que cada posicin del vector indica la coordenada del lado derecho del rectngulo !blob". bottom2 9ector con tantas posiciones como blobs haya visuali(ados en ese momento, en el que cada posicin del vector indica la coordenada del lado inferior del rectngulo !blob". 'n la versin @.H de deberemos indicar que la cmara se trata de un sensor sensor;A66ustom7ast. para ello, tendremos que ir al men :obot +otors and 1ensors 1etup AQ/ 1ensors elegimos el puerto y en el men desplegable seleccionamos sensor;A66ustom7aster. /eberemos asegurarnos de que tenemos seleccionada la pesta<a AlloK 6ustom /esigned 1ensors y si vemos que no aparece asegurarnos de tener la opcin 5indoK +enu Level 'xpert activada. 6on esta configuracin podremos hacer uso de las funciones de la librera librera ?nxtcamlib.c?. Pro-r#2# D!%u:#B$o%+.

//*!!Sensor,

S,,

cam, sensorI2CCustomStd, = (tSensors) S,

const tSensors cam //sensorI2CCustomStd

/*@asta a&u6 este c"digo se $a%r# generado autom#ticamente al $a%er 'uesto en la configuraci"n &ue en el 'uerto S9 $a%r6a un sensor de ti'o @i/ec$nic 8om'ass al &ue $emos llamado :ru>ula*/ Winclude 2n-tcamli%.c2 //?nclu6mos la li%rer6a // !scala los (alores de S desde las coordenadas de la camara a las de //la 'antalla. int escala-(int -) * return ((- D ,1) * XX) / ,KJ

131

7 // !scala los (alores de R desde las coordenadas de la camara a las de //la 'antalla. int escalay(int y) * return ((,93 D y) * J3) / ,93 7 tas) main () * int n int i // (ectores, con el color, y coordenadas de los %lo%s. intMarray %color, %left, %to', %rig$t, %%ottom // (aria%les 'ara las coordenadas escaladas 'ara la 'antalla. int l, t, r, % // ?niciali<a la camara initMcamera(cam) +$ile (true) * // O%tiene los %lo%s getM%lo%s(cam, n, %color, %left, %to', %rig$t, %%ottom) // 0im'ia la 'antalla. erase.is'lay() //Nara cada %lo% o%tiene sus coordenadas, las escala y las di%u>a. for (i = H i G n iUU) * // Numero de %lo%s

l = escala-(%leftBiC) t = escalay(%to'BiC) r = escala-(%rig$tBiC) % = escalay(%%ottomBiC) n-tLillRect(l, t, r, %) 7 7 7

132

C#r# t'r3+t! #+& @. 3's el modo de programacin ms sencilla y recomendable para este

sensor, con las dos funciones que nos proporciona la librera se pueden hacer la mayora de los programas en los que necesitemos la cmara.

O4 !"n )&
'n caso de que queramos hacer un programa muy especfico o consultar algn registro determinado para algn caso concreto, se puede hacer usando las funciones de las que dispone robot6 para acceder a los registros e ir leyendo las posiciones de memoria que nos interesen para nuestra aplicacin. 'n el An'HoBCC2#r# al final de este apartado se especifica para que sirve cada registro de la cmara.

C#r# t'r3+t! #+& @. 3 /ebido a la gran cantidad de registros con los que traba%a la cmara, este tipo de programacin puede resultar muy engorroso y poco recomendable. A. 3 8odemos aprovechar todo el potencial que nos ofrece el sensor accediendo a todos los registros, pero nicamente resultar necesario en situaciones muy concretas o para programas muy especficos !como crearnos nuestra propia librera". E. 3 &o conseguimos ninguna funcionalidad especial programando de este modo, por lo que resultar casi siempre ms recomendable emplear la opcin anterior.

5CONCLUSIONES DEL SENSOR

133

La cmara &,-6am de +indstorms es el sensor de visin del robot ms completo que existe por el momento. Aunque no puede distinguir exactamente la forma de los ob%etos ya que los trata como blobs s que puede distinguir su tama<o y por lo tanto calcular aproximadamente la distancia a la que se encuentra, adems de la posicin en la que se encuentran respecto a la cmara y su color. .ay que tener muy en cuenta las condiciones de iluminacin del lugar en el que traba%emos, recordando que la lu( con la que me%or funciona es con lu( blanca fluorescente. 1i las condiciones de iluminacin varan, es conveniente volver a configurar la cmara para distinguir los mismos ob%etos, lo que puede resultar un tanto engorroso si necesitamos cambiar de ambientes. 8ara ob%etos que no tienen una superficie plana respecto a la cmara, puede que los divida en varios blobs, por lo que conviene arreglarlo por softKare y que una todos los blobs que pertenecen al mismo ob%eto. -ambi0n sera conveniente, si fuera necesario, eliminar los blobs que pertene(can a ruido. ANLISIS&

8roporciona mucha informacin acerca de los ob%etos del entorno2 6olor, tama<o aproximado, posicin respecto a la cmara, distancia, etc.

3 3

-enemos que tener en cuenta las condiciones de iluminacin. 8uede dar problemas si queremos distinguir ob%etos de colores muy parecidos.

E;EMPLOS DE USO& 134

http2QQKKK.youtube.comQKatch\v]Cf8(H:xx,@g^feature]related http2QQKKK.youtube.comQKatch\v]H_a%O5AJt4D^feature]related

Aplicaci n !l"e#oo#$
6omo ltima fase del desarrollo prctico del proyecto se estudi la comunciacin sin cables de que dispone el Lego &,- y se decidi desarrollar una aplicacin en 6V y en 6TT para poder controlar el Lego &,- desde el 86 a trav0s de la comunicacin 4luetooth.

COMUNICACIN BLUETOOT*
4luetooth proviene de la palabra escandinaba # &l'tand( que significa #hombre de te( oscura$ pero en los tiempos que corren el significado original se ha perdido y ahora se asocia a las comunicaciones inalmbricas, un estndar global que posibilita la transmisin de vo(, imgenes y en general datos entre diferentes dispositivos en un radio de corto alcance y lo que le hace muy especial, ba%o coste !ll".

Los principales ob%etivos que este estndar quiere lograr son2

3 3 3

7acilitar las comunicaciones entre equipos. 'liminar cables y conectores entre aqu0llos. 7acilitar el intercambio de datos entre los equipos.

4luetooth funciona ba%o radio frecuencias pudiendo atravesar diferentes obstculos para llegar a los dispotivos que tenga a su alcance. 135

*pera ba%o la fran%a de frecuencias A.H X A.HG ).( o como tambi0n es conocida como #4anda ;1+$ que significa #;ndustrial, 1cientific and +edical$ que es una banda libre para usada para investigar por los tres organismos anteriores. 8ero esto tiene sus consecuencias, ya que al ser libre puede ser utili(ada por cualquiera y para ello, para evitar las multiples interferencias que se pudieran introducir !microondas, 5LA&s, mandos, etc" bluetooth utili(a una t0cnica denominada salto de frecuencias. 'l funcionamiento es ir cambiando de frecuencia y mantenerse en cada una un #slot$ de tiempo para despu0s volver a saltar a otra diferente. 's conocido que entre salto y salto el tiempo que transcurre es muy peque<o, concretamente unos OA microsegundos con lo que al cabo de un segundo se puede haber cambiado @OII veces de frecuencia.

6uando coinciden ms de un dispositivo bluetooth en un mismo canal de transmisin se forma lo que se llaman #piconets$ que son redes donde hay un maestro que es el que gestiona la comunicacin de la red y establece su relo% y unos esclavos que escuchan al maestro y sincroni(an su relo% con el del maestro.

/icho alcance puede variar segn la potencia a la que se transmite !a mayor potencia mayor consumo y menor autonoma para el dispositivo" y el nmero de repetidores que haya por el medio. As el alcance puede estar entre los @I y @II metros de distancia !los repetidores provocan la introduccin de distorsin que puede per%udicar los datos transmitidos".

4luetooth puede conectar muchos tipos de aparatos sin necesidad de un solo cable, aportando una mayor libertad de movimiento. 8or esta ra(n ya se ha convertido en una norma comn mundial para la conexin inalmbrica. 'n el futuro, es probable que sea una norma utili(ada en millones de tel0fonos mviles, 86, ordenadores porttiles y varios tipos de aparatos electrnicos, como por e%emplo2

136

3 3 3

/omtica !activacin de alarmas, subida de persianas, etc.". 1ector automovilstico !comunicacin con otros vehculos". +edios de pago.

'n una comunicacin bluetooth se pueden alcan(ar tasas de transmisin de datos de FAI Dbps !@ +bps de capacidad bruta" con un rango ptimo de @I metros !como se ha comentado antes @II metros con repetidores".

'l L')* +;&/1-*:+1 &,- incluye nuevas posibilidades de comunicacin. dstas habilitarn elevadas velocidades de transmisin y proporciona comunicacin inalmbrica que da soporte para muchos escenarios de traba%o.

Las capacidades comentadas en el prrafo anterior se pueden concretar en2

6omunicacin bluetooth versin A.I con '/: ! E+4 de transmisin de datos".

6omunicacin =14 versin A.I Bunto a las dos principales capacidades de transmisin del protocolo, tambi0n incluye dos interfaces de comunicacin que su ob%etivo principal es la comunicacin con dispositivos externos empotrados2

=n puerto digital de comunicaciones que puede transmitir a una velocidad como mximo de @ +bitQs !8uerto de alta velocidad".

6uatro puertos digitales de comunicacin que pueden transmitir a una velocidad de JOII bitQs !8uerto de ba%a velocidad"

137

La segunda interfa( es la utili(ada con el estndar de comunicacin ;A6. 'l principal uso de la primera interfa( es habilitar la conexin entre un &,- y un dispositivo externo que requiera de una alta velocidad de transmisin de datos. Adems, se est intentando conseguir usando el protocolo de comunicacin 83&et comunicaciones de datos multipunto.

CAPAS DEL SISTEMA DE COMUNICACIN&

La siguiente figura muestra las principales capas de la pila de comunicacin entre el dispositivo empotrado y el softKare que se encuentra en el 86. 6omo se puede comprobar, se puede establecer una comunicacin full duplex entre el 86 y el &,- usando o no comunicaciones cableadas.

7igura @2 /iagrama de bloques de la comunicacin

138

'l firmKare que lleva el &,- permite adems acceder al protocolo de comunicacin con el &,- escribiendo o leyendo informacin en #crudo$ o utili(ando el protocolo establecido que posteriormente se explicar. La desventa%a que se tiene si no se utili(a el protocolo es que es imposible comprobar la informacin enviada o recibida en el buffer, por lo que se requiere un cierto control a ba%o nivel de las tramas enviadas.

'n lo que se refiere a la comunicacin bluetooth se destaca la capacidad de usar el 188 !8erfil del 8uerto 1erie".

'studios reali(ados durante el desarrollo han demostrado que dicha comunicacin tiene ciertas desventa%as cuando se comien(a a transmitir rfagas de informacin, ya sea porque son demasiado largas y el tiempo entre la recepcin de un paquete a otro es demasiado peque<o o por el retardo que se genera cuando se cambia de modo recepcin de informacin a modo de transmisin de informacin.

8ara evitar en la medida de lo posible el problema de la longitud de los paquetes a enviar, se a<ade al comien(o del paquete a enviar, el tama<o del mismo.

8ara me%orar el retardo que es causado por el cambio de modo de comunicacin se ha a<adido la posibilidad de enviar comandos directos sin necesitad de reconocimiento, es decir, no nos asegura que lo que hemos enviado al &,- haya sido procesado correctamente a causa de cualquier tipo de error. 6on eso evitamos el cambio de modo de transmisin y los EI ms que antes afectaban ahora no se producen.

'l formato de los paquetes que se envan en ambas direcciones tiene la forma que muestra la figura.

139

7igura A2 7ormato del paquete

PROGRAMA DEL PC& =na ve( vemos como funciona, estamos preparados para poder reali(ar una aplicacin en el 86 que vaya mandando paquetes al Lego para que 0ste los vaya interpretando como queramos. 8ara ello se ha hecho una aplicacin en 9isual 1tudio 6TT y en 6V del siguiente modo2

7igura E2 ;nterfa( de la aplicacin

140

/ispondremos de las siguientes opciones2

):=8* 6*&',;m&2 1er el grupo de elementos necesarios para reali(ar la conexin entre el 86 y el robot a trav0s del 4luetooth. 8ara ello nos hemos apoyado en la componente 1erial8ort del cuadro de herramientas.

7igura H2 1erial8ort

141

'sta componente nos permitir la conexin y sus parmetros as como enviar los datos a trav0s del puerto 6*+ en el que tengamos asignado el dispositivo 4luetooth. =na ve( a<adido el 1erial8ort lo tendremos que configurar para que funcione correctamente y seguidamente estableceremos la conexin. -odas estas tareas se reali(an al pulsar el botn conectar2 6onectar3e Al pulsar el botn #6onectar$ tendremos que configurar la conexin 4luetooth entre el 86 y el robot.
serialNort,DANortName = tcone-ionDA/e-t

;ndicamos el nombre del puerto serie que queremos abrir para conectarnos, lo adquiere desde un 'dit4ox en el que habremos escrito el nombre del puerto.
serialNort,DA:audRate = XJHHH

'stablecemos la velocidad en baudios del puerto serie en JOIII.


serialNort,DANarity = System33?O33Norts33Narity33None

;ndicamos que no utilice el protocolo de comprobacion de la paridad.


serialNort,DA.ata:its = T

;ndicamos que G sea la longitud estndar de los bits de datos por byte.
serialNort,DASto':its = System33?O33Norts33Sto':its33One

'stablecemos a uno como el nmero estndar de bits de parada por byte.


serialNort,DARead/imeout = 3HH

;ndicamos que el tiempo que transcurre antes de que se agote el tiempo de espera si una operacin de lectura no finali(a sea de EII milisegundos.
serialNort,DAYrite/imeout = 3HH

;ndicamos que el tiempo que transcurre antes de que se agote el tiempo de espera si una operacin de escritura no finali(a sea de EII milisegundos.

serialNort,DAO'en()

142

Abrimos el puerto.
la%el,DA/e-t = 28onectado2

8ara que la conexin se realice correctamente debemos asegurarnos que el 4luetooth del robot este habilitado y que el nombre del puerto serie a trav0s del que nos queremos conectar sea el que corresponde. 'sto lo podremos consultar desde dispositivos bluetooth que aparecer en nuestro 862

7igura 2 ;cono de 4luetooth

7igura O2 /ispositivos 4luetooth

143

7igura F2 6omprobamos el puerto /e este modo sabremos el nombre del puerto 6*+ que tendremos que escribir en el 'dit4ox. /esconectar3e 'l botn #/esconectar$ servir para interrumpir la conexin 4luetooth y finali(ar la comunicacin. 'ste se reali(a simplemente con la funcin serialNort,DA8lose() . ):=8*1 A,4 y 62 'n el grupo A de botones tenemos 3e =n text box donde podemos escribir directamente la velocidad a la que queremos que vaya el robot, y controles para mane%ar directamente al Lego desde el 86. Acelerar, frenar, girar a la derecha, girar a la i(quierda y parar. 'n el grupo 4 de botones tenemos 3e =n text box en el que podemos introducir valores entre I y A J que ser una orientacin para que el robot se oriente con la br%ula a ese destino. 'n el grupo 6 de botones tenemos 3e -res text boxes para introducir en ellos una coordenada x, una coordenada y, y un sentido, para que cuando le demos al botn ;r, se diri%a hacia ese punto. 'l botn De )uevo lleva al robot a la ltima coordenada introducida. 144

Aunque en la aplicacin mostrada, la comunicacin se reali(a slo con un robot, el ir a<adiendo ms robots para enviarle informacin a trav0s de bluetooth resultara trivial. 1implemente habra que a<adir un nuevo 1erial8ort para el nuevo robot y modificar un poco las funciones para que enve informacin tambi0n a trav0s de ese puerto.

7uncionamiento2 La base del funcionamiento de los tres grupos es bsicamente la misma, obtener datos del usuario !si es necesario" y mandarlos hacia el puerto serie para que el robot las interprete segn los datos que hemos mandado. 8ara ello, cada ve( que queremos mandar una instruccin al robot, nos creamos en vector en que introduciremos los datos de acuerdo al formato de los paquetes que el robot sabe interpretar.

7igura G2 7ormato del paquete 1e pueden distinguir, como se observa en la figura, cuatro partes que proporcionan informacin cuando una trama llega a su destino2

4ytes @[ y A[2 ;ndican el tama<o que tiene el paquete enviado, en dicho tama<o no se contemplan esos dos bytes de informacin.

4yte E[2 -ipo de comando. 'xisten dos tipos de comandos, los comandos directos y los comandos de sistema. 'stos a su ve( pueden ser con contestacin de estado o sin contestacin IxII 6omando directo con respuesta. IxGI 6omando directo sin respuesta. IxI@ 6omando de sistema con respuesta. IxG@ 6omando de sistema sin respuesta. 145

IxIA ;ndica que el paquete recibido es la respuesta a otro paquete. 4yte H[2 6omando especfico. /entro de los dos tipos posibles hay comandos que tienen un cdigo especfico para reali(ar diferentes funciones dentro del bricD del &,-. 1e puede encontrar ms informacin acerca de estos comando especficos en el Anexo sobre los comandos directos de &,-. 4yte [ 3 &2 1e utili(a para informacin adicional del comando

especfico, cada comando tiene un formato que difiere del resto.

6omo lo que queremos es mandar datos al robot y no necesitamos que el robot nos de una respuesta, utili(aremos IxGI como tipo de comando del 4yte n[E y el comando especfico IxIJ en el 4yte n[H porque lo que queremos es mandar datos al robot. 'l comando especfico IxIJ tiene el siguiente formato2 6digo J2 +'11A)' 5:;-' 4yte I2 IxII or IxGI 4yte @2 IxIJ 4yte A2 ;nbox &umber !I3J" 4yte E2 +essage 1i(e 4yte H2 &2 +essage data, Khere &]+essage1i(e TE -oda esta informacin y la referente a otros comandos directos se puede encontrar en el anexo L')* +;&/1-*:+1 &,- /irect commands.

NOTA& 6abe destacar que la notacin empleada en este anexo no tiene en cuenta los dos primeros bytes para indicar el tama<o del paquete, por lo que a la hora de programar, tenemos que tener en cuenta que a lo que ellos llaman 4yte I, en realidad ser el 4yte A.

146

/e este modo, si por e%emplo lo que queremos es decirle al robot que se vaya a una velocidad indicada en un 'dit4ox !botn ?'nviar? de la 7igura E", lo que tendremos que hacer ser2

'%emplo en 6TT
unsigned c$ar %yteOutB1HC arrayGunsigned c$arAZ %yteOut1 = gcne+ arrayGunsigned c$arA(1H) %yteOutBHC = J %yteOutB,C = H-HH ///amaIo del mensa>e sin contar los 1 %ytes de // tamaIo de mensa>e

Los dos primeros bytes indican el tama<o del mensa%e sin tenerse en cuenta a ellos mismos. 6omo vamos a utili(ar un vector de G bytes, indicamos que el tama<o del mensa%e es de O bytes
%yteOutB1C = H-TH //No se es'era res'uesta

'l byte n[E !'l primero segn el anexo" indicamos que enviamos un comando directo sin respuesta
%yteOutB3C = H-HX //=essageYrite

'n el byte n[H indicamos como comando especfico el IxIJ, +essage5rite.


%yteOutB9C = H-HH //?n%o-Num%er D,

'n el byte n[H indicamos que el mensa%e ir al destinado el bu(n nmero I de la cola de espera de mensa%es del robot.
%yteOutB;C = 1 ///amaIo del mensa>e

'l byte n[

lo utili(amos para indicar el tama<o que tendr el mensa%e que

enviaremos, en esta caso ser A porque el mensa%e solo ocupar A bytes !@ de datos T &=LL"
i = 8on(ert33/o?nt31(ten(iarDA/e-t)

*btenemos la velocidad a la que queremos que vaya el robot.


%yteOutBJC = (i) //=!NSA[!

147

_ la mandamos como primer dato del mensa%e, posteriormente el programa que se est0 e%ecutando en el robot, al recibir este dato, lo interpretar como se haya programado y pondr los motores a la velocidad que le hemos indicado.
%yteOutBKC = H-HH //.e%e /erminar en null

'l ltimo byte debe terminar en null para que el mensa%e pueda ser aceptado.

serialNort,DAYrite(%yteOut, H, T)

7inalmente enviamos los datos por el puerto serie para que lleguen hasta el robot.

'%emplo en 6V
%yteBC %yteOut = ne+ %yteBJ9C %yteOutBHC = (%yte)(J) %yteOutB,C = H-HH %yteOutB1C = H-TH %yteOutB3C = H-HX %yteOutB9C = H-HH %yteOutB;C = (%yte)(1) %yteOutBJC = (%yte)193 ///amaIo del mensa>e total sin contar los 1 // 'rimeros %ytes //=andamos un comando directo sin res'uesta //.e c"digo X (=essageYrite) //?n%o-Num%er D, ///amaIo del mensa>e a escri%ir // =andamos un 193

Al pulsar el botn ?8arar? de la 7igura E, le mandaremos al robot un mensa%e con el nmero AHE. 'l programa del robot tendr escrito que al recibir un AHE ponga la velocidad de los motores a I para detener al robot.
%yteOutBKC = H-HH //!l mensa>e de%e /erminar en null //0o en(iamos

serialNort,.Yrite(%yteOut, H, T)

/e este modo se ha ido desarrollando la aplicacin en 6TT y en 6V para enviar informacin mediante 4luetooth al robot y poder reali(ar distintas tareas.

148

PROGRAMA DEL ROBOT& 8aralelamente al desarrollo de la aplicacin para el 86 tambi0n se ha programado en robot6 el e%ecutable que llevar el Lego. 1e ha hecho a modo de tareas para que cualquier evento que se produ(ca pueda interrumpir a cualquier evento que se est0 e%ecutando sin tener que esperar a que acabe el mismo. =na ve( tenemos conectados los dos dispositivos, las funciones que utili(a robot6 para la comunicacin 4luetooh son las siguientes2 a" C2dM'++#-'Lr!t'ToB$u'tootI 3e 'scribe un mensa%e en el bu(n de

4luetooth b" C2dM'++#-'G'tS!9' 3e *btiene el tama<o del primer mensa%e en un

bu(n que contiene una cola de mensa%es recibidos. c" C2dM'++#-'R'#d 3e 'limina el primer mensa%e una cola del bu(n y lo copia en el buffer para ser usado. /espu0s de llamar a cada una de las funciones de arriba, se debera comprobar el valor devuelto para determinar si la funcin se ha llevado a cabo correctamente o si ha fallado.

EH4$! # !"n d't#$$#d# d' $#+ (un !on'+& c6md+essage5rite-o4luetooth!nUueue;/, n,mit4uffer, n1i(e*f+essage"

'scribe un mensa%e de hasta G bytes de tama<o en la variable n,mit4uffer a la cola o bu(n nmero nUueue;/ del dispositivo destino. n1i(e*f+essage es la longitud del mensa%e.

149

6uando los mensa%es son recibidos a trav0s de 4luetooth a un &,-, son a<adidos automticamente al final de uno de los die( bu(ones o colas. 6on la funcin c6md+essage)et1i(e!nUueue;/" podremos determinar si se ha recibido algn mensa%e. =n valor positivo de retorno indicar que se ha recibido un mensa%e, y su valor ser el nmero de bytes en el mensa%e. La funcin c6md+essage:ead!nUueue;/, n:cv4uffer, n1i(e*f+essage" nos servir para recoger el primer mensa%e desde un bu(n especfico y lo copia en el buffer de usuario en n:cv4uffer, que ser la variable que mane%aremos para los valores recibidos. 1lo los primeros n1i(e*f+essage bytes del mensa%e son copiados. nUueue;/ es el nmero de bu(n desde el que obtendremos el mensa%e. 8ara ver el modo de utili(ar estas funciones integrndolo en un programa, podemos mirar el programa de e%emplo # )*T &T +essaging )o ,rror -%ec.ing.c$ desde el men *pen 1ample 8rogram de :obot6. -ambi0n se puede consultar el programa # /plicacion0_1.c$ que es el encargado de leer las instrucciones que le mandaremos desde la aplicacin antes comentada de 6V o 6TT. >un !on#2!'nto d'$ 4ro-r#2#& 'l programa consta de dos tareas principales que se e%ecutan simultneamente. T#r'# $' tur#JK 5M 1e trata de una tarea que se e%ecutar continuamente encargada de comprobar si llegan al robot nuevos mensa%es, esta funcin se debe hacer en una tarea aparte porque necesita un hilo de e%ecucin diferente al principal, ya que sino el programa se quedara atascado esperando mensa%es entrantes. 'n caso de no recibir nada seguimos escuchando hasta que llegue un mensa%e entrante, que ser almacenado en un vector de bytes para luego ser interpretado por la tarea principal.

150

T#r'# 2#!nJK 5M 's la tarea principal, y es la encargada de interpretar los mensa%es que son almacenados en el vector de bytes por la tarea lectura. 1egn el contenido del vector, se mandar una instruccin diferente al robot, en consonancia con el vector de bytes que mandamos en el programa del 86.

'%emplo2 'n el programa del 86 vimos como mandbamos un mensa%e al robot con el valor AHE. 'l robot recibir el mensa%e a trav0s de la tarea ?lectura?

tas) lectura()* nSc$eduleNriority = 3; /Lile?OResult n:/8mdRd!rrorStatus int nSi<eOf=essage +$ile (true) * // 8om'rue%a continuamente si $ay mensa>es dis'oni%les nSi<eOf=essage = c8md=essageOetSi<e()Fueue?.) if (nSi<eOf=essage G= H) * n-t.is'lay8entered/e-t0ine(,, 2 !s'erando2) +ait,=sec(,) // 0e da a otras tareas la o'ortunidad de //e>ecutarse %rea) 7 if (nSi<eOf=essage A )=a-Si<eOf=essage) nSi<eOf=essage = )=a-Si<eOf=essage n:/8mdRd!rrorStatus = c8md=essageRead(nRc(:uffer, nSi<eOf=essage, )Fueue?.) 7 7 // No $ay m#s mensa>es entrantes esta (e<

=tili(amos la funcin c6md+essage:ead para recibir los mensa%es y almacenarlos en el vector de bytes n:cv4uffer. +ientras tanto, la tarea main!" ir comprobando con un sKitch el valor de n:cv4ufferRIS, y en el caso de que valga AHE, parar los motores.
s+itc$ (nRc(:ufferBHC)* case 1933 //NARAR

151

motorBmotorAC = H motorBmotor:C = H n=otor!ncoderBmotorAC = H n=otor!ncoderBmotor:C = H i=H %rea) 7

APLICACIN CLIENTE5SERVIDOR& 7inalmente se ha hecho una ltima aplicacin basada en el esquema cliente3 servidor, de modo que ahora ser el servidor el que se conectar con el robot directamente, y habr un cliente remoto que podr mandar instrucciones al servidor para que 0ste las transmita el robot. 8ara ello se ha hecho uso de 1ocDets con la librera G+insoc)1.$A. &ecesitaremos entonces tres programas distintos2 cliente, servidor y robot.

C$!'nt'& La interfa( del cliente ser la misma que en el programa sin servidor, lo nico que se ha a<adido es un botn para conectarse al servidor y un texto para introducir la ;8 y el puerto a los que queremos conectarnos.

7igura J2 4otn para conectar al servidor

Aunque el resto de la interfa( sea igual, el cdigo habr cambiado ligeramente, ya que lo que tendremos que hacer ahora, es mandar el vector de bytes al servidor a trav0s del 1ocDet que habremos abierto, no a trav0s del puerto 6*+ hacia el bluetooth.

152

E:'24$o&
c$ar %yteOutB1HC try * %yteOutBHC = (K) %yteOutB,C = H-HH %yteOutB1C = (c$ar) H-TH %yteOutB3C = H-HX %yteOutB9C = H-HH //:o-Num%er D, %yteOutB;C = (3) %yteOutBJC=\c\ %yteOutBKC = (i) %yteOutBTC = H-HH //.e%e /erminar en null send(Soc)et,%yteOut,1H,H) ten(iarDA/e-t = i./oString() 7

6omprobamos

que

la

nica

instruccin

que

ha

cambiado

es que

serialNort,.Yrite(%yteOut, H, T)

por send(Soc)et,%yteOut,1H,H)

sirve para enviar el vector de bytes al servidor. 9emos tambi0n que ahora hemos utili(ado una posicin ms en el vector, concretamente %yteOutBJC=\c\ 'ste dato le vendr bien al servidor para detectar el tipo de instruccin que se est mandando.

S'r1!dor& Las funciones de servidor sern las siguientes2 @3 'sperar a que se conecte un cliente. A3 :ecibir mensa%es del cliente. E3 :eenviar los mensa%es al robot. 153

7igura @I2 ;nterfa( del servidor.

'l servidor no har nada hasta que se presione el botn 6onectar6liente, momento en el que el servidor se quedar escuchando conexiones entrantes a trav0s del puerto que le indiquemos.

if (listen(Soc)et,, SO=AS8ONN ) == SO8]!/M!RROR) * =essage:o-33S$o+(2!rror escuc$ando el soc)et2) closesoc)et(Soc)et,) YSA8leanu'() return 7 lestadoDA/e-t=2!s'erando al cliente...2 // Ace'ta la cone-ion Soc)et, = acce't(Soc)et,, N^00, N^00 )

.asta que se conecte algn cliente y el servidor lo acepta. 'n ese momento, al pulsar comen(ar, se activar un tempori(ador que cada @II milisegundos comprobar si hay mensa%es entrantes con la instruccin
rec((Soc)et,,%uffer,1H,H)

154

=na ve( recibidos, har uso del nuevo byte ! %yteOutBJC=\c\ "

que hemos

comentado en el programa cliente para ver de qu0 tipo de mensa%e se trata, para saber el tama<o mximo del mensa%e que tiene que mandar a trav0s del puerto 6*+ hacia el robot. E:'24$o&
if(%ufferBJC==\c\)* for (int >=H >G1H >UU) * %yteOut1B>C = %ufferB>C 7 te-toDA/e-t=c./oString() serialNort,DAYrite(%yteOut1, H, X) //=andamos el mensa>e a tra(Ps del 'uerto serie 7

Aqu ya vemos como igual que en la aplicacin anterior, con la instruccin


serialNort,DAYrite(%yteOut1, H, X)

mandamos al robot el vector de bytes.

'n este caso, al ser una instruccin de tipo ncn, el tama<o mximo del mensa%e es de J bytes, pero si fuera de tipo ndn por e%emplo, el tama<o mximo del mensa%e sera de @@ bytes. Ro%ot& 'l programa del robot, permanece prcticamente igual que en el resto de las aplicaciones, lo nico que se ha hecho es incrementar en ndice del vector recibido debido a la introduccin del ya mencionado nuevo byte.

I%
155

Con $u+!on '+


=na ve( llegados a este punto del proyecto, se puede decir que los ob%etivos iniciales se han llevado a cabo. 1in embargo an van a quedar muchas cosas 156

que se pueden hacer. 1e han estudiado y documentado muchos de los sensores con los que traba%a el Lego &,-, aunque por supuesto seguirn saliendo ms tipos de sensores que abrirn nuevas posibilidades y que habr que seguir estudiando para obtener ms me%oras de estos robots, as como tambi0n surgirn novedades en la programacin de los mismos y me%oras en las plataformas de programacin. 'speramos que el traba%o reali(ado resulte de utilidad para futuros estudiantes o cualquier persona interesada en este campo de modo que pueda comprender de forma rpida y sencilla el funcionamiento de los sensores descritos en este documento. 'n cuanto al traba%o reali(ado para la comunicacin inalmbrica entre el 86 y el robot se pueden reali(ar ampliaciones, ya que de momento solo se ha conectado un cliente con un servidor. .acer un servidor capa( de atender a varios clientes queda como traba%o futuro. As habr un servidor con el dispositivo bluetooth, que ser el que mande las instrucciones a uno o varios robots, y al servidor se podrn conectar a su ve( varios clientes para mandar instrucciones al servidor. 6omentar por ltimo que ha sido un placer reali(ar el proyecto final de carrera dedicado a la robtica en las instalaciones de la =niversidad 8olit0cnica de 9alencia y mostrar mi agradecimiento al director del proyector Zngel 9alera que me ha dotado en todo momento del material que ha hecho falta y me ha animado, apoyado y guiado siempre para finali(ar de la me%or manera posible este ltimo tramo de la carrera.

157

!i&lio'ra()a

158

PC-!n#+ N'%&

;nformacin sobre los sensores2 KKK.hitechnic.com http2QQmindstorms.lego.comQ*vervieKQ&,-reme.aspx http2QQKKK.philohome.comQ

;nformacin sobre la programacin2 KKK.robotc.net http2QQmsdn.microsoft.comQes3esQdefault.aspx http2QQforums.nxtasy.orgQ http2QQKKK.codepro%ect.comQC4QcsQserialcommunication.aspx http2QQKKK.codepro%ect.comQC4QcsQnxt4luetooth.aspx http2QQKinprog.orgQtutorialQesQindex.html -ambi0n han sido de muchisima ayuda los manuales del protocolo de comunicacin del &,-. 1e trata de unos ficheros que resumian todos los posibles comandos que se le pueden enviar al robot al igual que explicaban como funcionaba la pila de bluetooth y todas las caractersticas del procesador integrado en el bricD. /ichos ficheros estn disponibles en la Keb de :obot6 adems de otros ficheros que describen otra serie de caractersticas interesantes2 http2QQmindstorms.lego.comQ*vervieKQ&,-reme.aspx

*tros enlaces de inter0s2 http2QQes.KiDipedia.orgQKiDiQ8ortada http2QQKKK.ansKers.comQtopicQlego3mindstorms

159

>! I'ro+ d' on+u$t#&

3 Appendix @3L')* +;&/1-*:+1 &,- 6ommunication protocol 3 Appendix A3L')* +;&/1-*:+1 &,- /irect commands 3 Appendix E3L')* +;&/1-*:+1 &,A:+F 4luetooth ;nterface

specification 3 L')* +;&/1-*:+1 &,- 4luetooth /eveloper Cit 3 6arpeta Anexos ad%unta al proyecto

R@S B.4. 5einberg and ,. _u, #:obotics in education2 LoK3cost platforms for teaching integrated systems$, ;''' :obot. Automat. +ag., vol. @I, no. A, pp. H3O, AIIE. RAS L. )reenKald and B. Copena, #+obile robot labs$, ;''' :obot. Automat. +ag., vol. @I, no. A, pp. A 3EA, AIIE. RES 8. )aKthrop, and '. +c)ooDin, #A L')*34ased 6ontrol 'xperiment,$ ;''' 6ontr. 1yst. +ag., vol. AH, no. , pp. HE3 O, AIIH. RHS Lego -echnic +otors compared characteristics, disponible en2 http2QQKKK. philohome.comQ

160

%I

Ane*os

161

5ANE7OBCMARA

162

163

164

También podría gustarte