Download Programación de Sistemas - Escuela de Ingenierías Industriales
Document related concepts
Transcript
Guía docente de la asignatura Guía docente de la asignatura Asignatura PROGRAMACIÓN DE SISTEMAS Materia AUTOMÁTICA INDUSTRIAL Titulación MASTER ELECTRÓNICA INDUSTRIAL Y AUTOMÁTICA Plan 568 Periodo de impartición 2º CUATRIMESTRE Nivel/Ciclo MASTER Código Tipo/Carácter Curso Créditos ECTS 6 Lengua en que se imparte Castellano Profesor/es responsable/s Félix Miguel Trespaderne trespa@eii.uva.es OBLIGATORIA 1 Eduardo Zalama Casanova ezalama@eii.uva.es Eusebio de la Fuente López efuente@eii.uva.es Datos de contacto (E-mail, teléfono…) Escuela Ingenierías Industriales Dpto. Ingeniería de Sistemas y Automática Pº del Cauce 59. Tel 983 423358 ezalama@eii.uva.es Horario de tutorías Ver página web de la UVa Departamento INGENIERÍA DE SISTEMAS Y AUTOMÁTICA 1. Situación / Sentido de la Asignatura 1.1 Contextualización Esta asignatura es común para el módulo I de Automática Industrial y se ubica en el 2º cuatrimestre del primer año del Master. En ella se pretende profundizar y ampliar los conceptos de programación estudiados en las asignaturas Informática Industrial y Control y Comunicaciones Industriales del Grado de Electrónica Industrial y Automática. Se presentan nuevos conceptos para la programación avanzada en C++11, se introduce el sistema operativo ROS (Robot Operating System), el diseño de interfaces gráficos con Qt y el desarrollo de proyectos sobre arquitecturas abiertas como Raspberry Pi empleando el lenguaje de programación Python. 1.2 Relación con otras materias Esta asignatura está estrechamente relacionada con la asignatura Robótica y Sistemas de Percepción Avanzados que se imparte en el mismo cuatrimestre. Los conceptos necesarios de instalación, programación y manejo de librerías de ROS y OpenCV se abordarán en la asignatura de Programación de Sistemas. Además, se realizará un proyecto transversal, sobre el que se aplicarán los conocimientos adquiridos en las diferentes asignaturas, y cuya evaluación formará parte de cada asignatura afectada. 1.3 Prerrequisitos Se requieren conocimientos de computadores, sistemas operativos y programación en C++ porque se empezará trabajando sobre conceptos avanzados. Como se impartirán conocimientos de programación aplicables al ámbito de la robótica y visión artificial es muy recomendable que se curse simultáneamente con la asignatura Robótica y Sistemas de Percepción Avanzados de Programación Avanzada. Universidad de Valladolid 1 de 7 Guía docente de la asignatura 2. Competencias 2.1 Generales CG1. Capacidad de análisis y síntesis. CG2. Capacidad de organización y planificación del tiempo. CG3. Capacidad de expresión escrita. CG4. Capacidad de resolución de problemas. CG5. Capacidad de razonamiento critico/análisis lógico. CG6. Capacidad de integración de conocimiento de diferentes disciplinas tecnológicas. CG7. Capacidad para trabajar mediante el método de aprendizaje basado en proyectos. 2.2 Específicas CE10. Implementar los resultados obtenidos en sistemas reales. CE11. Capacidad para llevar a cabo programación de sistemas bajo restricciones de tiempo real, multitarea, concurrencia, etc. en sistemas hard/soft industriales. CE12. Capacidad de realizar programación en red y distribuida. CE13. Capacidad de gestión de un sistema. 3. Objetivos Al concluir la asignatura el estudiante debe ser capaz de: - - Analizar, desarrollar e implementar proyectos informáticos que incluyan la integración de software en el ámbito de la robótica y automatización utilizando equipos específicos y técnicas de programación avanzada. Entender cómo se aplican los conceptos de programación concurrente y tiempo real en sistemas para el control de robots. Conocer los principios y modelos fundamentales de la programación orientada a objeto. Ser capaz de implementar programas concurrentes utilizando el lenguaje de programación C++. Desarrollar proyectos de aplicaciones que incluyan sistemas abiertos como Raspberry Pi. Analizar, diseñar y desarrollar interfaces gráficos de usuario eficientes con Qt. 4. Tabla de dedicación del estudiante a la asignatura ACTIVIDADES PRESENCIALES Clases teórico-prácticas (T/M) HORAS 35 Clases prácticas de aula (A) Laboratorios (L) ACTIVIDADES NO PRESENCIALES HORAS Estudio y trabajo autónomo individual 45 Estudio y trabajo autónomo grupal 45 25 Total presencial 60 Total no presencial 90 Universidad de Valladolid 2 de 7 Guía docente de la asignatura 5. Bloques temáticos 1 Bloque 1: Programación C++ avanzada Carga de trabajo en créditos ECTS: 6 a. Contextualización y justificación En este bloque se amplían conocimientos de programación C++ adquiridos en el grado. La programación en lenguaje C++ constituye una herramienta fundamental para el desarrollo de aplicaciones concurrentes en tiempo real. Se revisarán los conceptos de herencia, polimorfismo y el empleo de plantillas. Asimismo, se revisarán los contenedores de la biblioteca STL y las nuevas características de la versión C++11 como punteros inteligentes, funciones lambda y creación y sincronización de hilos. En el desarrollo de interfaces gráficos se empleará el framework Qt, desarrollado como software libre y de código abierto. Qt permite el desarrollo multiplataforma. Una vez desarrollado el interfaz, se puede portar a cualquiera de las plataformas móviles, de escritorio o de sistemas empotrados. Esto contrasta con el desarrollo tradicional sobre cada uno de los sistemas empleando diferentes tecnologías en cada uno de ellos. Además, Qt permite alcanzar una gran eficiencia en el desarrollo al proporcionar gran cantidad de módulos listos para su uso. Aunque puede emplearse con muchos lenguajes de programación, Qt utiliza el lenguaje de programación C++ de forma nativa. Qt corre sobre los principales sistemas operativos de escritorio (Windows XP/7/8/10, Mac OS X, Linux, BSDs, Unix), los sistemas operativos móviles más relevantes (iOS, Android, Blackberry, Windows Phone) y sobre los sistemas empotrados más empleados (Linux Embedded, Windows Embedded, QNX, vxWorks, Nucleos, Integrity). En cuanto al Sistema Operativo ROS (en inglés Robot Operating System) se trata de un framework para el desarrollo de software para robots. ROS es software libre bajo términos de licencia BSD. En este bloque temático se presentarán los servicios que proporciona este sistema operativo como abstracción del hardware, control de dispositivos de bajo nivel, implementación de funcionalidad de uso común, paso de mensajes entre procesos y mantenimiento de paquetes. Se mostrará la arquitectura de grafos en la que se basa, donde el procesamiento toma lugar en los nodos que pueden recibir, mandar y multiplexar mensajes de sensores, control, estados, planificaciones y actuadores, entre otros. Aparte del sistema operativo en sí, se contemplarán también la ros-pkg, una suite de paquetes aportados por la contribución de usuarios que implementan la funcionalidades tales como localización y mapeo simultáneo, planificación, percepción, simulación, etc. La realización de proyectos se hará sobre Raspberry Pi, un pequeño ordenador de bajo coste bajo sistema operativo Linux. Mediante programación en Python se llevarán a cabo prácticas de control con sensores, motores y otro hardware incluyendo Arduino. El objetivo es practicar con su sistema operativo Linux e iniciarse con el lenguaje de programación Python a la vez que se desarrollan aplicaciones para adquirir información de sensores, activar distintos tipos de motores o controlar hardware desde su conector GPIO. b. Objetivos de aprendizaje Universidad de Valladolid 3 de 7 Guía docente de la asignatura El objetivo del aprendizaje es ampliar los conocimientos sobre programación y sistemas operativos vinculados al campo de la robótica y automatización. Se pretende que el alumno se capaz de programar dispositivos robóticos empleando las técnicas más actuales de programación con software libre y de código abierto. c. Contenidos • • • • • Programación avanzada C++ Sistema operativo ROS Diseño de interfaces gráficos con Qt Desarrollo de proyectos con Raspberry Introducción al lenguaje de programación Python d. Métodos docentes MÉTODOS DOCENTES OBSERVACIONES Método expositivo/Lección magistral Clase Aula Resolución de ejercicios y problemas Clase Aula Aprendizaje mediante experiencias Prácticas de laboratorio en grupos reducidos. Universidad de Valladolid 4 de 7 Guía docente de la asignatura e. Plan de trabajo El bloque se organizará en los siguientes temas: Tema Título del tema Teoría (horas) Aula (horas) Seminario (horas) Laboratorio (horas) 1 Sistema operativo ROS 10 5 2 Programación Avanzada C++ 10 5 3 Programación de Interfaces gráficos en 5 5 C++ con Qt. 4 Desarrollo de proyectos con Raspberry 5 5 5 Lenguaje de programación Python 5 5 35 25 TOTAL La organización semanal de las actividades presenciales será la siguiente: Semana 1-3 4-6 7-9 10-12 Contenidos ROS (Robot Operating System) Introducción Instalación y Configuración Paquetes, pilas y nodos Servicios y parámetros Creación de programas Mensajes Gazebo Programación Avanzada C++ Herencia. Polimorfismo. Tratamiento de excepciones. Plantillas. Contenedores STL Características nuevas de C++11: variables auto, punteros inteligentes, funciones lambda, bucles por rango, inicialización uniforme, multihilado Programación de interfaces gráficos en C++ con Qt Introducción Componentes (widgets) Gestión de Eventos. Signal-Slot Diálogos Diseño de una aplicación gráfica Raspberry Pi Introducción Instalación y configuración Administración y gestión del sistema GPIO Control con raspberry pi (servomotores, sensores,) Arduino y Raspberry Pi Teoría (h) Aula (h) Seminario (h) Laboratorio (h) 10 5 10 5 5 5 5 5 Universidad de Valladolid 5 de 7 Guía docente de la asignatura 12-15 Lenguaje de programación Python. Proyecto Raspberry Pi. TOTAL 5 10 5 5 10 f. Evaluación La evaluación se basará en los siguientes tipos de pruebas o exámenes: • Prueba oral o escrita compuesta por cuestiones de teoría y resolución de problemas. Valoración: entre el 30% y el 60% del total de la asignatura. • Prueba de aprovechamiento de prácticas en el laboratorio. Valoración: entre el 10% y el 20% del total de la asignatura. • Evaluación de los informes, memoria y trabajo basado en proyectos realizados por el alumno o grupo de trabajo. Valoración: entre el 30% y el 60% del total de la asignatura. g. Bibliografía básica • A Gentle Introduction to ROS. Jason M. O’Kane. University of South Carolina. • http://wiki.ros.org/es • https://www.qt.io/ • C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) 2nd Edition by Jasmin Blanchette, Mark Summerfield • Getting Started with Raspberry Pi by Matt Richardson and Shawn Wallace. O’Reilly Media, Sebastopol, Dic. 2012. • Raspberry Pi Cookbook. Simon Monk. O’Reilly Media, Sebastopol, Dic. 2013. • Learning Python, Fifth Edition by Mark Lutz O’Reilly Media, Sebastopol, Jun. 2013. h. Bibliografía complementaria i. Recursos necesarios Universidad de Valladolid 6 de 7 Guía docente de la asignatura 6. Temporalización (por bloques temáticos) BLOQUE TEMÁTICO CARGA ECTS PERIODO PREVISTO DE DESARROLLO 7. Tabla resumen de los instrumentos, procedimientos y sistemas de evaluación/calificación BLOQUE ACTIVIDAD PESO EN LA NOTA FINAL OBSERVACIONES Tanto en la convocatoria Ordinaria como en la Extraordinaria 8. Consideraciones finales [OPCIONAL]: Guía de trabajo del estudiante, para el trabajo no presencial: Semana Contenidos Lecturas Problemas recomendados Entrega ejercicios Proyecto Laboratorio TOTAL PARCIAL Preparación de exámenes TOTAL INDIVIDUAL/GRUPO TOTAL Universidad de Valladolid 7 de 7