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
Top Related