Documento de Requisitos

Anuncio
Documento de Requisitos
de
Fightnect
Fecha
Versión
17 de octubre del 2012
1.0
Integrantes
Christian López.
del grupo
Diego González.
Diego Riquelme.
Felipe Vera.
Documento de Requisitos de Fightnect Página i
Prefacio
El sistema Fightnect consiste en poder conectar la Kinect con un emulador de Super
Nintendo Entertainment System y poder jugar, algún juego de pelea. El objetivo
consiste en que el jugador, al hacer algún golpe, su personaje del juego haga el mismo.
Alcance del El Documento de Requisitos es la
documento Describe los siguientes aspectos
funcionales, requisitos de pruebas,
arquitectura del sistema, requisitos
riesgos del proyecto.
base de todo el desarrollo futuro de Fightnect.
del sistema: propósito, contexto, requisitos
requisitos de calidad, requisitos de ambiente,
del desarrollo, requisitos de post-desarrollo, y
Documentos Documento de Inicio de Proyecto, proyecto Fightnect, versión 0.1, 14 de septiembre
relacionados del 2012.
Autor Christian López, Diego González, Diego Riquelme, Felipe Vera.
Lectores Este documento está dirigido principalmente a los desarrolladores del proyecto, pero es
de interés de todos los interesados en el mismo.
Historia del Documento
Versión
Fecha
Explicación del cambio
0.1
14/09/2012
Documento de inicio
Grupo Fightnect
0.1
17/10/2012
Documento de requisitos
Grupo Fightnect
Documento de Requisitos de Fightnect Página ii
Autor
Índice de Materias
Prefacio ....................................................................................................................................................... ii
Historia del Documento ............................................................................................................................. ii
Lista de Figuras ......................................................................................................................................... iii
Lista de Tablas .......................................................................................................................................... iv
1 Introducción ............................................................................................................................................. 1
1.1 Propósito ................................................................................................................................................. 1
1.2 Alcance ................................................................................................................................................... 1
1.3 Contexto .................................................................................................................................................. 1
1.4 Referencias.............................................................................................................................................. 1
2 Requisitos del Sistema ............................................................................................................................. 2
2.1 Requisitos Funcionales ........................................................................................................................... 2
2.2 Requisitos de Interfaces .......................................................................................................................... 2
3 Requisitos de Ambiente ........................................................................................................................... 4
3.1 Requisitos del Ambiente de Desarrollo .................................................................................................. 4
3.1.1 Hardware de Desarrollo ....................................................................................................................... 4
3.1.2 Software de Desarrollo ........................................................................................................................ 4
4 Arquitectura del Sistema ......................................................................................................................... 5
4.1 Diagrama de Flujo de Datos.................................................................................................................... 5
4.2 Descripción de Módulos ......................................................................................................................... 5
4.2.1 Módulo 1: Kinect ................................................................................................................................. 5
4.2.2 Módulo 2: Programa intérprete ............................................................................................................ 5
4.2.3 Módulo 3: Generación de macros ........................................................................................................ 6
4.2.4 Módulo 4: Simulador de controlador SNES ........................................................................................ 6
4.3 Componentes.......................................................................................................................................... 6
5 Gestión de Riesgos.................................................................................................................................... 7
5.1 Supuestos ................................................................................................................................................ 7
5.2 Dependencias .......................................................................................................................................... 7
5.3 Restricciones ........................................................................................................................................... 7
5.4 Riesgos .................................................................................................................................................... 7
5.4.1 Utilización librerías OpenCV y OpenNI .............................................................................................. 8
5.4.2 Implementación de microcontrolador MSP430 .................................................................................. 8
5.4.3 Factor tiempo ....................................................................................................................................... 8
Lista de Figuras
Documento de Requisitos de Fightnect Página iii
Figura 1: Diagrama de flujo de datos del sistema .................................................................................... 5
Lista de Tablas
Tabla 1: Eventos externos .......................................................................................................................... 2
Tabla 2: Respuestas del sistema................................................................................................................. 3
Tabla 3: Matriz de requisitos funcionales y componentes ..................................................................... 6
Documento de Requisitos de Fightnect Página 4
1 Introducción
El proyecto consiste en crear un programa que sea capaz de comunicar un dispositivo Kinect
con un juego de pelea de Super Nintendro, a través de un simulador. En base a ciertos
códigos ya existentes de detección, tales como de cuerpo (skeleton) o de mano, se buscará
controlar al personaje del juego a través de ciertos movimientos, los cuales representarán
golpes, patadas, poderes, etc.
1.1 Propósito
El programa es un detector de cuerpo a través de un dispositivo Kinect. Al ser detecteado el
usuario, éste podrá realizar movimientos ya establecidos para jugar un juego de pelea de
Super Nintendo, tales como golpes, patadas, saltos, combinaciones especiales y poderes.
1.2 Alcance
El proyecto en sí es un detector de cuerpo, el cuál permitirá al usuario jugar (a través de un
simulador de Super Nintendo) algún juego de pelea. De esta forma, se innova en jugabilidad
y se trae un sentimiento de nostalgia por los juegos retro o antiguos.
Sin embargo, el proyecto no es en sí un simulador de Super Nintendo ni tampoco un juego de
pelea.
1.3 Contexto
El programa será desarrollado en C++ y OpenCV. Si bien existen ya varios códigos de
detección de cuerpo, mano u otras extremidades, no están implementadas para un uso de
juego de pelea.
1.4 Referencias
Libros y Manuales:

