Integración de un laboratorio remoto de robótica dentro de la plataforma ILabVir
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