1 Introducción
2 Conceptos básicos
2.1 Desarrollo de Software Dirigido por Modelos
2.2 Propuestas Concretas para MDD
2.2.1 Arquitectura Dirigida por Modelos
2.2.2 Modelado Específico del Dominio (DSM y DSLs)
2.3 Modelos
2.3.1 Tipos de modelos .
2.3.2 Cualidades de un modelo
2.3.3 Cómo se define un modelo?
2.3.4 El rol del UML en MDD
2.4 Transformaciones
2.5 Definición formal de lenguajes de modelado
2.6 La arquitectura de cuatro capas de modelado del OMG
2.7 El lenguaje de modelado mas abstracto: Meta-Object Facility
3 Estado del arte
3.1 Trabajos relacionados
3.1.1 Un enfoque dirigido por modelos para la creacion de sistemas robóticos
3.1.2 Component-Based Robotic Engineering (Partes I y II)
3.1.3 Towards Easy Robot Programming: Using DSLs, Code Generators and
Software Product Lines
3.1.4 Automatic generation of detailed ight plans from high-level mission descriptions
3.2 Conclusiones del estado del arte
4 Descripción de tecnologías
4.1 Eclipse
4.1.1 Por que Eclipse?
4.2 Eclipse Modeling Framework (EMF)
4.2.1 Por que EMF?
4.3 Acceleo
4.3.1 Por que Acceleo?
4.4 El Sistema Operativo Robot (ROS)
4.4.1 Conceptos generales
4.4.2 La arquitectura en detalle
4.4.3 El nivel del sistema de archivos
4.4.4 El nivel del grafo computacional
4.4.5 El nivel de la comunidad
4.4.6 Por que ROS?
5 DSL para robots con misión predeterminada
5.1 Pautas para la definición del metamodelo
5.1.1 Pautas sobre el diagrama
5.1.2 Pautas sobre la especificación de la sintaxis abstracta
5.2 Metamodelo del DSL
5.2.1 Visión general
5.2.2 Especicación del metamodelo y su sintaxis abstracta
5.2.3 Ejemplo de sintaxis concreta del DSL
6 Generación de código para un robot simulado
6.1 Simulando el robot y su entorno
6.1.1 URDF y Xacro
6.1.2 Gazebo
6.1.3 El robot TurtleBot
6.2 Generación de código para un TurtleBot simulado
6.2.1 El mapa
6.2.2 Las tareas
6.2.3 El nodo misión
6.2.4 Otros archivos
6.3 Ejecutando la misión
7 Generación de código para un robot real
7.1 iRobot Create 1
7.1.1 Compatibilidad con ROS
7.1.2 La navegación en iRobot Create 1
7.2 Generación de coódigo para iRobot iCreate 1
7.2.1 El mapa
7.2.2 Las tareas
7.2.3 El nodo path planner
7.2.4 El nodo base controller
7.2.5 El nodo misión
7.2.6 Otros archivos
7.3 Ejecutando la misión
8 Conclusiones y trabajos futuros
8.1 Conclusiones
8.2 Trabajos futuros
A Notas sobre el metamodelo y ROS
A.1 Justicación técnica del modelo
A.1.1 El mapa
A.1.2 El robot
A.2 El Stack de Navegación de ROS
B Manual de usuario - Editor de Misiones
B.1 Creación de un nuevo mapa y edición de un mapa existente
B.2 Creación de una nueva misión
B.3 Modicación de las propiedades de una misión
B.4 Creación de nueva tarea personalizada
B.5 Edición de tareas personalizadas
B.6 Asignación de un mapa a una misión
B.7 Modicación de los parámetros iniciales del robot
B.8 Inserción y edición de objetivos en la misión