Learning OpenCV: Computer Vision with the OpenCV Library (Gary Bradski, Adrian
Kaehler).

Digital Image Processing, 3rd edition, 2007Rafael C. Gonz_alez, Richard E. Woods.
Páginas web:
 http://graphics.stanford.edu/~mdfisher/index.html
 http://100xna.wordpress.com/2011/01/12/avanzado-programar-aplicaciones-con-kinect/
 http://www.switchonthecode.com/tutorials/kinect-tutorial-hacking-101
 http://www.morethantechnical.com/2010/11/22/kinect-and-opencv-2-1/
Documento de Requisitos de Fightnect Página 1
2 Requisitos del Sistema
Esta sección describe los requisitos funcionales del sistema, sus interfaces externas, las
condiciones de excepción y las clases de pruebas que se harán para verificar que los
requisitos se cumplen.
2.1 Requisitos Funcionales
Los requisitos funcionales definen el comportamiento del sistema. Es decir, describen lo que
debe hacer el sistema.
RF1
El sistema ha de funcionar cada vez que se desée interactuar con un juego de pelea a
través del simulador.
RF2
Al detectar la Kinect el cuerpo, el sistema ha de ser capaz de recordarlo y poder
ejecutar las funciones definidas para ciertos movimientos.
RF3
Los retardos entre algún movimiento del jugador y el procesamiento de éste para que
sea realizado en el simulador, ha de ser mínimo, por lo tanto hay que priorizar
velocidad de procesamiento al momento de codificar los algoritmos necesarios.
2.2 Requisitos de Interfaces
Evento externo 1: el usuario al posicionarse frente a la Kinect, ésta ha de poder calibrarse
según los requerimientos que el usuario necesite.
Evento externo 2: al estar calibrada la Kinect, el sistema ha de detectar los movimientos del
usuario y realizar las acciones deseadas. Por ejemplo, mover el personaje, golpear, patear,
saltar, saltar y golpear/patear al mismo tiempo, realizar técnicas especiales y poderes.
La Tabla 1 muestra la lista de eventos externos a los que el sistema responde. La primera
columna es el nombre del evento; la segunda es la descripción del mismo. El “iniciador” es la
componente externa al sistema que inicia el evento. Los parámetros son los datos asociados al
evento. La respuesta es el nombre de una respuesta, cuya descripción está en la Tabla 2.
Tabla 1: Eventos externos
Evento
Descripción
Iniciador
Parámetros
Respuesta
Evento
externo 1.
Sistema capaz de detectar
cuerpo.
Posicionar
cuerpo
frente a
Kinect.
Encendido del
programa.
Comienza
calibració
n.
Evento
externo 2.
Diversos movimientos
del usuario.
Mover
cuerpo y
extremidad
es
El parámetro
dependerá del tipo de
movimiento, ya que
habrán varios con
distintos significados.
Dependien
do del
parámetro,
el
personaje
realizará
alguna
Documento de Requisitos de Fightnect Página 2
Evento
Descripción
Iniciador
Parámetros
La Tabla 2 muestra las respuestas del sistema frente a eventos externos.
Tabla 2: Respuestas del sistema
Respuesta
Descripción
Parámetros
Evento 1
Comienza calibración del
cuerpo para realizar
acciones.
Cuerpo frente a cámara
de Kinect.
Evento 2
Simulador realizará
alguna acción (mover
personaje, golpear,
patear, etc.)
Documento de Requisitos de Fightnect Página 3
Según el movimiento
del cuerpo y de
extremidades, habrá
una instrucción
diferente.
Respuesta
acción.
3 Requisitos de Ambiente
Esta sección describe el hardware y software relevante para el sistema Fightnect.
3.1 Requisitos del Ambiente de Desarrollo
3.1.1 Hardware de Desarrollo
Para la codificación de este sistema se procederá a programar en un PC. También se
programará una plataforma de desarrollo “Launchpad” para MSP430 (chip modelo
M430G2553) y simular un controlador de SNES.
3.1.2 Software de Desarrollo
Se priorizará el desarrollo para el sistema operativo Linux, puesto que la documentación es
mejor y posee un sinnúmero de ventajas a la hora de codificar programas.
Se empleará también el entorno de desarrollo QTCreator con lenguaje C++ para crear las
interfaces gráficas que Fightnect necesite junto con la librería OpenCV y OpenNI para poder
implementar los algoritmos de detección de movimiento y ejecución de acciones.
También se debe implementar un sistema de macros de teclado/gamepad, y comunicación
serial entre el PC y la MSP430, lo que hace que el código sea menos portable entre sistemas
operativos.
Para programar la MSP430 se empleará el entorno de desarrollo IAR Embedded Workbench
con un lenguaje C modificado.
Documento de Requisitos de Fightnect Página 4
4 Arquitectura del Sistema
4.1 Diagrama de Flujo de Datos
La siguiente figura muestra los módulos del sistema y los principales flujos de información.
Muestra el flujo de información y los módulos físicos y software asociado que permite dicho
flujo.
Figura 1:
Diagrama de
flujo de datos
del sistema
4.2 Descri
pc
ió
n de Módulos
Las siguientes son las componentes descritas en la Figura 1. Por cada componente se entrega
un breve párrafo descriptivo de su función y sus interacciones con otras componentes y con el
medio.
4.2.1 Módulo 1: Kinect
Este módulo se encargará de generar un mapa tetra-dimensional: tres canales de colores y un
canal de distancia, que deberá ser procesado por el siguiente módulo.
4.2.2 Módulo 2: Programa intérprete
Este módulo es el corazón del sistema. Será un programa creado para Linux en una
arquitectura x86/x64. Este a su vez poseerá distintas rutinas.
 Captar imágenes del módulo Kinect y cargarlos en la memoria. Si es necesario, guardar
