Poyecto para enseñar a programar

download Poyecto para enseñar a programar

of 10

Transcript of Poyecto para enseñar a programar

  • 8/2/2019 Poyecto para ensear a programar

    1/10

    Memoria del Proyecto de Innovacin Docente

    APRENDIZAJE ACTIVO DE

    PROGRAMACIN CON LEGO

    MINDSTORMS NXT

    Profesor responsable

    Juan Carlos Matos Franco

    Departamento de Informtica y Automtica

    Escuela Politcnica Superior de Zamora

    Entidad financiadora

    Universidad de Salamanca

    Periodo de desarrollo

    Julio/2010 Junio/2011

    Dirigido a

    Vicerrectorado de Docencia y Convergencia Europea

  • 8/2/2019 Poyecto para ensear a programar

    2/10

    2

    NDICE

    1. INTRODUCCIN................................................................................................... 3

    2. JUSTIFICACIN DEL PROYECTO Y UTILIDAD.......................................... 3

    3. OBJETIVOS Y METODOLOGA........................................................................ 4

    4.

    PLAN DE TRABAJO SEGUIDO.......................................................................... 6

    5. VALORACIN DE RESULTADOS..................................................................... 8

    6. CONCLUSIONES Y LNEAS DE TRABAJO FUTURAS................................. 9

    7. REFERENCIAS .................................................................................................... 10

  • 8/2/2019 Poyecto para ensear a programar

    3/10

    3

    1. INTRODUCCINLosLego Mindstorms NXTson unos robots de tipo educativo que estn basados en

    el popular juego de construccin Lego, integrados por diferentes partes mecnicas y

    electromecnicas controladas por un bloque programable. Este bloque es un computador

    integrado (NXT) que puede ser programado de forma flexible, ya que admite diferentes

    lenguajes de programacin (adems del que trae por defecto), de forma que el robot

    puede recibir informacin del entorno a travs de distintos sensores y realizar una serie

    de operaciones con sus actuadores (Figura 1).

    Figura 1. Bloque NXT, sensores y actuadores disponibles en el paquete educativo.

    2. JUSTIFICACIN DEL PROYECTO Y UTILIDADEl propsito principal de la aplicacin de este proyecto ha sido que el estudiante

    emplease diferentes metodologas de programacin sobre un dispositivo fsico (en

    concreto programarlo con los lenguajes C y Java), y que observase lo que ocurra

    cuando ste interactuaba con el mundo real. Con los Lego Mindstorms NXTel alumno

    puede solucionar problemas de diversa ndole, algunos de los cuales ya se han resuelto

    de forma terica en el aula, observando adems que puede tomar datos del entorno,

    tratarlos y actuar en consecuencia. Con ello se ha pretendido aumentar la comprensin

    de las asignaturas de programacin y la motivacin de los alumnos en el aprendizaje dela misma, mediante una aplicacin prctica.

  • 8/2/2019 Poyecto para ensear a programar

    4/10

    4

    Otro propsito del proyecto fue potenciar el aprendizaje colaborativo mediante la

    creacin de grupos de trabajo organizados de forma que cada alumno se encargase de

    una parte del trabajo y tomase decisiones por su cuenta (seleccin de los elementos

    del robot, diseo de funcionalidades, bsqueda de soluciones, etc.), integrndose

    posteriormente todo en el proyecto global.

    Por ltimo se plante que cada alumno realizase un informe, de forma individual,

    exponiendo sus aportaciones al trabajo realizado e indicando qu dificultades se haba

    encontrado en su desarrollo y qu conclusiones haba alcanzado tras la realizacin de

    cada una de las prcticas.

    3. OBJETIVOS Y METODOLOGALos objetivos del proyecto fueron ligeramente diferentes segn la asignatura en la

    que se aplicaron:

    En la asignatura Fundamentos de programacin se aprende a programar utilizandouna programacin estructurada, para la cual se emplea el lenguaje C. Los Lego

    Mindstorms pueden programarse con extensiones del lenguaje C (RobotC,Not Quite

    C, etc.) que cuentan con entornos integrados de desarrollo multiplataforma (con

    versiones para Windows, Linux y OSX) y con potentes herramientas adicionales. Las

    prcticas que se realizaron para esta asignatura se encaminaron a la realizacin de

    funciones y procedimientos especficos para controlar los robots, empleando para ello

    elementos de programacin del lenguaje C (datos, estructuras de control, etc.).

    Aunque inicialmente se intent emplearNot Quite C, dado su carcter libre, al final se

    utiliz la extensin comercial RobotC for Mindstorms 2.26.1 (Figura 2), que incluyetambin un entorno de desarrollo integrado (IDE), dado que Not Quite Cno funciona

    actualmente con los modelos NXT (slo lo hace con los antiguos robots RCX).

    En las asignaturas de Programacin Orientada a Objetos, tanto de IngenieraTcnica en Informtica de Gestin como del Grado en Ingeniera Informtica en

    Sistemas de Informacin, se emplea un enfoque orientado a objetos. La forma de

    programar cambia radicalmente y para mostrar esta diferencia se propuso

    inicialmente la resolucin de los mismos problemas que en la asignatura

  • 8/2/2019 Poyecto para ensear a programar

    5/10

    5

    Fundamentos de programacin, slo que desde un punto de vista diferente,

    empleando clases, mtodos y propiedades (a travs de un interfaz de programacin

    de aplicaciones, API), en lugar de funciones y procedimientos. Posteriormente se

    desarrollaron tambin los conceptos propios de la programacin orientada a

    objetos, como herencia y polimorfismo. El lenguaje utilizado en esta asignatura

    fue Java, mediante elframeworkLejOS NXT, en su versin 0.8.5 y, en las ltimas

    prcticas, con la nueva versin 0.9.0. Dado que los alumnos programan

    bsicamente utilizando el entorno de desarrollo integrado educativo BlueJ, se

    incorpor una extensin a este IDE para que les resultara familiar el sistema de

    trabajo y pudiesen centrarse nicamente en las caractersticas especiales de

    programacin del robot (Figura 3).

    Figura 2. Ventana del IDE deRobotC.

    Figura 3. Ventana del IDE deBlueJcon la extensin paraLego NXT.

  • 8/2/2019 Poyecto para ensear a programar

    6/10

    6

    Las asignaturas concretas en las que se aplic la metodologa de trabajo desarrollada

    se detallan a continuacin:

    Fundamentos de Programacin(1 curso del Grado en Ingeniera Informtica en Sistemas de Informacin).

    Mtodos de Programacin(2 curso de Ingeniera de Materiales).

    Programacin Orientada a Objetos(3 curso de Ingeniera Tcnica en Informtica de Gestin).

    Programacin Orientada a Objetos(1 curso del Grado en Ingeniera Informtica en Sistemas de Informacin).

    4. PLAN DE TRABAJO SEGUIDOEn primer lugar se efectuaron varias reuniones de coordinacin entre los profesores

    del grupo para definir la estructura de las prcticas y su ubicacin en los programas de

    las distintas asignaturas. En ellas tambin se hizo una planificacin temporal de la

    realizacin y entrega de cada uno de los ejercicios prcticos.

    Previo a la realizacin de las prcticas en cada uno de los semestres se imparti un

    seminario que explicaba el funcionamiento bsico de los robots NXT: estructura,

    construccin, comunicacin con el exterior a travs de sensores y actuadores y por

    ltimo su programacin. Para que los estudiantes puedan crear un determinado robot

    que resuelva un problema propuesto, es necesario que sepan determinar qu

    componentes deben utilizar antes de programarlo.

    En cada una de las asignaturas se establecieron tres ejercicios prcticos. Para

    estas prcticas se definieron los grupos de trabajo, se repartieron los roles y se les

    facilit un espacio de trabajo privado en el curso virtual de la asignatura en la

    plataforma Studium (compuesto por un gestor de documentos, un foro, un chat y un

    wiki), para que as los alumnos pudieran trabajar en lnea de forma colaborativa. Las

    prcticas se fueron realizando de forma paralela al desarrollo de la asignatura, con

  • 8/2/2019 Poyecto para ensear a programar

    7/10

    7

    distintas sesiones de control tutorizadas, y los resultados obtenidos se presentaron

    ante el profesor de la asignatura. Adems cada alumno, de forma individual, realiz

    un informe de su trabajo.

    Los estudiantes cumplimentaron tambin un pequeo cuestionario sobre su

    participacin, exponiendo las dificultades que se haban encontrado en su trabajo e

    indicando las observaciones que estimaron oportunas (dificultades, propuestas de

    mejora, modificaciones, criterios de calificacin, etc.).

    Al trmino de los dos semestres se realiz la valoracin global de la actividad y se

    extrajeron las conclusiones finales del proyecto, definiendo las actuaciones necesarias

    para ampliar y mejorar la docencia en los prximos cursos.

    Figura 4. Etapas del desarrollo del proyecto.

    Definicindelasprcticasdecadaasignatura

    Propuestasdemejoraparaelprximocurso

    Puestaenprcticadelnuevomodelo

    Valoracinderesultados

    Establecimientodelosequipos

    de

    trabajo

    curso2010 2011

  • 8/2/2019 Poyecto para ensear a programar

    8/10

  • 8/2/2019 Poyecto para ensear a programar

    9/10

    9

    los robots. Otra dificultad adicional fue la comprensin del funcionamiento fsico del

    robot (mecnica, movimientos, rotaciones, sensores, etc.), ya que algunos de los

    alumnos de las titulaciones de Informtica nunca haban trabajado con ellos, por lo que

    se les proporcion un montaje bsico de un robot con el que empezar a trabajar (Figura

    5), as como un sistema de anclajes bsicos para los distintos tipos de sensores.

    Figura 5. Montaje bsico del robot.

    6. CONCLUSIONES Y LNEAS DE TRABAJO FUTURASEn el desarrollo de este proyecto se han utilizado robots educativosLego Mindstorms

    NXTpara el aprendizaje de diferentes lenguajes (y metodologas) de Programacin. Se

    han realizado una serie de aplicaciones donde el estudiante ha puesto en prctica los

    conceptos tericos aprendidos en las distintas asignaturas, de forma que ha visto el

    resultado de lo que programa sobre un dispositivo fsico y cmo interacta con el mundo

    real. De esta manera se potencia y facilita el aprendizaje, pues se crea un entorno en el

    que los estudiantes pueden desempear actividades propias de una Ingeniera.

    Los resultados obtenidos con este proyecto corroboran la utilidad de la forma de

    trabajo introducida. Los alumnos han aceptado el modelo de prcticas propuesto, lo han

    utilizado de forma intensiva y lo han valorado positivamente. Por todo ello el prximo

  • 8/2/2019 Poyecto para ensear a programar

    10/10

    10

    curso se seguir aplicando el nuevo modelo en las asignaturas incluidas en este proyecto

    y se har extensible a algunas ms, coordinadas por los profesores que han participado

    en este proyecto. En concreto se trabajar conMicrosoft Robotics Studio para programar

    los robots con los lenguajes C#y Visual Basic .NETen las asignaturas de programacin

    del Grado en Ingeniera Mecnica, que adems incorpora la posibilidad de realizar

    simulaciones 3D del proceso de trabajo.

    7. REFERENCIASAI and Robots Using Lego Mindstorms NXT.

    ltima modificacin: 9/3/2011. Consultado el 30/6/2011.

    Barnes, D.J. (2009).Programming LEGO robots with BlueJ. SIGCSE 2009. Disponible

    online: . Consultado el

    30/6/2011.

    Griffin, T. (2010). The Art of Lego Mindstorms NXT-G Programming. No Starch Press.

    Kelly, J.F. (2010).Lego Mindstorms NXT-G Programming Guide, 2ed. Apress.LeJOS, Java for Lego Mindstorms.

    ltima modificacin: 16/5/2011. Consultado el 30/6/2011.

    LejOS NXJ extension for BlueJ.

    ltima modificacin: N/D. Consultado el 30/6/2011.

    Programar el Lego NXT desde cero con RobotC.

    ltima modificacin: 22/6/2011. Consultado el 29/6/2011.

    ROBOTC, a C Programming Language for Robotics.

    ltima modificacin: 17/6/2011. Consultado el 30/6/2011.

    Schueller, A.W. (2010).Programming with Robots. Whitman College, USA. Disponibleonline: . Consultado el 25/6/2011.