<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SIMOCAP</title>
	<atom:link href="http://simocap.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://simocap.wordpress.com</link>
	<description>Software Libre que Captura tus Movimientos por José Alberto Gandullo Ávila</description>
	<lastBuildDate>Fri, 24 Jun 2011 06:49:45 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='simocap.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>SIMOCAP</title>
		<link>http://simocap.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://simocap.wordpress.com/osd.xml" title="SIMOCAP" />
	<atom:link rel='hub' href='http://simocap.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PFC SIMOCAP 10 Matrícula de Honor</title>
		<link>http://simocap.wordpress.com/2010/07/09/pfc-simocap-10-matricula-de-honor/</link>
		<comments>http://simocap.wordpress.com/2010/07/09/pfc-simocap-10-matricula-de-honor/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 18:16:19 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=128</guid>
		<description><![CDATA[Pues ya presente el proyecto Simocap como Proyecto fin de carrera de Ingeniería Superior en Informática en mi Escuela, (Escuela Técnica Superior de Ingeniería Informática de la Universidad de Sevilla), y he recibido la clasificación de Sobresaliente 10 Matrícula de Honor,  además esto se une a la Mención Especial recibida en el Premio local de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=128&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pues ya presente el proyecto Simocap como Proyecto fin de carrera de Ingeniería Superior en Informática en mi Escuela, (Escuela Técnica Superior de Ingeniería Informática de la Universidad de Sevilla), y he recibido la clasificación de Sobresaliente 10 Matrícula de Honor,  además esto se une a la Mención Especial recibida en el Premio local de Sevilla del Concurso Universitario de Software Libre.</p>
<p>Dejo aquí los vídeos de una demostración de uso del software.</p>
<span class='embed-youtube' style='text-align:center; display:block;'><object width='510' height='317'><param name='movie' value='http://www.youtube.com/v/DWw3AswAjVA?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' /> <param name='allowfullscreen' value='true' /> <param name='wmode' value='opaque' /> <embed src='http://www.youtube.com/v/DWw3AswAjVA?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='510' height='317' wmode='opaque'></embed> </object></span>
<span class='embed-youtube' style='text-align:center; display:block;'><object width='510' height='317'><param name='movie' value='http://www.youtube.com/v/q9EE4m1bBUk?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' /> <param name='allowfullscreen' value='true' /> <param name='wmode' value='opaque' /> <embed src='http://www.youtube.com/v/q9EE4m1bBUk?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='510' height='317' wmode='opaque'></embed> </object></span>
<p>Y con esto voy a denener el desarrollo del proyecto hasta nuevo aviso.</p>
<p>La dirección de descarga del software y de la documentación es la siguiente:</p>
<p><a href="https://forja.rediris.es/projects/cusl4-simocap/">https://forja.rediris.es/projects/cusl4-simocap/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=128&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/07/09/pfc-simocap-10-matricula-de-honor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial Instalación de Artoolkit (y ejecución) en Ubuntu</title>
		<link>http://simocap.wordpress.com/2010/06/18/tutorial-instalacion-y-ejecucion-de-artoolkit-en-ubuntu/</link>
		<comments>http://simocap.wordpress.com/2010/06/18/tutorial-instalacion-y-ejecucion-de-artoolkit-en-ubuntu/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 13:12:08 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=114</guid>
		<description><![CDATA[Bueno hace unos días tuve que instalar de nuevo artoolkit en otra máquina con Ubuntu 10.04 y hacía tanto tiempo de la primera vez, que no me acordaba muy bien, así que para que no me pase más he escrito un pequeño manual de instrucciones / tutorial con los pasos para la instalación y la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=114&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno hace unos días tuve que instalar de nuevo artoolkit en otra máquina con Ubuntu 10.04 y hacía tanto tiempo de la primera vez, que no me acordaba muy bien, así que para que no me pase más he escrito un pequeño manual de instrucciones / tutorial con los pasos para la instalación y la ejecución de las aplicaciones de ejemplo en Ubuntu (probado en Ubuntu 10.04).</p>
<p>Y como la mayoría de visitas que recibe este blog es por este motivo, pues aquí lo dejo:</p>
<h3>Instalación Artoolkit</h3>
<p><strong>Paso1</strong>. Instalar los siguientes paquetes o la versión actual más parecida desde Synaptic aceptando también la instalación de todas las dependencias que nos proponga</p>
<p><em><span style="color:#339966;">freeglut3-dev<br />
libgstreamer0.10-dev<br />
libgstreamer-plugins-base0.10-dev  (quizas este no es necesario)<br />
libxi-dev<br />
libxmu-headers<br />
libxmu-dev<br />
libjpeg62-dev<br />
libglib2.0-dev<br />
libgtk2.0-dev</span></em></p>
<p><strong>Paso2</strong>.  Descargar artoolkit, la última versión libre es esta:</p>
<p style="padding-left:30px;"><a href="http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ARToolKit-2.72.1.tgz/download">ARToolKit-2.72.1.tgz</a></p>
<p>para otros sistemas operativos:</p>
<p style="padding-left:30px;"><a href="http://sourceforge.net/projects/artoolkit/files/">http://sourceforge.net/projects/artoolkit/files/</a></p>
<p><strong>Paso3</strong>. Descomprimir desde un terminal en la ubicación deseada con el comando:</p>
<p style="padding-left:30px;"><span style="color:#993300;"><em>tar zxvf ARToolKit-2.72.1.tgz</em></span><br />
<strong><br />
</strong></p>
<p><strong>Paso4</strong>. Ir dentro de la carpeta de artoolkit y configurar desde un terminal con el comando</p>
<p style="padding-left:30px;"><span style="color:#993300;"><em>./Configure</em></span></p>
<p>elegir opción <em>5 Gstreamer Media Framework </em> y responder sí (yes) a las siguientes preguntas <em> </em>(no he probado con las otras opciones la verdad).<br />
<strong></strong></p>
<p><strong>Paso5</strong>. En la misma carpeta ejecutar desde el terminal el comando make</p>
<p style="padding-left:30px;"><span style="color:#993300;"><em>make</em></span></p>
<p>(cruzar los dedos para que todo se compile bien, y ya está terminada la instalación, los ejecutables de los ejemplos estarán en la carpeta <em>bin</em>)</p>
<h3>Ejecución Artoolkit</h3>
<p>Para la opción de instalación seleccionada supongo que lo que la mayoría desconoce es que <span style="color:#800080;">hay que darle valor a la variable de entorno <strong>ARTOOLKIT_CONFIG</strong></span></p>
<p><strong>Ejecución de Ejemplos con webcam</strong></p>
<p>Para ejecutar ejemplos de artoolkit con video proveniente de una webcam ejecutar antes el siguiente comando en un terminal para darle valor a la variable de entorno:</p>
<pre>export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"</pre>
<p>donde pone video0 puede que sea otro número video1 por ejemplo, depende de donde instale la webcam o cuando.</p>
<p><strong>Ejecución de ejemplos con archivos de vídeo en disco</strong></p>
<p>Hay que ejecutar primero el siguiente comando desde un terminal cambiando la ruta de location=/&#8230;   por nuestra.</p>
<pre>export ARTOOLKIT_CONFIG="filesrc location=/home/alberto/Escritorio/proyectos/prueba.MOV ! decodebin ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"</pre>
<p>Nos fijamos que el valor que se le da a <em>location</em> es la ruta del vídeo que queremos usar como entrada de vídeo, el resto mejor dejarlo como está.</p>
<p>Ejemplo con otra ruta:</p>
<pre>export ARTOOLKIT_CONFIG="filesrc location=/home/nosotros/Escritorio/prueba.MOV ! decodebin ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"</pre>
<p>Y listo, ahora podemos ir a la carpeta bin, o donde tengamos el ejecutable y llamarlo desde línea de comandos, siempre con ./ delante.</p>
<p>ejemplo:</p>
<p style="padding-left:30px;"><span style="color:#993300;"><em>./simpleTest</em></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=114&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/06/18/tutorial-instalacion-y-ejecucion-de-artoolkit-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Descripción del Formato BVH</title>
		<link>http://simocap.wordpress.com/2010/04/08/descripcion-del-formato-bvh/</link>
		<comments>http://simocap.wordpress.com/2010/04/08/descripcion-del-formato-bvh/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 17:16:55 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=88</guid>
		<description><![CDATA[En un post anterior ya hablé de los formatos de archivo para la captura de movimientos corporales. En este quiero explicar uno en contrato el formato BVH (Biovision Hierarchical Data) de paso añado algo de documentación sobre él en la red ya que se usa mucho pero parece que a nadie le ha dado por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=88&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En un post anterior ya hablé de los formatos de archivo para la captura de movimientos corporales.</p>
<p>En este quiero explicar uno en contrato el formato BVH (Biovision Hierarchical Data) de paso añado algo de documentación sobre él en la red ya que se usa mucho pero parece que a nadie le ha dado por documentarlo, supongo también que esto se debe a que existen multitud de editores de movimientos que dan como resultados este tipo de archivos pero realmente no tienes porqué enfrentare al código.</p>
<p>Bueno lo dicho, aquí expongo a modo de documentación lo que he descubierto sobre el formato BVH.</p>
<p>﻿</p>
<p><!-- 		@page { margin: 2cm } 		PRE.western { font-family: "Times New Roman" } 		P { margin-bottom: 0.21cm } --><span style="font-size:small;">Esto es lo que contiene un archivo BVH:</span></p>
<p><!-- 		@page { margin: 2cm } 		PRE.western { font-family: "Times New Roman" } 		P { margin-bottom: 0.21cm } --></p>
<pre>HIERARCHY
ROOT hip
{
	OFFSET	0.00  0.00  0.00
	CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
	JOINT abdomen
	{
		OFFSET	0.000000 3.422050 0.000000
		CHANNELS 3 Xrotation Zrotation Yrotation
		JOINT chest
		{
			OFFSET	0.000000 8.486693 -0.684411
			CHANNELS 3 Xrotation Zrotation Yrotation
			JOINT neck
			{
				OFFSET	0.000000 10.266162 -0.273764
				CHANNELS 3 Xrotation Zrotation Yrotation
				JOINT head
				{
					OFFSET	0.000000 3.148285 0.000000
					CHANNELS 3 Xrotation Zrotation Yrotation
					End Site
					{
						OFFSET 0.000000 3.148289 0.000000
					}
				}
			}
			JOINT lCollar
			{
				OFFSET	3.422053 6.707223 -0.821293
				CHANNELS 3 Yrotation Zrotation Xrotation
				JOINT lShldr
				{
					OFFSET	3.285171 0.000000 0.000000
					CHANNELS 3 Zrotation Yrotation Xrotation
					JOINT lForeArm
					{
						OFFSET	10.129278 0.000000 0.000000
						CHANNELS 3 Yrotation Zrotation Xrotation
						JOINT lHand
						{
							OFFSET	8.486692 0.000000 0.000000
							CHANNELS 3 Zrotation Yrotation Xrotation
							End Site
							{
								OFFSET 4.106464 0.000000 0.000000
							}
						}
					}
				}
			}
			JOINT rCollar
			{
				OFFSET	-3.558935 6.707223 -0.821293
				CHANNELS 3 Yrotation Zrotation Xrotation
				JOINT rShldr
				{
					OFFSET	-3.148289 0.000000 0.000000
					CHANNELS 3 Zrotation Yrotation Xrotation
					JOINT rForeArm
					{
						OFFSET	-10.266159 0.000000 0.000000
						CHANNELS 3 Yrotation Zrotation Xrotation
						JOINT rHand
						{
							OFFSET	-8.349810 0.000000 0.000000
							CHANNELS 3 Zrotation Yrotation Xrotation
							End Site
							{
								OFFSET -4.106464 0.000000 0.000000
							}
						}
					}
				}
			}
		}
	}
	JOINT lThigh
	{
		OFFSET	5.338403 -1.642589 1.368821
		CHANNELS 3 Xrotation Zrotation Yrotation
		JOINT lShin
		{
			OFFSET	-2.053232 -20.121670 0.000000
			CHANNELS 3 Xrotation Zrotation Yrotation
			JOINT lFoot
			{
				OFFSET	0.000000 -19.300380 -1.231939
				CHANNELS 3 Xrotation Yrotation Zrotation
				End Site
				{
					OFFSET 0.000000 -2.463878 4.653993
				}
			}
		}
	}
	JOINT rThigh
	{
		OFFSET	-5.338403 -1.642589 1.368821
		CHANNELS 3 Xrotation Zrotation Yrotation
		JOINT rShin
		{
			OFFSET	2.053232 -20.121670 0.000000
			CHANNELS 3 Xrotation Zrotation Yrotation
			JOINT rFoot
			{
				OFFSET	0.000000 -19.300380 -1.231939
				CHANNELS 3 Xrotation Yrotation Zrotation
				End Site
				{
					OFFSET 0.000000 -2.463878 4.653993
				}
			}
		}
	}
}
MOTION
Frames:     1
Frame Time: 0.033333
0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
</pre>
<p><!-- 		@page { margin: 2cm } 		PRE.western { font-family: "Times New Roman" } 		P { margin-bottom: 0.21cm } --></p>
<p><span style="font-size:small;">Se pueden distinguir dos partes bien diferenciadas, HIERARCHY y MOTION.</span></p>
<p><span style="font-size:small;">HIERARCHY<br />
En la primera se representa la estructura del esqueleto describiendo los huesos o partes del cuerpo en una jerarquía, de este modo por ejemplo en este ejemplo podemos ver como la raíz de todas las partes del cuerpo es la cadera, y tiene como uniones hijas al abdomen y las 2 piernas, a su vez el abdomen tiene como hijo al pecho, y así sucesivamente hasta completar las partes del cuerpo que se quieran simular. </span></p>
<p><span style="font-size:small;">Cada una de estos huesos o partes del cuerpo vienen caracterizadas por unos parámetros. </span></p>
<p><span style="font-size:small;">OFFSET indica las coordenadas x, z e y donde comienza.</span></p>
<p><span style="font-size:small;">CHANNELS indica el numero y nombre de las variables que pueden cambiar la posición y rotación del hueso. (Solo se indica posición en la raíz, en los demás solo se indicará la rotación.</span></p>
<p><span style="font-size:small;">JOINT indica los huesos hijos a los que está unido y cuyo OFFSET será su límite</span> <span style="font-size:small;">Nota: el valor de las  variables de rotación de un hueso siempre se consideran con respecto al hueso padre.</span></p>
<p><span style="font-size:small;"><br />
</span> <span style="font-size:small;">MOTION<br />
En la segunda parte se representa el movimiento del esqueleto.<br />
Para ello primero se indica el numero de frames (numero de movimientos a realizar), después indicamos la velocidad de esos movimientos(Frames Time).</span></p>
<p><span style="font-size:small;">A partir de ahí cada línea (hasta un retorno de carro explicito &#8220;/n&#8221; no de los que ocurren con el auto-formateado para que no se salga de la pantalla) representa uno de estos frames con una serie de cifras que se corresponden con las variables declaradas en la estructura del esqueleto en cada canal en el orden en el que se han declarado. De esta manera cuanto más complicado es nuestro esqueleto más cifras habrá en cada línea de movimiento.<br />
</span></p>
<p><span style="font-size:small;">Ejemplo de frame (aunque aparezca formateado en varias líneas en realidad solo tiene un retorno de carro al final):</span></p>
<p><span style="font-size:small;">0.000000 43.528519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 60.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 </span></p>
<p><span style="font-size:small;">Este frame solo tiene valores distintos de 0 para un par de variables,</span></p>
<p><span style="font-size:small;">El valor 43.528519 se corresponde con Yposicion del elemento hip, esto se traduce en que el esqueleto tiene una posición absoluta elevada, (suponiendo que en 0 está el suelo se habrá elevado la cadera que es el origen de todas las demás partes para que al estar de pie el modelo virtual los pies estén en posición 0).</span></p>
<p><span style="font-size:small;">Y el valor 60.00000 se corresponde con Xrotation del elemento neck (cuello), lo cual significa que el modelo está mirando hacia arriba.</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=88&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/04/08/descripcion-del-formato-bvh/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Movimiento de la cabeza</title>
		<link>http://simocap.wordpress.com/2010/03/22/movimiento-de-la-cabeza/</link>
		<comments>http://simocap.wordpress.com/2010/03/22/movimiento-de-la-cabeza/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 17:58:49 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=74</guid>
		<description><![CDATA[SE MUEVE!!! SE MUEVE!!! Casi grito eso cuando conseguí capturar el movimiento de la cabeza en un archivo bvh y después reproducirlo en un modelo virtual. Después del  vídeo explico un poco el funcionamiento. El de la izquierda soy yo, otra vez haciendo un poco el gamba con ese bonito sombrero que me he fabricado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=74&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SE MUEVE!!! SE MUEVE!!!</p>
<p>Casi grito eso cuando conseguí capturar el movimiento de la cabeza en un archivo bvh y después reproducirlo en un modelo virtual.</p>
<p>Después del  vídeo explico un poco el funcionamiento.</p>
<p>El de la izquierda soy yo, otra vez haciendo un poco el gamba con ese bonito sombrero que me he fabricado con una caja de zapatos al cual le he colocado diversas marcas de seguimiento.</p>
<p>Y el de la izquierda es un modelo virtual (tristemente para mí más guapo que yo)  que nos proporciona q-avimator para visualizar archivos con formato &#8220;bvh&#8221; en este caso el archivo &#8220;bvh&#8221; que reproduce es el que simocap ha generado automáticamente a partir del video de la izquierda.</p>
<p>Va un poco lento pero es porque al hacer la composición de los dos vídeos mi portátil no daba para más. Los vídeos por separado se ven de forma fluida, también están en youtube por si alguien tiene curiosidad.</p>
<p><object width="510" height="312"><param name="movie" value="http://www.youtube.com/v/q9EE4m1bBUk&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/q9EE4m1bBUk&#038;fs=1" type="application/x-shockwave-flash" width="510" height="312" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Lo que hago es medir los ángulos que hay entre las marcas de mi sombrero y la marca del pecho que uso como marca base.</p>
<p>El motivo de que en la cabeza tenga varias marcas es que al girar es posible que se deje de ver la marca frontal, de este modo las marcas laterales son las que dan la posición.  Así cuando solo se visualiza una marca uso esta pero si se visualizan dos hago la media.</p>
<p>Una vez tengo el angulo de la cabeza lo voy trasladando al archivo de formato &#8220;bvh&#8221; para guardarlo.</p>
<p>Además una vez este proceso ha terminado para todo el vídeo de captura,  recorro el archivo modificando los ángulos para suavizar los movimientos ya que debido a pequeños fallos en la captura se producen movimientos bruscos no reales.</p>
<p>Este archivo con formato &#8220;bvh&#8221; se puede visualizar en múltiples programas como blender, pose , o incluso en Second Life, yo he usado QAVIMATOR por ser código de fuentes abiertas, y consumir pocos recursos .</p>
<p>Mi siguiente paso es capturar el movimiento de los brazos. Me las tengo que ingeniar para colocarme las marcas sin que se me caigan y tal <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  .</p>
<p>Saludos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=74&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/03/22/movimiento-de-la-cabeza/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Obteniendo los ángulos de Euler</title>
		<link>http://simocap.wordpress.com/2010/02/28/obteniendo-los-angulos-de-euler/</link>
		<comments>http://simocap.wordpress.com/2010/02/28/obteniendo-los-angulos-de-euler/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 16:26:22 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=65</guid>
		<description><![CDATA[Solución para salvar el problema del Gimbal Lock al obtener los ángulos de Euler a partir de la matriz que se usa en ArToolkit. Para obtener los ángulos de euler a partir de la matriz de rotación he programado el siguiente código: int getAngulos(double rot[3][3],  double *rfXAng, double *rfYAng, double *rfZAng) { // Matriz de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=65&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Solución para salvar el problema del Gimbal Lock al obtener los ángulos de Euler a partir de la matriz que se usa en ArToolkit.</p>
<p>Para obtener los ángulos de euler a partir de la matriz de rotación he programado el siguiente código:</p>
<p><strong><br />
</strong></p>
<p><strong>int getAngulos(double rot[3][3],  double *rfXAng, double *rfYAng, double *rfZAng) {</strong></p>
<p><em>// Matriz de Rotacion</em></p>
<p><em> // +-           -+   +-                                      -+</em></p>
<p><em> // | r00 r01 r02 |   |  cy*cz  cz*sx*sy-cx*sz  cx*cz*sy+sx*sz |</em></p>
<p><em> // | r10 r11 r12 | = |  cy*sz  cx*cz+sx*sy*sz -cz*sx+cx*sy*sz |</em></p>
<p><em> // | r20 r21 r22 |   | -sy     cy*sx           cx*cy          |</em></p>
<p><em> // +-           -+   +-                                      -+</em></p>
<p><em>// gimbalLock == 0 , no se produce gimbal Lock</em></p>
<p><em>// gimbalLock == 1 , se ha producido gimbal Lock por y angulo = pi/2</em></p>
<p><em>// gimbalLock == 2 , se ha producido gimbal Lock por y angulo = -pi/2</em></p>
<p><strong>int gimbalLock = 0; </strong></p>
<p style="padding-left:30px;"><strong> if (rot[2][0] &lt; 0.995) {</strong></p>
<p style="padding-left:60px;"><strong> if (rot[2][0] &gt; -0.995) {</strong></p>
<p style="padding-left:60px;"><em> // y_angulo = asin(-r20)</em></p>
<p style="padding-left:60px;"><em> // z_angulo = atan2(r10,r00)</em></p>
<p style="padding-left:60px;"><em> // x_angulo = atan2(r21,r22)</em></p>
<p style="padding-left:90px;"><strong>*rfYAng = asin(-rot[2][0]);</strong></p>
<p style="padding-left:90px;"><strong> *rfZAng = atan2(rot[1][0],rot[0][0]);</strong></p>
<p style="padding-left:90px;"><strong> *rfXAng = atan2(rot[2][1],rot[2][2]);</strong></p>
<p style="padding-left:60px;"><strong> }</strong></p>
<p style="padding-left:60px;"><strong>else {</strong></p>
<p style="padding-left:60px;"><em>// y_angulo = +pi/2</em></p>
<p style="padding-left:60px;"><em> // x_angulo + z_angulo = atan2(r01,r02)</em></p>
<p style="padding-left:60px;"><em> // NOTA.  La solución no es unica.  Tomamos x_angulo = 0.</em></p>
<p style="padding-left:90px;"><strong>*rfYAng = PI/2;</strong></p>
<p style="padding-left:90px;"><strong> *rfZAng = -atan2(rot[0][1],rot[0][2]);</strong></p>
<p style="padding-left:90px;"><strong> *rfXAng = 0.0;</strong></p>
<p style="padding-left:90px;"><strong> gimbalLock = 1;</strong></p>
<p style="padding-left:60px;"><strong>}</strong></p>
<p style="padding-left:30px;"><strong> }</strong></p>
<p style="padding-left:30px;"><strong> else {</strong></p>
<p style="padding-left:30px;"><em>// y_angulo = -pi/2</em></p>
<p style="padding-left:30px;"><em> // x_angulo + z_angulo = atan2(-r01,-r02)</em></p>
<p style="padding-left:30px;"><em> // NOTA.  La solución no es unica.  Tomamos x_angulo = 0.</em></p>
<p style="padding-left:60px;"><strong>*rfYAng = -PI/2;</strong></p>
<p style="padding-left:60px;"><strong> *rfZAng = atan2(-rot[0][1],-rot[0][2]);</strong></p>
<p style="padding-left:60px;"><strong> *rfXAng = 0.0;</strong></p>
<p style="padding-left:60px;"><strong> gimbalLock = 2;</strong></p>
<p style="padding-left:30px;"><strong> }</strong></p>
<p><strong>printf(&#8220;Radianes: %3.1f %3.1f %3.1f \n&#8221;,*rfXAng,*rfYAng,*rfZAng);</strong></p>
<p><strong>printf(&#8220;Centigrados: %3.1f %3.1f %3.1f \n&#8221;,(*rfXAng*180)/PI, (*rfYAng*180)/PI, (*rfZAng*180)/PI);</strong></p>
<p><strong>return gimbalLock;</strong></p>
<p><strong>}</strong><br />
Esta función nos indica los ángulos de Euler y además devuelve un valor 1 u 2 cuando se produce Gimbal Lock por angulo con respecto al eje &#8220;Y&#8221; de 90 o -90 grados respectivamente<strong>, </strong>de este modo estaré advertido de la situación en un futuro.</p>
<p><strong>En breve voy a empezar a construir mis propios archivos bvh, espero no tener demasiados problemas.<br />
</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=65&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/02/28/obteniendo-los-angulos-de-euler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Interpretación de la matriz de coordenadas</title>
		<link>http://simocap.wordpress.com/2010/02/19/interpretacion-de-la-matriz-de-coordenadas/</link>
		<comments>http://simocap.wordpress.com/2010/02/19/interpretacion-de-la-matriz-de-coordenadas/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:39:49 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=41</guid>
		<description><![CDATA[Ahora que tengo la matriz de coordenadas de una marca con respecto a otra lo que necesito es obtener los ángulos de rotación con respecto a cada uno de los ejes. El problema es que en la escasa documentación que ofrece Artoolkit lo que dice es que la última columna de la matriz indica la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=41&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		TD P { margin-bottom: 0cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } -->Ahora que tengo la matriz de coordenadas de una marca con respecto a otra lo que necesito es obtener los ángulos de rotación con respecto a cada uno de los ejes. El problema es que en la escasa documentación que ofrece Artoolkit lo que dice es que la última columna de la matriz indica la distancia en los distintos ejes X, Y, y  Z. Y efectivamente al acercar o alejar las marcas se puede apreciar.</p>
<p>Pero no dice nada acerca de las otras 3 columnas que después descubrí que indican la rotación que yo buscaba.</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --><a name="DDE_LINK31"></a><a name="DDE_LINK13"></a><a name="DDE_LINK23"></a> Matriz de rotación</p>
<p>r [0,0]	r [0,1]	 r [0,2]</p>
<p><a name="DDE_LINK14"></a><a name="DDE_LINK211"></a> r [1,0]	r [1,1]	 r [1,2]</p>
<p>r [2,0]	r [2,1]	 r [2,2]</p>
<p>Así que empiezo a hacer pruebas primero coloco una marca base y debajo de ella coloco otra. Como se puede apreciar están sobre la mesa sin giro alguno</p>
<p><a href="http://simocap.files.wordpress.com/2010/02/figura1.png"><img class="alignleft size-medium wp-image-42" title="figura1" src="http://simocap.files.wordpress.com/2010/02/figura1.png?w=149&#038;h=300" alt="" width="149" height="300" /></a><a href="http://simocap.files.wordpress.com/2010/02/figura2.png"><img class="size-medium wp-image-43 alignright" title="figura2" src="http://simocap.files.wordpress.com/2010/02/figura2.png?w=153&#038;h=300" alt="" width="153" height="300" /></a></p>
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">Sin figura 3D</p>
<p style="text-align:right;">Con figura 3D</p>
<p>La tetera roja está colocada en la marca base.</p>
<p>Y la matriz resultado es la siguiente:</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<col width="16"></col>
<col width="73"></col>
<col width="6"></col>
<col width="71"></col>
<col width="8"></col>
<col width="73"></col>
<col width="8"></col>
<tbody>
<tr>
<td width="6%">[R] =</td>
<td width="29%">
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="273">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">0,9988</td>
<td width="31%">0,0060</td>
<td width="34%">-0,0496</td>
<td width="34%">0,1213</td>
</tr>
<tr>
<td width="35%">-0,0064</td>
<td width="31%">0,9999</td>
<td width="34%">-0,0091</td>
<td width="34%">-130,7769</td>
</tr>
<tr>
<td width="35%">0,0495</td>
<td width="31%">0,0094</td>
<td width="34%">0,9987</td>
<td width="34%">5,0256</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td width="29%">Cuya matriz de rotación se parece bastante a:</p>
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="282">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">1</td>
<td width="31%">0</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">1</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">0</td>
<td width="34%">1</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Efectivamente la última columna cumple su cometido de indicar la distancia, ya que para dx y dz su valor es cercano a 0 pero para dy nos da un valor d -130 es decir la marca secundaria está por debajo de la marca base. Y el resto de la matriz (la matriz de rotación) se parece a la matriz identidad.</p>
<p>Después hice pruebas con distintas marcas colocándolas en ángulos reconocibles de 90 grados con respecto a una marca base (la de la tetera rosa) que será respecto a la que calcule las matrices de coordenadas.</p>
<p style="text-align:center;"><a href="http://simocap.files.wordpress.com/2010/02/figura3.png"><img class="size-medium wp-image-46 aligncenter" title="figura3" src="http://simocap.files.wordpress.com/2010/02/figura3.png?w=300&#038;h=164" alt="" width="300" height="164" /></a></p>
<p><a href="http://simocap.files.wordpress.com/2010/02/figura4.png"><img class="aligncenter size-medium wp-image-47" title="figura4" src="http://simocap.files.wordpress.com/2010/02/figura4.png?w=300&#038;h=179" alt="" width="300" height="179" /></a></p>
<p>Como se puede observar cada una de las marcas 1, 2, y 3 están giradas 90 grados en un sentido u otro con respecto a uno delos ejes de la marca 0.</p>
<p>La marca <strong>1</strong> está girada con respecto al eje <strong>X</strong>.</p>
<p>La marca <strong>2</strong> está girada con respecto al eje <strong>Y</strong>.</p>
<p>La marca <strong>3</strong> está girada con respecto al eje <strong>Z</strong>.</p>
<p>Y las matrices de coordenadas respecto a la marca base 0 (tetera rosa) obtenidas para cada un una de las otras marcas son las siguientes:</p>
<p>Matriz de la marca 1.</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<col width="16"></col>
<col width="73"></col>
<col width="6"></col>
<col width="71"></col>
<col width="8"></col>
<col width="73"></col>
<col width="8"></col>
<tbody>
<tr>
<td width="6%">[R] =</td>
<td width="29%">
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="273">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">0,9984</td>
<td width="31%">0,0036</td>
<td width="34%">0,0557</td>
<td width="34%">-3,8267</td>
</tr>
<tr>
<td width="35%">0,0556</td>
<td width="31%">-0,1288</td>
<td width="34%">-0,990</td>
<td width="34%">53,1803</td>
</tr>
<tr>
<td width="35%">0,0036</td>
<td width="31%">0,9917</td>
<td width="34%">-0,1288</td>
<td width="34%">67,2298</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td width="29%">Cuya matriz de rotación se parece bastante a:</p>
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="282">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">1</td>
<td width="31%">0</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">0</td>
<td width="34%">-1</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">1</td>
<td width="34%">0</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Matriz de la marca 2.</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<col width="16"></col>
<col width="73"></col>
<col width="6"></col>
<col width="71"></col>
<col width="8"></col>
<col width="73"></col>
<col width="8"></col>
<tbody>
<tr>
<td width="6%">[R] =</td>
<td width="29%">
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="273">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">0,0168</td>
<td width="31%">-0,0193</td>
<td width="34%">-0,9997</td>
<td width="34%">74,2620</td>
</tr>
<tr>
<td width="35%">-0,0366</td>
<td width="31%">0,9991</td>
<td width="34%">-0,0199</td>
<td width="34%">10,7033</td>
</tr>
<tr>
<td width="35%">0,9992</td>
<td width="31%">0,0370</td>
<td width="34%">0,0161</td>
<td width="34%">57,7545</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td width="29%">Cuya matriz de rotación se parece bastante a:</p>
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="282">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">0</td>
<td width="31%">0</td>
<td width="34%">-1</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">1</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">1</td>
<td width="31%">0</td>
<td width="34%">0</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Matriz de la marca 3.</p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<col width="16"></col>
<col width="73"></col>
<col width="6"></col>
<col width="71"></col>
<col width="8"></col>
<col width="73"></col>
<col width="8"></col>
<tbody>
<tr>
<td width="6%">[R] =</td>
<td width="29%">
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="273">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">-0,0356</td>
<td width="31%">0,9993</td>
<td width="34%">-0,0067</td>
<td width="34%">8,1143</td>
</tr>
<tr>
<td width="35%">-0,9970</td>
<td width="31%">-0,0351</td>
<td width="34%">0,0685</td>
<td width="34%">-115,7258</td>
</tr>
<tr>
<td width="35%">0,0682</td>
<td width="31%">0,0092</td>
<td width="34%">0,9976</td>
<td width="34%">-11,3858</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td width="29%">Cuya matriz de rotación se parece bastante a:</p>
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="282">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">0</td>
<td width="31%">1</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">-1</td>
<td width="31%">0</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">0</td>
<td width="34%">1</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Estos valores tan poco aleatorios tienen su explicación, la cual encontré en los apuntes de la asignatura SIO, Síntesis de imágenes por Ordenador (José Cortés Parejo).</p>
<p><a href="http://simocap.files.wordpress.com/2010/02/figura5.png"><img class="aligncenter size-full wp-image-56" title="figura5" src="http://simocap.files.wordpress.com/2010/02/figura5.png?w=497&#038;h=372" alt="" width="497" height="372" /></a></p>
<p>Seno de 90º es 1 y de -90º es -1 y el coseno 90 es 0. Así que lo que nos dicen las matrices es que la marca 1 está girada 90 grados alrededor del eje X, y las marcas 2 y 3 -90 grados alrededor de los ejes Y y Z respectivamente.</p>
<p>Así que la conclusión es que la matriz de rotación general es la multiplicación de las matrices de rotación con respecto a cada eje. Si  consideramos α, β y γ los ángulos de giro alrededor de los ejes X, Y y Z respectivamente tenemos que multiplicando las matrices de rotación obtenemos lo siguiente.</p>
<p></p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<col width="16"></col>
<col width="73"></col>
<col width="6"></col>
<col width="71"></col>
<col width="8"></col>
<col width="73"></col>
<col width="8"></col>
<tbody>
<tr>
<td width="6%">[R] =</td>
<td width="29%">Rotación en eje Z</p>
<table style="height:74px;" border="1" cellspacing="3" cellpadding="2" width="282">
<col width="90"></col>
<col width="79"></col>
<col width="86"></col>
<tbody>
<tr>
<td width="35%">cos  γ</td>
<td width="31%">-sen β</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">sen  γ</td>
<td width="31%">cos  γ</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">0</td>
<td width="34%">1</td>
</tr>
</tbody>
</table>
</td>
<td width="2%">* (</td>
<td width="28%">Rotación en eje Y</p>
<table border="1" cellspacing="3" cellpadding="2" width="100%">
<col width="91"></col>
<col width="78"></col>
<col width="87"></col>
<tbody>
<tr>
<td width="36%">cos β</td>
<td width="30%">0</td>
<td width="34%">senβ</td>
</tr>
<tr>
<td width="36%">0</td>
<td width="30%">1</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="36%">-sen β</td>
<td width="30%">0</td>
<td width="34%">cos β</td>
</tr>
</tbody>
</table>
</td>
<td width="3%">*</td>
<td width="29%">Rotación en eje X</p>
<table border="1" cellspacing="3" cellpadding="2" width="100%">
<col width="90"></col>
<col width="79"></col>
<col width="87"></col>
<tbody>
<tr>
<td width="35%">1</td>
<td width="31%">0</td>
<td width="34%">0</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">cos α</td>
<td width="34%">-senα</td>
</tr>
<tr>
<td width="35%">0</td>
<td width="31%">senα</td>
<td width="34%">cos α</td>
</tr>
</tbody>
</table>
</td>
<td width="3%">)</td>
</tr>
</tbody>
</table>
<p>[R] =</p>
<table border="1" cellspacing="3" cellpadding="2" width="100%">
<col width="48"></col>
<col width="104"></col>
<col width="104"></col>
<tbody>
<tr>
<td width="19%"><a name="DDE_LINK11"></a>cos β * cos  γ</td>
<td width="41%">sen α * sen β * cos  γ &#8211; cos α * sen  γ</td>
<td width="40%">cos α * sen β * cos  γ + sen α * sen  γ</td>
</tr>
<tr>
<td width="19%"><a name="DDE_LINK10"></a>cos β * sen  γ</td>
<td width="41%">sen α * sen β * sen  γ + cos α * cos  γ</td>
<td width="40%">cos α * sen β * sen  γ &#8211; sen α * cos  γ</td>
</tr>
<tr>
<td width="19%">-sen β</td>
<td width="41%">sen α * cos β</td>
<td width="40%">cos α * cos β</td>
</tr>
</tbody>
</table>
<p>Se corresponde con:</p>
<p>Matriz de rotación</p>
<p>r [0,0]	r [0,1]	 r [0,2]</p>
<p>r [1,0]	r [1,1]	 r [1,2]</p>
<p>r [2,0]	r [2,1]	 r [2,2]</p>
<p>Esta sería entonces la matriz de rotación compacta para los 3 ejes que obtenemos como resultado de la función  arGetTransMat junto con el último vector que ya comentamos que era el de la distancia.</p>
<p><a name="DDE_LINK6"></a>Para obtener entonces los ángulos α , β y γ simplemente tenemos que despejar operando sobre los componentes apropiados de la matriz.</p>
<p>(sen α * cos β)/(cos α * cos β) =  sen α /cos α = tan α  →   α = atan (tan α)</p>
<p><a name="DDE_LINK9"></a>Sustituyendo por los componentes de la matriz : 	α = atan ( r [2,1] / r [2,2])</p>
<p>β =  asen -(-sen  β) = asen -(r [2,0])</p>
<p>(cos β * sen  γ)/(cos β * cos  γ) =  sen γ /cos γ = tan γ  →   γ = atan (tan γ)</p>
<p>Sustituyendo por los componentes de la matriz : 	γ = atan ( r [1,0] / r [0,0])</p>
<p>Estos ángulos estarán expresados en radianes. Para expresarlos en grados sistema más reconocible por nosotros solo tenemos que multiplicar por 180 y dividir por Pi.</p>
<p>El código podría ser algo así:</p>
<p>#define PI         3.14159265358979323846</p>
<p>Á<em>ngulo de giro en X     →  	α = (atan (matriz[2][1] / matriz[2][2]) * 180) / PI; </em></p>
<p><em> Ángulo de giro en Y  	  →	β = (asin (-matriz[2][0]) * 180) / PI; </em></p>
<p><em> Ángulo de giro en Z  	  →	γ = (atan (matriz[1][0] / matriz[0][0]) * 180) / PI; </em></p>
<p><em><br />
</em></p>
<p>Que bonito sería el mundo si esto fuera tan fácil, pero no lo es, y este código después de probarlo un poco se aprecia un error en la estimación de los ángulos con respecto a X y Z esto es debido a que produce Gimball lock. Este error se produce cuando hay giros de 90 con respecto al eje Y (cos 90º = 0) segundo en la multiplicación de matrices y es un error intrínseco a este tipo de uso de los ángulos de euler.</p>
<p>Estoy estudiando distintas opciones para solucionarlo, parece que una buena opción es el uso de quaternion para la representación de la rotación, aunque después para el paso a archivos de movimiento de esqueleto formato bvh necesitaría los ángulos de euler, lo que supondría una nueva conversión.</p>
<p>En principio voy a seguir estudiando opciones, y empezando a tocar archivos bvh, para su mejor compresión de este modo espero encontrar la solución más adecuada al desarrollo de la siguiente fase, la escritura automática de un archivo bvh a partir de las coordenadas obtenidas por las marcas.</p>
<p>Saludos.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:513px;width:1px;height:1px;">0,9999</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=41&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/02/19/interpretacion-de-la-matriz-de-coordenadas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/figura1.png?w=149" medium="image">
			<media:title type="html">figura1</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/figura2.png?w=153" medium="image">
			<media:title type="html">figura2</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/figura3.png?w=300" medium="image">
			<media:title type="html">figura3</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/figura4.png?w=300" medium="image">
			<media:title type="html">figura4</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/figura5.png" medium="image">
			<media:title type="html">figura5</media:title>
		</media:content>
	</item>
		<item>
		<title>Coordenadas de una marca respecto a otra</title>
		<link>http://simocap.wordpress.com/2010/02/12/coordenadas-de-una-marca-respecto-a-otra/</link>
		<comments>http://simocap.wordpress.com/2010/02/12/coordenadas-de-una-marca-respecto-a-otra/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 19:16:00 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=33</guid>
		<description><![CDATA[En cualquier caso para mi proyecto principalmente necesito la posición de las marcas con respecto a otras marcas, las coordenadas con respecto a la cámara solo me servirá para la marca base, que determinará el movimiento de traslación del esqueleto 3d. El resto de marcas me servirán para medir sus ángulos relativos y determinar los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=33&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En cualquier caso para mi proyecto principalmente necesito la posición de las marcas con respecto a otras marcas, las coordenadas con respecto a la cámara solo me servirá para la marca base, que determinará el movimiento de traslación del esqueleto 3d. El resto de marcas me servirán para medir sus ángulos relativos y determinar los movimientos de rotación de las articulaciones.</p>
<p>Para determinar las coordenadas de unas marcas con respecto a otras necesitamos la matriz de transformación entre ellas. Para ello una vez tenemos las matrices de coordenadas con respecto al sistema de referencia de la cámara de las dos marcas implicadas realizamos las siguientes operaciones:</p>
<p>Pasándole a la función arUtilMatInv la matriz de coordenadas de la marca base con respecto a la cámara obtendremos la matriz de coordenadas de la cámara con respecto a la marca.</p>
<p>Esta función lo que ha hecho es invertir los sistemas de referencias. (Todo esto tiene una base teórica que explicaré en la memoria del proyecto).</p>
<p>Una vez tengo esta matriz la multiplicamos por la matriz de la marca de la cual queríamos obtener sus coordenadas respecto a la primera. Podemos usar la función arUtilMatMul.</p>
<p>El código podría ser algo así:</p>
<p style="text-align:center;"><a name="DDE_LINK1"></a> <em>arUtilMatInv(m1C, m1Inv); </em></p>
<p style="text-align:center;"><em> arUtilMatMul(m1Inv, m2C, m2M);</em></p>
<p>- <strong>m1C</strong> y <strong>m2C</strong> son las matrices de coordenadas de las marcas con respecto a la cámara<strong> </strong></p>
<p><strong>- m1Inv</strong> es la matriz de coordenadas de la cámara respecto a la marca 1</p>
<p><strong>- m2M</strong> es la matriz de coordenadas de la marca 2 con respecto a la marca 1.</p>
<p>El siguiente post será un mega post donde explico como interpretar la matriz de coordenadas.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=33&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/02/12/coordenadas-de-una-marca-respecto-a-otra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Sistemas de coordenadas</title>
		<link>http://simocap.wordpress.com/2010/02/09/sistemas-de-coordenadas/</link>
		<comments>http://simocap.wordpress.com/2010/02/09/sistemas-de-coordenadas/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:35:30 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=21</guid>
		<description><![CDATA[A continuación pongo el enlace a un vídeo que muestra un boceto del sistema de marcas que pretendo usar para capturar los movimientos del cuerpo. He puesto figuras virtuales sobre las marcas para hacer ver que el seguimiento de las marcas está prácticamente resuelto. (Sí, ese soy yo haciendo un poco el gamba, todo sea [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=21&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } -->A continuación pongo el enlace a un vídeo que muestra un boceto del sistema de marcas que pretendo usar para capturar los movimientos del cuerpo. He puesto figuras virtuales sobre las marcas para hacer ver que el seguimiento de las marcas está prácticamente resuelto.</p>
<p>(Sí, ese soy yo haciendo un poco el gamba, todo sea por la ciencia).</p>
<p>(http://www.youtube.com/watch?v=1dELJbOOixQ)</p>
<span class='embed-youtube' style='text-align:center; display:block;'><object width='510' height='317'><param name='movie' value='http://www.youtube.com/v/1dELJbOOixQ?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' /> <param name='allowfullscreen' value='true' /> <param name='wmode' value='opaque' /> <embed src='http://www.youtube.com/v/1dELJbOOixQ?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='510' height='317' wmode='opaque'></embed> </object></span>
<p>Como han podido ver lo que hago es colocar marcas en las distintas extremidades, cabeza, y torso de modo que pueda hacer seguimiento (tracking) de las marcas.</p>
<p>Para este caso de cinemática inversa saber las coordenadas “x” “y” en la pantalla de las marcas no es suficiente para capturar un movimiento 3D.</p>
<p>Necesitamos un sistema de referencia en 3 dimensiones y obtener las coordenadas de la marca en ese sistema.</p>
<p>De este modo a posteriori podremos medir la posición de las extremidades o cabeza con respecto la posición del torso, el cual nos dará las coordenadas de traslación del esqueleto 3D.</p>
<p>Para que no dependan las mediciones de la longitud de las extremidades lo que se debe medir es el angulo con respecto a la marca base (la del torso) para cada uno de los ejes del sistema de referencia situado en esta marca base.</p>
<p><a name="DDE_LINK"></a>Por eso las marcas de las cuales se obtienen las coordenadas son especiales. Tienen una forma cuadrada con unas medidas proporcionales rígidas y un dibujo en el interior. De este modo gracias a funciones de la librería libre ArToolkit (arDetectMarker) conseguimos capturar la posición de los vértices, aristas de la cuadricula negra y el dibujo interior. Esta información la guarda en una estructura de tipo  ARMarkerInfo (en realidad primero ARMarkerInfo2 y esta es tratada para convertirla en ARMarkerInfo) (<a href="http://artoolkit.sourceforge.net/apidoc/structARMarkerInfo.html">http://artoolkit.sourceforge.net/apidoc/structARMarkerInfo.html</a><a href="http://artoolkit.sourceforge.net/apidoc/structARMarkerInfo.html"> </a>)</p>
<p>De este modo al saber que la marca debe ser cuadrada,  si en pantalla no se visualiza cuadrada y sus datos guardados en la estructura así lo reflejan será debido a la perspectiva en la que se está visualizando. Así que tratando dicha estructura de datos mediante la función arGetTransMat  obtenemos la matriz de transformación entre el sistema de referencia de la marca y el de la cámara, es decir la posición y orientación relativa de la marca con respecto a sistema de referencia de la cámara. Esta matriz es una matriz  3 x 4 que explicaremos a más adelante.</p>
<p>Dibujos de sistemas de referencia de la marca y de la camara .</p>

<a href='http://simocap.wordpress.com/2010/02/09/sistemas-de-coordenadas/coordenadas/' title='coordenadas'><img width="136" height="150" src="http://simocap.files.wordpress.com/2010/02/coordenadas.png?w=136&#038;h=150" class="attachment-thumbnail" alt="coordenadas" title="coordenadas" /></a>
<a href='http://simocap.wordpress.com/2010/02/09/sistemas-de-coordenadas/marcaflechas/' title='marcaflechas'><img width="150" height="147" src="http://simocap.files.wordpress.com/2010/02/marcaflechas.png?w=150&#038;h=147" class="attachment-thumbnail" alt="marcaflechas" title="marcaflechas" /></a>

<p>En el siguiente post explicaré como obtener las coordenadas de unas marcas con respecto a otras.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=21&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/02/09/sistemas-de-coordenadas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/coordenadas.png?w=136" medium="image">
			<media:title type="html">coordenadas</media:title>
		</media:content>

		<media:content url="http://simocap.files.wordpress.com/2010/02/marcaflechas.png?w=150" medium="image">
			<media:title type="html">marcaflechas</media:title>
		</media:content>
	</item>
		<item>
		<title>Compilando mi propio código ArToolkit</title>
		<link>http://simocap.wordpress.com/2010/01/27/compilando-mi-propio-codigo-artoolkit/</link>
		<comments>http://simocap.wordpress.com/2010/01/27/compilando-mi-propio-codigo-artoolkit/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:39:37 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=17</guid>
		<description><![CDATA[Por fin después de un par de meses de investigación intensa sobre como desarrollar mi proyecto empiezo a ver en acción mi propio código. Me refiero a codigo usando  las librerías de  ArToolkit , y aunque empecé con pequeñas modificaciones de los casos de ejemplo la cosa no era tan obvia como parecía. Lo primero [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=17&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Por fin después de un par de meses de investigación intensa sobre como desarrollar mi proyecto empiezo a ver en acción mi propio código.</p>
<p>Me refiero a codigo usando  las librerías de  ArToolkit , y aunque empecé con pequeñas modificaciones de los casos de ejemplo la cosa no era tan obvia como parecía.</p>
<p>Lo primero que me apareció fue un FALLO DE SEGMENTANCION y me lo decía así, literal. El error parecía que venía desde la fase de linkado ya que el codigo.o parecía normal.  Solución vino al configurar de nuevo todo el artoolkit como se hace al instalarlo, y el problema supongo que viene de que hace tanto tiempo que instalé ArToolkit en mi máquina, que habré cambiado librerías de las que dependía desde entonces, por lo cual al construir nuevos ejecutables con la configuración antigua no encontraba las librerias apropiadas. (Solución: reinstalar ArToolkit con configuración nueva)</p>
<p>Una vez solucinado esto pues estoy tocando código y archivos auxiliares (muchos) para que me detecte en una misma imagen varias marcas y las distinga dandome las coordenadas de todas ellas (las cuales trataré a posteriori).</p>
<p>Archivos auxiliares:</p>
<p>- por cada patrón que queramos detectar necesitamos sus características morfologicas recogidas en un archivo.</p>
<p>- necesitamos otro archivo en el que se hagan referencia al numero de patrones y ruta de los archivo que lo caracterizan.</p>
<p>- necesitamos el código que lee este último archivo, un parser que da la información de estos al codigo principal.</p>
<p>- también necesitamos los archivos donde guardamos los módelos 3d a superponer en la imagen (menos importante en mi caso actual).</p>
<p>- finalmente el código principal que hace uso de los anteriores y de la librería de artoolkit para encontrar e identificar las marcas y superponerlas con imagenes 3d</p>
<p>Bueno y nada más , la buena noticia es que sigo aquí luchando por el proyecto y que intentaré escribir más a menudo.</p>
<p>Saludoss</p>
<p>pd: en primicia decir que para el proximo post espero poner un video en youtube, para intentar que se entienda mi proyecto en imagenes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=17&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2010/01/27/compilando-mi-propio-codigo-artoolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
		<item>
		<title>Motion and gesture file formats</title>
		<link>http://simocap.wordpress.com/2009/12/26/motion-and-gesture-file-formats/</link>
		<comments>http://simocap.wordpress.com/2009/12/26/motion-and-gesture-file-formats/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 15:10:09 +0000</pubDate>
		<dc:creator>yoalberto007</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simocap.wordpress.com/?p=13</guid>
		<description><![CDATA[Para la traslación de movimientos a un modelo virtual hay que pasarle la información de esos movimientos, para ello existen una serie de formatos de archivo que representan el movimiento y los gestos. En el siguiente enlace se describe un poco cada uno de esos formatos. http://en.wikipedia.org/wiki/List_of_motion_and_gesture_file_formats La mayoría del software de animación 3d puede [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=13&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para la traslación de movimientos a un modelo virtual hay que pasarle la información de esos movimientos, para ello existen una serie de formatos de archivo que representan el movimiento y los gestos.</p>
<p>En el siguiente enlace se describe un poco cada uno de esos formatos.<br />
<a title="motion and gesture file formats" href="http://en.wikipedia.org/wiki/List_of_motion_and_gesture_file_formats">http://en.wikipedia.org/wiki/List_of_motion_and_gesture_file_formats</a></p>
<p>La mayoría del software de animación 3d puede leer e interpretar varios de estos formatos.</p>
<p>De este modo un solo archivo se pueden usar en varias plataformas y con multitud de modelos 3D.<br />
Por ejemplo para animar modelos en blender, o incluso en second life.</p>
<p>Mi proyecto por lo tanto a evolucionado a la captura de movientos en uno o varios de estos formatos,<br />
posteriormente se podría conectar a un software de visualización de movimientos con el de creación de estos archivos para simultanear la captura de movimientos con la representación de estos en el modelo 3D.</p>
<p>En principio he elegido .bvh (Biovision Hierarchical Data) como formato para la captura de movimiento por ser uno de los más populares. Aunque la falta de documentación real sobre su funcionamiento está dificultandome su codificación. Así que no descarto otros formatos, ya que existe software de traducción entre algunos formatos y otros.</p>
<p>Siguientes pasos:<br />
- Instalar editor y visualizador de formato .bvh para su estudio<br />
- Desarrollar código que transforme las coordenadas obtenidas con ARtoolKit a coordenadas de movimiento en .BVH</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/simocap.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/simocap.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/simocap.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simocap.wordpress.com&amp;blog=10760123&amp;post=13&amp;subd=simocap&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simocap.wordpress.com/2009/12/26/motion-and-gesture-file-formats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/602972feac59e08eaa630e9ca5230577?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yoalberto007</media:title>
		</media:content>
	</item>
	</channel>
</rss>
