Download Programación de Sistemas - Escuela de Ingenierías Industriales

Document related concepts

Raspbian wikipedia , lookup

Raspberry Pi wikipedia , lookup

Python wikipedia , lookup

SuperCollider wikipedia , lookup

Hollywood (lenguaje de programación) wikipedia , lookup

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 [email protected]
OBLIGATORIA
1
Eduardo Zalama Casanova [email protected]
Eusebio de la Fuente López [email protected]
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
[email protected]
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