[Jderobot-dev] Plugin para kinect en gazebo 1.4, posible cambio en imagen de profundidad para kinectServer

Alejandro Hernández ahcorde en gmail.com
Mie Mar 20 09:30:45 CET 2013


Hola Juanjo,

ya he subido la actualización del plugin con la imagen de profundidad con
la formula que sugieres y el color en la nube de puntos.

Álex.

El 19 de marzo de 2013 17:09, Juan José García Cantero <
jj.garciac21 en gmail.com> escribió:

>
>
> ---------- Mensaje reenviado ----------
> De: Juan José García Cantero <jj.garciac21 en gmail.com>
> Fecha: 19 de marzo de 2013 17:08
> Asunto: Re: [Jderobot-dev] Plugin para kinect en gazebo 1.4, posible
> cambio en imagen de profundidad para kinectServer
> Para: Alejandro Hernández <ahcorde en gmail.com>
>
>
>
> Hola Alex,
> en cuanto a plugin creo que te refieres a las lineas negras del suelo, es
> así? le echare un ojo. Y en cuanto al color en los componentes, a mi si me
> muestran los colores, si puedes dime en componentes mas concretamente para
> poder echarle un vistazo también.
>
> Gracias por tu respuesta.
> Un saludo!
>
> El 19 de marzo de 2013 12:54, Alejandro Hernández <ahcorde en gmail.com>escribió:
>
> Hola Juanjo,
>>
>> estoy ejecutando tu *plugin* de Kinect y tiene muy buena pinta. Aunque
>> hay una cosa que no me cuadran de todo. En el suelo aparecen unas lineas
>> que en la realidad no están.
>>
>> También he probado alguno de tus componentes como el visualizar de color,
>> pero no me salen las cosas con su color.
>>
>> Solventando esta par de cosillas subimos las modificaciones al
>> repositorio oficial.
>>
>> Álex.
>>
>>
>> El 16 de marzo de 2013 14:58, Juan José García Cantero <
>> jj.garciac21 en gmail.com> escribió:
>>
>>> Hola a todos,
>>>
>>> escribo este mail para tratar dos temas:
>>>
>>>     I. Si habéis probado el kinectPlugin del repositorio oficial
>>> jderobot veréis que en Gazebo 1.4 para Ubuntu 12.04 este plugin no funciona
>>> correctamente, esto es debido a la incompatibilidad con las librerías de
>>> anteriores versiones de Ubuntu, para solucionar esto propongo el plugin que
>>> yo mismo he remodelado, podéis encontrarlo aquí:
>>> https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/src/kinectPlugin/ echadle
>>> un vistazo y decid que os parece. Además aquí tenéis un mundo para utilizar
>>> este plugin en gazebo 1.3 o superiores:
>>> https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/worlds/kinect_simple.world
>>>
>>>    II. A la hora de servir la imagen de profundidad tanto en
>>> kinectServer como en el kinectPlugin se esta utilizando el siguiente método
>>> para hacer la conversión de distancia a componentes RGB:
>>>
>>> void depth2rgb( const XnDepthPixel*  Xn_disparity, cv::Mat image){
>>>    int i;
>>>    //const unsigned short *disparity = Xn_disparity;
>>>
>>>    for (i=0; i<image.rows* image.cols; i++) {
>>>       //std::cout << i << std::endl;
>>>       int pval = depth[Xn_disparity[i]];
>>>       int lb = pval & 0xff;
>>>       switch (pval>>8) {
>>> 	      case 0:
>>> 		      image.data[3*i+0] = 255;
>>> 		      image.data[3*i+1] = 255-lb;
>>> 		      image.data[3*i+2] = 255-lb;
>>> 		      break;
>>> 	      case 1:
>>> 		      image.data[3*i+0] = 255;
>>> 		      image.data[3*i+1] = lb;
>>> 		      image.data[3*i+2] = 0;
>>> 		      break;
>>> 	      case 2:
>>> 		      image.data[3*i+0] = 255-lb;
>>> 		      image.data[3*i+1] = 255;
>>> 		      image.data[3*i+2] = 0;
>>> 		      break;
>>> 	      case 3:
>>> 		      image.data[3*i+0] = 0;
>>> 		      image.data[3*i+1] = 255;
>>> 		      image.data[3*i+2] = lb;
>>> 		      break;
>>> 	      case 4:
>>> 		      image.data[3*i+0] = 0;
>>> 		      image.data[3*i+1] = 255-lb;
>>> 		      image.data[3*i+2] = 255;
>>> 		      break;
>>> 	      case 5:
>>> 		      image.data[3*i+0] = 0;
>>> 		      image.data[3*i+1] = 0;
>>> 		      image.data[3*i+2] = 255-lb;
>>> 		      break;
>>> 	      default:
>>> 		      image.data[3*i+0] = 0;
>>> 		      image.data[3*i+1] = 0;
>>> 		      image.data[3*i+2] = 0;
>>> 		      break;
>>>       }
>>>    }
>>> }
>>>
>>> he percibido que mediante este método no se están dando los valores reales de profundidad, por ello propongo el siguiente método:
>>>
>>>
>>> void KinectPlugin::depth2rgb(cv::Mat image){
>>>    //const unsigned short *disparity = Xn_disparity;
>>>    imageDepth.create(image.rows,image.cols,CV_8UC3);
>>>    float * data= (float*)image.data;
>>>    for (int i=0; i<image.rows* image.cols; i++) {
>>>       //std::cout << i << std::endl;
>>>       int val = (int)(data[i]*1000);
>>> 		  imageDepth.data[3*i+0] = (float)val/10000*255;;
>>> 		  imageDepth.data[3*i+1] = val>>8;
>>> 		  imageDepth.data[3*i+2] = val&0xff;
>>> 	
>>>    }
>>> }
>>>
>>>
>>> en este dividimos la distancia dada en un int con rango de 0 10000 en dos bytes el de mas peso le metemos en el componente g, y el de menos peso en el componente b de la imagen, ademas tenemos la componente r para mandar el valor de la distancia en escala de grises para mostrar si se quisiera la imagen directamente, un método para volver a tomar el dato de distancia en su formato original podría ser este:
>>>
>>>
>>>   float Control::get_distance(int i)
>>>   {
>>>     float distance= ((int)imageDataDepth->pixelData[3*i+1]<<8)|(int)imageDataDepth->pixelData[3*i+2];
>>>     return distance;
>>>   }
>>>
>>> Comentadme que os parecen estos dos temas.
>>>
>>> Un saludo
>>>
>>> Juanjo
>>>
>>>
>>>
>>> _______________________________________________
>>> Jde-developers mailing list
>>> Jde-developers en gsyc.es
>>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>>>
>>>
>>
>>
>> --
>> Alejandro Hernández Cordero
>>
>> <http://www.linkedin.com/in/ahcorde/en>  <https://twitter.com/ahcorde> <https://plus.google.com/u/0/114434050324725472734/posts>
>>   <http://github.com/ahcorde>
>>
>> Play and visit my Curriculum vitae ->
>> https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html
>>
>
>
>


-- 
Alejandro Hernández Cordero

<http://www.linkedin.com/in/ahcorde/en>  <https://twitter.com/ahcorde>
<https://plus.google.com/u/0/114434050324725472734/posts>
  <http://github.com/ahcorde>

Play and visit my Curriculum vitae ->
https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20130320/884ead35/attachment-0001.htm 


More information about the Jde-developers mailing list