50
UNIVERSIDAD NACIONAL DE INGENIERÍA FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS INTELIGENCIA ARTIFICIAL MANUAL KINETIC Integrantes: BALBERENA ZAVALA, JORGE CAMUS TRUJILLO, HEBERD PUENTE JARA, ALEX ATILIO RIVERA ROMAN, JONATHAN VALENZUELA, JHOSEP QUINTANA , MARCO DOCENTE: OPORTO, SAMUEL 21/07/2012

Manual Kinect Final

Embed Size (px)

Citation preview

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    1

    UNIVERSIDAD NACIONAL DE INGENIERA FACULTAD DE INGENIERA INDUSTRIAL Y DE SISTEMAS

    INTELIGENCIA ARTIFICIAL

    MANUAL KINETIC

    Integrantes:

    BALBERENA ZAVALA, JORGE CAMUS TRUJILLO, HEBERD PUENTE JARA, ALEX ATILIO RIVERA ROMAN, JONATHAN VALENZUELA, JHOSEP QUINTANA , MARCO

    DOCENTE: OPORTO, SAMUEL

    21/07/2012

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    2

    INDICE

    INTRODUCCION

    1. INTRODUCCION AL KINECT

    1.1. Que es el Kinect?

    1.2. Componentes

    1.3. Compra

    1.4. Requerimiento

    1.4.1. Hardware

    1.4.2. Software

    1.5. Tecnologa

    1.6. Instalacin del SDK Versin 1.5

    1.7. Operacin

    1.7.1. Aplicacin para detectar el video del Sensor Kinect

    2. FUNCIONAMIENTO DEL KINECT

    2.1. Requerimientos

    2.2. Encendido del Sensor

    2.3. Encendido de la Cmara

    2.3.1. Cdigo Fuente

    3. CAPTURA DE DATOS

    3.1. Interfaz

    3.1.1. Cdigo Fuente

    3.2. Datos de Entrenamiento

    3.2.1. Cdigo Fuente

    3.3. Datos de Prueba

    3.3.1. Cdigo Fuente

    4. BASE DE DATOS

    4.1. Tablas

    4.2. Procedimientos Almacenados y Funciones

    5. MODELO DE APRENDIZAJE

    5.1. Construccin del Modelo

    ANEXO

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    3

    INTRODUCCION

    En el siguiente manual explicaremos como realizamos la codificacin para

    obtener datos del sensor Kinect, la captura de datos de entrenamiento y de

    prueba, para ellos necesitamos una serie de componentes como herramientas.

    Entre los componentes necesitamos el SDK del sensor para poder desarrollar

    en algn lenguaje de programacin como es Visual basic, C#, C++. Entre las

    herramientas de desarrollo utilizaremos el Visual Studio y como herramienta

    de base de datos, el Microsoft SQL Server en el cual en crearemos los Stores

    Porcedures como funciones para la insercin de los datos de entrenamiento y

    prueba.

    El solucin se es de tipo WPF y se dividi en 3 regiones: Variables, Constructor

    Encendido cmara, Entrenamiento y Prueba.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    4

    1. INTRODUCCION DEL KINECT

    1.1. Que es el Kinect?

    Es un dispositivo que permite la captura de movimiento en 3 dimensiones,

    Microsoft Research (empresa que forma parte de Microsoft y que se encarga de la

    investigacin) invirti veinte aos de desarrollo en la tecnologa de Kinect y fue

    anunciado por primera vez el 1 de junio de 2009 en la Electronic Entertainment

    Expo 2009 como "Project Natal" y posteriormente se cambi al nombre Kinect.

    Desde su lanzamiento una de sus muchas aplicaciones es el campo de los

    videojuegos, aunque en la actualidad y con el lanzamiento de Kinect para

    Windows las aplicaciones se han incrementado exponencialmente en diferentes

    mbitos como la medicina, robtica, educacin, programacin, etc.

    Existen dos versiones del Kinect: Microsoft Kinect para Windows y el Microsoft

    Kinect XBOX 360, el primero est orientado para aplicaciones en PC mientras que

    el segundo est orientado para consolas XBOX 360.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    5

    1.2. Componentes

    El sensor de Kinect es una barra horizontal de aproximadamente 23 cm (9

    pulgadas) conectada a una pequea base circular con un eje de articulacin de

    rtula, y est diseado para ser colocado longitudinalmente por encima o por

    debajo de la pantalla de vdeo.

    El dispositivo cuenta con una cmara RGB, un sensor de profundidad, un

    micrfono de mltiples matrices y un procesador personalizado que ejecuta el

    software patentado, que proporciona captura de movimiento de todo el cuerpo en

    3D, reconocimiento facial y capacidades de reconocimiento de voz. El micrfono

    de matrices del sensor de Kinect permite a la Xbox 360 llevar a cabo la

    localizacin de la fuente acstica y la supresin del ruido ambiente, permitiendo

    participar en el chat de Xbox Live sin utilizar auriculares.

    El sensor contiene un mecanismo de inclinacin motorizado y en caso de usar un

    Xbox 360 del modelo original, tiene que ser conectado a una toma de corriente, ya

    que la corriente que puede proveerle el cable USB es insuficiente; para el caso del

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    6

    modelo de Xbox 360 S esto no es necesario ya que esta consola cuenta con una

    toma especialmente diseada para conectar el Kinect y esto permite proporcionar

    la corriente necesaria que requiere el dispositivo para funcionar correctamente.

    El sensor de profundidad es un proyector de infrarrojos combinado con un sensor

    CMOS monocromo que permite a Kinect ver la habitacin en 3D en cualquier

    condicin de luz ambiental. El rango de deteccin de la profundidad del sensor es

    ajustable gracias al software de Kinect capaz de calibrar automticamente el

    sensor, basado en la jugabilidad y en el ambiente fsico del jugador, tal como la

    presencia de sofs.

    1.3. Compra

    Lugares de compra del Kinect Amazon http://www.amazon.com/ Tipo de Kinect: KINECT FOR WINDOWS

    Precio de compra: $. 230.00 (dlares americanos)

    Envo: Desde Amazon no hacen el envo del Kinect hacia Per, por lo que si se desea comprar el Kinect para Windows desde Amazon, se debe tener una persona que reciba el dispositivo y enviarlo a Per

    Ripley-Peru http://www.ripley.com.pe/ Tipo de Kinect: KINECT XBOX 360 Precio de compra: S/. 750.00 (nuevos soles

    peruanos) Envo: En sta tienda solo vende el Kinect XBOX y

    no el Kinect para Windows

    1.4. Requerimientos

    4.1 Hardware Requerimientos

    Sensor: 1 Sensor Microsoft Kinect para Windows

    Procesador: Dual-core 2.66-GHz o superior

    Memoria: 2 GB RAM

    Disco duro: 190 MB de espacio libre

    Bus: 32-bit (x86) o 64-bit (x64)

    Puerto USB: 1 puerto USB 2.0 o superior

    4.2 Software Requerimientos

    Sistema Operativo: Microsoft Windows 7 o superior

    Controlador:

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    7

    SDK v1.5 de Microsoft [ http://www.microsoft.com/en-us/kinectforwindows/develop/developer-

    downloads.aspx ]

    GNU de cdigo abierto

    Herramienta de desarrollo: Microsoft Visual Studio 2010 Express o Visual Studio 2010

    edicin NET Framework 4.0

    Opcional: Microsoft Speech Platform SDK v11 para desarrollo de aplicaciones con voz en

    Kinect

    1.5. Tecnologa

    1.6. Instalacin del SDK Versin 1.5

    1. Asegrese de que el Sensor Kinect no este conectado a ningn Puerto USB de la

    computadora.

    2. Si alguna versin del SDK del Microsoft Kinect se encuentra instalada, deber desinstalarla

    antes de proceder con la instalacin.

    3. Remover cualquier otro driver del Sensor Kinect.

    4. Desinstalar Microsoft Server Speech Platform Runtime o cualquier componente del

    incluyendo ambas versions de x86 and x64 bit adems del Microsoft Server Speech

    Recognition Language - Kinect Language Pack.

    5. Cerrar Visual Studio.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    8

    6. Desde el archivo de instalacin, doble-click en KinectSDK-v1.5-Setup.exe, este instalador

    es para ambas versiones 32-bit y 64-bit.

    Ejecutando el instalador

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    9

    Instalando la herramienta de desarrollo

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    10

    7. Una vez que el SDK se ha instalado completamente exitosamente, asegrese de enchufar

    el Sensor Kinect al tomacorriente y posteriormente conectarlo a un puerto USB de la

    computadora. Los controladores se leern automticamente.

    Asegurndonos de que los controladores se instalaron correctamente

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    11

    8. El Sensor Kinect debera ahora trabajar correctamente. Abrir el ejemplo del Explorador del

    Kinect desde el men Inicio, Todos los programas, Kinect for Windows SDK v1.5, Kinect

    Studio v1.5.0.exe y verifique que el Sensor Kinect muestre la cadena Skeletor, la imagen a

    color, profundidad de la imagen, y datos de audio.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    12

    1.7. Operacin

    1.7.1. Aplicacin para detectar el video del Sensor Kinect

    Paso1: Abrir el Microsoft Visual C# 2010 y crear nuevo proyecto del tipo WPF y llamarlo

    detecting

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    13

    Paso2: Agregar la referencia al Proyecto

    Paso3: Copiar el siguiente cdigo fuente a MainWindow.xaml.cs

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    14

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Microsoft.Kinect; namespace detecting { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { /// /// detecting a Kinect Sensor /// #region Member Variables private KinectSensor _Kinect; #endregion Member Variables #region Constructor public MainWindow() { InitializeComponent(); this.Loaded += (s, e) => { DiscoverKinectSensor(); }; this.Unloaded += (s, e) => { this.Kinect = null; }; } #endregion Constructor #region Methods private void DiscoverKinectSensor() { KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged; this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected); } private void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e) { switch (e.Status) { case KinectStatus.Connected: if (this.Kinect == null) { this.Kinect = e.Sensor; } break; case KinectStatus.Disconnected: if (this.Kinect == e.Sensor) { this.Kinect = null; this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected); if (this.Kinect == null) { //notify the user that the sensor is disconnected

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    15

    } } break; //handle all other statues according to needs } } #endregion Methods ///Enabling the ColorImageStream public KinectSensor Kinect { get { return this._Kinect; } set { if (this._Kinect != value) { if (this._Kinect != null) { UninitializeKinectSensor(this._Kinect); this._Kinect = null; } if (value != null && value.Status == KinectStatus.Connected) { this._Kinect = value; InitializeKinectSensor(this._Kinect); } } } } private void InitializeKinectSensor(KinectSensor sensor) { if (sensor != null) { sensor.ColorStream.Enable(); sensor.ColorFrameReady += Kinect_ColorFrameReady; sensor.Start(); } } private void UninitializeKinectSensor(KinectSensor sensor) { if (sensor != null) { sensor.Stop(); sensor.ColorFrameReady -= Kinect_ColorFrameReady; } } ///Processing Color Image Frame Data private void Kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using (ColorImageFrame frame = e.OpenColorImageFrame()) { if (frame != null) { byte[] pixelData = new byte[frame.PixelDataLength]; frame.CopyPixelDataTo(pixelData); ColorImageElement.Source = BitmapImage.Create(frame.Width, frame.Height, 96, 96, PixelFormats.Bgr32, null, pixelData, frame.Width * frame.BytesPerPixel); }

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    16

    } } } }

    Paso4: Copiar el siguiente cdigo fuente a MainWindow.xaml

    Paso5: Ejecutar el proyecto

    Se muestra la imgen que captura el sensor Kinect

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    17

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    18

    2. FUNCIONAMIENTO DEL KINECT

    2.1. REQUERIMIENTOS

    Para el funcionamiento del sensor Kinect se necesita haber instalado en la PC

    el SDK (Software Development Kit) que lo podemos obtener del siguiente link

    http://www.microsoft.com/en-us/kinectforwindows/ .

    Click en el la ultima parte. (Dowload SDK)

    Y podremos visualizar la descarga para el SDK y un toolkit (cdigos fuentes y ejemplos

    desarrollados con el kinect).

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    19

    2.2. ENCENDIDO DEL SENSOR

    Luego de haber instalado los componentes del sensor, conectaremos el sensor a la PC a

    travs del puerto USB y el enchufe hacia la corriente.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    20

    2.3. ENCENDIDO DE LA CAMARA

    En el cdigo fuente la regin de encendido de la cmara tenemos:

    En la Regin ENCENDER LA CAMARA una subregin de Methods:

    Regin Subregin Mtodo Descripcin

    ENCENDER LA CAMARA

    Methods DiscoverKinectSensor

    Detecta si el sensor est conectado

    Methods KinectSensors_StatusChanged

    Detecta si el sensor a cambiado de estado: Conectado a Desconectado.

    Kinect Llamado para inicializar el sensor o no inicializar dependiendo la deteccin del sensor.

    InitializeKinectSensor Inicializa el Kinetc

    UninitializeKinectSensor No inicializa el Kinetc

    2.3.1. Cdigo Fuente

    #region ENCENDER LA CAMARA //ENCENDER LA CAMERA #region Methods private void DiscoverKinectSensor() { KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged; this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected); } private void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e) { switch (e.Status) { case KinectStatus.Connected: if (this.Kinect == null) { this.Kinect = e.Sensor;

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    21

    } break; case KinectStatus.Disconnected: if (this.Kinect == e.Sensor) { this.Kinect = null; this.Kinect = KinectSensor.KinectSensors.FirstOrDefault(x => x.Status == KinectStatus.Connected); if (this.Kinect == null) { //notify the user that the sensor is disconnected } } break; //handle all other statues according to needs } } #endregion Methods // Enabling the ColorImageStream public KinectSensor Kinect { get { return this._Kinect; } set { if (this._Kinect != value) { if (this._Kinect != null) { UninitializeKinectSensor(this._Kinect); this._Kinect = null; } if (value != null && value.Status == KinectStatus.Connected) { this._Kinect = value; InitializeKinectSensor(this._Kinect); } } } } private void InitializeKinectSensor(KinectSensor sensor) { if (sensor != null) { sensor.ColorStream.Enable(); sensor.ColorFrameReady += Kinect_ColorFrameReady; sensor.Start(); } } private void UninitializeKinectSensor(KinectSensor sensor) { if (sensor != null) { sensor.Stop();

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    22

    sensor.ColorFrameReady -= Kinect_ColorFrameReady; } } // Processing Color Image Frame Data private void Kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using (ColorImageFrame frame = e.OpenColorImageFrame()) { if (frame != null) { byte[] pixelData = new byte[frame.PixelDataLength]; frame.CopyPixelDataTo(pixelData); ColorImageElement.Source = BitmapImage.Create(frame.Width, frame.Height, 96, 96, PixelFormats.Bgr32, null, pixelData, frame.Width * frame.BytesPerPixel); } } } #endregion ENCENDER LA CAMARA

    3. CAPTURA DE DATOS

    La captura de datos se realiza a travs de la cmara del sensor en el cual captura los

    puntos del cuerpo humano.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    23

    3.1. INTERFAZ

    Para la solucin consideramos la siguiente interfaz:

    El recuadro tenemos la cmara del Kinect.

    Tenemos las clases: Lentamente, Normalmente, Trote, Rpido.

    En los Botones consideramos la captura de los puntos del cuerpo humano as los

    como datos ya trabajados de los puntos para el Entrenamiento y Prueba para el

    modelo de aprendizaje. Ejecutando la interfaz tenemos:

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    24

    3.1.1. CODIGO FUENTE

    El cdigo Fuente de la interfaz

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    25

    3.2. Datos de Entrenamiento

    Los datos de entrenamiento se obtienen en al ejecutar la captura de datos haciendo clic

    en el botn Data Entrenamiento y se obtienen los puntos del cuerpo humano.

    El otro botn (Entrenar Datos) se refiere a la ejecucin de 1 procedimiento almacenado en

    el cual procesa los puntos hallando las distancias de un punto del cuerpo al centroide y el

    ngulo que forma este vector con la vertical.

    3.2.1. Cdigo Fuente

    En la regin de entrenamiento del cdigo fuente tenemos los siguientes mtodos:

    Mtodos Descripcin button5_Click Evento que se ejecuta

    con el botn Datos Entrenamiento en el cual captura los puntos del cuerpo humano y los almacena en una base de datos.

    sensor_AllFramesReady Evento llamado por el de arriba para ontener el skeleton del cuerpo humano y almacena los datos.

    GetFirstSkeleton Obtiene el skeleton del cuerpo humano.

    button4_Click Evento que procesa la data para el entrenamiento.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    26

    #region ENTRENAMIENTO private void button5_Click(object sender, RoutedEventArgs e) { KinectSensor sensor = KinectSensor.KinectSensors[0]; var parameters = new TransformSmoothParameters { Smoothing = 0.2f, Correction = 0.0f, Prediction = 0.0f, JitterRadius = 1.0f, MaxDeviationRadius = 0.5f }; sensor.SkeletonStream.Enable(parameters); //sensor.SkeletonStream.Enable();{} sensor.AllFramesReady += new EventHandler(sensor_AllFramesReady); sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30); sensor.Start(); } void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e) { Skeleton skeleton = GetFirstSkeleton(e); // SqlConnection conn = myConexion(); if (skeleton == null) { return; } //String xx = Convert.ToString(num_filas); if (num_filas == 100) { return; } string condition = ""; if (rbLentamente.IsChecked == true) { condition = rbLentamente.Content.ToString(); } if (rbNormalmente.IsChecked == true) { condition = rbNormalmente.Content.ToString(); } if (rbTrote.IsChecked == true) { condition = rbTrote.Content.ToString(); } if (rbRapido.IsChecked == true) { condition = rbRapido.Content.ToString(); } //Acceso a Base de Datos string Caden = "Data Source=.;Initial Catalog=Caminante;Integrated Security=True"; //ConfigurationSettings.AppSettings["cnx"] SqlConnection Cnn = new SqlConnection(Caden); Cnn.Open();

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    27

    // SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["cnx"].ConnectionString); SqlCommand command = new SqlCommand("SP_Insert_Puntos", Cnn); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@Id", SqlDbType.BigInt).Value = num_filas; command.Parameters.Add("@Clase", SqlDbType.VarChar).Value = condition; //Puntos X command.Parameters.Add("@XTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.X; command.Parameters.Add("@XTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.X; command.Parameters.Add("@XCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.X; command.Parameters.Add("@XCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.X; command.Parameters.Add("@XPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.X; command.Parameters.Add("@XPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.X; command.Parameters.Add("@XManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.X; command.Parameters.Add("@XManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.X; command.Parameters.Add("@XCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.X; command.Parameters.Add("@XCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.X; command.Parameters.Add("@XCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.X; command.Parameters.Add("@XCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.X; command.Parameters.Add("@XRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.X; command.Parameters.Add("@XRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.X; command.Parameters.Add("@XHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.X; command.Parameters.Add("@XHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.X; command.Parameters.Add("@XHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.X; command.Parameters.Add("@XColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.X; command.Parameters.Add("@XMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.X; command.Parameters.Add("@XMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.X; //Puntos Y command.Parameters.Add("@YTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.Y; command.Parameters.Add("@YTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.Y; command.Parameters.Add("@YCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.Y; command.Parameters.Add("@YCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.Y;

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    28

    command.Parameters.Add("@YPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.Y; command.Parameters.Add("@YPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.Y; command.Parameters.Add("@YManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.Y; command.Parameters.Add("@YManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.Y; command.Parameters.Add("@YCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.Y; command.Parameters.Add("@YCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.Y; command.Parameters.Add("@YCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.Y; command.Parameters.Add("@YCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.Y; command.Parameters.Add("@YRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.Y; command.Parameters.Add("@YRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.Y; command.Parameters.Add("@YHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.Y; command.Parameters.Add("@YHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.Y; command.Parameters.Add("@YHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.Y; command.Parameters.Add("@YColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.Y; command.Parameters.Add("@YMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.Y; command.Parameters.Add("@YMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.Y; //Puntos Z command.Parameters.Add("@ZTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.Z; command.Parameters.Add("@ZTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.Z; command.Parameters.Add("@ZCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.Z; command.Parameters.Add("@ZCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.Z; command.Parameters.Add("@ZPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.Z; command.Parameters.Add("@ZPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.Z; command.Parameters.Add("@ZManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.Z; command.Parameters.Add("@ZManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.Z; command.Parameters.Add("@ZCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.Z; command.Parameters.Add("@ZCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.Z; command.Parameters.Add("@ZCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.Z; command.Parameters.Add("@ZCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.Z;

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    29

    command.Parameters.Add("@ZRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.Z; command.Parameters.Add("@ZRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.Z; command.Parameters.Add("@ZHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.Z; command.Parameters.Add("@ZHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.Z; command.Parameters.Add("@ZHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.Z; command.Parameters.Add("@ZColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.Z; command.Parameters.Add("@ZMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.Z; command.Parameters.Add("@ZMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.Z; command.ExecuteNonQuery(); Cnn.Close(); //Id = Id + 1; num_filas = num_filas + 1; } Skeleton GetFirstSkeleton(AllFramesReadyEventArgs e) { using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame()) { if (skeletonFrameData == null) { return null; } skeletonFrameData.CopySkeletonDataTo(allSkeletons); //get the first tracked skeleton Skeleton first = (from j in allSkeletons where j.TrackingState == SkeletonTrackingState.Tracked select j).FirstOrDefault(); return first; } } private void button4_Click(object sender, RoutedEventArgs e) { //Inserta distancias y angulos en la tabla de Entrenamiento // SqlConnection conexionEntrenamiento = new SqlConnection(ConfigurationManager.ConnectionStrings["cnx"].ConnectionString); string CadenEntrenamiento = "Data Source=.;Initial Catalog=Caminante;Integrated Security=True"; //ConfigurationSettings.AppSettings["cnx"] SqlConnection CnnEntranamiento = new SqlConnection(CadenEntrenamiento); CnnEntranamiento.Open(); SqlCommand comandEntrenamiento = new SqlCommand("SP_Insert_Entrenamiento", CnnEntranamiento); comandEntrenamiento.ExecuteNonQuery(); CnnEntranamiento.Close(); }

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    30

    private void Window_Loaded(object sender, RoutedEventArgs e) { } private void rbHola_Checked(object sender, RoutedEventArgs e) { } private void ColorImageElement_ImageFailed(object sender, ExceptionRoutedEventArgs e) { } } } #endregion ENTRENAMIENTO

    3.3. Datos de Prueba

    Los datos de prueba se obtienen haciendo clic en el botn Data Prueba y se obtienen los

    puntos del cuerpo humano.

    El otro botn (Prueba) se refiere a la ejecucin de 1 procedimiento almacenado en el cual

    procesa los puntos hallando las distancias de un punto del cuerpo al centroide y el ngulo

    que forma este vector con la vertical.

    3.3.1. Cdigo Fuente

    En la regin de entrenamiento del cdigo fuente tenemos los siguientes mtodos:

    Mtodos Descripcin button1_Click

    Evento que se ejecuta con el botn Datos Prueba en el cual captura los puntos del cuerpo humano y los almacena en una tabla de la base de datos.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    31

    sensor_AllFramesReadyPrueba

    Evento llamado por el de arriba para obtener el skeleton del cuerpo humano y almacena los datos.

    GetFirstSkeleton Obtiene el skeleton del cuerpo humano.

    button2_Click

    Evento que procesa la data para la prueba. (Halla distancia y angulos).

    #region PRUEBA //EVENTO CLICK EXTRACCION DE DATOS public void button1_Click(object sender, RoutedEventArgs e) { KinectSensor sensor = KinectSensor.KinectSensors[0]; var parameters = new TransformSmoothParameters { Smoothing = 0.2f, Correction = 0.0f, Prediction = 0.0f, JitterRadius = 1.0f, MaxDeviationRadius = 0.5f }; sensor.SkeletonStream.Enable(parameters); //sensor.SkeletonStream.Enable();{} sensor.AllFramesReady += new EventHandler(sensor_AllFramesReadyPrueba); sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30); sensor.Start(); //ConeccionBD Conection = new ConeccionBD(); //Conection.ConeccionBDA(); } private void button2_Click(object sender, RoutedEventArgs e) { //Inserta distancias y angulos en la tabla de Entrenamiento // SqlConnection conexionEntrenamiento = new SqlConnection(ConfigurationManager.ConnectionStrings["cnx"].ConnectionString); string CadenPrueba = "Data Source=.;Initial Catalog=Caminante;Integrated Security=True"; //ConfigurationSettings.AppSettings["cnx"] SqlConnection CnnPrueba = new SqlConnection(CadenPrueba); CnnPrueba.Open(); SqlCommand comandPrueba = new SqlCommand("SP_Insert_Prueba", CnnPrueba); comandPrueba.ExecuteNonQuery(); CnnPrueba.Close(); } void sensor_AllFramesReadyPrueba(object sender, AllFramesReadyEventArgs e)

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    32

    { Skeleton skeleton = GetFirstSkeleton(e); // SqlConnection conn = myConexion(); if (skeleton == null) { return; } //String xx = Convert.ToString(num_filas); if (num_filas == 100) { return; } string condition = ""; if (rbLentamente.IsChecked == true) { condition = rbLentamente.Content.ToString(); } if (rbNormalmente.IsChecked == true) { condition = rbNormalmente.Content.ToString(); } if (rbTrote.IsChecked == true) { condition = rbTrote.Content.ToString(); } if (rbRapido.IsChecked == true) { condition = rbRapido.Content.ToString(); } //Acceso a Base de Datos string Caden = "Data Source=.;Initial Catalog=Caminante;Integrated Security=True"; //ConfigurationSettings.AppSettings["cnx"] SqlConnection CnxPrueba = new SqlConnection(Caden); CnxPrueba.Open(); // SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["cnx"].ConnectionString); SqlCommand command = new SqlCommand("SP_Insert_Puntos_Prueba", CnxPrueba); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@Id", SqlDbType.BigInt).Value = num_filas; command.Parameters.Add("@Clase", SqlDbType.VarChar).Value = condition; //Puntos X command.Parameters.Add("@XTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.X; command.Parameters.Add("@XTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.X; command.Parameters.Add("@XCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.X; command.Parameters.Add("@XCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.X; command.Parameters.Add("@XPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.X; command.Parameters.Add("@XPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.X; command.Parameters.Add("@XManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.X;

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    33

    command.Parameters.Add("@XManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.X; command.Parameters.Add("@XCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.X; command.Parameters.Add("@XCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.X; command.Parameters.Add("@XCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.X; command.Parameters.Add("@XCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.X; command.Parameters.Add("@XRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.X; command.Parameters.Add("@XRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.X; command.Parameters.Add("@XHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.X; command.Parameters.Add("@XHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.X; command.Parameters.Add("@XHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.X; command.Parameters.Add("@XColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.X; command.Parameters.Add("@XMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.X; command.Parameters.Add("@XMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.X; //Puntos Y command.Parameters.Add("@YTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.Y; command.Parameters.Add("@YTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.Y; command.Parameters.Add("@YCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.Y; command.Parameters.Add("@YCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.Y; command.Parameters.Add("@YPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.Y; command.Parameters.Add("@YPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.Y; command.Parameters.Add("@YManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.Y; command.Parameters.Add("@YManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.Y; command.Parameters.Add("@YCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.Y; command.Parameters.Add("@YCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.Y; command.Parameters.Add("@YCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.Y; command.Parameters.Add("@YCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.Y; command.Parameters.Add("@YRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.Y; command.Parameters.Add("@YRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.Y; command.Parameters.Add("@YHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.Y;

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    34

    command.Parameters.Add("@YHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.Y; command.Parameters.Add("@YHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.Y; command.Parameters.Add("@YColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.Y; command.Parameters.Add("@YMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.Y; command.Parameters.Add("@YMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.Y; //Puntos Z command.Parameters.Add("@ZTobilloIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleLeft].Position.Z; command.Parameters.Add("@ZTobilloDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.AnkleRight].Position.Z; command.Parameters.Add("@ZCodoIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowLeft].Position.Z; command.Parameters.Add("@ZCodoDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ElbowRight].Position.Z; command.Parameters.Add("@ZPieIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.FootLeft].Position.Z; command.Parameters.Add("@ZPieDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.FootRight].Position.Z; command.Parameters.Add("@ZManoIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HandLeft].Position.Z; command.Parameters.Add("@ZManoDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HandRight].Position.Z; command.Parameters.Add("@ZCabeza", SqlDbType.Float).Value = skeleton.Joints[JointType.Head].Position.Z; command.Parameters.Add("@ZCaderaCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.HipCenter].Position.Z; command.Parameters.Add("@ZCaderaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.HipLeft].Position.Z; command.Parameters.Add("@ZCaderaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.HipRight].Position.Z; command.Parameters.Add("@ZRodillaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeLeft].Position.Z; command.Parameters.Add("@ZRodillaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.KneeRight].Position.Z; command.Parameters.Add("@ZHombroCentro", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderCenter].Position.Z; command.Parameters.Add("@ZHombroIzquierdo", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderLeft].Position.Z; command.Parameters.Add("@ZHombroDerecho", SqlDbType.Float).Value = skeleton.Joints[JointType.ShoulderRight].Position.Z; command.Parameters.Add("@ZColVertebral", SqlDbType.Float).Value = skeleton.Joints[JointType.Spine].Position.Z; command.Parameters.Add("@ZMuecaIzquierda", SqlDbType.Float).Value = skeleton.Joints[JointType.WristLeft].Position.Z; command.Parameters.Add("@ZMuecaDerecha", SqlDbType.Float).Value = skeleton.Joints[JointType.WristRight].Position.Z; command.ExecuteNonQuery(); CnxPrueba.Close(); //Id = Id + 1; num_filas = num_filas + 1; } #endregion PRUEBA

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    35

    4. BASE DE DATOS

    4.1. Tablas

    Tenemos las tablas para la capturas de puntos en los ejes X,Y y Z,

    As como las Tablas de Entrenamiento y Prueba hallando en este caso las distancias y

    ngulos.

    Posicin X

    CREATE TABLE [dbo].[PosicionesX](

    [AnkleLeft] [decimal](20, 8) NULL, [AnkleRight] [decimal](20, 8) NULL,

    [ElbowLeft] [decimal](20, 8) NULL,

    [ElbowRight] [decimal](20, 8) NULL,

    [FootLeft] [decimal](20, 8) NULL,

    [FootRight] [decimal](20, 8) NULL,

    [HandLeft] [decimal](20, 8) NULL,

    [HandRight] [decimal](20, 8) NULL,

    [Head] [decimal](20, 8) NULL,

    [HipCenter] [decimal](20, 8) NULL,

    [HipLeft] [decimal](20, 8) NULL,

    [HipRight] [decimal](20, 8) NULL,

    [KneeLeft] [decimal](20, 8) NULL,

    [KneeRight] [decimal](20, 8) NULL,

    [ShoulderCenter] [decimal](20, 8) NULL,

    [ShoulderLeft] [decimal](20, 8) NULL,

    [ShoulderRight] [decimal](20, 8) NULL,

    [Spine] [decimal](20, 8) NULL,

    [WristLeft] [decimal](20, 8) NULL,

    [WristRight] [decimal](20, 8) NULL,

    [Id] [int] IDENTITY(1,1) NOT NULL

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    36

    ) ON [PRIMARY]

    Posicin Y

    CREATE TABLE [dbo].[PosicionesY](

    [Id] [bigint] NULL,

    [Clase] [nvarchar](250) NULL,

    [TobilloIzquierdo] [decimal](20, 4) NULL,

    [TobilloDerecho] [decimal](20, 4) NULL,

    [CodoIzquierdo] [decimal](20, 4) NULL,

    [CodoDerecho] [decimal](20, 4) NULL,

    [PieIzquierdo] [decimal](20, 4) NULL,

    [PieDerecho] [decimal](20, 4) NULL,

    [ManoIzquierda] [decimal](20, 4) NULL,

    [ManoDerecha] [decimal](20, 4) NULL,

    [Cabeza] [decimal](20, 4) NULL,

    [CaderaCentro] [decimal](20, 4) NULL,

    [CaderaIzquierda] [decimal](20, 4) NULL,

    [CaderaDerecha] [decimal](20, 4) NULL,

    [RodillaIzquierda] [decimal](20, 4) NULL,

    [RodillaDerecha] [decimal](20, 4) NULL,

    [HombroCentro] [decimal](20, 4) NULL,

    [HombroIzquierdo] [decimal](20, 4) NULL,

    [HombroDerecho] [decimal](20, 4) NULL,

    [ColVertebral] [decimal](20, 4) NULL,

    [MuecaIzquierda] [decimal](20, 4) NULL,

    [MuecaDerecha] [decimal](20, 4) NULL

    ) ON [PRIMARY]

    CREATE TABLE [dbo].[PosicionesZ](

    [Id] [bigint] NULL,

    [Clase] [nvarchar](250) NULL,

    [TobilloIzquierdo] [decimal](20, 4) NULL,

    [TobilloDerecho] [decimal](20, 4) NULL,

    [CodoIzquierdo] [decimal](20, 4) NULL,

    [CodoDerecho] [decimal](20, 4) NULL,

    [PieIzquierdo] [decimal](20, 4) NULL,

    [PieDerecho] [decimal](20, 4) NULL,

    [ManoIzquierda] [decimal](20, 4) NULL,

    [ManoDerecha] [decimal](20, 4) NULL,

    [Cabeza] [decimal](20, 4) NULL,

    [CaderaCentro] [decimal](20, 4) NULL,

    [CaderaIzquierda] [decimal](20, 4) NULL,

    [CaderaDerecha] [decimal](20, 4) NULL,

    [RodillaIzquierda] [decimal](20, 4) NULL,

    [RodillaDerecha] [decimal](20, 4) NULL,

    [HombroCentro] [decimal](20, 4) NULL,

    [HombroIzquierdo] [decimal](20, 4) NULL,

    [HombroDerecho] [decimal](20, 4) NULL,

    [ColVertebral] [decimal](20, 4) NULL,

    [MuecaIzquierda] [decimal](20, 4) NULL,

    [MuecaDerecha] [decimal](20, 4) NULL

    ) ON [PRIMARY]

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    37

    GO

    Tabla_Entrenamiento:

    CREATE TABLE [dbo].[Tabla_Entrenamiento](

    [ID] [bigint] NOT NULL,

    [TobilloIzquierdoDistancia] [decimal](20, 4) NULL,

    [TobilloIzquierdoAngulo] [decimal](20, 4) NULL,

    [TobilloDerechoDistancia] [decimal](20, 4) NULL,

    [TobilloDerechoAngulo] [decimal](20, 4) NULL,

    [CodoIzquierdoDistancia] [decimal](20, 4) NULL,

    [CodoIzquierdoAngulo] [decimal](20, 4) NULL,

    [CodoDerechoDistancia] [decimal](20, 4) NULL,

    [CodoDerechoAngulo] [decimal](20, 4) NULL,

    [PieIzquierdoDistancia] [decimal](20, 4) NULL,

    [PieIzquierdoAngulo] [decimal](20, 4) NULL,

    [PieDerechoDistancia] [decimal](20, 4) NULL,

    [PieDerechoAngulo] [decimal](20, 4) NULL,

    [ManoIzquierdaDistancia] [decimal](20, 4) NULL,

    [ManoIzquierdaAngulo] [decimal](20, 4) NULL,

    [ManoDerechaDistancia] [decimal](20, 4) NULL,

    [ManoDerechaAngulo] [decimal](20, 4) NULL,

    [CaderaIzquierdaDistancia] [decimal](20, 4) NULL,

    [CaderaIzquierdaAngulo] [decimal](20, 4) NULL,

    [CaderaDerechaDistancia] [decimal](20, 4) NULL,

    [CaderaDerechaAngulo] [decimal](20, 4) NULL,

    [RodillaIzquierdaDistancia] [decimal](20, 4) NULL,

    [RodillaIzquierdaAngulo] [decimal](20, 4) NULL,

    [RodillaDerechaDistancia] [decimal](20, 4) NULL,

    [RodillaDerechaAngulo] [decimal](20, 4) NULL,

    [HombroIzquierdoDistancia] [decimal](20, 4) NULL,

    [HombroIzquierdoAngulo] [decimal](20, 4) NULL,

    [HombroDerechoDistancia] [decimal](20, 4) NULL,

    [HombroDerechoAngulo] [decimal](20, 4) NULL,

    [MuecaIzquierdaDistancia] [decimal](20, 4) NULL,

    [MuecaIzquierdaAngulo] [decimal](20, 4) NULL,

    [MuecaDerechaDistancia] [decimal](20, 4) NULL,

    [MuecaDerechaAngulo] [decimal](20, 4) NULL,

    [Clase] [nvarchar](250) NULL

    ) ON [PRIMARY]

    Tabla_Prueba:

    CREATE TABLE [dbo].[Tabla_Prueba](

    [ID] [bigint] NOT NULL,

    [TobilloIzquierdoDistancia] [decimal](20, 4) NULL,

    [TobilloIzquierdoAngulo] [decimal](20, 4) NULL,

    [TobilloDerechoDistancia] [decimal](20, 4) NULL,

    [TobilloDerechoAngulo] [decimal](20, 4) NULL,

    [CodoIzquierdoDistancia] [decimal](20, 4) NULL,

    [CodoIzquierdoAngulo] [decimal](20, 4) NULL,

    [CodoDerechoDistancia] [decimal](20, 4) NULL,

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    38

    [CodoDerechoAngulo] [decimal](20, 4) NULL,

    [PieIzquierdoDistancia] [decimal](20, 4) NULL,

    [PieIzquierdoAngulo] [decimal](20, 4) NULL,

    [PieDerechoDistancia] [decimal](20, 4) NULL,

    [PieDerechoAngulo] [decimal](20, 4) NULL,

    [ManoIzquierdaDistancia] [decimal](20, 4) NULL,

    [ManoIzquierdaAngulo] [decimal](20, 4) NULL,

    [ManoDerechaDistancia] [decimal](20, 4) NULL,

    [ManoDerechaAngulo] [decimal](20, 4) NULL,

    [CaderaIzquierdaDistancia] [decimal](20, 4) NULL,

    [CaderaIzquierdaAngulo] [decimal](20, 4) NULL,

    [CaderaDerechaDistancia] [decimal](20, 4) NULL,

    [CaderaDerechaAngulo] [decimal](20, 4) NULL,

    [RodillaIzquierdaDistancia] [decimal](20, 4) NULL,

    [RodillaIzquierdaAngulo] [decimal](20, 4) NULL,

    [RodillaDerechaDistancia] [decimal](20, 4) NULL,

    [RodillaDerechaAngulo] [decimal](20, 4) NULL,

    [HombroIzquierdoDistancia] [decimal](20, 4) NULL,

    [HombroIzquierdoAngulo] [decimal](20, 4) NULL,

    [HombroDerechoDistancia] [decimal](20, 4) NULL,

    [HombroDerechoAngulo] [decimal](20, 4) NULL,

    [MuecaIzquierdaDistancia] [decimal](20, 4) NULL,

    [MuecaIzquierdaAngulo] [decimal](20, 4) NULL,

    [MuecaDerechaDistancia] [decimal](20, 4) NULL,

    [MuecaDerechaAngulo] [decimal](20, 4) NULL,

    [Clase] [nvarchar](250) NULL

    ) ON [PRIMARY]

    4.2. Procedimientos Almacenados

    Los procedimientos almacenados que se ejecutan son:

    Y las funciones que hallan el ngulo y distancia.

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    39

    Script Insercin de las coordenadas

    CREATE PROCEDURE [dbo].[SP_Insert_Puntos]

    -- Add the parameters for the stored procedure here

    @Id bigint,

    @Clase nvarchar(250),

    @XTobilloIzquierdo decimal(20,8) ,

    @XTobilloDerecho decimal(20,8) ,

    @XCodoIzquierdo decimal(20,8) ,

    @XCodoDerecho decimal(20,8) ,

    @XPieIzquierdo decimal(20,8) ,

    @XPieDerecho decimal(20,8) ,

    @XManoIzquierda decimal(20,8) ,

    @XManoDerecha decimal(20,8) ,

    @XCabeza decimal(20,8) ,

    @XCaderaCentro decimal(20,8) ,

    @XCaderaIzquierda decimal(20,8) ,

    @XCaderaDerecha decimal(20,8) ,

    @XRodillaIzquierda decimal(20,8) ,

    @XRodillaDerecha decimal(20,8) ,

    @XHombroCentro decimal(20,8) ,

    @XHombroIzquierdo decimal(20,8) ,

    @XHombroDerecho decimal(20,8) ,

    @XColVertebral decimal(20,8) ,

    @XMuecaIzquierda decimal(20,8) ,

    @XMuecaDerecha decimal(20,8) ,

    @YTobilloIzquierdo decimal(20,8) ,

    @YTobilloDerecho decimal(20,8) ,

    @YCodoIzquierdo decimal(20,8) ,

    @YCodoDerecho decimal(20,8) ,

    @YPieIzquierdo decimal(20,8) ,

    @YPieDerecho decimal(20,8) ,

    @YManoIzquierda decimal(20,8) ,

    @YManoDerecha decimal(20,8) ,

    @YCabeza decimal(20,8) ,

    @YCaderaCentro decimal(20,8),

    @YCaderaIzquierda decimal(20,8) ,

    @YCaderaDerecha decimal(20,8) ,

    @YRodillaIzquierda decimal(20,8) ,

    @YRodillaDerecha decimal(20,8) ,

    @YHombroCentro decimal(20,8) ,

    @YHombroIzquierdo decimal(20,8) ,

    @YHombroDerecho decimal(20,8) ,

    @YColVertebral decimal(20,8) ,

    @YMuecaIzquierda decimal(20,8) ,

    @YMuecaDerecha decimal(20,8) ,

    @ZTobilloIzquierdo decimal(20,8) ,

    @ZTobilloDerecho decimal(20,8) ,

    @ZCodoIzquierdo decimal(20,8) ,

    @ZCodoDerecho decimal(20,8) ,

    @ZPieIzquierdo decimal(20,8) ,

    @ZPieDerecho decimal(20,8) ,

    @ZManoIzquierda decimal(20,8) ,

    @ZManoDerecha decimal(20,8) ,

    @ZCabeza decimal(20,8) ,

    @ZCaderaCentro decimal(20,8),

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    40

    @ZCaderaIzquierda decimal(20,8) ,

    @ZCaderaDerecha decimal(20,8) ,

    @ZRodillaIzquierda decimal(20,8) ,

    @ZRodillaDerecha decimal(20,8) ,

    @ZHombroCentro decimal(20,8) ,

    @ZHombroIzquierdo decimal(20,8) ,

    @ZHombroDerecho decimal(20,8) ,

    @ZColVertebral decimal(20,8) ,

    @ZMuecaIzquierda decimal(20,8) ,

    @ZMuecaDerecha decimal(20,8)

    AS

    BEGIN

    INSERT INTO PosicionesX

    VALUES (@Id,@Clase,@XTobilloIzquierdo

    ,@XTobilloDerecho,@XCodoIzquierdo,@XCodoDerecho,@XPieIzquierdo,@XPieDerec

    ho,@XManoIzquierda,@XManoDerecha,@XCabeza,

    @XCaderaCentro,@XCaderaIzquierda

    ,@XCaderaDerecha,@XRodillaIzquierda,@XRodillaDerecha,@XHombroCentro,@XHom

    broIzquierdo,@XHombroDerecho,@XColVertebral,@XMuecaIzquierda,

    @XMuecaDerecha)

    INSERT INTO PosicionesY

    VALUES (@Id,@Clase,@YTobilloIzquierdo

    ,@YTobilloDerecho,@YCodoIzquierdo,@YCodoDerecho,@YPieIzquierdo,@YPieDerec

    ho,@YManoIzquierda,@YManoDerecha,@YCabeza,

    @YCaderaCentro,@YCaderaIzquierda

    ,@YCaderaDerecha,@YRodillaIzquierda,@YRodillaDerecha,@YHombroCentro,@YHom

    broIzquierdo,@YHombroDerecho,@YColVertebral,@YMuecaIzquierda,

    @YMuecaDerecha)

    INSERT INTO PosicionesZ

    VALUES (@Id,@Clase,@ZTobilloIzquierdo

    ,@ZTobilloDerecho,@ZCodoIzquierdo,@ZCodoDerecho,@ZPieIzquierdo,@ZPieDerec

    ho,@ZManoIzquierda,@ZManoDerecha,@ZCabeza,

    @ZCaderaCentro,@ZCaderaIzquierda

    ,@ZCaderaDerecha,@ZRodillaIzquierda,@ZRodillaDerecha,@ZHombroCentro,@ZHom

    broIzquierdo,@ZHombroDerecho,@ZColVertebral,@ZMuecaIzquierda,

    @ZMuecaDerecha)

    --INSERT INTO Tabla_Entrenamiento(Id,Distancia,Angulo,clase)

    --

    VALUES(@Id,dbo.DISTANCIA(@XTobilloDerecho,@YMuecaDerecha,@XCodoDerecho,@

    YCodoDerecho) ,

    --

    dbo.tangente(@XCodoDerecho,@YCodoDerecho,@XTobilloIzquierdo,@YHombroDerec

    ho),

    --@clase)

    END

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    41

    Insercin de los datos procesados

    GO

    ALTER PROCEDURE [dbo].[SP_Insert_Entrenamiento]

    AS

    INSERT INTO Tabla_Entrenamiento

    SELECT PosicionesX.Id,

    dbo.DISTANCIA(PosicionesX.TobilloIzquiedo,PosicionesY.TobilloIzquierdo,Po

    sicionesZ.TobilloIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVerteb

    ral,PosicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.TobilloIzquiedo,PosicionesY.TobilloIzquierdo,Posic

    ionesZ.TobilloIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral

    ,PosicionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.TobilloDerecho,PosicionesY.TobilloDerecho,Posic

    ionesZ.TobilloDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,P

    osicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.TobilloDerecho,PosicionesY.TobilloDerecho,Posicion

    esZ.TobilloDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.CodoIzquierdo,PosicionesY.CodoIzquierdo,Posicio

    nesZ.CodoIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.CodoIzquierdo,PosicionesY.CodoIzquierdo,Posiciones

    Z.CodoIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.CodoDerecho,PosicionesY.CodoDerecho,PosicionesZ

    .CodoDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posiciones

    Z.ColVertebral),

    dbo.ANGULO(PosicionesX.CodoDerecho,PosicionesY.CodoDerecho,PosicionesZ.Co

    doDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,PosicionesZ.C

    olVertebral),

    dbo.DISTANCIA(PosicionesX.PieIzquierdo,PosicionesY.PieIzquierdo,Posicione

    sZ.PieIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.PieIzquierdo,PosicionesY.PieIzquierdo,PosicionesZ.

    PieIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posiciones

    Z.ColVertebral),

    dbo.DISTANCIA(PosicionesX.PieDerecho,PosicionesY.PieDerecho,PosicionesZ.P

    ieDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,PosicionesZ.C

    olVertebral),

    dbo.ANGULO(PosicionesX.PieDerecho,PosicionesY.PieDerecho,PosicionesZ.PieD

    erecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,PosicionesZ.ColV

    ertebral),

    dbo.DISTANCIA(PosicionesX.ManoIzquierda,PosicionesY.ManoIzquierda,Posicio

    nesZ.ManoIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.ManoIzquierda,PosicionesY.ManoIzquierda,Posiciones

    Z.ManoIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.ManoDerecha,PosicionesY.ManoDerecha,PosicionesZ

    .ManoDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posiciones

    Z.ColVertebral),

    dbo.ANGULO(PosicionesX.ManoDerecha,PosicionesY.ManoDerecha,PosicionesZ.Ma

    noDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,PosicionesZ.C

    olVertebral),

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    42

    dbo.DISTANCIA(PosicionesX.CaderaIzquierda,PosicionesY.CaderaIzquierda,Pos

    icionesZ.CaderaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebra

    l,PosicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.CaderaIzquierda,PosicionesY.CaderaIzquierda,Posici

    onesZ.CaderaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebral,P

    osicionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.CaderaDerecha,PosicionesY.CaderaDerecha,Posicio

    nesZ.CaderaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.CaderaDerecha,PosicionesY.CaderaDerecha,Posiciones

    Z.CaderaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.RodillaIzquierda,PosicionesY.RodillaIzquierda,P

    osicionesZ.RodillaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVerte

    bral,PosicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.RodillaIzquierda,PosicionesY.RodillaIzquierda,Posi

    cionesZ.RodillaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebra

    l,PosicionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.RodillaDerecha,PosicionesY.RodillaDerecha,Posic

    ionesZ.RodillaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,P

    osicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.RodillaDerecha,PosicionesY.RodillaDerecha,Posicion

    esZ.RodillaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.HombroIzquierdo,PosicionesY.HombroIzquierdo,Pos

    icionesZ.HombroIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebra

    l,PosicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.HombroIzquierdo,PosicionesY.HombroIzquierdo,Posici

    onesZ.HombroIzquierdo,PosicionesX.ColVertebral,PosicionesY.ColVertebral,P

    osicionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.HombroDerecho,PosicionesY.HombroDerecho,Posicio

    nesZ.HombroDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.HombroDerecho,PosicionesY.HombroDerecho,Posiciones

    Z.HombroDerecho,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.MuecaIzquierda,PosicionesY.MuecaIzquierda,Pos

    icionesZ.MuecaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebra

    l,PosicionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.MuecaIzquierda,PosicionesY.MuecaIzquierda,Posici

    onesZ.MuecaIzquierda,PosicionesX.ColVertebral,PosicionesY.ColVertebral,P

    osicionesZ.ColVertebral),

    dbo.DISTANCIA(PosicionesX.MuecaDerecha,PosicionesY.MuecaDerecha,Posicio

    nesZ.MuecaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posi

    cionesZ.ColVertebral),

    dbo.ANGULO(PosicionesX.MuecaDerecha,PosicionesY.MuecaDerecha,Posiciones

    Z.MuecaDerecha,PosicionesX.ColVertebral,PosicionesY.ColVertebral,Posicio

    nesZ.ColVertebral),

    PosicionesX.Clase

    FROM PosicionesX INNER JOIN PosicionesY

    ON PosicionesX.Id=PosicionesY.Id AND PosicionesX.Clase=PosicionesY.Clase

    INNER JOIN PosicionesZ

    ON PosicionesX.Id=PosicionesZ.Id AND PosicionesX.Clase=PosicionesZ.Clase

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    43

    Funcin Distancia y Angulo

    Angulo ALTER FUNCTION [dbo].[ANGULO]

    (

    @X decimal(20,4),

    @Y decimal(20,4),

    @Z decimal(20,4),

    @XCadera decimal(20,4),

    @YCadera decimal(20,4),

    @ZCadera decimal(20,4)

    )

    RETURNS decimal(20,4)

    AS

    BEGIN

    DECLARE

    @Angulo decimal(20,4)

    IF (@YCadera

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    44

    @ValorMX decimal(20,4),

    @ValorMY decimal (20,8),

    @ValorMZ decimal (20,8),

    @ValorDistancia decimal(20,4)

    SET @ValorX=(@XCadera-@X)

    SET @ValorY=(@YCadera-@Y)

    SET @ValorZ=(@ZCadera-@Z)

    SET @ValorMX=(@ValorX*@ValorX)

    SET @ValorMY=(@ValorY*@ValorY)

    SET @ValorMZ=(@ValorZ*@ValorZ)

    SET @ValorDistancia=SQRT(@ValorMX+@ValorMY+@ValorMZ)

    RETURN @ValorDistancia

    END

    5. MODELO DE APRENDIZAJE

    5.1. Construccin del Modelo

    Paso1: CREAR EL ORIGEN DE DATOS:

    Para esto se tiene que ejecutar el script:

    CALL ASSprocs.CreateDataSource('DS_ORIGEN',

    'Provider=SQLNCLI10.1;Data Source=.;

    Integrated Security=SSPI;Initial

    Catalog=Caminante','ImpersonateCurrentUser','','')

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    45

    Grafico 1

    Paso2: CREAR LA CONEXIN CON EL LINKED SERVER:

    Para esto se tiene que ejecutar el script:

    USE Caminante

    EXEC Caminante.dbo.sp_addlinkedserver

    @server = N'LINK_TEST', -- nombre del servidor vinculado

    @srvproduct=N'DS_ORIGEN', -- nombre del origen de datos

    @provider=N'MSOLAP', --protocolo

    @datasrc=N'.', -- nombre del servidor

    @catalog=N'KINECT' -- base de datos

    Paso 3: CREAR La Estructura:

    Para esto se tiene que ejecutar el script:

    select * from openquery(LINK_TEST,'CALL DMXecute.DMXecute("

    CREATE MINING STRUCTURE MS_EJEMPLO (

    [ID] TEXT KEY,

    [TobilloIzquierdoDistancia] DOUBLE CONTINUOUS,

    [TobilloIzquierdoAngulo] DOUBLE CONTINUOUS,

    [TobilloDerechoDistancia] DOUBLE CONTINUOUS,

    [TobilloDerechoAngulo] DOUBLE CONTINUOUS,

    [CodoIzquierdoDistancia] DOUBLE CONTINUOUS,

    [CodoIzquierdoAngulo] DOUBLE CONTINUOUS,

    [CodoDerechoDistancia] DOUBLE CONTINUOUS,

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    46

    [CodoDerechoAngulo] DOUBLE CONTINUOUS,

    [PieIzquierdoDistancia] DOUBLE CONTINUOUS,

    [PieIzquierdoAngulo] DOUBLE CONTINUOUS,

    [PieDerechoDistancia] DOUBLE CONTINUOUS,

    [PieDerechoAngulo] DOUBLE CONTINUOUS,

    [ManoIzquierdaDistancia] DOUBLE CONTINUOUS,

    [ManoIzquierdaAngulo] DOUBLE CONTINUOUS,

    [ManoDerechaDistancia] DOUBLE CONTINUOUS,

    [ManoDerechaAngulo] DOUBLE CONTINUOUS,

    [CaderaIzquierdaDistancia] DOUBLE CONTINUOUS,

    [CaderaIzquierdaAngulo] DOUBLE CONTINUOUS,

    [CaderaDerechaDistancia] DOUBLE CONTINUOUS,

    [CaderaDerechaAngulo] DOUBLE CONTINUOUS,

    [RodillaIzquierdaDistancia] DOUBLE CONTINUOUS,

    [RodillaIzquierdaAngulo] DOUBLE CONTINUOUS,

    [RodillaDerechaDistancia] DOUBLE CONTINUOUS,

    [RodillaDerechaAngulo] DOUBLE CONTINUOUS,

    [HombroIzquierdoDistancia] DOUBLE CONTINUOUS,

    [HombroIzquierdoAngulo] DOUBLE CONTINUOUS,

    [HombroDerechoDistancia] DOUBLE CONTINUOUS,

    [HombroDerechoAngulo] DOUBLE CONTINUOUS,

    [MuecaIzquierdaDistancia] DOUBLE CONTINUOUS,

    [MuecaIzquierdaAngulo] DOUBLE CONTINUOUS,

    [MuecaDerechaDistancia] DOUBLE CONTINUOUS,

    [MuecaDerechaAngulo] DOUBLE CONTINUOUS,

    [Clase] TEXT DISCRETE )

    ") ')

    Paso 4: CREAR el Modelo de Redes Neuronales:

    select * from openquery(LINK_TEST,'CALL DMXecute.DMXecute("

    ALTER MINING STRUCTURE [MS_EJEMPLO]

    ADD MINING MODEL [MM_RN]

    (

    [ID] ,

    [TobilloIzquierdoDistancia] ,

    [TobilloIzquierdoAngulo] ,

    [TobilloDerechoDistancia] ,

    [TobilloDerechoAngulo] ,

    [CodoIzquierdoDistancia] ,

    [CodoIzquierdoAngulo],

    [CodoDerechoDistancia] ,

    [CodoDerechoAngulo] ,

    [PieIzquierdoDistancia] ,

    [PieIzquierdoAngulo] ,

    [PieDerechoDistancia] ,

    [PieDerechoAngulo],

    [ManoIzquierdaDistancia] ,

    [ManoIzquierdaAngulo] ,

    [ManoDerechaDistancia],

    [ManoDerechaAngulo] ,

    [CaderaIzquierdaDistancia],

    [CaderaIzquierdaAngulo],

    [CaderaDerechaDistancia] ,

    [CaderaDerechaAngulo] ,

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    47

    [RodillaIzquierdaDistancia] ,

    [RodillaIzquierdaAngulo] ,

    [RodillaDerechaDistancia] ,

    [RodillaDerechaAngulo] ,

    [HombroIzquierdoDistancia] ,

    [HombroIzquierdoAngulo] ,

    [HombroDerechoDistancia] ,

    [HombroDerechoAngulo],

    [MuecaIzquierdaDistancia],

    [MuecaIzquierdaAngulo] ,

    [MuecaDerechaDistancia] ,

    [MuecaDerechaAngulo],

    [Clase] PREDICT)

    USING Microsoft_Neural_Network(HIDDEN_NODE_RATIO=6)

    ") ')

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    48

    ANEXO

    Tablas de la Base de Datos

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    49

    TABLA PosicionesX , PosicionesY y PosicionesZ

    Nombre Columna Tipo de Dato Tamao Descripcin [ID] [bigint] - Es el identificador de la fila [TobilloIzquierdo] [decimal] 24

    Es el valor del eje coordenado del punto correspondiente

    [TobilloDerechoDistancia] [decimal] 24 [CodoIzquierdoDistancia] [decimal] 24 [CodoDerechoDistancia] [decimal] 24 [PieIzquierdoDistancia] [decimal] 24 [PieDerechoDistancia] [decimal] 24 [ManoIzquierdaDistancia] [decimal] 24 [ManoDerechaDistancia] [decimal] 24 [CaderaIzquierdaDistancia] [decimal] 24 [CaderaDerechaDistancia] [decimal] 24 [RodillaIzquierdaDistancia] [decimal] 24 [RodillaDerechaDistancia] [decimal] 24 [HombroIzquierdoDistancia] [decimal] 24 [HombroDerechoDistancia] [decimal] 24 [MuecaIzquierdaDistancia] [decimal] 24 [MuecaDerechaDistancia] [decimal] 24

  • UNIVERSIDAD NACIONAL DE INGENIERA INTELIGENCIA ARTIFICIAL

    50

    Tabla Tabla_Entrenamiento

    Nombre Columna Tipo de Dato Tamao Descripcin [ID] [bigint] - Es el identificador de la fila [TobilloIzquierdoDistancia] [decimal] 24 Es el valor, ya sea del ngulo o la

    distancia al punto asociado [TobilloIzquierdoAngulo] [decimal] 24 [TobilloDerechoDistancia] [decimal] 24 [TobilloDerechoAngulo] [decimal] 24 [CodoIzquierdoDistancia] [decimal] 24 [CodoIzquierdoAngulo] [decimal] 24 [CodoDerechoDistancia] [decimal] 24 [CodoDerechoAngulo] [decimal] 24 [PieIzquierdoDistancia] [decimal] 24 [PieIzquierdoAngulo] [decimal] 24 [PieDerechoDistancia] [decimal] 24 [PieDerechoAngulo] [decimal] 24 [ManoIzquierdaDistancia] [decimal] 24 [ManoIzquierdaAngulo] [decimal] 24 [ManoDerechaDistancia] [decimal] 24 [ManoDerechaAngulo] [decimal] 24 [CaderaIzquierdaDistancia] [decimal] 24 [CaderaIzquierdaAngulo] [decimal] 24 [CaderaDerechaDistancia] [decimal] 24 [CaderaDerechaAngulo] [decimal] 24 [RodillaIzquierdaDistancia] [decimal] 24 [RodillaIzquierdaAngulo] [decimal] 24 [RodillaDerechaDistancia] [decimal] 24 [RodillaDerechaAngulo] [decimal] 24 [HombroIzquierdoDistancia] [decimal] 24 [HombroIzquierdoAngulo] [decimal] 24 [HombroDerechoDistancia] [decimal] 24 [HombroDerechoAngulo] [decimal] 24 [MuecaIzquierdaDistancia] [decimal] 24 [MuecaIzquierdaAngulo] [decimal] 24 [MuecaDerechaDistancia] [decimal] 24 [MuecaDerechaAngulo] [decimal] 24 [Clase] [nvarchar] 250 Es la clase