Hola Fran,<div><br></div><div>he rescrito completamente el componente. Los tengo en [1] y [2]. La estructura es la misma cliente-servidor con las interfaces ICE.</div><div><br></div><div>Álex.</div><div><br></div><div>[1]<a href="https://svn.jderobot.org/users/ahcorde/pfc/trunk/kinect/kinectServer/">https://svn.jderobot.org/users/ahcorde/pfc/trunk/kinect/kinectServer/</a></div>
<div>[2]<a href="https://svn.jderobot.org/users/ahcorde/pfc/trunk/kinect/visorKinect/">https://svn.jderobot.org/users/ahcorde/pfc/trunk/kinect/visorKinect/</a><br><br><div class="gmail_quote">El 6 de marzo de 2012 19:03,  <span dir="ltr">&lt;<a href="mailto:franciscomiguel.rivas@urjc.es">franciscomiguel.rivas@urjc.es</a>&gt;</span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Buenas a todos,<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Mejora 0: Creo que no es tan sencillo como un corta pega, ahora mismo mi<br>
componente utiliza un wrapper que esta sobre PCL, ya que de esta manera<br>
tengo las imagen de color, profundidad y nube de puntos en variables sin<br>
necesidad de hacer ninguna transformación. Como creo que sería necesario de<br>
sacar la nube de puntos a partir de la imagen de profundidad.<br>
</blockquote>
<br></div>
mmm... la forma de funcionar es la misma? tienes un &quot;servidor&quot; que se conecta al kinect y ofrece los datos en interfaces de ICE y otro que se coneta en modo &quot;cliente&quot;??<br>
Si es así ¿has reecrito los componentes por completo? ¿me puedes decir donde tienes los componentes para echarles un ojo y ver que podemos hacer para unificar lo máximo posible? Si no es posible de ninguna manera nos tendremos que decantar por usar uno de los dos y ahora es un buen momento para decidirnos.<br>

<br>
<br>
Creo que de momento tendremos que abordar esto antes de seguir con las siguiente mejoras, ¿no os parece?<br>
<br>
un saludo!<br>
<br>
<br>
<br>
<br>
&quot;Alejandro Hernández&quot; &lt;<a href="mailto:ahcorde@gmail.com" target="_blank">ahcorde@gmail.com</a>&gt; escribió:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Hola Jose María,<br>
<br>
Te comento:<br>
<br>
Mejora 0: Creo que no es tan sencillo como un corta pega, ahora mismo mi<br>
componente utiliza un wrapper que esta sobre PCL, ya que de esta manera<br>
tengo las imagen de color, profundidad y nube de puntos en variables sin<br>
necesidad de hacer ninguna transformación. Como creo que sería necesario de<br>
sacar la nube de puntos a partir de la imagen de profundidad.<br>
<br>
Mejora 1 y 2 : Ahora mismo esta incluido en el fichero de configuración<br>
pero se puede incluir una par de métodos que modifiquen ese valor sin<br>
problema.<br>
<br>
Mejora 3: Cualquiera de las dos versiones debería de funcionar con esto.<br>
<br>
Mejora 4: La mejora 4 no la entiendo muy bien<br>
<br>
Mejora 5: Tiene que ver con la interfaz.<br>
<br>
Mejora 6: Creo que lo mejor es usar Openni porque es lo que están usando<br>
las librerías que están saliendo alrededor de Kinect.<br>
<br>
En cuento a las dos versiones de KinectServer, creo que estas son las<br>
diferencias después de mirarme lo componentes:<br>
<br></div>
   - El componente de Fran da la imagen a color, profundidad, controla el<div class="im"><br>
   servo y el color del LED<br></div>
   - Mi componente da la imagen a color, profundidad y nube de puntos.<br>
   - Las interfaces de las imagenes cambian yo utilizo la interfaz cámara<div><div class="h5"><br>
   sin modificar y Fran utiliza una que extiende de la interfaz camera (<br>
   entiendo que esta interfaz es compatible 100% con cameraview, no?)<br>
