5.1 Conclusiones
Si bien en los últimos años se ha realizado un avance en la implementación de la robótica educativa a nivel mundial y en el ámbito colombiano aún existe una falta de masificación y capacitación de los docentes en el uso de robótica educativa. En especial, es preocupante la desigualdad que se presenta en los colegios estatales con respecto a los colegios de naturaleza privada, requiriéndose un mayor esfuerzo por parte de las instituciones educativas públicas para fortalecer iniciativas que hagan uso de las TICS. Desde esta perspectiva, este trabajo buscó la generación de una herramienta accesible y que pueda ser implementada en estos ambientes educativos presentando un grado de independencia a tecnologías mayor a la que se ofrece normalmente en los productos comerciales.
Lo anterior se logró a través de la caracterización y adaptación de una notación de modelado de procesos para la construcción de un editor visual y textual de programación que permitiera la configuración de rutinas para la ejecución de tareas programadas. Esto complementado a través de la construcción de un compilador y múltiples máquinas virtuales que permitan la generación de códigos de operación y ejecución en múltiples plataformas robóticas a partir de la notación definida haciendo uso de tecnologías de computación en nube.
Se definió e implementó un protocolo para transferencia de programas e instrucciones a los artefactos robóticos y finalmente se construyó y validó un banco de aplicaciones de robótica educativa y se realizó el proceso de validaron los resultados del entorno de desarrollo integrado.
5.2 Recomendaciones
Como trabajo futuro se propone ampliar las capacidades del lenguaje de programación y aprovechar las posibilidades de programación remota para la realización de aplicaciones fuera del ámbito educativo. Adicionalmente se recomienda como trabajo futuro una socialización con un mayor número de profesionales enmarcados en un ámbito educativo con el objeto de fortalecer el entorno de desarrollo.
A.
Anexo: Códigos de operación de
la máquina virtual
Para la ejecución de la máquina virtual se definieron una serie de códigos de operación que permiten interpretar la información contenida en el segmento de datos ubicado en la memoria flash del microcontrolador. Los códigos de operación se agruparon en: operaciones de lectura de constantes a pila de operandos, operaciones de modificación de pila, operadores matemáticos, operadores lógicos, operadores funcionales, operaciones de saltos condicionales, operaciones de funciones y procedimientos. Se definen constantes para la identificación de tipos de datos y funciones incorporadas. Tabla 17 operaciones de modificación de pila
Variable Código de Operación
Descripción
VM_ICONS 0xE Lee un entero de 8bits y lo agrega a la pila de operandos
Tabla 18 operaciones de lectura de constantes a pila de operandos
Variable Código de Operación
Descripción
VM_POP 0x10 Retira un elemento de la pila de operandos
VM_POP2 0x11 Retira dos elementos de la pila de operandos
VM_SWAP 0x12 Intercambia de posición los primeros dos elementos de la pila de operandos
VM_DUP 0x13 Duplica el primer elemento en la pila de operandos
primer elemento de la pila de operandos.
VM_LOAD 0x16 Lee un elemento de la memoria local del procedimiento y lo agrega a la pila de operandos
Tabla 19 operadores matemáticos
Variable Código de Operación
Descripción
VM_ADD 0x20 Retira de la pila de operandos los primeros dos elementos y coloca en la pila de operando la suma de los valores
VM_SUB 0x21 Retira de la pila de operandos los primeros dos elementos y coloca en la pila de operando la resta de los valores
VM_MUL 0x22 Retira de la pila de operandos los primeros dos elementos y coloca en la pila de operando la multiplicación de los valores
VM_DIV 0x23 Retira de la pila de operandos los primeros dos elementos y coloca en la pila de operando la división de los valores
VM_REM 0x24 Retira de la pila de operandos los primeros dos elementos y coloca en la pila de operando el módulo de división de los valores
Tabla 20 operadores lógicos
Variable Código de Operación
Descripción
VM_LAND 0x30 Retira de la pila de operandos los primeros dos elementos y aplica el operador lógico “Y”
VM_LOR 0x31 Retira de la pila de operandos los primeros dos elementos y aplica el operador lógico “O”
VM_LXOR 0x32 Retira de la pila de operandos los primeros dos elementos y aplica el operador lógico “O excluyente”
VM_NOT 0x33 Retira de la pila de operandos el primer elemento y aplica la negación del valor
elementos y aplica el operador de comparación “IGUAL A”
VM_ORNE 0x35 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “NO IGUAL A”
VM_ORGT 0x36 Retira de la pila de operandos los primeros dos
elementos y aplica el operador de comparación “MAYOR QUE”
VM_ORGE 0x37 Retira de la pila de operandos los primeros dos
elementos y aplica el operador de comparación “MAYOR O IGUAL QUE”
VM_ORLT 0x38 Retira de la pila de operandos los primeros dos
elementos y aplica el operador de comparación “MENOR QUE”
VM_ORLE 0x39 Retira de la pila de operandos los primeros dos
elementos y aplica el operador de comparación “MENOR O IGUAL QUE”
Tabla 21 operaciones de saltos condicionales
Variable Código de Operación
Descripción
VM_BUILTIN 0x40 Ejecuta una función incorporada de la máquina virtual
Tabla 22 operadores funcionales
Variable Código de Operación Descripción
VM_MVGOTO 0x50 Asigna al valor del puntero de instrucción el valor dado
VM_IFLT 0x51 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “MENOR QUE”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFLE 0x53 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “MENOR O IGUAL QUE”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFEQ 0x54 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “IGUAL A”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFNE 0x55 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “NO IGUAL A”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFGE 0x56 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “MAYOR O IGUAL QUE”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFGT 0x57 Retira de la pila de operandos los primeros dos elementos y aplica el operador de comparación “MAYOR QUE”, si se cumple la condición el valor asigna al valor del puntero de instrucción el valor dado
VM_IFZ 0x58 Retira de la pila de operandos el primer elemento y si este valor es igual a cero el valor asigna al valor del puntero de instrucción el valor dado
Tabla 23 constantes de identificación de tipos de datos
Variable Código de Operación
Descripción
VM_CALL 0x60 Llama a una función ubicada en la posicion dada
VM_RET 0x61 Retorno de una función
VM_MRETURN 0x62 Retorno de una función
VM_HALT 0x63 Fin del programa
Tabla 24 operaciones de funciones y procedimientos
Variable Código de Operación Descripción
_INT 0x1 Valor entero de 8 bits
Tabla 25 constantes de identificación de funciones internas
Variable Código de Operación
Descripción
VM_SLEEP 0x1 Suspende la ejecución el valor de tiempo dado en milisegundos
VM_ON 0x2 Coloca un pin determinado en 1
VM_OFF 0x3 Coloca un pin determinado en 0
VM_USLEEP 0x4 Suspende la ejecución el valor de tiempo dado en microsegundos
VM_MDIR 0x5 Establece la dirección de giro del robot
VM_ENM 0x5 Arranca o detiene los motores
VM_READ 0x67 Lee el valor digital de un pin
VM_AREAD 0x68 Lee el valor analógico de un pin
VM_AWRITE1 0X07 Establece el valor para la PWM1
B.
Anexo: Diccionario de datos de la
aplicación
web
del
entorno
de
desarrollo
Los datos se almacenan de manera relacional en una base de datos MySQL y
fueron definidas las siguientes tablas
Tabla CONDITIONS, almacena las condiciones de los gateways de los
diagramas.
Campo
Tipo
Descripción
id
Int(11)
Clave primaria auto-
incrementable de la tabla
diagram_id
Int(11)
Clave foránea a la clave
primaria de la tabla
DIAGRAM
gateway_id
varchar(50)
Código identificador único
del Gateway en el
diagrama.
sequence_id
varchar(50)
Código identificador único
del elemento saliente del
Gateway en el diagrama.
valor
Varchar(100)
Valor de verdad de la
condición
Tabla DEVICES, se encarga del almacenamiento de los dispositivos (robots)
asociados a un usuario.
Campo
Tipo
Descripción
id
bigint(20)
Clave primaria auto-
incrementable de la tabla
codigo_acceso
Varchar(10)
Clave de acceso para el
dispositivo
tipo
Varchar(20)
Tipo de dispositivo (Lego
EV3, PIC 18F4550, Beagle
Bone Black)
user_id
Int(11)
Clave foránea a la clave
primaria de la tabla Users
Tabla DIAGRAMS almacena las rutinas creadas en la aplicación.
Campo
Tipo
Descripción
id
Int(11)
Clave primaria auto-
incrementable de la tabla
diagram
text
Diagrama de la rutina
almacenada en formato
XML siguiendo el estandar
BPM
name
Varchar(100)
Nombre de la rutina
user_id
Int(11)
Clave foránea a la clave
primaria de la tabla Users
Tabla STEPS, almacenas las actividades o funciones que se pueden realizar en
una actividad de una rutina
Campo
Tipo
Descripción
id
Int(11)
Clave primaria auto-
incrementable de la tabla
step
text
Código en texto plano de la
rutina almacenada.
user_id
Int(11)
Clave foránea a la clave
primaria de la tabla Users
name
Varchar(100)
Nombre de la rutina.
Tabla STEPSDIAGRAMS, es la tabla intersección para la asociación de rutinas
con pasos.
Campo
Tipo
Descripción
id
Int(11)
Clave primaria auto-
incrementable de la tabla
diagram_id
Int(11)
Clave foránea a la clave
primaria de la tabla
Diagram.
step_id
Int(11)
Clave foránea a la clave
primaria de la tabla Step
activiti_id
Varchar(100)
Código de la actividad
donde se ejecuta la acción
position
Int(10)
Orden en el cual se
ejecutará la acción.
Tabla USERS, almacena los usuarios y las contraseñas de las personas con
cuenta en la aplicación.
Campo
Tipo
Descripción
id
Int(11)
Clave primaria auto-
incrementable de la tabla
correo
Varchar(50)
Correo electrónico
password
Varchar(100)
Contraseña
Ie
Varchar(100)
Institución educativa a la
que pertenece
Rol
Varchar(100)
Rol de la persona en la
aplicación. Pensada para
posterior uso.
C.
Anexo: Mensajes de la API REST
Función heartBeat Método
HTTP
GET
Descripción El dispositivo envía un mensaje de ‘aún vivo’ al dispositivo. El sistema informa si hay alguna tarea pendiente.
Entrada {
id: $[Id del dispositivo], token: $[token de acceso], message: $[Mensaje opcional] }
Salida Si no existe ninguna tarea pendiente
{
status: Ok,
message: {Mensaje opcional},
in-quee: {Si hay más acciones pendientes} }
Si el token no es válido
mensaje { status: denied,
message: {Mensaje opcional} }
Si requiere ejecutar programa
mensaje { status: Ok,
action: run-pending,
program-id: {Id del programa} task-id: {código de tarea}
in-quee: {Si hay más acciones pendientes} }
mensaje { status: Ok,
action: load-pending,
programs {código_del_programa} task-id: {código de tarea}
in-quee: {Si hay más acciones pendientes} }
Si se requiere apagar el dispositivo
mensaje { status: Ok, action: Shutdown
task-id: {código de tarea}
in-quee: {Si hay más acciones pendientes} }
Si se requiere detener la ejecución de una tarea
mensaje { status: Ok,
action: stop-pending task-id: {código de tarea}
in-quee: {Si hay más acciones pendientes} }
Si se requiere actualizar las bases de datos de las rutinas del dispositivo
mensaje {
status: refresh-routines, task-id: {código de tarea}
in-quee: {Si hay más acciones pendientes} }
Si existe algún error
mensaje { status: error,
message: {Mensaje de error} }
Bibliografía
[1] G. Wiggins y A. Smaill, “Musical Knowledge: what can Artificial Intelligence bring to the musician?”, p. 16.
[2] Papert, Mindstorms: Children, Computers, and Powerful Ideas, Edición: New Ed. New York: The Perseus Books Group, 1993.
[3] M. Prensky, “Digital Natives, Digital Immigrants Part 1”, Horiz., vol. 9, núm. 5, pp. 1–6, sep. 2001.
[4] M. Prensky, “Digital Natives, Digital Immigrants Part 2: Do They Really Think Differently?”, Horiz., vol. 9, núm. 6, pp. 1–6, nov. 2001.
[5] F. Fovet, “Impact of the use of Facebook amongst students of high school age with Social, Emotional and Behavioural Difficulties (SEBD)”, en 2009 39th IEEE Frontiers
in Education Conference, 2009, pp. 1–6.
[6] B. D. Wever, P. Mechant, P. Veevaete, y L. Hauttekeete, “E-Learning 2.0: Social Software for Educational Use”, 2007, pp. 511–516.
[7] M. Ruzzenente, M. Koo, K. Nielsen, L. Grespan, y P. Fiorini, “A Review of Robotics Kits for Tertiary Education”, p. 10, 2012.
[8] J. J. González y J. A. J. Builes, “La robótica como herramienta para la educación en ciencias e ingeniería”, IE Comun. Rev. Iberoam. Informática Educ., núm. 10, pp. 31– 36, 2009.
[9] S. H. Requena, “El modelo constructivista con las nuevas tecnologías: aplicado en el proceso de aprendizaje”, RUSC Univ. Knowl. Soc. J., vol. 5, núm. 2, pp. 26–35, 2008. [10] P. J. Saldarriaga-Zambrano, G. del R. Bravo-Cedeño, y M. R. Loor-Rivadeneira, “La teoría constructivista de Jean Piaget y su significación para la pedagogía
contemporánea”, Dominio Las Cienc., vol. 2, núm. 3 Especial, pp. 127–137, 2016. [11] J. Malec, “Some thoughts on robotics for education”, en 2001 AAAI Spring
Symposium on Robotics and Education, 2001.
[12] D. Alimisis, “Educational robotics: Open questions and new challenges”, Themes
[13] “6.270 - MIT’s Autonomous Robot Design Competition”. [En línea]. Disponible en: http://6.270.scripts.mit.edu/~6.270/about/history.shtml. [Consultado: 24-nov-2018]. [14] M. L. P. Salamanca, N. B. Lombana, y W. J. P. Holguín, “Uso de la robótica educativa como herramienta en los procesos de enseñanza”, Ing. Investig. Desarro. I2D, vol. 10, núm. 1, pp. 15–23, 2010.
[15] J. Builes, J. Alberto, R. Patiño, J. Fernando, G. España, y J. José, “Sistema modular de robótica colaborativa aplicado en educación”, Rev. Fac. Ing. Univ. Antioquia, núm. 58, pp. 163–172, mar. 2011.
[16] F. Á. Bravo Sánchez y A. Forero Guzmán, “LA ROBÓTICA COMO UN RECURSO PARA FACILITAR EL APRENDIZAJE Y DESARROLLO DE COMPETENCIAS
GENERALES”, Teoría Educ. Educ. Cult. En Soc. Inf., vol. 13, núm. 2, 2012. [17] L. A. M. Mesa y N. B. Lombana, “LA ROBÓTICA EDUCATIVA COMO
INSTRUMENTO DIDÁCTICO ALTERNATIVO EN EDUCACIÓN BÁSICA”, Rev. Colomb.
Tecnol. Av. RCTA, vol. 2, núm. 22, dic. 2013.
[18] P. A. López Ramírez y H. Andrade Sosa, “Aprendizaje con robótica, algunas experiencias”, Educación, vol. 37, núm. 1, 2013.
[19] S. Zabala-Vargas, J. Pérez Lépez, y H. Rodríguez, “Estrategia para el desarrollo de aprendizajes en ingeniería basado en robótica educativa y competitiva: caso
Universitaria de Investigación y Desarrollo, UDI”, Ing. Solidar., vol. 9, p. 153, feb. 2014. [20] E. G. Guerrero, J. J. P. Rodríguez, y F. J. Roldán, “Robots cooperativos, quemes para la educación”, Rev. Vínculos, vol. 10, núm. 2, pp. 47–62, dic. 2013.
[21] M. E. Murcia y J. C. Henao, “Educación matemática en Colombia, una perspectiva evolucionaria”, Entre Cienc. E Ing., vol. 9, núm. 18, pp. 23–30, dic. 2015.
[22] J. J. Castañeda, A. F. Ruiz-Olaya, W. Acuña, y A. Molano, “A low-cost Matlab- based educational platform for teaching robotics”, en 2016 IEEE Colombian Conference
on Robotics and Automation (CCRA), 2016, pp. 1–6.
[23] E. Murcia y J. C. Henao, “Resultados preliminares de la estrategia de uso de dispositivos robóticos en la enseñanza de las matemáticas”, Entre Cienc. E Ing., vol. 11, núm. 21, pp. 95–102, jun. 2017.
[24] E. Tello-Leal, T. Y. Guerrero-Melendez, y V. P. Saldivar-Alonso, “A review of Lego Mindstorms robotics platform for educational and research applications”, Sist. Telemática, vol. 11, núm. 26, p. 9, sep. 2013.
[25] A. Sipitakiat, P. Blikstein, y D. P. Cavallo, “The GoGo Board: Moving towards highly available computational tools in learning environments.”, p. 15.
[26] M. Zubair y M. A. Choudhry, “Land Mine Detecting Robot Capable of Path Planning”, 2010, pp. 34–37.
[27] “Raspberry Pi 2 Model B”, Raspberry Pi. . [28] “Arduino FAQ”, Medea, 05-abr-2013. .
[29] “BeagleBoard.org - black”. [En línea]. Disponible en: https://beagleboard.org/black. [Consultado: 02-dic-2018].
[30] “Raspberry Pi Documentation”. [En línea]. Disponible en:
https://www.raspberrypi.org/documentation/. [Consultado: 06-jun-2018]. [31] “ATmega328 Datasheet”. Atmel, 2016.
[32] “LEGO MINDSTORMS Education EV3 Core Set”. [En línea]. Disponible en: https://education.lego.com/en-us/products/lego-mindstorms-education-ev3-core-set- /5003400. [Consultado: 06-jun-2018].
[33] J. C. Mitchell y K. Apt, Concepts in Programming Languages. Cambridge University Press, 2003.
[34] D. Kahanwal, “Abstraction level taxonomy of programming language frameworks”,
ArXiv Prepr. ArXiv13113293, 2013.
[35] D. W. McIntyre and M. M. Burnett, “Visual Programming”, vol. 28, 1995. [36] M. M. Burnett y M. J. Baker, “A classification system for visual programming languages”, J. Vis. Lang. Comput., vol. 5, núm. 3, pp. 287–300, 1994.
[37] J. Maloney, M. Resnick, N. Rusk, B. Silverman, y E. Eastmond, “The Scratch Programming Language and Environment”, ACM Trans. Comput. Educ., vol. 10, núm. 4, pp. 1–15, nov. 2010.
[38] S. Seiler, R. Sell, y D. Ptasik, “Embedded System and Robotic Education in a Blended Learning Environment Utilizing Remote and Virtual Labs in the Cloud,
Accompanied by ‘Robotic HomeLab Kit’”, Int. J. Emerg. Technol. Learn. IJET, vol. 7, núm. 4, dic. 2012.
[39] J. M. Gomez-de-Gabriel, A. Mandow, J. Fernandez-Lozano, y A. J. Garcia-
Cerezo, “Using LEGO NXT Mobile Robots With LabVIEW for Undergraduate Courses on Mechatronics”, IEEE Trans. Educ., vol. 54, núm. 1, pp. 41–47, feb. 2011.
[40] R. U. Pedersen, J. Nørbjerg, y M. P. Scholz, “Embedded Programming Education with Lego Mindstorms NXT Using Java (leJOS), Eclipse (XPairtise), and Python
(PyMite)”, en Proceedings of the 2009 Workshop on Embedded Systems Education, New York, NY, USA, 2009, pp. 50–55.
[41] B. Hack y C. Hubert, Business process management. Houston, Tex.: APQC Publications, 2005.
[42] Stephen A, White, “Introduction to BPMN”. IBM Corporation, 2004. [43] T. Reenskaug, “The original MVC reports”, p. 14, 1979.
[44] P. Krasner, Glenn Stephen, “A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk - 80”, JOOP, 1988.
[45] D. Crocker y P. Overell, “Augmented BNF for Syntax Specifications: ABNF”. [En línea]. Disponible en: https://tools.ietf.org/html/rfc4234. [Consultado: 03-dic-2018]. [46] J. E. Smith y Ravi Nair, “The architecture of virtual machines”, Computer, vol. 38, núm. 5, pp. 32–38, may 2005.
[47] D. Bernstein, “Containers and Cloud: From LXC to Docker to Kubernetes”, IEEE
Cloud Computing, vol. 1, núm. 3, pp. 81–84, sep-2014.
[48] W. O. Sánchez, “Compendio de estándares, métodos, técnicas y buenas prácticas de ingeniería de la usabilidad orientado a sitios web en El Salvador”, p. 6.
[49] J. Nielsen, Usability Engineering. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 1993.
[50] X. F. Grau, “Principios Básicos de Usabilidad para Ingenieros Software”, presentado en Conference: V Jornadas Ingeniería de Software y Bases de Dato, Valladolid, p. 9.
[51] J. Nielsen, “Usability Inspection Methods”, en Conference Companion on Human
Factors in Computing Systems, New York, NY, USA, 1994, pp. 413–414.
[52] “A Fresh Graduate’s Guide to Software Development Tools and Technologies - a free online book for Software Engineering students and fresh graduates”. [En línea]. Disponible en: https://www.comp.nus.edu.sg/~seer/book/2e/. [Consultado: 02-dic-2018].