varias de éstas en la RAM para detectar diferencias en ellas, y de ese modo, detectar
movimiento.
 Una base de datos que contenga patrones de movimiento para comparar con las
imágenes tomadas por Kinect.
Documento de Requisitos de Fightnect Página 5
 Rutinas para generar macros de teclado o gamepad, para controlar un emulador de
SNES.
 Envío de datos seriales a través de USB a la MSP430 mediante el cargador Launchpad
de Texas Instruments.
4.2.3 Módulo 3: Generación de macros
Este módulo corresponde a la salida del programa hacia un emulador de SNES.
4.2.4 Módulo 4: Simulador de controlador SNES
Mediante comunicación serial con USB, mediante la placa de desarrollo Launchpad y un
microcontrolador MSP430, simular el comportamiento de un controlador de SNES.
4.3 Componentes
La siguiente matriz muestra qué módulos implementan qué requisitos funcionales. Una línea
vacía en la matriz indica un requisito funcional no implementado. En ese caso es probable
que falte un módulo. Una columna vacía indica un módulo no es útil para estos requisitos
funcionales. En ese caso es posible que falte un requisito funcional.
Tabla 3: Matriz de requisitos funcionales y componentes
C1 C2 C3 C4
RF1
X
X
RF2
X
X
X
RF3
X
X
X
Documento de Requisitos de Fightnect Página 6
5 Gestión de Riesgos
5.1 Supuestos
1- Las librerías que se utilizarán como OpenCV y OpenNI (para kinect) poseen algoritmos
implementados que podremos utilizar y modificar sin mayores inconvenientes.
2- Dentro de estos algoritmos, se encuentran para la detección de una mano, para la detección
de un esqueleto, entre otros.
3- La implementación de un microcontrolador MSP430 sólo se verá realizada cuando la parte
emulada sea concretada, por lo tanto, se considerará un bonus dentro del proyecto
.
5.2 Dependencias
La principal dependencia en este caso, es que no se produzca un imprevisto de tiempo como
por ejemplo, que se disminuya el tiempo de duración del proyecto ( adelante la entrega), con
consecuencias negativas para el correcto termino de este.
5.3 Restricciones
El proyecto está restringido básicamente en términos de software a QT y librerías de
desarrollo libres como OpenCV y OpenNI. En cuanto a hardware, la utilización y
disponibilidad de un dispositivo Kinect se hace imprescindible. A su vez, si se consigue
implementar correctamente el emulador Snes, tambíen sería necesario el microcontrolador
MSP430.
Por último, los cables de conexión entre dispositivos son necesarios. Kinect-PC, Cables de
poder entre otros.
5.4 Riesgos
Existen riesgos en cuanto al uso de software, ya sea OpenCv u OpenNI y en cuanto a
hardware como es implementar el microcontrolador. Los principales riesgos son de
implementación y correcto uso de las librerías antes mencionadas. Es necesario mencionar
que la implementación del microcontrolador no es un riesgo crítico, ya que será parte
opcional en el desarrollo del proyecto, siendo críticos los factores de programación utilizando
OpenCV y OpenNI.
A continuación se detallan algunos riesgos críticos para el desarrollo correcto del proyecto:
Documento de Requisitos de Fightnect Página 7
5.4.1 Utilización librerías OpenCV y OpenNI
Este riesgo es un riesgo crítico, dado que se necesita lograr captar movimientos con el
dispositivo Kinect. La forma de hacerlo es utilizar y modificar de acuerdo a lo que
necesitemos el código ya creado y que se encuentra a disposición de forma libre. La forma de
evitar es interiorizase oportunamente de las funciones y entender el funcionamiento de estas
junto con el dispositivo Kinect.
Si se presenta este problema, aún habiendo estudiando oporotunamente, se necesitarán otras
funciones para captar movimientos, portando otra librería o simplificando aspectos del
proyecto como en vez de captar un brazo, captar una mano. Es necesario decir, que esto se
puede evitar estudiando y analizando oportunamente el código a disposición y modificarlo
para lo que se necesita.
5.4.2 Implementación de microcontrolador MSP430
Este es un riesgo no crítico, dado que es opcional, pero de poder implementarse, es necseario
codificar en lenguaje C para lograr la conexión con la consola de Super Nintendo. Para evitar
que se transforme en un problema, el equipo cuenta con un experto en el área de estructura de
computadores que podrá implementar sin mayores problemas lo necesario.
Si no se contase con esta persona con conocimientos avanzados, este punto del proyecto se
puede obviar, dado que es opcional.
5.4.3 Factor tiempo
El factor tiempo es un riesgo inherente a cualquier proyecto. En este caso, se cuenta con un
período de tiempo acotado para el desarrollo y si este tiempo se viera reducido drásticamente,
generaría muchos problemas. La forma de evitar aquello es agendar hitos y metas semanales
de acuerdo al tiempo general para así avanzar gradualmente en el problema.
Si se diera el caso de reducción considerable de tiempo para el desarrollo, se buscará
generalizar los módulos y lograr los hitos con menos detalles; en su defecto quitar
características.
Documento de Requisitos de Fightnect Página 8
Descargar