scieee Open visual document viewer

Integración de un laboratorio remoto de robótica dentro de la plataforma ILabVir

Carlini Salguero, Roberto

Abstract

El presente proyecto consiste en la implementación e integración de un laboratorio remoto de robótica integrado en una plataforma de aprendizaje online (iLabVir/Moodle).

Full text

In eg aci´on de un labo a o io emo o de ob´o ica den o de la pla a o ma ILabVi Robe o Ca lini Di ec o : Josep Fe n`andez 16 de julio de 2015 E. T. I. S. Facul ad de In o m´a ica de Ba celona (UPC) ´ Indice ´ Indice 1 1. P e acio 4 1.1. O igen del p oyec o . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Mo i aci´on ............................ 4 1.2.1. Mo i aci´on pe sonal . . . . . . . . . . . . . . . . . . . 6 2. In oducci´ on 7 2.1. Obje i os del p oyec o . . . . . . . . . . . . . . . . . . . . . . 7 2.2. Alcance del p oyec o . . . . . . . . . . . . . . . . . . . . . . . 7 3. Especi icaci´ on 8 3.1. Requisi os............................. 8 3.1.1. Requisi os uncionales . . . . . . . . . . . . . . . . . . 8 3.1.2. Requisi os no uncionales . . . . . . . . . . . . . . . . 8 3.2. Casosdeuso ........................... 9 3.2.1. Casos de uso del adminis ado . . . . . . . . . . . . . 9 3.2.2. Casos de uso del p o eso . . . . . . . . . . . . . . . . 11 3.2.3. Casos de uso de alumno . . . . . . . . . . . . . . . . . 14 4. An´ alisis ecnol´ ogico y es ado del a e 17 4.1. In e acci´on local con el obo . . . . . . . . . . . . . . . . . . 17 4.1.1. Blue oo h......................... 19 4.2. In e acci´on emo a con el obo . . . . . . . . . . . . . . . . . 20 1 4.3. In e acci´on en e el obo y la pla a o ma Moodle . . . . . . . 21 4.3.1. LTI ............................ 23 4.4. S eaming de ´ıdeo . . . . . . . . . . . . . . . . . . . . . . . . 27 4.5. Edi o en iquecido . . . . . . . . . . . . . . . . . . . . . . . . 29 4.6. Lenguajes ............................. 29 4.6.1. Ja a............................ 29 4.6.2. Apache Tomca . . . . . . . . . . . . . . . . . . . . . . 29 4.6.3. PHP............................ 30 4.6.4. HTML........................... 30 4.6.5. CSS ............................ 30 4.6.6. Ja aSc ip ......................... 31 4.6.7. JQue y .......................... 31 4.7. He amien as de desa ollo . . . . . . . . . . . . . . . . . . . . 32 4.7.1. B icxCC.......................... 32 4.7.2. Eclipse........................... 33 4.7.3. Ne Beans ......................... 34 5. A qui ec u a y dise˜ no 35 5.1. Lib e ´ıa puen e y se icio web . . . . . . . . . . . . . . . . . . 36 5.1.1. Diag ama de clases . . . . . . . . . . . . . . . . . . . . 36 5.1.2. Desc ipci´on de las clases . . . . . . . . . . . . . . . . . 36 5.2. M´oduloLTI............................ 37 5.2.1. Diag ama de clases . . . . . . . . . . . . . . . . . . . . 37 5.2.2. Desc ipci´on de las clases . . . . . . . . . . . . . . . . . 37 5.2.3. Diag amas de secuencia . . . . . . . . . . . . . . . . . 38 2 5.2.4. Es uc u a de pan allas . . . . . . . . . . . . . . . . . 43 6. Implemen aci´ on 45 6.1. Lib e ´ıa de in e acci´on con el obo NXT . . . . . . . . . . . 45 6.2. Se icioweb............................ 50 6.3. P o o ipo de p uebas . . . . . . . . . . . . . . . . . . . . . . . 51 6.4. Se icioLTI............................ 54 7. P uebas 57 8. Plani icaci´ on y cos es 60 8.1. Plani icaci´on ........................... 60 8.2. Plani icaci´on y cos es . . . . . . . . . . . . . . . . . . . . . . . 61 8.2.1. Plani icaci´on . . . . . . . . . . . . . . . . . . . . . . . 61 8.2.2. Cos es indi ec os . . . . . . . . . . . . . . . . . . . . . 62 8.2.3. Cos es di ec os y o al . . . . . . . . . . . . . . . . . . 63 9. Conclusiones 64 9.1. Mejo as y abajo u u o . . . . . . . . . . . . . . . . . . . . . 65 Re e encias 67 Anexos 68 I. Modi icaci´on Yawcam . . . . . . . . . . . . . . . . . . . . . . 68 II. Regis oLTI ........................... 70 3 1. P e acio 1.1. O igen del p oyec o Es e PFC se insc ibe den o de iLabVi , un p oyec o de in es igaci´on y de inno aci´on educa i a en el que pa icipa la UPC. Es e p oyec o iene como inalidad el desa ollo de una pla a o ma de in e ope abilidad pa a el omen o, di usi´on, explo aci´on y ges i´on de labo a o ios i uales y emo os pa a la ealizaci´on de p ´ac icas eales a dis ancia y expe imen os online, con acceso emo o a a ´es de In e ne , de ma e ias cien ´ı icas y ecnol´ogicas. En conc e o, iLabVi p e ende implemen a una pla a o ma que pe mi a in eg a di e en es ipos de labo a o ios i uales y emo os, con indepen- dencia de la ecnolog´ıa empleada po cada uno de ellos, as´ı como posibili a su inco po aci´on den o de una pla a o ma de e-lea ning como, po ejemplo, Moodle. 1.2. Mo i aci´on La i upci´on de las nue as ecnolog´ıas de la in o maci´on y la comunica- ci´on (TIC) es ´a p o ocando cambios muy impo an es en nues a sociedad, los cuales a ec an a ´ambi os an di e sos como el labo al, el social, el del ocio, el cul u al o el educa i o. En la ac ualidad, es as ecnolog´ıas son un elemen o de desa ollo y de ans o maci´on social y econ´omica an ele an e como lo ue on en su ´epoca la ueda, la imp en a o la m´aquina de apo . En el ´ambi o uni e si a io, en la educaci´on secunda ia, en la o ma- ci´on p o esional y en la educaci´on a dis ancia, la ense˜nanza de las ma e ias cien ´ı icas y ecnol´ogicas debe conjuga de mane a equilib ada la cimen aci´on cien ´ı ico necesa ia pa a comp ende los en´omenos y las aplicaciones b´asicas, el conocimien o de las soluciones ´ecnicas en una gama amplia de aplicacio- nes, y inalmen e, la expe imen aci´on p ´ac ica que pe mi an al alumnado, de o ma adecuada, la adquisici´on de las compe encias b´asicas. Dada la impo ancia que, pa a la o maci´on acad´emica de los alum- nos, iene la ealizaci´on de expe imen os y p ´ac icas en es as ma e ias, hay que po encia la o maci´on p ´ac ica y busca nue as o mas de acceso a los ecu sos que o ecen los labo a o ios de expe imen aci´on y los alle es de p ´ac icas. Sin emba go, en la concepci´on adicional, la implan aci´on y el uso de los labo a o ios docen es y de las aulas- alle en los cen os educa i os es ´an 4 limi ados y condicionados po ac o es econ´omicos, espaciales y empo ales: Fac o es econ´ omicos El ele ado cos e que ep esen a la adquisici´on y man enimien o de equipamien o di icul a eno memen e la eno aci´on y la ampliaci´on de los labo a o ios y aulas- alle . Fac o es espaciales La masi icaci´on y la al a de espacio en los cen os educa i os impide dispone de su icien es labo a o ios y aulas- alle . Fac o es empo ales El ho a io de acceso a los labo a o ios y en las aulas- alle es ´a es ingido a de e minadas ho as den o del ho a io escola y con la p esencia de p o eso ado esponsable. Po lo an o, pe manece ce ado y in au ilizado du an e bas an e iempo. Todos es os ac o es cons i uyen una eno me ba e a que impide un uso m´as acional, amplio y lexible de los ecu sos exis en es en los cen os edu- ca i os pa a la o maci´on p ´ac ica. Sin emba go, es e obs ´aculo se puede educi no ablemen e usando nue os ecu sos inno ado es, como las di e - sas a ian es de Labo a o ios Vi uales (monol´ı icos, dis ibuidos o h´ıb idos, se a a, b´asicamen e, de aplicaciones y sis emas de simulaci´on) y de Labo a- o ios Remo os. En es os ´ul imos, se accede a a ´es de In e ne a un sis ema ´ısico eal pa a su manipulaci´on di ec a o expe imen aci´on en iempo eal. Figu a 1: Esquema simpli icado de un labo a o io emo o Los labo a o ios i uales y emo os p e enden con ibui posi i amen- e, y de una mane a ac i a, en el ap endizaje de ma e ias cien ´ı icas y ec- nol´ogicas de la ESO y del bachille a o ( ecnolog´ıas, elec o ecnia, ecnolog´ıa elec ´onica, ecnolog´ıa indus ial, ´ısica, ciencias expe imen ales,...), de la o maci´on p o esional y ocupacional, de la o maci´on a dis ancia y de la o maci´on con inua emp esa ial. Asimismo, pe mi en que ins i uciones y cen os educa i os de Ca alu˜na (y ambi´en del es o del es ado espa˜nol) puedan lle a a cabo de e minadas 5 p ´ac icas eales y expe imen os online con acceso emo o median e In e ne , muchos de los cuales no son posibles de ealiza ac ualmen e en los cen os educa i os po al a de equipamien o espec´ı ico. Tambi´en se pone al alcance de los cen os de ense˜nanza, los docen es y los es udian es un alioso ecu so ecnol´ogicamen e a anzado, con un g an po encial de u u o, que in eg a plenamen e las TIC. Po lo an o, sus apli- caciones en la ense˜nanza de ma e ias cien ´ı icas y ecnol´ogicas, y en di e- en es ni eles educa i os, son nume osas. Y la con ibuci´on espe ada muy ´alida y e icaz, dado que pe mi e aumen a el ni el de acceso a la ealiza- ci´on de p ´ac icas y expe imen os con un meno cos e de ges i´on, pe sonal, man enimien o y desplazamien os, o ece un ecu so complemen a io ´u il e inno ado , y omen a el uso de las TIC. 1.2.1. Mo i aci´ on pe sonal En cuan o a la mo i aci´on a ni el pe sonal, c eo que es e p oyec o esul- a in e esan e po di e sos mo i os. El p ime o, po que es el desa ollo de una aplicaci´on ull s ack, es o es, que aba ca odos los ni eles, desde el m´as bajo, que se ´ıa el obo , has a el m´as al o, que se ´ıa la in e az de usua io a a ´es de la pla a o ma de ap endizaje. Tambi´en soy conscien e del iesgo que supone siemp e es e ipo de aplicaciones y, sob e odo, el se desa o- lladas po una sola pe sona. Como segundo mo i o, es ´an las ecnolog´ıas in oluc adas. Es oy in e esado an o en los obo s NXT como en las pla- a o mas de ap endizaje y las posibilidades que p esen an. Y inalmen e, la e ien e m´as social del p oyec o, el hecho de que al pone un labo a o io en in e ne supone amplia las posibilidades de acceso al conocimien o. 6 2. In oducci´on 2.1. Obje i os del p oyec o El p esen e p oyec o consis e en la implemen aci´on e in eg aci´on de un labo a o io emo o de ob´o ica in eg ado en una pla a o ma de ap endizaje online (iLabVi /Moodle). Se desea pode ealiza las mismas p ´ac icas que ac ualmen e se ealizan en el labo a o io, de o ma emo a. Dichas p ´ac icas se ealizan ejecu ando c´odigo NXC sob e obo s Minds o m NXT en en o nos Windows XP. Dados es os p e equis os, se desa olla ´a una soluci´on que pe mi a hace uso de los ecu sos ya exis en es pa a ealiza p ´ac icas emo amen e. En ando en de alle, los obje i os se ´ıan los siguien es: Encon a o implemen a un m´e odo pa a compila c´odigo NXC y ejecu a lo en un obo , ecogiendo el ou pu de ex o, an o mensajes del compilado como mensajes de la ejecuci´on. Re ansmi i el ´ıdeo de lo que sucede en el labo a o io cuando se lanza una ejecuci´on. Implemen a un m´odulo de p ´ac ica pa a la pla a o ma de ap endizaje Moodle, que in eg e los obje i os an e io es, pe mi iendo ealiza una p ´ac ica emo amen e. 2.2. Alcance del p oyec o Aunque inicialmen e la in enci´on del p oyec o e a la in eg aci´on den o de la pla a o ma iLabVi , debido a p oblemas ´ecnicos se limi ´o a la in- eg aci´on en la pla a o ma Moodle, pla a o ma base del p oyec o iLabVi . De es a o ma, una ez sol en ados los mencionados p oblemas ´ecnicos, la in eg aci´on den o de iLabVi esul a ´ıa sencilla. Po an o el alcance del p oyec o se limi a a la implemen aci´on de una e si´on inicial del labo a o io emo o de ob´o ica, en la que se ´a posible ejecu a c´odigo y e el esul ado de dicha ejecuci´on, y la in eg aci´on de dicho labo a o io en la pla a o ma Moodle. 7 3. Especi icaci´on 3.1. Requisi os 3.1.1. Requisi os uncionales Ges iona p ´ac icas de labo a o io, es o es, c ea , modi ica y elimina p ´ac icas. Realiza una p ´ac ica de e minada median e el desa ollo, compilaci´on y ejecuci´on de c´odigo en el na egado . Re isi´on del esul ado de la ejecuci´on, an o en o ma de ex o ( aza) como en ´ıdeo. En ega el esul ado inal pa a una e isi´on pos e io . Re isa las p ´ac icas en egadas, pudiendo ejecu a las y e alua las. 3.1.2. Requisi os no uncionales Modula idad El sis ema debe asegu a la independencia del sis ema del labo a o io con espec o a la pla a o ma de ense˜nanza en l´ınea. Escalabilidad El sis ema debe pe mi i an o m´ul iples clien es desde la pla a o ma de ense˜nanza como m´ul iples bancos de abajo. Segu idad El sis ema debe asegu a que la iden idad de los ac o es no puede se suplan ada, en la medida de lo posible. 8 Ejecu a c´ odigo median e un iche o Desc ipci´ on El usua io desea ejecu a c´odigo en iado po iche o. Ac o Alumno P econdici´ on El usua io es ´a au en icado como alumno en un Moodle au o izado y se encuen a en la is a p incipal de la p ´ac ica. Pos condici´ on El sis ema mues a al usua io el esul ado de la ejecu- ci´on del c´odigo. Flujo p incipal 1. El usua io selecciona el iche o de c´odigo a en ia . 2. El usua io selecciona la opci´on de en ia iche o de c´odigo. 3. El sis ema ejecu a el c´odigo y le mues a el esul ado al usua io. Visualiza el esul ado ( ex o) Desc ipci´ on El usua io desea analiza el esul ado en o ma o ex o de la ejecuci´on del c´odigo. Ac o Alumno P econdici´ on El usua io es ´a au en icado como alumno en un Mood- le au o izado, se encuen a en la is a p incipal de la p ´ac ica y ha selecciona la ejecuci´on de c´odigo. Pos condici´ on El sis ema mues a al usua io la salida de ex o de la ejecuci´on del c´odigo. Flujo p incipal 1. El sis ema mues a al usua io la salida de ex o de la ejecuci´on del c´odigo. Visualiza el esul ado (s eaming de ´ ıdeo) Desc ipci´ on El usua io desea analiza isualmen e el esul ado de la ejecuci´on del c´odigo. Ac o Alumno P econdici´ on El usua io es ´a au en icado como alumno en un Mood- le au o izado, se encuen a en la is a p incipal de la p ´ac ica y ha selecciona la ejecuci´on de c´odigo. Pos condici´ on El sis ema mues a al usua io el esul ado de la ejecu- ci´on del c´odigo. Flujo p incipal 1. El sis ema e ansmi e lo que ocu e en el labo a o io du an e la ejecuci´on. 15 En ia c´ odigo inal a e alua Desc ipci´ on El usua io desea en ia el c´odigo inal a e alua . Ac o Alumno P econdici´ on El usua io es ´a au en icado como alumno en un Moodle au o izado y se encuen a en la is a p incipal de la p ´ac ica. Pos condici´ on El sis ema con i ma el egis o del c´odigo como inal. Flujo p incipal 1. El usua io in oduce el c´odigo, ya sea a a ´es del edi o o me- dian e iche o. 2. El usua io selecciona la opci´on de en ia pa a e alua . 3. El sis ema con i ma el egis o del c´odigo como e si´on a e alua . 16 4. An´alisis ecnol´ogico y es ado del a e 4.1. In e acci´on local con el obo An es de en a a e alua las ecnolog´ıas disponibles, es necesa io ealiza un an´alisis de los obo s LEGO Minds o ms NXT y su es ado ac ual LEGO Minds o ms NXT es un ki de obo s p og amables lanzados po LEGO en 2006 que en´ıan a eemplaza al ki de p ime a gene aci´on de LE- GO Minds o ms. Es e nue o ki inclu´ıa un bloque que con olaba el sis ema, un conjun o de senso es y mo o es y a ios componen es LEGO de la se ie Technic pa a pode mon a sis emas mec´anicos. Figu a 5: Imagen del ki LEGO Minds o ms NXT Exis en dos gene aciones de LEGO Minds o ms NXT, la segunda lanza- da en 2009, y desde 2013 han sido sus i uidos po un nue o obo Minds- o ms, el EV3. En el labo a o io se abaja con obo s NXT de segunda gene aci´on. La ins alaci´on del so wa e necesa io pa a maneja los obo s es sencilla. En el ki iene un CD con los d i e s necesa ios y el p og ama NXT-G, un en o no g ´a ico de p og amaci´on median e bloques que pe mi e cons ui algo i mos pa a se ejecu ados po el obo . Los di e en es bloques ep esen- 17 an an o es uc u as l´ogicas como disposi i os ´ısicos, como los senso es, los mo o es o la pan alla del obo NXT. Figu a 6: Cap u a del en o no NXT-G Po o o lado, la he amien a usada en el labo a o io es B icxCC, un IDE que pe mi e esc ibi , compila y ejecu a p og amas sob e un obo NXT. Adem´as, iene una se ie de u ilidades que pe mi en la in e acci´on con el obo de independien emen e del IDE1. Nex By e Codes (NBC) y No eXac ly C (NXC) son dos lenguajes lib es que pueden usa se pa a p og ama obo s NXT en B icxCC. NBC es un lenguaje con sin axis de ensamblado y NXC es un lenguaje de al o ni el, simila a C, cons uido sob e el compilado NBC. NXC es uno de los lenguajes de p og amaci´on pa a NXT m´as ex endidos, usado incluso pa a p og ama ideojuegos den o de un b ick de NXT. De en e las dis in as u ilidades pa a NXT que exis en, sob esalen dadas nues as necesidades dos de ellas: NeXTTool Es un p og ama de l´ınea de comandos de Windows que pe mi- e habla con el obo NXT. Es compa ible con una amplia a iedad de acciones, como po ejemplo desca ga el i mwa e NXT, desca ga 1h p://b icxcc.sou ce o ge.ne /u ili ies.h ml 18 y ca ga a chi os desde y hacia el NXT, comp oba el ni el de la ba- e ´ıa, la ep oducci´on de a chi os de sonido y melod´ıa, ocando onos, lis ando odos los a chi os en el NXT, y la en ada de la lec u a y alo es de salida. Compilado NBC Es un p og ama de l´ınea de comandos que compila c´odigo NXC o NBC en p og amas que se pueden ejecu a sob e el i mwa e es ´anda del NXT o sob e el i mwa e mejo ado. El compila- do NBC pe mi e an o gua da la salida del compilado en un a chi o como subi lo al NXT pa a su ejecuci´on. A pesa de que las uncionalidades se supe ponen en e las dos he a- mien as, el compilado NBC es la ´unica he amien a que pe mi e la compi- laci´on de c´odigo NXC ue a del en o no de B icxCC. Po an o, en cuan o a p og amas de consola, la p ime a elecci´on es el compilado NBC. Exis en he amien as pa a compila y ejecu a c´odigo en o os lenguajes, como ja a (leJOS NXT) o C#, pe o po desg acia no se han encon ado ning´un compilado en o ma de lib e ´ıa pa a NXC (el IDE B icxCC pe mi e compila el c´odigo den o de la pla a o ma; se examin´o la posibilidad de ex ae es a uncionalidad o usa la de o ma independien e, pe o al es a implemen ado en Delphi, un lenguaje de p og amaci´on con el que no es oy amilia izado, no consegu´ı lle a lo a cabo). Po an o ´unica opci´on disponible es implemen a un w appe al ededo del compilado NBC pa a pode usa lo como una API. Aunque la iabilidad de es a he amien a deja un poco que desea , al se la ´unica opci´on iable, es la escogida, a´un siendo conscien es de que no es la m´as elegan e. 4.1.1. Blue oo h Menci´on apa e me ece la conexi´on Blue oo h. Du an e la e aluaci´on de la in e acci´on po Blue oo h se comp ob´o que, al menos en el en o no donde se desa oll´o es e PFC, la con igu aci´on necesa ia pa a pode usa la conexi´on Blue oo h es complicada y a´un as´ı no ga an iza una conexi´on es able. El p oblema eside en que cuando in en amos conec a po Blue oo h, siemp e sale el mensaje “Line is busy” En p ime a ins ancia, pa ec´ıa que el p oblema esid´ıa en el d i e po de ec o de Windows XP, de hecho, B icxCC ecomienda ins ala los d i- 19 e s Fan om2. Seguimos las ins ucciones, ins alamos el d i e , pe o sigue sucediendo lo mismo. Buscando m´as soluciones, pa ece que hay cie os d i e s Blue oo h con- c e os que pe mi en que uncione bien3. Al pa ece , solo las e siones 1.4.x.x y 5.0.x.x de los d i e s Blue oo h de Widcomm uncionan co ec amen e. Es os d i e s es ´an desca alogados, pe o a´un se pueden encon a en las e- des P2P. Despu´es de a ias en a i as, se consigue ins ala una e si´on que unciona. 4.2. In e acci´on emo a con el obo La in e acci´on en e Moodle y el labo a o io de ob´o ica se ealiza ´a me- dian e un se icio web. Un se icio web es una ecnolog´ıa que, median e un conjun o de p o ocolos y es ´anda es, pe mi e el in e cambio de da os en e aplicaciones de so wa e. Es as aplicaciones pueden es a desa olladas en dis in os lenguajes de p og amaci´on y ejecu adas en dis in as pla a o mas. Exis en a ios es ´anda es de in e cambio de da os, ese˜na emos los m´as ele an es: SOAP (Simple Objec Access P o ocol) es un p o ocolo es ´anda que de ine c´omo dos obje os en di e en es p ocesos pueden comunica se po medio de in e cambio de da os XML. RPC (Remo e P ocedu e Call) es un p o ocolo de comunicaci´on en e p o- cesos que pe mi e a un p og ama llama a una unci´on o m´e odo de o o p og ama. Tan o XML-RPC como JSON-RPC son e siones sim- ples del p o ocolo, de iniendo un educido se de ipos b´asicos con los cuales ep esen a da os. REST (Rep esen a ional S a e T ans e ) o iginalmen e se e e ´ıa a un con- jun o de p incipios de a qui ec u a, aunque en la ac ualidad se usa en el sen ido m´as amplio pa a desc ibi cualquie in e az en e sis e- mas que u ilice di ec amen e HTTP pa a ob ene da os o indica la ejecuci´on de ope aciones sob e los da os, en cualquie o ma o (XML, JSON, e c) sin las abs acciones adicionales de los p o ocolos basados en pa ones de in e cambio de mensajes, como po ejemplo SOAP. De en e las opciones disponibles, se escogi´o REST po su simplicidad 2h p://b icxcc.sou ce o ge.ne /NXTFan omD i e Help.pd 3h p://nx empla .blogspo .com.es/2006/10/blue oo h-nx - obo ics-s udio.h ml 20 ( en e a SOAP), el desacoplamien o ( en e a RPC) y se uno de los es ´anda- es m´as ex endidos ac ualmen e. 4.3. In e acci´on en e el obo y la pla a o ma Moodle An es de en a en pa icula a examina las opciones en cuan o al m´odu- lo, ealiza emos una peque˜na desc ipci´on de Moodle, pla a o ma hacia la que se o ien a el p oyec o. Moodle es una pla a o ma de ap endizaje de dis ibuci´on lib e, que ayu- da a los educado es a c ea comunidades de ap endizaje en l´ınea. Es e ipo de pla a o mas ecnol´ogicas ambi´en se conocen como LMS (Lea ning Ma- nagemen Sys em). Es as he amien as son de g an u ilidad en el ´ambi o educacional, ya que pe mi en a los p o eso es la ges i´on de cu sos i uales pa a sus alumnos (educaci´on a dis ancia o e-lea ning), o la u ilizaci´on de un espacio en l´ınea que d´e apoyo a la p esencialidad (ap endizaje semip esen- cial, blended lea ning o b-lea ning). Moodle p omue e una pedagog´ıa cons uc i is a social (colabo aci´on, ac- i idades, e lexi´on c ´ı ica, e c.). Su a qui ec u a y he amien as son ap opia- das pa a clases en l´ınea, as´ı como ambi´en pa a complemen a el ap endizaje p esencial Den o de Moodle podemos dis ingui , en e o os, es oles p incipales con dis in as esponsabilidades y unciones: Adminis ado Es esponsable de la ins alaci´on, pues a en ma cha y man eni- mien o del Moodle. Se enca ga de c ea las ca ego ´ıas y cu sos que se ´an isibles en la pla a o ma, as´ı como del aspec o y uncionalidades de la misma. P o eso Gene a el con enido del cu so. De ine e inse a los ecu sos que conside e necesa ios pa a el ´op i- mo ap endizaje de su asigna u a. Plan ea ac i idades a iadas que posibili en la pa icipaci´on y el ap endizaje ac i o del alumnado. Acompa˜na y e alua a sus es udian es a a ´es de las he amien- as de comunicaci´on y las ac i idades de e aluaci´on que p opo - ciona la pla a o ma. 21 Alumno Consul a con enidos a a ´es de los ma e iales y ecu sos acili- ados po el docen e (a chi os, enlaces web, ´ıdeos...) Realiza ac i idades po medio de los o os, cues iona ios, subida de a chi os, wikis... In e ac ua con los compa˜ne os y docen es haciendo uso de los o os y cha s. A pa e de la adminis aci´on del p opio si io, de los usua ios y de los cu sos, Moodle ambi´en o ece un conjun o de ac i idades y ecu sos p ede- inidos (bloques) pa a los cu sos, como pueden se los o os, wikis, a eas, cues iona ios, e c. Tambi´en pe mi e a˜nadi nue os ipos de bloques, en el caso de que los gen´e icos no se ajus a an a un ipo de ac i idad o ecu so. Dado que que emos in eg a el labo a o io en es a pla a o ma de en- se˜nanza online, de nue o se nos p esen an dos opciones: Implemen a un ipo nue o de ac i idad de Moodle. Ap o echa uno de los ipos p eexis en es y adap a lo a nues as ne- cesidades. La p ime a opci´on p esen aba como en ajas el hecho de ajus a bien el compo amien o de la ac i idad a nues as necesidades, en e a los in- con enien es de la cu a de ap endizaje necesa ia pa a implemen a dicha ac i idad y el hecho de que es a ac i idad no se ´ıa compa ible con o as pla a o mas, po lo que debe ´ıa se eimplemen ada si se quisie a usa . Exa- minando es a posibilidad, se io que la cu a de ap endizaje e a un cos e bas an e al o, po lo que se e alua on o as posibilidades. Pa a la segunda opci´on, de en e las ac i idades exis en es nos cen a- emos en la ac i idad He amien a ex e na. Es a ac i idad pe mi e inse - a como una ac i idad una he amien a ex e na un ecu so que cumpla el es ´anda LTI desde o a web. Es a opci´on ence una de las des en ajas de la an e io , ya que a ias pla a o mas de ap endizaje an o acep an como implemen an el es ´anda LTI. Sigue exis iendo el incon enien e con espec- o al ap endizaje, pe o es meno , ya que hay lib e ´ıas que implemen an el es ´anda de o ma anspa en e. 22 4.3.1. LTI El es ´anda LTI (Lea ning Tools In e ope abili y) es un es ´anda c eado po IMS Global Lea ning Conso ium4. Sus obje i os son: P opo ciona un modelo de implemen aci´on sencilla consis en e en una URL, una cla e y un oken sec e o que el adminis ado LMS o el ins uc o del cu so puedan usa en la pla a o ma de ap endizaje. De ini un p o ocolo pa a el lanzamien o de una aplicaci´on ex e na a la pla a o ma, de o ma que sopo e un inicio de sesi´on ´unico y que conse e el con ex o de ap endizaje y los oles den o de ese con ex o. Hace que los enlaces a aplicaciones ex e nas sean po ables median e la de inici´on de elemen os de da os que se pueden inc us a en IMS Common Ca idges5(o o es ´anda de IMS que no abo da emos en el p esen e documen o). Concep os b´ asicos El lujo de abajo b´asico pa a u iliza LTI se inicia cuando el ins uc o o adminis ado LMS accede a una he amien a de ap endizaje ex e na alo- jada. El adminis ado de la he amien a p opo ciona al adminis ado o al ins uc o una URL, una cla e y un oken sec e o pa a la he amien a. Pa a el caso de uso del Ins uc o , po lo gene al, se a˜nade la he amien a LTI a la es uc u a del cu so como un enlace a un ecu so median e el panel de con ol de la pla a o ma de ap endizaje. El ins uc o in oduce la URL, el oken sec e o y la cla e como me ada os del enlace al ecu so. Cuando los es udian es seleccionan la he amien a, la pla a o ma de ap endizaje u iliza la URL, el oken sec e o y la cla e pa a ans e i de o ma anspa en e al es udian e a la he amien a ex e na en un i ame o una nue a en ana del na egado . Pa a el caso de uso de adminis ado , po lo gene al, a˜naden una “he a- mien a i ual” a la pla a o ma de ap endizaje, in oduciendo la di ecci´on URL, el oken sec e o y la cla e. Una ez hecho es o, los ins uc o es sim- plemen e en la he amien a LTI eci´en con igu ada como o a he amien a o ac i idad, que puede se usada como un ecu so m´as en su es uc u a del cu so. Es posible que ni ins uc o es ni es udian es sean conscien es de que 4h p://www.imsglobal.o g/ 5h p://www.imsglobal.o g/cc/ 23 la he amien a que es ´an u ilizando es ´an ejecu ´andose ue a de la pla a o - ma. Ellos simplemen e seleccionan y u ilizan la he amien a como cualquie o a he amien a in e na. En ambos casos, la he amien a ex e na ecibe una solici ud de lanza- mien o que incluye la iden idad del usua io, in o maci´on de los cu sos, in o - maci´on de unciones, la cla e y la i ma. La in o maci´on de lanzamien o se en ´ıa median e un o mula io HTTP gene ado en el na egado del usua io con los elemen os de da os LTI en campos de o mula io ocul os y au om´a i- camen e en iados a la he amien a ex e na median e Ja aSc ip . Los da os en el o mula io HTTP se i man con el es ´anda de segu idad OAu h6po lo que la he amien a ex e na puede es a segu a de que los da os de lanza- mien o no se modi ica on en e el momen o en que la pla a o ma gene a y i ma los da os y el momen o en que la he amien a ecibe esos da os. Una ez ecibida la solici ud del lanzamien o, la he amien a puede op a po edi igi el na egado del usua io a o a URL o puede gene a di ec a- men e el con enido solici ado. Figu a 7: Esquema de in e acci´on de LTI 6www.oau h.ne 24 4.6.6. Ja aSc ip Ja asc ip es un lenguaje de sc ip ing basado en el concep o de p o o i- pos (he encia po delegaci´on), implemen ado o igina iamen e pa a Ne scape Communica ions Co po a ion, y que de i ´o en el es ´anda ECMASc ip . Se conoce sob e odo po su use en p´aginas web, pe o ambi´en se u iliza en o as aplicaciones. A pesa de su nomb e, Ja asc ip no de i a del lenguaje de p og amaci´on Ja a, pe o ambos compa en una sin axis simila inspi ada en el lenguaje C. Sem´an icamen e, Ja asc ip es ´a m´as p ´oximo a lenguajes como Sel o Ac ionSc ip (basado ambi´en en ECMASCRIPT). Es a ecnolog´ıa nos pe - mi e ac ualiza con enidos de la web sin ene que eca ga la p´agina. 4.6.7. JQue y JQue y es una lib e ´ıa de Ja aSc ip c eada pa a simpli ica la mane a de in e ac ua con los obje os HTML. Median e JQue y es posible mane- ja e en os, desa olla animaciones, e c. de mane a sencilla. JQue y es la lib e ´ıa de Ja asc ip m´as usada. 31 4.7. He amien as de desa ollo 4.7.1. B icxCC B icx Command Cen e (B icxCC) es un en o no de desa ollo in eg ado (IDE, de sus siglas en ingl´es) mul ipla a o ma pa a p og ama obo s LEGO Minds o ms de cualquie gene aci´on, incluyendo los de e ce a gene aci´on EV3. B icxCC incluye sopo e pa a p og ama en No eXac ly C (NXC) y Nex By e Codes (NBC), en e o as opciones. B icxCC es ´a implemen ado en Delphi y el c´odigo uen e licenciado bajo la Mozilla Public Licence, siendo po an o de lib e modi icaci´on, dis ibuci´on y uso, incluso con ines come ciales. Figu a 9: B icxCC IDE 32 4.7.2. Eclipse Eclipse es uno de los en o nos de desa ollo in eg ado (IDE) mul ipla a o ma m´as amosos, siendo la p incipal opci´on, jun o a Ne Beans, pa a p og ama en Ja a. G acias a un sis ema de plugins que le do a de una g an lexibilidad, se puede usa pa a p og ama en o os lenguajes o pa a a˜nadi uncionalida- des que pe mi an p og ama mejo en unci´on del en o no, pa a aplicaciones web o de esc i o io, po ejemplo. Esc i o p incipalmen e en Ja a, es ´a licenciado bajo la Eclipse Public Licen- se, siendo po an o de lib e modi icaci´on, dis ibuci´on y uso, incluso con ines come ciales. En es e p oyec o se ha usado pa a p og ama las pa es en Ja a, es o es, la lib e ´ıa de in e acci´on con el obo y el se icio web REST. Figu a 10: Eclipse IDE 33 4.7.3. Ne Beans Ne Beans es el en o no de desa ollo in eg ado (IDE) mul ipla a o ma o i- cial de Ja a, siendo desa ollado y man enido po O acle Sun. O ien ado p incipalmen e a Ja a, ambi´en sopo a o os lenguajes, en pa icula PHP, C/C++ y HTML5. De o ma simila a Eclipse, Ne Beans iene un sis ema de m´odulos que pe mi e ajus a lo a la a ea que se quie e lle a a cabo, ya sea median e m´odulos o iciales o m´odulos desa ollados po e ce os. Esc i o en Ja a, se licenci´o inicialmen e bajo la es ´a licenciado bajo la Com- mon De elopmen and Dis ibu ion License (CDDL) de Sun. Pos e io men- e, se con i i´o a licencia dual al o ece ambi´en licencia bajo la GNU Gene al Public License 2 (GPL-2). Es o pe mi e escoge en e la CDDL, una licencia que pe mi e la lib e modi icaci´on, dis ibuci´on y uso, incluso con ines come ciales, y la GPL-2, una licencia m´as es ic i a, pues ue za a libe a el c´odigo y licencia los abajos de i ados bajo la misma licencia. En es e p oyec o se ha usado pa a p og ama las pa es en PHP, es o es, el m´odulo LTI. Figu a 11: Ne Beans IDE 34 5. A qui ec u a y dise˜no La a qui ec u a cons a ´a de las siguien es pa es: Robo NXT La p ´ac ica se ealiza ´a sob e es e obo . Se conec a ´a con la lib e ´ıa puen e median e cable USB o Blue oo h. Lib e ´ ıa puen e Realiza odas las a eas ela i as al obo , es o es, com- pila y ca ga el c´odigo, lanza la ejecuci´on de ´es e, egis a los mensajes y los posibles e o es de compilaci´on o ejecuci´on. Se icio web Pe mi e la in e acci´on en e la lib e ´ıa puen e y el se icio LTI. Modulo LTI Capa adicional que pe mi e el acceso a las p ´ac icas desde cualquie pla a o ma de ense˜nanza en l´ınea que cumpla es e es ´anda . Pla a o ma Moodle Es la pla a o ma que ges iona odo lo e e en e a los cu sos. Debe pe mi i la c eaci´on de una ac i idad que in e ac ´ue con el se icio LTI. Figu a 12: Diag ama de clases de la lib e ´ıa puen e 35 5.1. Lib e ´ıa puen e y se icio web 5.1.1. Diag ama de clases A con inuaci´on se mues an la clases implicadas en la lib e ´ıa puen e y el se icio web. Figu a 13: De inici´on de clases 5.1.2. Desc ipci´ on de las clases S a us: Es una enume aci´on que pe mi e codi ica los di e en es es ados inales de un esul ado. Valo es: COMPILATION ERROR Ha ocu ido un e o de compilaci´on. DOWNLOAD ERROR No se ha podido ans e i el p og ama al obo . SUCCESS El p og ama se ha podido compila o compila , ans e i y ejecu a con ´exi o. IO EXCEPTION Ha ocu ido un e o de I/O du an e la ejecuci´on del p oceso de compilaci´on y ans e encia. INTERRUPTED EXCEPTION La ejecuci´on del p oceso de com- pilaci´on y ans e encia ha sido in e umpida. Resul : Es a clase con iene oda la in o maci´on e e en e al esul ado de una acci´on de la lib e ´ıa. A ibu os: 36 s a us El es a us de inal de la ejecuci´on. in o Ou pu de ex o de la ejecuci´on. exi Val Valo de salida de la ejecuci´on. NXTB idge: Es a clase con iene las unciones necesa ias pa a in e ac ua con el obo . RobolabREST: Es a clase se enca ga de o ece los m´e odos REST nece- sa ios pa a in e ac ua con el obo . 5.2. M´odulo LTI En es a secci´on se de alla ´a el dise˜no de pan allas y de base de da os del m´odulo LTI. Pa a simpli ica el desa ollo, se uni ica on los ac o es Admi- nis ado y P o eso en uno solo, de mane a que se dise˜na ´an ambos casos de uso pa a un usua io con ol p o eso . Los casos de uso de Alumno se dise˜na ´an pa a el ol de es udian e. 5.2.1. Diag ama de clases Figu a 14: Es uc u a de la base de da os de p ´ac icas 5.2.2. Desc ipci´ on de las clases Exe cise: Rep esen a la especi icaci´on del eje cicio, es o es, oda la in o - maci´on ela i a a un eje cicio o p ´ac ica A ibu os: id Iden i icado de la p ´ac ica. consume key Cla e que iden i ica al consumido . 37 esou ce id Iden i icado ´unico (p opio del consumido ) del ecu so que accede al se icio LTI. i le T´ı ulo de la p ´ac ica. desc ip ion Desc ipci´on o enunciado de la p ´ac ica. sample code C´odigo uen e de mues a de la p ´ac ica, si lo iene. owne Iden i icado del usua io que c e´o la p ´ac ica. isible De e mina si la p ´ac ica es ´a disponible o no. c ea ed Fecha en la que la p ´ac ica ue c eada. modi ied Fecha en la que la p ´ac ica ue modi icada po ´ul ima ez. A ibu os: Submission: id Iden i icado de la en ega. exe cise Iden i icado de la p ´ac ica. use Iden i icado del usua io que hace la en ega. code C´odigo en iado a a ´es del edi o de ex o. code ile C´odigo en egado median e un iche o. e alua ion E aluaci´on asignada po el p o eso una ez e isada la en ega. c ea ed Fecha en la que la p ´ac ica ue c eada. modi ied Fecha en la que la p ´ac ica ue modi icada po ´ul ima ez. 5.2.3. Diag amas de secuencia Pa a c ea una p ´ac ica, el usua io adminis ado debe c ea un bloque de ipo ’he amien a ex e na’ e in oduci los da os necesa ios. El m´as im- po an e es la cla e de consumido , que iden i ica a la pla a o ma den o del m´odulo LTI. Una ez c eado el bloque, Moodle en ia ´a la cla e de consumi- do y el iden i icado de ecu so, que es el iden i icado ´unico del bloque en es a ins ancia de Moodle, al m´odulo LTI, que c ea ´a una p ´ac ica nue a. Figu a 15: Secuencia pa a caso de uso: C ea p ´ac ica Una ez que una p ´ac ica se ha c eado, siemp e que el adminis ado 38 acceda a ese bloque, pod ´a edi a lo y gua da las modi icaciones. Pa a eso es necesa ia la in o maci´on de iden i icaci´on (cla e de consumido , iden i icado de ecu so) y la in o maci´on nue a de la p ´ac ica Figu a 16: Secuencia pa a caso de uso: Edi a y gua da p ´ac ica Pa a elimina una p ´ac ica, sencillamen e se elimina el bloque de Moodle. Figu a 17: Secuencia pa a caso de uso: Elimina p ´ac ica Al accede a una p ´ac ica como p o eso , las c edenciales del usua io se ´an en iadas al m´odulo, pa a que es e pueda mos a la is a asociada al p o eso , donde pod ´a e las p ´ac icas en egadas, ejecu a las y e alua las. Figu a 18: Secuencia pa a caso de uso: Accede a p ´ac ica (P o eso ) 39 Las p ´ac icas en egadas se mos a ´an como un lis ado con in o maci´on ela i a a cada una de ellas y la e aluaci´on asignada. Figu a 19: Secuencia pa a caso de uso: Ve p ´ac icas en egadas Al selecciona una p ´ac ica en egada, el p o eso puede que e ejecu a - la. Pa a eso, el m´odulo LTI mos a ´a la is a de ejecuci´on con la in o maci´on de la p ´ac ica en egada. Figu a 20: Secuencia pa a caso de uso: Ve in o maci´on de una p ´ac ica Desde la is a de ejecuci´on, el p o eso en ia ´a el c´odigo en egado pa a que se ejecu e, examinando el esul ado de la ejecuci´on. Figu a 21: Secuencia pa a caso de uso: Ejecu a una p ´ac ica Desde la is a de ejecuci´on, el p o eso pod ´a e alua la p ´ac ica en e- gada. 40 7Run ime = Run ime.ge Run ime(); 8 y { 9Sys em.ou .p in ln(A ays. oS ing(command)); 10 11 P ocess p = .exec(command); 12 13 // any e o message? 14 S eamGobble e o Gobble = new S eamGobble (p .ge E o S eam()); 15 16 // any ou pu ? 17 S eamGobble ou pu Gobble = new S eamGobble (p .ge Inpu S eam()); 18 19 // kick hem o 20 e o Gobble .s a (); 21 ou pu Gobble .s a (); 22 23 es.exi Val = p .wai Fo (); 24 25 i (!e o Gobble .isEmp y()) { 26 es.in o = e o Gobble .ge Con en (); 27 es.s a us = S a us.COMPILATION_ERROR; 28 29 }else { 30 S ing con en = ou pu Gobble .ge Con en (); 31 es.in o = con en ; 32 i (con en .con ains(DOWNLOAD_FAILED_MSG)) { 33 es.s a us = S a us.DOWNLOAD_FAILED; 34 }else { 35 es.s a us = S a us.SUCCESS; 36 } 37 } 38 39 }ca ch (IOExcep ion e) { 40 es.in o = e.ge Message(); 41 es.s a us = S a us.IO_EXCEPTION; 42 43 }ca ch (In e up edExcep ion e) { 44 es.in o = e.ge Message(); 45 es.s a us = S a us.INTERRUPTED_EXCEPTION; 46 } 47 48 e u n es; 49 } Una ez desc i as las piezas necesa ias, las combina emos pa a pode ealiza las dos acciones p incipales de la lib e ´ıa: 47 Compila La unci´on pa a compila equie e como en ada un c´odigo en o ma de ex o y de ol e ´a el esul ado encapsulado en un obje o Re- sul . 1public s a ic Resul compile(S ing nx Code) { 2 3 y { 4File emp = codeToFile(nx Code); 5S ing pa h = emp.ge Absolu ePa h(); 6Resul es = launchCommand(new S ing[]{NBC_CMD, pa h}); 7 emp.dele eOnExi (); 8 e u n es; 9 10 }ca ch (IOExcep ion e) { 11 Resul es = new Resul (); 12 es.s a us = S a us.IO_EXCEPTION; 13 es.in o = e.ge Message(); 14 e u n es; 15 } 16 } Compila y ejecu a La unci´on pa a compila y ejecu a equie e como en ada un c´odigo en o ma de ex o y el alias de la conexi´on. Dichos alias son el inpu pa a la opci´on ’-S’ del comando nbc, en es e caso, ’usb’ pa a usa la conexi´on po cable, ’BTH’ pa a usa la conexi´on blue oo h. De ol e ´a el esul ado encapsulado en un obje o Resul . 1 2s a ic S ing usbAlias = "usb"; 3s a ic S ing blue oo hAlias = "BTH"; 4 5p i a e s a ic inal S ing RESOURCE_OPT = "-S="; 6p i a e s a ic inal S ing RUN_OPT = "- "; 7 8public s a ic Resul un(S ing nx Code, S ing alias) { 9 y { 10 File emp = codeToFile(nx Code); 11 S ing pa h = emp.ge Absolu ePa h(); 12 Resul es = launchCommand(new S ing[]{NBC_CMD, RESOURCE_OPT + alias, RUN_OPT, pa h}); 13 emp.dele eOnExi (); 14 e u n es; 15 16 }ca ch (IOExcep ion e) { 17 Resul es = new Resul (); 18 es.s a us = S a us.IO_EXCEPTION; 19 es.in o = e.ge Message(); 20 e u n es; 48 21 } 22 } El ou pu a˜nadido al obje o Resul es solo la aza de consola de la he amien a nbc. A esa aza hab ´ıa que a˜nadi los posibles mensajes que en ia a el p og ama desde el c´odigo ejecu ado en el obo NXT. Pa a ello usa ´ıamos la siguien e pieza de c´odigo, que nos pe mi e escucha un pue o COM de e minado a la espe a de dichos mensajes: 1class Se ialPo Reade implemen s Se ialPo E en Lis ene { 2 3Se ialPo se ialPo ; 4S ingBuilde messages = new S ingBuilde (); 5 6public Se ialPo Reade (Se ialPo se ialPo ) { 7 his.se ialPo = se ialPo ; 8} 9 10 public oid se ialE en (Se ialPo E en e en ) { 11 12 i (e en .isRXCHAR() && e en .ge E en Value() > 0) {// I da a is a ailable 13 14 // Read da a 15 y { 16 by e bu e [] = se ialPo . eadBy es(); 17 messages.append(new S ing(bu e )); 18 19 }ca ch (Se ialPo Excep ion ex) { 20 Sys em.ou .p in ln(ex); 21 } 22 23 }else { 24 // Do no hing 25 } 26 } 27 28 public S ing ge Messages() { 29 e u n messages. oS ing(); 30 } 31 32 public oid clea Messages() { 33 messages.se Leng h(0); 34 } 35 } 49 6.2. Se icio web La implemen aci´on del se icio web REST esul a muy sencilla, g acias al uso de las ano aciones. Sencillamen e se c ean los m´e odos necesa ios pa a cada pun o de en ada y se ano an adecuadamen e: Compila 1@GET 2@Pa h("/compile/") 3@P oduces("applica ion/json") 4public Response compileGET(@Que yPa am("da a") S ing da a) { 5 e u n compilePOST(da a); 6} 7 8@POST 9@Pa h("/compile/") 10 @P oduces("applica ion/json") 11 public Response compilePOST(@Que yPa am("da a") S ing da a) { 12 13 Resul es = NXTIn e ace.compile(da a); 14 15 e u n Response.s a us(200) 16 .heade ("Access-Con ol-Allow-O igin", "*") 17 .en i y( es) 18 .build(); 19 } Compila y ejecu a 1 2boolean BTMode = alse; 3 4@GET 5@Pa h("/ un/") 6@P oduces("applica ion/json") 7public Response unGET(@Que yPa am("da a") S ing da a) { 8 e u n unPOST(da a); 9} 10 11 @POST 12 @Pa h("/ un/") 13 @P oduces("applica ion/json") 14 public Response unPOST(@Que yPa am("da a") S ing da a) { 50 15 16 Resul es; 17 i (BTMode) { 18 es = NXTIn e ace. unBT(da a); 19 20 }else { 21 es = NXTIn e ace. un(da a); 22 } 23 24 e u n Response.s a us(200) 25 .heade ("Access-Con ol-Allow-O igin","*") 26 .en i y( es) 27 .build(); 28 } Rese˜na ´e a con inuaci´on las ano aciones usadas y la unci´on de cada una de ellas: @Pa h Es a e ique a pe mi e de ini la URI a la que esponde el m´e odo. @GET/@POST Es as dos e ique as indican el ipo de pe ici´on h p que acep an. @P oduces Es a e ique a indica el ipo de da os de espues a, en es e caso, JSON. Po o o lado, es impo an e menciona la cabece a “Access-Con ol- Allow-O igin”. Es a cabece a pe mi e accede al se icio desde cualquie ubicaci´on, odeando una medida de segu idad usada en lenguajes de sc ip de clien e, como ja asc ip o ac ionsc ip . Si ue a necesa io, se pod ´ıa ajus a el compo amien o pa a hace un uso co ec o de es a medidas de segu idad. 6.3. P o o ipo de p uebas Con el obje i o de pode comp oba que la in e az REST uncionaba ap opiadamen e, se implemen ´o un p o o ipo sencillo pa a pode compila y ejecu a c´odigo desde el na egado . Pa a ello, se u iliz´o el se ido de s eaming in eg ado en Yawcam. La aplicaci´on de Yawcam pe mi e edi a el con enido de la p´agina p incipal que mues a el se ido . Sin emba go, las posibilidades de edici´on son muy jus as, as´ı que es mejo edi a el iche o de la p´agina p incipal di ec amen e. En el home del usua io, Yawcam c ea un di ec o io ’.yawcam’, donde se encuen an odos los iche os que el se ido mues a. En conc e o, den o 51 del di ec o io se encuen a el di ec o io ’s eam’, que es donde el se ido busca la p´agina p incipal y po an o con iene los iche os h ml que hab ´a que manipula . En p incipio, el iche o empla e js.h ml, que es el iche o de mues a pa a ep oduci el s eam ia ja asc ip , solo con iene el c´odigo pa a mos a el s eam de ´ıdeo, lo cual nos esul a muy ´u il. Lo ´unico que hace al a a˜nadi , pues, es: El edi o de ex o. Los bo ones de compila y ejecu a . El espacio pa a mos a la espues a de la compilaci´on/ejecuci´on. El c´odigo ja asc ip que ecoge ´a el ex o del edi o y lo en ia ´a al se icio REST. A su ez, mos a ´a la espues a del se icio REST en el espacio p epa ado pa a mos a la. A con inuaci´on mos a ´e dos agmen os de c´odigo que a˜naden cada uno de es os elemen os. La l´ınea 2 del siguien e agmen o de c´odigo impo a la lib e ´ıa necesa ia pa a el edi o en iquecido. De la 4 pa a adelan e, se de inen las unciones necesa ias pa a accede al se icio REST. 1 2<sc ip s c= " h p: // cdn.jsdeli .ne / ace /1.1.8/ min/ ace.js" ype= " ex / ja asc ip " cha se =" u -8 " ></ sc ip > 3 4<sc ip > 5 unc ion compile () { 6sendCode("compile"); 7} 8 9 unc ion un () { 10 sendCode(" un"); 11 } 12 13 unc ion sendCode ( en yPoin ) { 14 a code =edi o .ge Value (); 15 16 a clien =new XMLH pReques (); 17 clien .open("GET","h p://localhos :8080/ obolab- s / obolab / se ice /" + en yPoin + "? da a= " +code); 52 18 clien .on eadys a echange = unc ion() { 19 i (clien . eadyS a e == 4) { 20 i ( clien .s a us == 200) { 21 a in o =JSON.pa se ( clien . esponseTex ); 22 documen .ge Elemen ById('s a us'). inne HTML =in o.s a us; 23 documen .ge Elemen ById(' ace '). inne HTML =in o.in o. eplace(/ n/g,"<b > "); 24 // ale ( in o.s a us ); 25 }else { 26 ale (" E o ! AJAX esponse s a us is " + clien .s a us + ". Maybe he se ice is down..."); 27 } 28 } 29 }; 30 clien .send (); 31 } 32 </sc ip > 33 </head> En el segundo agmen o de c´odigo se de ine la es uc u a del p o o ipo. En conc e o: L´ ınea 2 T´ı ulo de la p´agina. L´ ınea 5 Con enedo pa a el edi o en iquecido. L´ ınea 5-14 C´odigo de mues a. L´ ınea 16 Rep oduc o del s eam. L´ ınea 17-20 Bo ones pa a compila y ejecu a . L´ ınea 22-26 Espacio pa a esc ibi la espues a de la ejecuci´on/compila- ci´on. L´ ınea 37-41 Inicializaci´on del edi o en iquecido. 1 2<h2>Robolab</h2> 3 4<di id='con aine '> 5<di id="edi o "> ask main () 6{ 7OnFwd ( OUT_A , 25) ; 8OnFwd ( OUT_C , 75) ; 9Wai (4000) ; 10 O ( OUT_C ); 53 11 OnRe ( OUT_A , 50) ; 12 Wai (4000) ; 13 O ( OUT_AC ); 14 }</di > 15 <di id="imgLy "> 16 <img id="camImg" s c=" img / loading.jpg " onMouseO e ="ja asc ip : ixMenuColPos( his); showAllMenuCols ();" onMouseOu =" ja asc ip :hideAllMenuLaye s();" onLoad=" ja asc ip :upda eID (); s a Poll ()" onE o =" ja asc ip :showE o Image()" wid h=@WIDTH heigh =@HEIGHT s yle=" bo de : 1px solid # @BORDERCOL;"> 17 <di id='submi _di '> 18 <inpu ype= "bu on" alue=" Compile code " onclick=" compile ();"> 19 <inpu ype= "bu on" alue=" Compile and un code" onclick= " un ();"> 20 </ di > 21 <di > 22 <p>S a us: <span id= 's a us'></span>< p> 23 </ di > 24 </ di > 25 </ di > 26 <p>T ace: <b /> <span id= ' ace '></span>< p> 27 28 <sc ip > 29 a edi o =ace.edi ("edi o "); 30 edi o .se Theme ("ace / heme / monokai "); 31 edi o .ge Session () . se Mode (" ace/ mode / c_cpp "); 32 </sc ip > 6.4. Se icio LTI Pa a implemen a el se icio LTI hemos usado la lib e ´ıa pa a LTI imple- men ada po S ephen Vicke s10. Se ha es uc u ado el c´odigo de la siguien e mane a: launch.php Es e iche o con end ´a el c´odigo pa a alida la conexi´on y ex ae la in o maci´on e e en e a ella, edi eccionando a index.php si la conexi´on es ´alida. index.php Es e iche o con end ´a la pa e p incipal de la es uc u a de la p´agina. En unci´on del ipo de usua io, mos a ´a di e en es con enidos. 10h p://www.sp so wa ep oduc s.com/ 54 lib.php Es e iche o con end ´a odas las unciones necesa ias pa a maneja el con enido. con ig.php Es e iche o con end ´a la in o maci´on de con igu aci´on, como po ejemplo, la in o maci´on necesa ia pa a conec a con la base de da os. Al accede a la p´agina launch.php, se comp oba ´a que las c edenciales apo adas son las co ec as, es deci , que la cla e y el sec e o apo adas po la pe ici´on han sido dados de al a en el se icio LTI ( e II) y que son co ec os. En caso de se co ec os, se almacena cie a in o maci´on en la sesi´on, pa a que en pasos pos e io es sea ´acilmen e accesible, y se edi ige a la p´agina p incipal, index.php. Al accede a index.php, se de e mina si el usua io que hace la pe ici´on es un p o eso o un alumno. En el caso de se un alumno, se le mues a la is a del alumno. Es a is a, basada en el p o o ipo, con iene el ´ı ulo y la desc ipci´on del eje - cicio, el edi o pa a el c´odigo con el c´odigo de mues a, si exis e, bo ones pa a compila , pa a compila y ejecu a y pa a en ega , un espacio pa a el s eaming de ´ıdeo p oceden e del labo a o io y un espacio pa a la aza. Figu a 28: Vis a de alumno En el caso de se un p o eso , se le mues a la is a de p o eso . Es a is a pe mi e edi a el eje cicio inculado al ecu so, es deci , el ´ı ulo, la 55 desc ipci´on y el c´odigo de mues a del eje cicio, y e la lis a de eje cicios en egados. Pa a cada eje cicio en egado, se mues a el iden i icado del alumno, la alo aci´on de la en ega y un link pa a pode p oba lo. Es e link edi igi ´a al p o eso a la is a de ejecuci´on de la en ega, inse ando el c´odigo en egado en el edi o del c´odigo. De es a mane a, pod ´a ejecu a el c´odigo y comp oba que unciona seg´un lo espe ado. Figu a 29: Vis a de p o eso 56 A con inuaci´on se de alla el cos e de cada elemen o y su cos e es imado en unci´on del n´ume o de ho as dedicadas al p oyec o: Ma e ial Gas o Cos e es imado Amo izaci´on Toshiba Sa elli e U300 799€23,04€ Amo izaci´on Samsung T220HD 2,08€ € Amo izaci´on LEGO Minds o ms NXT 280€ € 10,07€ Se ido i ual p i ado 109€/a˜no 18,86€ Licencia Windows XP (OEM Po a il) 0€0€ Conexi´on in e ne 30€/mes 67,5€ Elec icidad po ´a il 0,127186€/kWh 3,61€ Elec icidad NXT (pack 20 pilas AA) 10€9€ To al 66,65€ 8.2.3. Cos es di ec os y o al Pa a calcula el cos e de ac i idad del p oyec o y el o al, plan ea emos 3 ma cos di e en es con p ecios po ho a o ien a i os: Ma co P ecio/ho a Cos e di ec o Cos e o al Compaginaci´on con los es udios (beca io) 6€2130€2186,65 Sala io de un p og ama- do junio 15€5325€5391,65€ Con a aci´on de una emp esa 40€14200€14266,65 63 9. Conclusiones Es e p oyec o se ha ala gado m´as de lo planeado, en mi opini´on debi- do a cos es ocul os. No pod´ıamos p e e de an emano que, po un lado, no hubie a una lib e ´ıa que pe mi ie a compila y ejecu a el c´odigo NXC, que la comunicaci´on con el obo NXT ue a an complicada y el Blue oo h an ines able. Po o o lado, ampoco supimos p e e que la implemen a- ci´on de un m´odulo pa a Moodle equi ie a un buen conocimien o p e io de la pla a o ma. La soluci´on del m´odulo LTI e i ´o es e p oblema, pe o a´un as´ı compo ´o explo a una ecnolog´ıa no p e is a, con el iesgo a˜nadido que supon´ıa. En mi opini´on, es e p oyec o pod ´ıa habe sido di ido en dos, abo dando en m´as p o undidad ambas pa es: Implemen aci´on de una lib e ´ıa de compilaci´on y ejecuci´on de c´odigo NXC y comunicaci´on con el obo NXT Implemen aci´on del m´odulo de Moodle o del m´odulo LTI O a cues i´on impo an e es el hecho de abaja con obo s que es ´an p ´ac icamen e obsole os. P obablemen e si se ealiza an las p ´ac icas con obo s m´as mode nos, la labo de in e acci´on con el obo se ´ıa m´as sen- cilla (aunque, al se los LEGO Minds o ms una ecnolog´ıa ob´o ica pa a ama eu s, no hay ninguna ga an ´ıa a p io i de ello). Po o o lado, es muy in e esan e dispone de la posibilidad de p og ama y ejecu a c´odigo sob e un obo eal. A´un con odos los incon enien es que un simulado no end ´ıa (man enimien o, ese del es ado, e c.), c eo que el eedback y las sensaciones son o almen e dis in as, posi i as en gene al. Los incon enien es plan ean una se ie de e os muy in e esan es a su ez, como implemen a una u ina de ese del obo (¿ al ez una espec´ı ica pa a cada p ´ac ica? ¿pod ´ıa se una gen´e ica?) o a e igua c´omo de e mina que la ejecuci´on del c´odigo ha e minado (o debie a habe e minado). Es o es s´olo a ni el de labo a o io. En cuan o al lado LTI/Moodle, es- e sec o ha a anzado mucho en los ´ul imos a˜nos, ex endi´endose el uso de pla a o mas de ense˜nanza online a p ´ac icamen e odas las ins i uciones de ense˜nanza, ya sea como o ma de ges i´on in e na de los cu sos o como cu - sos pu amen e online, abie os a in e ne . Las posibilidades que b indan las pla a o mas de ense˜nanza online son inmensas y, a su ez, ex ae y ges- iona odo ese po encial, me pa ece un abajo imp esionan e. El es ´anda LTI es un a ance en cuan o a ese po encial. La eu ilizaci´on de ecu sos es 64 muy impo an e dado el c ecien e ecosis ema ela i o a es as pla a o mas y LTI me pa ece un es ´anda bien pensado, empezando po el hecho de se agn´os ico en cuan o a la pla a o ma. A su ez, es e ipo de ecnolog´ıas siem- p e p esen an a ios p oblemas cla e, como la asinc on´ıa y la concu encia, plan eando nue os e os con espec o al p oyec o, como c´omo se ges ionan los accesos concu en es o c´omo se asignan los ecu sos exis en es ( obo s). A ni el pe sonal es e p oyec o me ha pe mi ido in oduci me en el mun- do de la ob´o ica ama eu . Las posibilidades que b inda el ki de LEGO Minds o m NXT son muy g andes, an o a ni el de cons ucci´on como a ni el de p og amaci´on, g acias a odo el ecosis ema de lenguajes y aplica- ciones pa a NXT. Tambi´en habe descubie o el es ´anda LTI, el cual me pa ece una g an inicia i a, ha sido una pa e muy sa is ac o ia del p oyec o. Encuen o muy impo an e que exis an es e ipo de inicia i as, pe mi iendo la in e conexi´on y la eu ilizaci´on de ecu sos. 9.1. Mejo as y abajo u u o Han quedado en el ai e a ios obje i os: La comunicaci´on Blue oo h unciona, pe o equie e abajo de es abi- lizaci´on de la comunicaci´on. Se ha implemen ado un m´e odo pa a ecibi mensajes del p og ama que se ejecu a en el obo pe o al a in eg a lo co ec amen e en la lib e ´ıa. La ges i´on de las p ´ac icas es udimen a ia. Se ´ıa in e esan e pode eu iliza las p ´ac icas, po ejemplo. (Es o debe ´ıa ges iona se a a ´es de la pla a o ma iLabVi ). Y han su gido a ias mejo as: Implemen a una u ina de ese del obo , ya sea gen´e ica, ya sea espec´ı ica pa a cada con igu aci´on. Implemen a un m´e odo pa a de e mina si una ejecuci´on ha acabado (¿un w appe pa a el c´odigo en iado que emi a un mensaje?) o debe ´ıa habe acabado (¿un ime ?). Mejo a el dise˜no y la usabilidad de las p´aginas del m´odulo LTI. Sus i ui la c´ama a web po una c´ama a IP 65 De e mina como compila el c´odigo el IDE B icxCC e inco po a lo a la lib e ´ıa. 66 Re e encias h p://b icxcc.sou ce o ge.ne / h p://b icxcc.sou ce o ge.ne /NXTFan omD i e Help.pd h ps://code.google.com/p/ja a-simple-se ial-connec o / h p://www.eng.bu alo.edu/ colinlea/Blue oo h Wi h NXT.pd h p://www. ogella.com/ u o ials/REST/a icle.h ml h ps://en.wikipedia.o g/wiki/Compa ison o Ja aSc ip -based sou ce code edi o s h p://www.yawcam.com/ h p://ace.c9.io/ h p://www.imsglobal.o g/l i h p://www.imsglobal.o g/LTI/ 1p1/l iIMG 1p1.h ml h p://l iapps.ne /wo kshop/ h p://p ojec s.oscelo .o g/g /p ojec /php-basic-l i/ h p://www.sp so wa ep oduc s.com/php/ a ing/ h ps://gi hub.com/Ha a d-ATG/wo kshop-l i-basic 67 Anexos I. Modi icaci´on Yawcam Du an e el desa ollo descub ´ı un p oblema ela i o al se ido de s ea- ming de Yawcam. En el caso de que quisie a ene el se ido de s eaming en una m´aquina y el p o o ipo o el m´odulo LTI en o a, es deci , si la p´agina web que mues a el ´ıdeo es ´a en una m´aquina di e en e de la del se ido de s eaming, daba p oblemas po la pol´ı ica del mismo o igen (same-o igin policy) del na egado . La pol´ı ica del mismo o igen es una impo an e medida de segu idad im- plemen ada en los na egado es web desde hace mucho iempo. B´asicamen e consis e en pe mi i que un sc ip con enido en una p´agina web acceda a da os de o a p´agina solo en el caso de que ambas p´aginas engan el mismo o igen. Es a pol´ı ica p e iene que un sc ip malicioso p o enien e de una p´agina acceda a in o maci´on sensible de o a a a ´es del DOM (Documen Objec Model). Exis en a ias o mas de elaja es a pol´ı ica. En nues o caso, la opci´on que m´as se ajus a a lo que necesi amos es el in e cambio de ecu so de o i- gen c uzado (C oss-O igin Resou ce Sha ing). Es e es ´anda ex iende HTTP a˜nadiendo una nue a cabece a de o igen a la pe ici´on y una nue a cabece a Access-Con ol-Allow-O igin a la espues a. Es o pe mi e al se ido a˜nadi una lis a de los o ´ıgenes que pueden pedi una iche o (o incluso usa un comod´ın, el as e isco, pa a pe mi i pe iciones desde cualquie p´agina). La soluci´on m´as sencilla y ´apida que encon ´e ue decompila el c´odigo de Yawcam, que esul ´o se ja a, busca la clase o clases esponsables de esc ibi los heade s y pa chea las. En es e caso, hab´ıa una sola clase esponsable de ello, WebSe e Th ead, que es la que se enca ga de maneja cada una de las conexiones al se ido . Busqu´e odos los pun os en los que esc ibe los heade s de la espues a (hay a ios, el c´odigo no es de los mejo es) y a˜nad´ı la l´ınea que pe mi e pe iciones espec´ı icamen e desde el se ido emo o. A con inuaci´on mues o un ex ac o del c´odigo, a modo de ejemplo: 1sendH pOkHeade ( ue); 2 3 his.size = wappage.leng h(); 4 his.ou .p in ("Access-Con ol-Allow-O igin: h p://playg ound.a uin.es" + his.b ); 5 his.ou .p in ("Con en -Leng h:" + his.size + his.b ); 68 6 his.ou .p in ("Con en -Type: " + con en Type + his.b ); 7 his.ou .p in ("Mime-Type: " + con en Type + his.b + his.b ); 8 9 his.ou .p in (wappage); 10 11 his.ou . lush(); 12 his.ou .close(); 13 his.socke .close(); 69 II. Regis o LTI Pa a con ola el acceso a una he amien a LTI se usa el p o ocolo OAu h11. Dicho p o ocolo equie e una cla e y un sec e o compa ido pa a i ma los mensajes. La cla e es ansmi ida con cada mensaje, as´ı como la i ma OAu h gene ada basada en la cla e. Po lo an o, es necesa io, como m´ınimo, dispone de un pa cla e/sec e o pa a pode usa una he amien a LTI. Pa a eso, el m´odulo LTI dispone de una p´agina muy sencilla de adminis- aci´on, en la que un adminis ado del m´odulo LTI puede da de al a un pa cla e/sec e o. Adicionalmen e, se pueden de ini o os c i e ios de il ado, como el o igen de la pe ici´on o una echa de expi aci´on del pa cla e/sec e- o. Es esponsabilidad del adminis ado del m´odulo LTI comunica el pa cla e/sec e o al adminis ado de la he amien a consumido a, en es e caso la pla a o ma de ap endizaje, de mane a que pueda usa lo pa a accede al m´odulo LTI. Figu a 30: Adminis aci´on del m´odulo LTI 11h p://www.oau h.ne 70