<br>
Espero no dejarme nada sin comentar.<br>
<br>
Saludos!<br>
<br>
Álex.<br>
<br>
El 5 de marzo de 2012 14:21, JoseMaria &lt;<a href="mailto:josemaria.plaza@gmail.com" target="_blank">josemaria.plaza@gmail.com</a>&gt; escribió:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hola,<br>
<br>
retomo aquí los avances sobre kinectServer y kinectViewer, contando con<br>
los que ha subido Fran al repositorio oficial y las mejoras de Alex, que<br>
no sé hasta que punto están unificadas.... Sigamos asentándolo.<br>
<br>
Decisiones que hemos tomado:<br>
1.- unificar en un único servidor que ofreciera varios interfaces, las<br>
dos cámaras (color y profundidad) y el nuevo interfaz de puntos.<br>
2.- kinectserver basado en OpenNI. Teníamos otra implementación del<br>
driver basada en libfreenect (ahora openkinect), pero tienen una<br>
comunidad detrás menos activa que la de OpenNI y consume mucha CPU. Si<br>
luego mejoran ya veremos.<br>
3.- el interfaz de nube de puntos es muuuuy voluminoso, para que ice<br>
pueda con ello hay que muestrear esa nube de puntos para reducirla a un<br>
tamaño manejable.<br>
<br>
<br>
Mejoras:<br>
0.- unificar código. Ahora mismo no sé si hay una o dos versiones<br>
(Alex-Fran). ¿Podriamos tomar como referencia los que hay actualmente en<br>
el repositorio? Corta-pegando lo necesario para incorporar tus últimas<br>
mejoras Alex?<br>
<br>
1.- Alex, podrías unificar dentro del mismo interfaz de nube de puntos<br>
dos nuevos métodos, el que fija el ratio de muestreo y el que lo<br>
pregunta (SetSamplingRate y GetSamplingRate o algo así). Es que ese<br>
parámetro sólo tiene sentido asociado con los puntos. El interfaz podría<br>
ser algo asi como la secuencia de puntos en 3D y estos métodos metidos.<br>
¿Cómo lo ves?<br>
<br>
2.- Si ves que no es necesario cambiarlo en tiempo de ejecución lo<br>
dejamos exclusivamente como parámetro del fichero de configuración y<br>
listo. Habría que incluir en cualquier caso que pudiera coger el<br>
parámetro de SamplingRate desde el fichero de configuración de<br>
kinectServer...<br>
<br>
3.- Con vistas a poder utilizar más de un kinect en la máquina conviene<br>
en el fichero de configuración de kinectserver poder decirle qué fichero<br>
usar como configuración de OpenNI. Fran está con ello.<br>
<br>
4.- Fran va a meter también en el fichero de configuración de<br>
kinectserver la posibilidad de especificarle un cierto tamaño a la<br>
imagen de profundidad. Hasta ahora capturaba en nativo siempre en el<br>
mismo tamaño y con opencv redimensionabamos la imagen de profundidad a<br>
posteriori. Al capturar directamente a baja resolución igual hasta es<br>
más ligero computacionalmente.<br>
<br>
5.- Fran refactoriza kinectviewer para que aparezcan varias subventanas,<br>
no como ahora que aparece la ventana opengl aunque no tengamos puntos.<br>
<br>
6.- El driver actual no va todo lo rápido que nos gustaría o consume<br>
&quot;bastante&quot; CPU (menos que el de libfreenect, en cualquier caso). Creo<br>
que no merece la pena optimizarlo nosotros (de momento), sigamos<br>
adelante e igual los chicos de OpenNI dan con alguna técnica para<br>
acelerar el rendimiento. No creo que estén usando DMA estos chismes...<br>
<br>
¿Qué os parece? Va a quedar chulisimo...<br>
<br>
Saludos,<br>
<br>
JoseMaria<br>
On Mon, 2012-02-27 at 09:12 +0100, Alejandro Hernández wrote:<br>
&gt; Hola a todos,<br>
&gt;<br>
&gt;<br>
&gt; ya que tenemos claro que lo mejor es unificarlo todo, he modificado<br>
&gt; KinectServer para que sirva las imagenes del Kinect según las<br>
&gt; interfaces de cámaras que ya existen junto a la interfaz que me he<br>
&gt; creado para la nuve de puntos. También he modificado el visor para que<br>
&gt; la visualización en 3D tire de la nube de puntos y no a partir de la<br>
&gt; imagen en profundidad.<br>
&gt;<br>
&gt;<br>
&gt; Un saludo.<br>
&gt;<br>
&gt;<br>
&gt; Álex.<br>
&gt;<br>
&gt; El 21 de febrero de 2012 18:34, Fran Rivas<br>
&gt; &lt;<a href="mailto:franciscomiguel.rivas@urjc.es" target="_blank">franciscomiguel.rivas@urjc.es</a><u></u>&gt; escribió:<br>
&gt;         Totalmente de acuerdo con José María... Si tenemos un<br>
&gt;         componente mejor será tener in driver integrando todo y que<br>
&gt;         este sirva todo lo que necesitemos... Siempre podemos activar<br>
&gt;         solo lo que queramos desde el fichero se configuración...<br>
&gt;<br>
&gt;<br>
&gt;         Sobre la integración de la nube de puntos... Yo subiré mañana<br>
&gt;         al repo oficial los dos componentes y si no es mucho lío que<br>
&gt;         alex añada la parte de la nube de puntos...<br>
&gt;<br>
&gt;         Un saludo,<br>
&gt;         fran<br>
&gt;<br>
&gt;         Enviado desde mi iPhone<br>
&gt;<br>
&gt;         El 21/02/2012, a las 18:01, JoseMaria<br>
&gt;         &lt;<a href="mailto:josemaria.plaza@gmail.com" target="_blank">josemaria.plaza@gmail.com</a>&gt; escribió:<br>
&gt;<br>
&gt;         &gt; Por mi parte también unificaría en un componente<br>
&gt;         kinectserver que pueda<br>
&gt;         &gt; servir varios interfaces a la vez: imagenes color, imagenes<br>
&gt;         profundidad,<br>
&gt;         &gt; nube de puntos. En una ejecución concreta se le configura<br>
&gt;         para que sirva<br>
&gt;         &gt; sólo los que realmente se necesiten para esa aplicación, y<br>
&gt;         si son todos,<br>
&gt;         &gt; pues todos.<br>
&gt;         &gt;<br>
&gt;         &gt; Una ventaja de este diseño es que si tenemos dos componentes<br>
&gt;         cliente<br>
&gt;         &gt; simultaneamente, uno que necesite puntos y otro que necesite<br>
&gt;         imagen de<br>
&gt;         &gt; profundidad, el servidor puede atenderlos a ambos sin<br>
&gt;         problema. Si<br>
&gt;         &gt; hacemos dos servidores habría problemas porque sólo uno de<br>
&gt;         ellos puede<br>
&gt;         &gt; acceder al dispositivo en local, el segundo no tendría<br>
&gt;         permisos al estar<br>
&gt;         &gt; ocupado el dispositivo.<br>
&gt;         &gt;<br>
&gt;         &gt; Otra ventaja es que tenemos centralizado en un único sitio<br>
&gt;         las<br>
&gt;         &gt; peculiaridades del acceso en local a kinect, y no en dos,<br>
&gt;         que habría que<br>
&gt;         &gt; actualizar ambos cada vez que saquen una nueva versión del<br>
&gt;         driver local,<br>
&gt;         &gt; openNI, etc.<br>
&gt;         &gt;<br>
&gt;         &gt;&gt;&gt; ¿cómo lo veis?<br>
&gt;         &gt;&gt;<br>
&gt;         &gt;&gt; ¿Existe algún dispositivo a parte del kinect del que<br>
&gt;         podamos extraer la<br>
&gt;         &gt;&gt; nube de puntos? Si la respuesta es SI, separaría los<br>
&gt;         componentes ya que<br>
&gt;         &gt;&gt; la nube de puntos puede venir de otra fuente de datos.<br>
&gt;         &gt;<br>
&gt;         &gt;&gt; Si NO haría únicamente 1. Si algún día salen más<br>
&gt;         dispositivos que<br>
&gt;         &gt;&gt; ofrezcan sólo la nube de puntos, quizás tienen sentido<br>
&gt;         tener un único<br>
&gt;         &gt;&gt; driver para eso. Pero ahora mismo veo más eficiente y mejor<br>
&gt;         tener un<br>
&gt;         &gt;&gt; único driver.<br>
&gt;         &gt;&gt;<br>
&gt;         &gt;&gt; Reutilizar código, interfaces y crear diferentes módulos es<br>
&gt;         muy bueno y<br>
&gt;         &gt;&gt; potente. Pero si siempre lo vamos a utilizar de la misma<br>
&gt;         manera, es<br>
&gt;         &gt;&gt; gastar tiempo y emplear recursos (literalmente). Cuando<br>
&gt;         lleguen nuevos<br>
&gt;         &gt;&gt; dispositivos que ofrezcan la nube de puntos creo que  será<br>
&gt;         el momento de<br>
&gt;         &gt;&gt; reorganizar código y dividir los componentes.<br>
&gt;         &gt;<br>
&gt;         &gt; A día de hoy no. Y si lo hay en un futuro no hay problema en<br>
&gt;         que dos<br>
&gt;         &gt; componentes diferentes ofrezcan el mismo interfaz. Por<br>
&gt;         ejemplo<br>
&gt;         &gt; cameraserver y gazeboserver ofrecen el mismo interfaz de<br>
&gt;         cámara.<br>
&gt;         &gt;<br>
&gt;         &gt; Alex, el driver que has hecho usa openNI?<br>
&gt;         &gt;<br>
&gt;         &gt; JoseMaria<br>
&gt;         &gt; --<br>
&gt;         &gt; <a href="http://gsyc.es/jmplaza" target="_blank">http://gsyc.es/jmplaza</a><br>
&gt;         &gt; Universidad Rey Juan Carlos<br>
&gt;         &gt;<br>
&gt;         &gt;<br>
&gt;         &gt; ______________________________<u></u>_________________<br>
&gt;         &gt; Jde-developers mailing list<br>
&gt;         &gt; <a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a><br>
&gt;         &gt;<br>
&gt;<br>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-<u></u>bin/mailman/listinfo/jde-<u></u>developers</a><br>
&gt;         ______________________________<u></u>_________________<br>
&gt;         Jde-developers mailing list<br>
&gt;         <a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a><br>
&gt;<br>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-<u></u>bin/mailman/listinfo/jde-<u></u>developers</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
--<br>
<a href="http://gsyc.es/jmplaza" target="_blank">http://gsyc.es/jmplaza</a><br>
Universidad Rey Juan Carlos<br>
<br>
<br>
<br>
</blockquote>
<br>
</div></div></blockquote>
<br>
<br>
<br>
------------------------------<u></u>------------------------------<u></u>------<br>
Laboratorio de Análisis del Movimiento, Biomecánica, Ergonomía y Control Motor (LAMBECOM).<br>
Departamento de Fisioterapia, Terapia Ocupacional, Rehabilitación y Medicina Física.<br>
Universidad Rey Juan Carlos (URJC).<br>
</blockquote></div><br></div>