• No se han encontrado resultados

Conclusiones y recomendaciones

In document Carlos Alejandro Ruiz Ramírez (página 105-123)

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].

In document Carlos Alejandro Ruiz Ramírez (página 105-123)

Documento similar