<?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>GeuS&#039; Blog: Robotics, Computer Science and More</title>
	<atom:link href="http://geus.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://geus.wordpress.com</link>
	<description>Do one thing every day that scares you</description>
	<lastBuildDate>Sat, 07 Jan 2012 19:40:17 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='geus.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>GeuS&#039; Blog: Robotics, Computer Science and More</title>
		<link>http://geus.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://geus.wordpress.com/osd.xml" title="GeuS&#039; Blog: Robotics, Computer Science and More" />
	<atom:link rel='hub' href='http://geus.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Necesitamos una sociedad y economía más justa y humanista&#8230;</title>
		<link>http://geus.wordpress.com/2012/01/01/necesitamos-una-sociedad-y-economia-mas-justa-y-humanista/</link>
		<comments>http://geus.wordpress.com/2012/01/01/necesitamos-una-sociedad-y-economia-mas-justa-y-humanista/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 23:56:54 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Society]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/2012/01/01/necesitamos-una-sociedad-y-economia-mas-justa-y-humanista/</guid>
		<description><![CDATA[2012 lo comenzamos con el anuncio de cierres de astilleros de Sevilla&#8230; En los comentarios de la noticia en el Diario de Sevilla se leen adjetivos hacia los trabajadores como: gandules, ineficientes y flojos&#8230; &#8220;ASTILLEROS DE SEVILLA FUERON ORGULLO NACIONAL, LOS MAS PRODUCTIVOS DEL MUNDO, DABAN DE COMER A MAS DE 40. 000 PERSONAS.&#8221; Así [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1513&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>2012 lo comenzamos con el anuncio de <a href="http://www.diariodesevilla.es/article/sevilla/1149177/astilleros/cierra/tras/casi/anos/historia.html">cierres de astilleros de Sevilla</a>&#8230; En los comentarios de la noticia en el Diario de Sevilla se leen adjetivos hacia los trabajadores como: gandules, ineficientes y flojos&#8230;</p>
<blockquote><p><em>&#8220;ASTILLEROS DE SEVILLA FUERON ORGULLO NACIONAL, LOS MAS PRODUCTIVOS DEL MUNDO, DABAN DE COMER A MAS DE 40. 000 PERSONAS.&#8221;</em></p></blockquote>
<p>Así es el libre mercado… Despiadadas empresas compiten con empresas justas, un partido de futbol donde algunas empresas pueden cometer todas las faltas que quieran. Un enfoque donde la corporación más sarnosa es premiada con la victoria. Para estas empresas el respeto a los trabajadores y el medio ambiente son una carga… Tenemos que ser conscientes que la corporación justa SIEMPRE será más cara, o visto de otro modo, más coherente y razonable con el coste que supone respetar a las personas y a nuestro planeta.</p>
<p>En ocasiones la empresa justa (incluso con grandes gestores e ideas) son hoy etiquetadas  con argumentos falaces económicos como “empresa poco competitiva”. Y es que todas las argumentaciones acaban en dinero…¿Hacia donde vamos?</p>
<p>Puede que un día nos lamentemos de la cultura industrial que estamos destruyendo, y eso no tiene precio porque la incultura nos hace esclavos de otros… Ayer comprábamos los barcos de fuera porque eran más baratos … a partir de ahora lo haremos por necesidad… Espero que no llegue el día en el que potencias extranjeras hagan negocio de nuestra incultura industrial como hoy nosotros lo hacemos con muchos países del tercer mundo.</p>
<p><strong>Mientras en casa del gran gran rico..</strong></p>
<p>Mientras los <a href="http://www.elmundo.es/elmundo/2011/12/30/economia/1325274945.html">200 más ricos de España ganan más dinero</a> en uno de los peores años de la crisis, crisis que amenaza ponerlo todo patas arriba y cambiar este sistema tal y como lo conocemos&#8230; Muchos de estos ricos mueven su dinero a Luxemburgo y Holanda&#8230; el dinero es miedoso dicen&#8230;</p>
<p><strong>La gran corporación privada</strong></p>
<p>Y es que cada día creo menos en las grandes corporaciones privadas nacionales. Zaras, Abengoas, Telefónicas y Santanderes no buscan la mejorar esta pequeña península, sino que, como cualquier empresa beneficio a toda costa…Para mí no pueden considerarse corporaciones justas. También, cuando dicen que son grandes españolas suenan a palabras huecas y vacías dado que no existe ya un compromiso real y equilibrado con la sociedad que lo ha engendrado y donde ha florecido.</p>
<p>Estas empresas cada día más y más mueven los puestos de trabajo a países del tercer mundo, pagando sueldos míseros a pobres que se sienten agraciados por poder llevarse algo a la boca&#8230; <a href="http://www.tercerainformacion.es/spip.php?article27952">Escándalos como el de Zara dan asco</a>.También <a href="http://www.diagonalperiodico.net/10-000-millones-de-beneficios-no.html">Telefónica con miles de millones de beneficios destruye empleo de un sector que un día fue público </a>(NUESTRO) mientras crea empleos de &#8220;bajo coste&#8221; en paises menos agraciados.</p>
<p>Todo esto sin considerar que el día menos pensado viene un banco chino y pagará cualquier precio por adquirirla y dirigirla&#8230; Nuestra sociedad y economía que un día engendró esta industria por supuesto no se llevará ni un duro dado que los dueños (por muy españoles que sean) moverán sus beneficios a un paraíso fiscal&#8230; ¿Entonces qué nos queda?</p>
<p><strong>La pequeña empresa y lo público</strong></p>
<p>En mi opinión solo la pequeña industria local presenta un sólido compromiso con la misma sociedad que lo ha engendrado. Creando DE VERDAD, riqueza y cultura en su entorno, revirtiendo su propio beneficio y éxito. Por el contrario, en mi opinión, las grandes corporaciones, las grandes fortunas, con tanto poder económico y social NO PUEDEN estar fuera de un estricto control público. Esto ya lo decia Keynes incluso siendo un conservador. O públicas o semi-públicas o unas leyes de control radicales que incluyan la fuga de capitales al extranjero, etc (que por cierto sacaría el tema de discusión de una banca pública). Debemos vencer los clichés de <em>&#8220;Lo público es anticompetitivo e ineficiente&#8221;.</em> Incluso si así fuera, en un mercado libre donde las prácticas despreciables están justificadas en la búsqueda de beneficios</p>
<p>De verdad, creo en la empresa privada y creo en los emprendedores. Un país no puede funcionar sin emprendedores y arrojados&#8230; este arrojo, esfuerzo y sacrificio debe ser premiado<em>. </em>Todo tiene una medida y un límite: Nadie es tan bueno como para merecer lo que cobran los Botines, los Amancios y ¿por qué no? los Beckams&#8230; pero el famoseo y la salsa rosa es otra discusión más &#8230; otro reflejo de nuestra sociedad en crisis. <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=JNnH3-4F220">Civilización en crisis según algunos buenos pensadores</a>.</p>
<br />Filed under: <a href='http://geus.wordpress.com/category/society/'>Society</a>, <a href='http://geus.wordpress.com/category/thoughts/'>Thoughts</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/1513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/1513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/1513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1513&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2012/01/01/necesitamos-una-sociedad-y-economia-mas-justa-y-humanista/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Basics Screens on linux</title>
		<link>http://geus.wordpress.com/2011/12/19/basics-screens-on-linux/</link>
		<comments>http://geus.wordpress.com/2011/12/19/basics-screens-on-linux/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 18:08:17 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[54]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=1026</guid>
		<description><![CDATA[I always forge how to use the screen application in linux for ssh sesions. Here the basic stuff to work with screens: Start $ screen Exit and close: $$ CTRL + D or $$ exit Disconect from the screen program but leaving it opened: $$ CTRL +A CTRL+D Reconect to an opened screen program: $ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1026&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I always forge how to use the screen application in linux for ssh sesions. Here the basic stuff to work with screens:</p>
<p>Start<br />
$ screen </p>
<p>Exit and close:<br />
$$ CTRL + D<br />
or<br />
$$ exit</p>
<p>Disconect from the screen program but leaving it opened:<br />
$$ CTRL +A  CTRL+D</p>
<p>Reconect to an opened screen program:<br />
$ screen -r</p>
<p>From the screen, create another &#8220;tab&#8221;:<br />
$$ CTRL+A C</p>
<p>Switch selected tab:<br />
$$ CTRL+A CTRL+A</p>
<p>List existing tabs:<br />
$$ CTRL+A W</p>
<br />Filed under: <a href='http://geus.wordpress.com/category/54/'>54</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/1026/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1026&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/12/19/basics-screens-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Vídeo Tutorial de Ros con Arduino</title>
		<link>http://geus.wordpress.com/2011/11/24/video-tutorial-de-ros-con-arduino/</link>
		<comments>http://geus.wordpress.com/2011/11/24/video-tutorial-de-ros-con-arduino/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 18:56:45 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[54]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/2011/11/24/video-tutorial-de-ros-con-arduino/</guid>
		<description><![CDATA[http://www.youtube.com/watch?v=s9YVfRsXvy4&#38;feature=channel_video_title
<p></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1022&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahí lo dejo para el que le pueda interesar como abordar la integración de ROS con arduino.</p>
<p><span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2011/11/24/video-tutorial-de-ros-con-arduino/"><img src="http://img.youtube.com/vi/s9YVfRsXvy4/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/54/'>54</a>, <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/1022/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1022&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/11/24/video-tutorial-de-ros-con-arduino/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/s9YVfRsXvy4/2.jpg" medium="image" />
	</item>
		<item>
		<title>My robotic-books wish list</title>
		<link>http://geus.wordpress.com/2011/11/23/my-robotic-book-wish-list/</link>
		<comments>http://geus.wordpress.com/2011/11/23/my-robotic-book-wish-list/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 18:13:24 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=1004</guid>
		<description><![CDATA[Ahí va una lista de libros interesantes para robótica que últimamente he leido/ quiero leer. Aquí la dejo para no olvidarla y por si a alguien le pudiera servir: Robótica teórica y práctica: Probabilistic Robotics (Intelligent Robotics &#38; Autonomous Agents Series) de Sebastian Thrun, Wolfram Burgard y Dieter Fox (Tapa dura - 20 septiembre 2005) Springer Handbook of Robotics by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1004&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>Ahí va una lista de libros interesantes para robótica que últimamente he leido/ quiero leer. Aquí la dejo para no olvidarla y por si a alguien le pudiera servir:</div>
<div></div>
<div><strong>Robótica teórica y práctica:</strong></div>
<div><a href="http://www.amazon.es/Probabilistic-Robotics-Intelligent-Autonomous-Agents/dp/0262201623/ref=sr_1_1?ie=UTF8&amp;qid=1321233028&amp;sr=8-1" target="_blank">Probabilistic Robotics (Intelligent Robotics &amp; Autonomous Agents Series)</a> de Sebastian Thrun, Wolfram Burgard y Dieter Fox (Tapa dura - 20 septiembre 2005)</div>
<div><a href="http://www.amazon.com/Springer-Handbook-Robotics-Bruno-Siciliano/dp/354023957X/ref=sr_1_1?ie=UTF8&amp;qid=1321233310&amp;sr=1-1" target="_blank">Springer Handbook of Robotics</a> by Bruno Siciliano and Oussama Khatib (Jun 27, 2008</div>
<div><a href="http://www.amazon.com/Planning-Algorithms-Steven-M-LaValle/dp/0521862051/ref=sr_1_1?ie=UTF8&amp;qid=1321233391&amp;sr=1-1" target="_blank">Planning Algorithms</a> by <a href="http://www.amazon.com/Steven-Michael-LaValle/e/B001ITVQV4/ref=sr_ntt_srch_lnk_1?qid=1321233389&amp;sr=1-1" target="_blank">Steven Michael LaValle</a> (May 29, 2006)</div>
<div><a href="http://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275/ref=sr_1_2?ie=UTF8&amp;qid=1321233391&amp;sr=1-2" target="_blank">Principles of Robot Motion: Theory, Algorithms, and Implementations (Intelligent Robotics and Autonomous Agents series)</a>by Howie Choset, Kevin M. Lynch, Seth Hutchinson and George A. Kantor (May 20, 2005</div>
<div><a href="http://www.amazon.com/Introduction-Autonomous-Mobile-Intelligent-Robotics/dp/0262015358/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1321233134&amp;sr=1-1" target="_blank">Introduction to Autonomous Mobile Robots (Intelligent Robotics and Autonomous Agents series)</a> by <a href="http://www.amazon.com/Roland-Siegwart/e/B001HD3EOI/ref=sr_ntt_srch_lnk_1?qid=1321233134&amp;sr=1-1" target="_blank">Roland Siegwart</a>, Illah R. Nourbakhsh and Davide Scaramuzza (Feb 18, 2011)</div>
<div></div>
<div></div>
<div><strong>Estos también he escuchado que son buenos de robótica más teórica:</strong></div>
<div><a href="http://www.amazon.com/Robotics-Modelling-Planning-Textbooks-Processing/dp/1846286417/ref=sr_1_3?ie=UTF8&amp;qid=1321233310&amp;sr=1-3" target="_blank">Robotics: Modelling, Planning and Control (Advanced Textbooks in Control and Signal Processing)</a> by Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani and Giuseppe Oriolo (Feb 11, 2011)</div>
<div><a href="http://www.amazon.com/Springer-Handbook-Automation-Shimon-Nof/dp/3540788301/ref=sr_1_1?ie=UTF8&amp;qid=1321233278&amp;sr=1-1" target="_blank">Springer Handbook of Automation</a> by Shimon Y. Nof (Aug 27, 2009)</div>
<div></div>
<div></div>
<div><strong>También otros muy interesantes, más prácticos:</strong></div>
<div><a href="http://www.amazon.es/Probabilistic-Reasoning-Decision-Sensory-Motor-Springer/dp/3642097847/ref=sr_1_2?ie=UTF8&amp;qid=1321233028&amp;sr=8-2" target="_blank">Probabilistic Reasoning and Decision Making in Sensory-Motor Systems (Springer Tracts in Advanced Robotics)</a> de Pierre Bessiere, Christian Laugier y Roland Y. Siegwart(Tapa blanda - 22 octubre 2010)</div>
<div>
<div><a href="http://www.amazon.com/Designing-Autonomous-Mobile-Robots-Intelligent/dp/0750676833/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1321233096&amp;sr=1-1" target="_blank">Designing Autonomous Mobile Robots: Inside the Mind of an Intelligent Machine</a> by <a href="http://www.amazon.com/John-M.-Holland/e/B001IXU3E6/ref=sr_ntt_srch_lnk_1?qid=1321233096&amp;sr=1-1" target="_blank">John M. Holland</a> (Dec 29, 2003)</div>
<div><a href="http://www.amazon.com/Robot-Builders-Bonanza-Gordon-McComb/dp/0071750363/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1321233641&amp;sr=1-1" target="_blank">Robot Builder&#8217;s Bonanza, 4th Edition</a> by <a href="http://www.amazon.com/Gordon-McComb/e/B000APXBTM/ref=sr_ntt_srch_lnk_1?qid=1321233641&amp;sr=1-1" target="_blank">Gordon McComb</a> (May 23, 2011)</div>
</div>
<div>Arduino:</div>
<div><a href="http://www.amazon.com/Make-Embedded-Projects-Hardware-Discovery/dp/1449389716/ref=sr_1_9?s=books&amp;ie=UTF8&amp;qid=1321232771&amp;sr=1-9" target="_blank">Make: Arduino Bots and Gadgets: Six Embedded Projects with Open Source Hardware and Software (Learning by Discovery)</a> by <a href="http://www.amazon.com/Tero-Karvinen/e/B0056FLX32/ref=sr_ntt_srch_lnk_9?qid=1321232771&amp;sr=1-9" target="_blank">Tero Karvinen</a> and <a href="http://www.amazon.com/Kimmo-Karvinen/e/B004V4A1Q4/ref=sr_ntt_srch_lnk_9?qid=1321232771&amp;sr=1-9" target="_blank">Kimmo Karvinen</a>(Apr 6, 2011)</div>
<div><a href="http://www.amazon.com/Arduino-Robotics-John-David-Warren/dp/1430231831/ref=sr_1_7?s=books&amp;ie=UTF8&amp;qid=1321232771&amp;sr=1-7" target="_blank">Arduino Robotics</a> by John-David Warren, Josh Adams and Harald Molle (Jul 14, 2011)</div>
<div><a href="http://www.amazon.com/Arduino-Cookbook-Michael-Margolis/dp/0596802471/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1321232771&amp;sr=1-1" target="_blank">Arduino Cookbook</a> by <a href="http://www.amazon.com/Michael-Margolis/e/B004XUYD1U/ref=sr_ntt_srch_lnk_1?qid=1321232771&amp;sr=1-1" target="_blank">Michael Margolis</a> (Mar 31, 2011)<br />
<a href="http://www.amazon.com/Arduino-Quick-Start-Quick-Start-Guides/dp/1934356662/ref=sr_1_4?s=books&amp;ie=UTF8&amp;qid=1321232771&amp;sr=1-4" target="_blank">Arduino: A Quick Start Guide (Quick-Start Guides)</a> by <a href="http://www.amazon.com/Maik-Schmidt/e/B001K8SAYY/ref=sr_ntt_srch_lnk_4?qid=1321232771&amp;sr=1-4" target="_blank">Maik Schmidt</a> (Jan 22, 2011)</div>
<div><a href="http://www.amazon.com/Beginning-Arduino-Michael-McRoberts/dp/1430232404/ref=sr_1_5?s=books&amp;ie=UTF8&amp;qid=1321232771&amp;sr=1-5" target="_blank">Beginning Arduino</a> by <a href="http://www.amazon.com/Michael-McRoberts/e/B004997ZYW/ref=sr_ntt_srch_lnk_5?qid=1321232771&amp;sr=1-5" target="_blank">Michael McRoberts</a> (Dec 23, 2010)</div>
<div></div>
<div></div>
<div><strong>Otros que a mi me interesan relacionados con robótica:</strong></div>
<div><a href="http://www.amazon.com/Computational-Principles-Mobile-Robotics-Gregory/dp/0521692121/ref=sr_1_1?ie=UTF8&amp;qid=1321233194&amp;sr=1-1" target="_blank">Computational Principles of Mobile Robotics</a> by <a href="http://www.amazon.com/Gregory-Dudek/e/B001KDYM9Q/ref=sr_ntt_srch_lnk_1?qid=1321233191&amp;sr=1-1" target="_blank">Gregory Dudek</a> and <a href="http://www.amazon.com/Michael-Jenkin/e/B004HHRCRG/ref=sr_ntt_srch_lnk_1?qid=1321233191&amp;sr=1-1" target="_blank">Michael Jenkin</a> (Jul 26, 2010</div>
<div><a href="http://www.amazon.com/Evolutionary-Robotics-Algorithms-Implementations-Intelligent/dp/9812568700/ref=sr_1_10?ie=UTF8&amp;qid=1321233581&amp;sr=1-10" target="_blank">Evolutionary Robotics: From Algorithms to Implementations (World Scientific Series in Robotics and Intelligent Systems)</a> by<a href="http://www.amazon.com/Lingfeng-Wang/e/B001H6OOAI/ref=sr_ntt_srch_lnk_10?qid=1321233581&amp;sr=1-10" target="_blank">Lingfeng Wang</a>, Kay Chen Tan and Chee Meng Chew (Jul 17, 2006</div>
<div><a href="http://www.amazon.com/Evolutionary-Swarm-Robotics-Self-Organising-Computational/dp/3642096352/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1321233501&amp;sr=1-2" target="_blank">Evolutionary Swarm Robotics: Evolving Self-Organising Behaviours in Groups of Autonomous Robots (Studies in Computational Intelligence)</a> by <a href="http://www.amazon.com/Vito-Trianni/e/B001KP6HCY/ref=sr_ntt_srch_lnk_2?qid=1321233501&amp;sr=1-2" target="_blank">Vito Trianni</a> (Dec 8, 2010)</div>
<div><a href="http://www.amazon.com/Computational-Geometry-Applications-Mark-Berg/dp/3642096816/ref=sr_1_12?ie=UTF8&amp;qid=1321233391&amp;sr=1-12" target="_blank">Computational Geometry: Algorithms and Applications</a> by Mark de Berg, Otfried Cheong, Marc van Kreveld and Mark Overmars (Nov 19, 2010)</div>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/1004/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/1004/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/1004/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=1004&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/11/23/my-robotic-book-wish-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>How to represent a 3D Gaussian Function with ROS rviz</title>
		<link>http://geus.wordpress.com/2011/09/15/how-to-represent-a-3d-normal-function-with-ros-rviz/</link>
		<comments>http://geus.wordpress.com/2011/09/15/how-to-represent-a-3d-normal-function-with-ros-rviz/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 10:53:43 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[ros rviz]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=981</guid>
		<description><![CDATA[The probabilistic functions are very usual in robotics to represent the certainty of states and observations. The most typical and used probabilistic function is the Gaussian function. Everybody who knows what is this immediately imagine a pretty bell which describes the samples nature. In the one-dimensional case, a simple tuple mean, variance is enough information to imagine [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=981&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">The probabilistic functions are very usual in robotics to represent the certainty of states and observations. The most typical and used probabilistic function is the Gaussian function. Everybody who knows what is this immediately imagine a pretty bell which describes the samples nature.</p>
<p style="text-align:center;"><img class="aligncenter" title="gaussian bell" src="http://phys.columbia.edu/~tutorial/estimation/gauss.png" alt="" width="416" height="257" /></p>
<p style="text-align:justify;">In the one-dimensional case, a simple tuple <img src='http://s0.wp.com/latex.php?latex=%28%5Cmu%2C+%5Csigma%5E%7B2%7D%29&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='(&#92;mu, &#92;sigma^{2})' title='(&#92;mu, &#92;sigma^{2})' class='latex' /> mean, variance is enough information to imagine how the samples are behaving. This tuple can be also reinterpreted as an interval <img src='http://s0.wp.com/latex.php?latex=%5B%5Cmu+-+%5Csigma%5E%7B2%7D%2C+%5Cmu+%2B+%5Csigma%5E%7B2%7D%5D&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='[&#92;mu - &#92;sigma^{2}, &#92;mu + &#92;sigma^{2}]' title='[&#92;mu - &#92;sigma^{2}, &#92;mu + &#92;sigma^{2}]' class='latex' /> where the samples most probably are located. For higher dimensions the \mu it is clear, but the equivalent element to describe the diversity, the covariance matrix <img src='http://s0.wp.com/latex.php?latex=%5CSigma&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='&#92;Sigma' title='&#92;Sigma' class='latex' /> it is much lesser intuitive for most of people. The trick is imagine the ND gaussian bell as NDimensional ellipse. The shape and rotation of this ellipse is described by the covariance matrix. In this way the diversity of the distribution is intuitive.</p>
<p style="text-align:center;"><img class="alignnone aligncenter" src="http://www.mathworks.com/matlabcentral/fx_files/9556/1/gauss.png" alt="" width="336" height="336" /></p>
<p style="text-align:justify;">It is extremely interesting to see and understand the relationship with the rotation and scale of the ellipsoid. If we define <img src='http://s0.wp.com/latex.php?latex=R&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='R' title='R' class='latex' /> as the rotation transform of the ellipsoid and <img src='http://s0.wp.com/latex.php?latex=l&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='l' title='l' class='latex' /> is a vector with the variances in the local frame of the ellipse (much easier to imagine) <img src='http://s0.wp.com/latex.php?latex=l+%3D+%5Cbegin%7Bpmatrix%7D%5Csigma_%7Bx_1%2Cx_1%7D%5E%7B2%7D+%26+...+%26+%5Csigma_%7Bx_n%2Cx_n%7D%5E%7B2%7D%5Cend%7Bpmatrix%7D&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='l = &#92;begin{pmatrix}&#92;sigma_{x_1,x_1}^{2} &amp; ... &amp; &#92;sigma_{x_n,x_n}^{2}&#92;end{pmatrix}' title='l = &#92;begin{pmatrix}&#92;sigma_{x_1,x_1}^{2} &amp; ... &amp; &#92;sigma_{x_n,x_n}^{2}&#92;end{pmatrix}' class='latex' /> , then the relationship between <img src='http://s0.wp.com/latex.php?latex=R%2C+l&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='R, l' title='R, l' class='latex' /> and <img src='http://s0.wp.com/latex.php?latex=%5CSigma&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='&#92;Sigma' title='&#92;Sigma' class='latex' /> is this:</p>
<p style="text-align:center;"><img src='http://s0.wp.com/latex.php?latex=%5CSigma+%3D+R+%28l+I%29+R%5E%7Bt%7D&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='&#92;Sigma = R (l I) R^{t}' title='&#92;Sigma = R (l I) R^{t}' class='latex' /></p>
<p>This have important implications because if you want to synthesizer a gaussian belief from a theoretical model can be hard imagine the covariance matrix values but it is very easy to think in an ellipse with a rotation and scale.</p>
<p>The inverse operation is also useful. For instance if you have a covariance matrix obtained experimentally and you wish to make a geometric interpretation of the distribution or just plot it, you can obtain the rotation matrix <img src='http://s0.wp.com/latex.php?latex=R&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='R' title='R' class='latex' /> and the scale vector <img src='http://s0.wp.com/latex.php?latex=l&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='l' title='l' class='latex' />. Then the it is needed to compute the eigenvectors and eigenvalues. That is because:</p>
<p style="text-align:center;"><img src='http://s0.wp.com/latex.php?latex=R+%3D+eigvectors%28%5CSigma%29&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='R = eigvectors(&#92;Sigma)' title='R = eigvectors(&#92;Sigma)' class='latex' /><br />
and<br />
<img src='http://s0.wp.com/latex.php?latex=l+%3D+eigvalues%28%5CSigma%29&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='l = eigvalues(&#92;Sigma)' title='l = eigvalues(&#92;Sigma)' class='latex' /></p>
<p>Of course notice that if number of eigenVectors is lower than the dimensionality of the problem is because the ellipse is infinitely slim and as a consequence the determinant <img src='http://s0.wp.com/latex.php?latex=det+%5Cleft+%7C+%5CSigma+%5Cright+%7C+%3D+0&amp;bg=f0f0f0&amp;fg=555555&amp;s=0' alt='det &#92;left | &#92;Sigma &#92;right | = 0' title='det &#92;left | &#92;Sigma &#92;right | = 0' class='latex' /> and then the matrix is singular. This means that one dimension should be removed if you want to compute likelihoods over that gaussian function.</p>
<p style="text-align:justify;">Here I show how to represent a 3D gaussian function with ROS and rivz:</p>
<p style="text-align:justify;"><span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2011/09/15/how-to-represent-a-3d-normal-function-with-ros-rviz/"><img src="http://img.youtube.com/vi/vO-QIS725G0/2.jpg" alt="" /></a></span></p>
<p style="text-align:justify;">And here the code in python. Discussion about this subject in: <a href="http://answers.ros.org/question/2043/plot-a-gaussian-3d-representation-with-markers-in">http://answers.ros.org/question/2043/plot-a-gaussian-3d-representation-with-markers-in</a>:</p>
<p><pre class="brush: python;">
import roslib
roslib.load_manifest (&quot;gaussian_markers&quot;)
import rospy
import PyKDL
from visualization_msgs.msg import Marker, MarkerArray
import visualization_msgs
from geometry_msgs.msg import Point
import numpy
from numpy import concatenate

#syntetic 3-D Gaussian probabilistic model for sampling
covMatModel =[[10, 10, 0],[10, 1, 0],[0, 0, 4]]
meanModel =[10, 10, 10]

#used to paint the autovectors
def markerVector(id,vector,position):
	marker = Marker ()
	marker.header.frame_id = &quot;/root&quot;;
	marker.header.stamp = rospy.Time.now ()
	marker.ns = &quot;my_namespace2&quot;;
	marker.id = id;
	marker.type = visualization_msgs.msg.Marker.ARROW
	marker.action = visualization_msgs.msg.Marker.ADD
	marker.scale.x=0.1
	marker.scale.y=0.3
	marker.scale.z=0.1
	marker.color.a= 1.0
	marker.color.r = 0.33*float(id)
	marker.color.g = 0.33*float(id)
	marker.color.b = 0.33*float(id)
	(start,end)=(Point(),Point())

	start.x = position[0]
	start.y = position[1]
	start.z = position[2]
	end.x=start.x+vector[0]
	end.y=start.y+vector[1]
	end.z=start.z+vector[2]

	marker.points.append(start)
	marker.points.append(end)
	print str(marker)
	return marker

rospy.init_node ('markersample', anonymous = True)
points_pub = rospy.Publisher (&quot;visualization_markers&quot;, visualization_msgs.msg.Marker)
gauss_pub = rospy.Publisher (&quot;gaussian&quot;, visualization_msgs.msg.Marker)

while not rospy.is_shutdown ():
	syntetic_samples = None

	#painting all the syntetic points
	for i in xrange (10, 5000):
		p = numpy.random.multivariate_normal (meanModel, covMatModel)
		if syntetic_samples == None:
			syntetic_samples =[p]
		else:
			syntetic_samples = concatenate ((syntetic_samples,[p]), axis = 0)

		marker = Marker ()
		marker.header.frame_id = &quot;/root&quot;;
		marker.header.stamp = rospy.Time.now ()
		marker.ns = &quot;my_namespace2&quot;;
		marker.id = i;
		marker.type = visualization_msgs.msg.Marker.SPHERE
		marker.action = visualization_msgs.msg.Marker.ADD
		marker.pose.position.x = p[0]
		marker.pose.position.y = p[1]
		marker.pose.position.z = p[2]
		marker.pose.orientation.x = 1
		marker.pose.orientation.y = 1
		marker.pose.orientation.z = 1
		marker.pose.orientation.w = 1
		marker.scale.x = 0.05
		marker.scale.y = 0.05
		marker.scale.z = 0.05
		marker.color.a = 1.0
		marker.color.r = 0.0
		marker.color.g = 0.0
		marker.color.b = 0.0
		points_pub.publish (marker)

	#calculating Gaussian parameters
	syntetic_samples = numpy.array (syntetic_samples)
	covMat = numpy.cov (numpy.transpose (syntetic_samples))
	mean = numpy.mean ([syntetic_samples[: , 0], syntetic_samples[: , 1], syntetic_samples[:, 2]], axis = 1)

	#painting the gaussian ellipsoid marker
	marker = Marker ()
	marker.header.frame_id =&quot;/root&quot;;
	marker.header.stamp = rospy.Time.now ()
	marker.ns = &quot;my_namespace&quot;;
	marker.id = 0;
	marker.type = visualization_msgs.msg.Marker.SPHERE
	marker.action = visualization_msgs.msg.Marker.ADD
	marker.pose.position.x = mean[0]
	marker.pose.position.y = mean[1]
	marker.pose.position.z = mean[2]

	#getting the distribution eigen vectors and values
	(eigValues,eigVectors) = numpy.linalg.eig (covMat)

	#painting the eigen vectors
	id=1
	for v in eigVectors:
		m=markerVector(id, v*eigValues[id-1], mean)
		id=id+1
		points_pub.publish(m)

	#building the rotation matrix
	eigx_n=PyKDL.Vector(eigVectors[0,0],eigVectors[0,1],eigVectors[0,2])
	eigy_n=-PyKDL.Vector(eigVectors[1,0],eigVectors[1,1],eigVectors[1,2])
	eigz_n=PyKDL.Vector(eigVectors[2,0],eigVectors[2,1],eigVectors[2,2])
	eigx_n.Normalize()
	eigy_n.Normalize()
	eigz_n.Normalize()
  	rot = PyKDL.Rotation (eigx_n,eigy_n,eigz_n)
	quat = rot.GetQuaternion ()

	#painting the Gaussian Ellipsoid Marker
	marker.pose.orientation.x =quat[0]
	marker.pose.orientation.y = quat[1]
	marker.pose.orientation.z = quat[2]
	marker.pose.orientation.w = quat[3]
	marker.scale.x = eigValues[0]*2
	marker.scale.y = eigValues[1]*2
	marker.scale.z =eigValues[2]*2

	marker.color.a = 0.5
	marker.color.r = 0.0
	marker.color.g = 1.0
	marker.color.b = 0.0

	gauss_pub.publish (marker)
	rospy.sleep (.5)
</pre></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a>, <a href='http://geus.wordpress.com/tag/ros-rviz/'>ros rviz</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/981/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/981/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=981&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/09/15/how-to-represent-a-3d-normal-function-with-ros-rviz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://phys.columbia.edu/~tutorial/estimation/gauss.png" medium="image">
			<media:title type="html">gaussian bell</media:title>
		</media:content>

		<media:content url="http://www.mathworks.com/matlabcentral/fx_files/9556/1/gauss.png" medium="image" />
	</item>
		<item>
		<title>El debate energético y la bajeza moral de occidente</title>
		<link>http://geus.wordpress.com/2011/03/18/el-debate-energetico-y-la-bajeza-moral-de-occidente/</link>
		<comments>http://geus.wordpress.com/2011/03/18/el-debate-energetico-y-la-bajeza-moral-de-occidente/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 15:03:02 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Society]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=962</guid>
		<description><![CDATA[A cuento del debate energético y la cuestión de ¿Por qué son caras las energías renovables? y la disparidad de argumentaciones que están apareciendo ahora con el problema nuclear Japonés de moda, un buen amigo pregunta las siguientes cuestiones: 1. Costes (hablo únicamente de dinero). ¿Qué energía es más barata, cuanto y porqué? ¿Cuantos nos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=962&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">A cuento del debate energético y la  cuestión de ¿Por qué son caras las energías renovables? y la disparidad  de argumentaciones que están apareciendo ahora con el problema nuclear Japonés de moda, un  buen amigo pregunta las siguientes cuestiones:</p>
<blockquote><p>1. Costes (hablo únicamente de dinero). ¿Qué energía es más barata,  cuanto y porqué? ¿Cuantos nos costaría una factura de electricidad  únicamente renovable? El tema de las subvenciones.. me parece un  auténtico lío.</p>
<p>2. ¿Qué es y como funciona la subasta energética?</p>
<p>3.  ¿Podría sostenerse solo un país con energía renovables? ¿solo para la  producción de electricidad? En el caso de que se pueda, ¿podemos asumir  eso?</p>
<p>4. Si las eléctricas han estado vendiendo por debajo del coste tantos  años (es lo que han dicho cuando la subida de la luz), ¿porque han  ganado lo que han ganado? ¿porqué ha estado congelado el precio de  electricidad tantos años?</p>
<p>En fin, te pones a buscar por ahí y encuentras una cosa y la contraria..</p></blockquote>
<p>Son en mi opinión, preguntas equivocadas.</p>
<p style="text-align:justify;">El dinero en general, y en especial el dinero que nosotros pagamos en la factura de la luz y la indignación que despierta en nosotros no es más que otro ejemplo del mito de la caverna de Platón (una simple proyección de la compleja realidad). Realizar cualquier argumentación a favor o en contra de una energía basada en lo que pagamos en la factura de la luz es -en mi opinión- absolutamente simplista.</p>
<p style="text-align:justify;">Independientemente de que algún día las renovables puedan ser más rentables o no bajo este enfoque simplista – algo que ignoro – Se puede intuir que con las reglas y mentalidad actuales es difícil que las renovables encuentren su lugar y que hagan más barata nuestra factura. Principalmente porque la mayoría de las energías no-renovables son mucho más competitivas ya que externalizan costes de una forma brutal…y de esta forma, a nuestra visión simplista son más atractivas y más baratas para nuestro bolsillo.</p>
<p style="text-align:justify;">Pero una cosa tengo clara. Las energías renovables forman parte de un CICLO de vida económico, energético y social muchísimo más limpio, transparente, JUSTO y sostenible. En ese ciclo cerrado se puede ver de forma clara que hay un trato justo y respetuoso con las personas y hacia el entorno. Y donde las mismas sociedades que realizan el esfuerzo de cultivar, recogen los beneficios. No hay sociedades explotadas y explotadoras. Recogemos lo que sembramos. Creo que eso es una ley universal que nunca deberíamos olvidar (y hoy día en occidente lo hemos hecho).</p>
<p style="text-align:justify;">Hay algo más allá. Nosotros hemos estado “comprando” con nuestro silencio hipócrita-democrático injusticias, dictadores y opresión en buena parte del mundo (incluida Libia) por el mero y simple hecho de la estabilidad, por interés de nuestros mercados. Nuestros mercados, nuestro Santo Grial. Es decir, hemos estado escupiendo a los valores de los derechos humanos y la democracia. ¿Donde está nuestra dignidad? Occidente, potencia cultural, tecnológica y diplomática. Nosotros deberíamos ser los defensores de los valores y derechos humanos. Una vergüenza, … a su vez una bomba de relojería para nosotros mismos.</p>
<p style="text-align:justify;">Nuestra dignidad humana no tiene precio, y la estamos vendiendo. Y nunca podremos tener la legitimidad de exigir (y nunca habrá) justicia, igualdad y derechos humanos, cuando nosotros con nuestro silencio interesado fomentamos lo opuesto.</p>
<p style="text-align:justify;">En mi opinión, sin lugar a dudas las renovables pueden tecnológicamente mantener un país y lo están demostrando. Es cierto que presenta nuevos retos tecnológicos y sociales. Pero es posible. España en concreto tiene un potencial renovable brutal, una situación de cabeza, una oportunidad para mejorar (no ya económicamente) sino humanamente. Oportunidad que no podemos ni debemos perder.</p>
<p style="text-align:justify;">Volviendo a lo que pagamos en nuestra factura. Parto de que las empresas ganan de lo que nos quitan. Si nos quitan más, más ganan. Nos mentirán hasta la saciedad para mantener o mejorar su posición. Y si pueden intentarán engañarnos y a la vez lograr una sonrisa en nuestra cara y agradecimiento (como en las rebajas de enero). Incluido el lobby renovable. Pero superar esto es para nota. Pero como sociedad tenemos que mirar que haríamos según nuestras necesidades, no según las necesidades de las corporaciones.</p>
<p style="text-align:justify;">Pienso que la energía es cara (sí, es solo una intuición). Porque si las renovables son “caras” (conociendo su ciclo de vida transparente) y la gasolina está como está (conociendo su forma brutal de externalizar) y viendo la que se está liando en Japón… la energía no debe de ser barata… La energía debe valorarse. Esto implica que tenemos que pagar más por la energía, pagar más por el I+D+I en nuevas energías. Y sin lugar a dudas tenemos que cambiar nuestra forma de consumir energía.</p>
<p style="text-align:justify;">Estoy seguro que con tecnología, implicación social y legal las renovables explotarán, madurarán y acabarán convirtiéndose en un símbolo de justicia y un tesoro de valor incalculable para nuestra sociedad.</p>
<span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2011/03/18/el-debate-energetico-y-la-bajeza-moral-de-occidente/"><img src="http://img.youtube.com/vi/LqaXcY21D5g/2.jpg" alt="" /></a></span>
<br />Filed under: <a href='http://geus.wordpress.com/category/society/'>Society</a>, <a href='http://geus.wordpress.com/category/thoughts/'>Thoughts</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/962/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/962/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/962/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=962&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/03/18/el-debate-energetico-y-la-bajeza-moral-de-occidente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Libros para la introducción e investigación en Robótica</title>
		<link>http://geus.wordpress.com/2011/03/17/libros-para-la-introduccion-e-investigacion-en-robotica/</link>
		<comments>http://geus.wordpress.com/2011/03/17/libros-para-la-introduccion-e-investigacion-en-robotica/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 17:34:09 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=936</guid>
		<description><![CDATA[Como los que me conocéis sabéis, actualmente soy estudiante de Doctorado en el departamento ATC (Arquitectura y Tecnología de computadores) en E.T.S. Ingeniería Informática de Sevilla. La temática de mi tesis se ubica dentro del área de la robótica. Actualmente me encuentro en la fase de realización de la tesina (trabajo de investigación previo). Básicamente [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=936&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Como los que me conocéis sabéis, actualmente soy estudiante de Doctorado en el departamento ATC (Arquitectura y Tecnología de computadores) en E.T.S. Ingeniería Informática de Sevilla. La temática de mi tesis se ubica dentro del área de la robótica. Actualmente me encuentro en la fase de realización de la tesina (trabajo de investigación previo). Básicamente consiste en la realización de un estudio profundo del estado del arte , detectar carencias en las soluciones propuestas e introducir las líneas generales del trabajo de Tesis. Dentro de la robótica (por interés personal y por historia de la investigación en el departamento) me centro en las áreas de navegación, planificación, control compartido, sensores distribuidos y arquitecturas software robóticas.</p>
<p style="text-align:justify;">Los artículos de investigación (Papers) son muy útiles para estar a la última, sin embargo la cantidad de papers que aparecen cada mes es desorbitarte, hay mucha información que no es relevante y en ocasiones es difícil discernir si las aportaciones son buenas, interesantes para tu investigación y merece la pena una profundización.</p>
<p style="text-align:justify;">Sin embargo existe una fuente de información complementaria e igual o más importante que los papers: los libros. Los libros habitualmente están más atrasados que los papers, sin embargo, estos presentan innumerables cualidades: se profundiza mucho más en la temática, formato y notación unificada, aprendizaje progresivo, etc. Además, los libros ofrecen contenidos habitualmente más aceptados y reconocidos por la comunidad científica con una madurez media o alta. De esta forma se convierten en un pilar básico para la formación alrededor de los cuales debe girar el conocimiento adquirido en los artículos científicos (más efímeros y traicioneros). Aquí dejo una lista de los 4 libros (hay alguno más que me encantaron, pero estos son los principales) que para mí son sobresalientes y que están permitiéndome como estudiante de doctorado con vagos conocimientos previos en la robótica ir adquiriendo poco a poco destreza y experiencia como para poder aportar nuevas ideas.</p>
<div style="float:left;display:block;clear:both;text-align:justify;margin-bottom:10px;"><a href="http://geus.files.wordpress.com/2011/03/screenshot4.png"><img class="alignleft" style="float:left;margin-right:10px;" title="screenshot4" src="http://geus.files.wordpress.com/2011/03/screenshot4.png?w=150" alt="" width="150" /></a> <strong>Probabilistic Robotics</strong> &#8211; Año 2006. Un libro absolutamente imprescindible para comprender los enfoques probabilísticos que utiliza hoy día la robótica para aportar soluciones. Tiene una matemática dura, y todas las técnicas presentadas ofrecen su demostración matemática. En cualquier caso es un libro muy aplicable de manera casi directa en el software para robots. Se centra en las áreas de localización, construcción de mapas, modelos de sensores y modelos de movimiento de robots y planificación, todo desde un enfoque probabilístico. A pesar de explicar diversas técnicas exitosas en estas áreas el enfoque del libro no son estas sino más bien pretende ilustrar un punto de partida para enfocar los problemas robóticos de una forma mas realista y robusta haciendo uso de la estadística. Su principal autor Sebastian Thrun es hoy día una de las principales referencias mundiales en el área de la robótica.</div>
<div style="float:left;display:block;clear:both;text-align:justify;margin-bottom:10px;"><a href="http://geus.files.wordpress.com/2011/03/newcover3.jpg"><img class="alignleft" style="float:left;margin-right:10px;" title="newcover3" src="http://geus.files.wordpress.com/2011/03/newcover3.jpg?w=150" alt="" width="150" /></a><strong>Planning Algorithms</strong> &#8211; Año 2010. Este libro profundiza de forma exhaustiva en muchísimas técnicas y aspectos importantes en la planificación para robot. Se centra especialmente en la planificación de movimiento (aunque también trata temas de planificación de más alto nivel, tareas, etc). Es muy profundo, duro y formal matemáticamente. Más específicamente se centra en técnicas de planificación de movimiento global deterministas y basadas en muestras, planificación con restricciones kinodinámicas y no-holónomas, etc. Una de las principales ventajas de este libro es que está disponible online de forma gratuita, y además que es actualizado frecuentemente.</div>
<div style="float:left;display:block;clear:both;text-align:justify;"><a href="http://geus.files.wordpress.com/2011/03/screenshot5.png"><img class="alignleft " style="float:left;margin-right:10px;" title="screenshot5" src="http://geus.files.wordpress.com/2011/03/screenshot5.png?w=150" alt="" width="150" /></a><strong>Springer Handbook of Robotics</strong> &#8211; La biblia de la robótica. Casi 1600 páginas de conocimiento. Bastante actualizado, finales del año 2008. Libro para ser utilizado como referencia para introducirse a cualquier temática de la robótica y encontrar fuentes. Trata de todos los temas: Fundamentos de la robótica (Cinemática, Dinámica, Mecánica, Control, Planificación, IA, Arquitecturas software), Estructuras de Robots, Sensores y percepción, manipulación, robótica distribuida, robótica de servicios, robótica en el ámbito de los seres humanos. El libro ha sido realizado por decenas de autores, especialistas en cada área. El nivel de formalismo y profundización varía según el capítulo y la madurez del tema. Otro libro muy recomendable para tener a mano.</div>
<div style="float:left;display:block;clear:both;margin-bottom:10px;">
<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2011/03/9780262033275-f30.jpg"><img style="float:left;margin-right:10px;" title="9780262033275-f30" src="http://geus.files.wordpress.com/2011/03/9780262033275-f30.jpg?w=150" alt="" width="150" /></a><strong>Principles of Robot Motion &#8211; </strong>Este libro se centra en la planificación de movimiento. Es un libro cuya temática es muy parecida a Planning Algorithms, sin embargo es mucho mas ameno y sencillo de leer especialmente para los Ingenieros Informáticos (como yo) ya que presenta vocabulario y técnicas familiares del área de la IA. Realiza un estudio del arte (año 2005) en técnicas de planificación, centrándose en la planificación global (incluido sistemas con restricciones kinodinámicas). Toca también temas de cinemática, dinámica, técnicas de localización probabilísticas y SLAM.</p>
</div>
<div style="float:left;display:block;clear:both;margin-bottom:10px;">
<p style="text-align:justify;">Pues nada, ahí lo dejo, espero que pueda ayudar a cualquiera que esté iniciándose e investigando en este área. ¡Cualquier comentario, sugerencia u opiniones sobre estos u otros libros de robótica son bienvenidos!<br />
Saludos. Bon apetit!</p>
</div>
<div id="gmBFhv" style="display:none!important;visibility:hidden!important;position:absolute!important;height:auto!important;width:auto;z-index:1410065406!important;border:1px solid #0043b3!important;-moz-border-radius:3px 3px 3px 3px!important;vertical-align:middle!important;color:#000000!important;background-color:#a8ecff!important;font-family:Arial!important;font-size:12px!important;line-height:normal!important;font-weight:normal!important;left:1109px!important;top:16px!important;margin:0!important;padding:1px!important;"></div>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/936/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/936/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/936/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=936&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/03/17/libros-para-la-introduccion-e-investigacion-en-robotica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/03/screenshot4.png" medium="image">
			<media:title type="html">screenshot4</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/03/newcover3.jpg" medium="image">
			<media:title type="html">newcover3</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/03/screenshot5.png" medium="image">
			<media:title type="html">screenshot5</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/03/9780262033275-f30.jpg" medium="image">
			<media:title type="html">9780262033275-f30</media:title>
		</media:content>
	</item>
		<item>
		<title>[First Lego League] Competición de Robots de Lego en la E.T.S.I.Informática</title>
		<link>http://geus.wordpress.com/2011/02/22/first-lego-league-competicion-de-robots-de-lego-en-la-e-t-s-i-informatica/</link>
		<comments>http://geus.wordpress.com/2011/02/22/first-lego-league-competicion-de-robots-de-lego-en-la-e-t-s-i-informatica/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 17:29:42 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=928</guid>
		<description><![CDATA[El domingo 6 de Marzo (dentro de 16 días) se realizará en la escuela un evento de robótica entrañable y divertido! Participarán 24 equipos de niños y adolescentes de entre 10 y 16 años de institutos de Sevilla. Los equipos diseñan robots haciendo uso del robot LEGO NXT que deben superar diversas pruebas en un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=928&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">El domingo 6 de Marzo (dentro de 16 días) se realizará en la escuela un evento de robótica entrañable y divertido! Participarán 24 equipos de niños y adolescentes de entre 10 y 16 años de institutos de Sevilla. Los equipos diseñan robots haciendo uso del robot LEGO NXT que deben superar diversas pruebas en un terreno de juego conocido.</p>
<p style="text-align:justify;">¡¡Se trata de un día de jornadas abiertas en la escuela!! ¡¡Por lo tanto estáis todos invitados a venir!! Primos y hermanos,  pequeños y mayores aficionados de Lego y Robots pueden disfrutar como enanos viendo los distintos robots enfrentándose a las pruebas!</p>
<p><a href="http://www.playingatlearning.org/images/FLLVenue2.jpg"><img class="aligncenter" src="http://www.playingatlearning.org/images/FLLVenue2.jpg" alt="" width="348" height="232" /></a></p>
<p style="text-align:justify;">La &#8220;First Lego League&#8221; es un torneo internacional de robótica para niños que se desarrolla en un ambiente deportivo y festivo (padres, amigos, música, speakers, cámaras, etc.. como una party). Se trata de un evento donde el principal objetivo es despertar en el interior de los niños y adolescentes el interés e inquietud por la ciencia y la ingeniería . Todo en un ambiente sano, divertido y donde se premian los valores humanos como la amistad, el esfuerzo, el trabajo en equipo y el respeto.</p>
<p style="text-align:justify;">El evento consta de tres competiciones:</p>
<ul>
<li> Competición de robots LEGO real. (Los robots deberán mover, empujar, golpear o transportar objetos)</li>
<li>Presentación de un proyecto técnico</li>
<li>Presentación de un proyecto científico</li>
</ul>
<p style="text-align:justify;">Adjunto un <a href="http://www.cuatro.com/noticias/videos/competicion-futuro/20101218ctoultpro_11/">vídeo del mismo torneo realizado en Barcelona</a> para que veas sobre qué estoy hablando:  . Los robots son diseñados usando LEGO NXT (robots para niños) y todos ellos disponen ya de las mesas de pruebas donde competirán.</p>
<p>Vídeo de un SuperRobot de lego Noruego haciendo las pruebas de este año!!<br />
<span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2011/02/22/first-lego-league-competicion-de-robots-de-lego-en-la-e-t-s-i-informatica/"><img src="http://img.youtube.com/vi/1KRM_svKOk4/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/society/'>Society</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/928/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/928/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/928/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=928&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/02/22/first-lego-league-competicion-de-robots-de-lego-en-la-e-t-s-i-informatica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://www.playingatlearning.org/images/FLLVenue2.jpg" medium="image" />
	</item>
		<item>
		<title>Monodimensional UKF &#8211; Unscented Kalman Filter in Python</title>
		<link>http://geus.wordpress.com/2011/01/17/monodimensional-ukf-unscented-kalman-filter-in-python/</link>
		<comments>http://geus.wordpress.com/2011/01/17/monodimensional-ukf-unscented-kalman-filter-in-python/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 10:17:12 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=902</guid>
		<description><![CDATA[El método &#8220;Unscented Kalman Filter&#8221; es un importante método de estimación recursivo gaussiano. Este tipo de técnicas son útiles para estimar el estado de un robot integrando la información proveniente de las medidas de los sensores con el conocimiento previo que tenemos sobre el sistema (modelo teórico). En la robótica probabilística, el estado no es [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=902&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">El método <strong>&#8220;Unscented Kalman Filter&#8221; </strong>es un importante método de estimación recursivo gaussiano. Este tipo de técnicas son útiles para estimar el estado de un robot integrando la información proveniente de las medidas de los sensores con el conocimiento previo que tenemos sobre el sistema (modelo teórico).</p>
<p style="text-align:justify;">En la robótica probabilística, el estado no es conocido con precisión. Por ejemplo, la posición de un robot (x,y,z) (que podría ser descrito por una tupla de tres reales) es descrita por una función probabilística tridimensional. Esta función que describe el estado se denomina en la literatura creencia bel(x). De esta forma la posibilidad de que un robot se encuentre en un estado determinado queda definida estocásticamente. Este enfoque puede describir de una forma mas realista el conocimiento que tenemos sobre el estado. Además permite otras ventajas como mantener múltiples hipótesis sobre el estado del robot. Por ejemplo, un robot se encuentra en la mezquita de córdoba y detecta con sus sensores que se encuentra delante de una columna, sin embargo si el estado en que se encontraba anteriormente no describía una mejor hipótesis clara, esta columna podría ser cualquiera de las cientos de columnas existentes en la mezquita.</p>
<p style="text-align:justify;">La dos  gráficas ilustran el comportamiento típico de los métodos de estimación  recursivos gaussianos. En concreto este  ejemplo ha sido generado a  partir del método UKF. Supongamos que el estado es monodimensional (por  ejemplo la posición en el eje x):</p>
<p style="text-align:justify;">La  primera figura muestra en azul la creencia en el instante anterior del  estado del robot. bel[t-1](x) Se observa como se cree que su valor es  aproximadamente uno. Sin embargo el valor real podría ser 1.1  (representado mediante la línea vertical roja).</p>
<p style="text-align:center;"><a href="http://geus.files.wordpress.com/2011/01/ukf2.png"><img class="size-full wp-image-903 aligncenter" title="ukf2" src="http://geus.files.wordpress.com/2011/01/ukf2.png?w=630&#038;h=474" alt="" width="630" height="474" /></a></p>
<p style="text-align:justify;">Supongamos que pasa un instante de tiempo. Haciendo uso del conocimiento teórico (modelo matemático) que tenemos del sistema y dadas las entradas conocidas, predecimos que el estado en el instante actual será alrededor de 3 (función amarilla). Esta función de probabilidad se denomina creencia anterior (predicción) ^bel[t](x). Dado que nuestro modelo es teórico  es evidente que tiene un error. Este error puede ser típicamente acotado teóricamente o mediante métodos empíricos en forma de matriz de covarianza. Por lo tanto podemos estimar que la creencia anterior ^bel[t](x) tendrá una mayor desviación típica que la creencia del instante anterior bel[t-1](x). Es decir, tras la predicción, tenemos una mayor incertidumbre del estado del robot. La línea vertical roja representa la posible posición real del robot en el estado actual.</p>
<p style="text-align:justify;">A continuación recibimos las medidas del sensor. Estas medidas nos indican el estado de forma total o parcial (de forma directa o tras algún tipo de de procesamiento). Pero también, los sensores presentan un error (típicamente indicado por el fabricante o también se podría obtener mediante métodos empíricos).  En la segunda figura, la función de probabilidad roja representa tal medida y su error. En la misma también se muestra en azul la creencia anterior ^bel[t](x) predicha por el modelo teórico.</p>
<p style="text-align:justify;">El método UKF (al igual que KF, EKF y otros) nos permite estimar a partir de los errores del modelo teórico y de la medida, en cual de ambos debemos confiar más, obteniendo un factor de ganancia K para ponderar ambas funciones de probabilidad. Una vez obtenido este factor de ganancia K se puede calcular la creencia posterior (final) del instante actual bel[t](x). La función discontinua verde representa tal creencia.</p>
<p style="text-align:justify;">Para una descripción matemática mas detallada del funcionamiento del método UKF:<br />
<a href="http://www.cslu.ogi.edu/nsel/ukf/node6.html">http://www.cslu.ogi.edu/nsel/ukf/node6.html</a></p>
<p style="text-align:justify;">A continuación muestro una implementaicón personal en python del método UKF acompañada en la simulación utilizada en este ejemplo:</p>
<p style="text-align:justify;"><pre class="brush: python;">
# This code is subject under the terms of the BSD License
# 2011 - Pablo Iñigo Blasco
# http://techbase.kde.org/Policies/Licensing_Policy#BSD_License&lt;/p&gt;
import scipy.stats
from numpy import *
from matplotlib.pyplot import *

def getSigmaPoints(mu, sigma, n=1., alpha=1., kappa=1., betta=2.):
 #space for sigma points
 X = zeros(2 * n + 1)
 wm = zeros(2 * n + 1)
 wc = zeros(2 * n + 1)
 lambd = alpha * alpha * (n + kappa) - n

 #calculate sigma points
 X[0] = mu
 X[1] = mu + (math.sqrt((n + lambd) * sigma))
 X[2] = mu - (math.sqrt((n + lambd) * sigma))

 #calculate weights
 #first weight
 wm[0] = lambd / (n + lambd)
 wc[0] = lambd / (n + lambd) + (1 - alpha * alpha + betta)

 #rest of weights
 wm[1] = wc[1] = 1 / (2. * (n + lambd))
 wm[2] = wc[2] = 1 / (2. * (n + lambd))

 return [X, wm, wc]

def process_state_transition(x, u):
 return u +  x*x

def measurement(x):
 return x;

def measurement_noise(measurement_cov):
 return scipy.stats.norm.rvs(loc=0, scale=measurement_cov, size=1)

def process_noise(process_cov):
 return scipy.stats.norm.rvs(loc=0, scale=process_cov, size=1)

def h(x):
 return x;

#UKF parameters
alpha = 1.;
kappa = 0.;
betta = 2.;
n = 1;

#model parameters
#process noise covariance matrix
R = 0.45
Q = 0.3

#suppose the control input u = 1
u = 2;

#previous state believe
mu_prev = 1;
sigma_prev = 0.1;

real_prior_state = scipy.stats.norm.rvs(loc=mu_prev, scale=sigma_prev, size=1)
print &quot;real previous state %f&quot;%(real_prior_state)
print &quot;posterior belief of the previous state (mu=%f,sigma=%f)&quot;%(mu_prev,sigma_prev)

f = scipy.stats.norm(mu_prev, sigma_prev)
#getting sigma points from previous state belief
[X_prior_state, wm, wc] = getSigmaPoints(mu_prev, sigma_prev, n, alpha, kappa, betta)

#plot this previous state belief
#http://matplotlib.sourceforge.net/users/pyplot_tutorial.html
abcises = linspace(-1, 5, 400)
pX = f.pdf(X_prior_state)
figure(1)
subplot(211)
#plot gaussian function
plot(abcises, f.pdf(abcises),&quot;b&quot;)
#plot sigma points
plot(X_prior_state, pX, &quot;r+&quot;)
show();

#plot real previous state
axvline(real_prior_state,color=&quot;r&quot;)

print &quot;...process happening...&quot;
real_current_state = process_state_transition(real_prior_state,u) +  process_noise(R);
print &quot;real current state %f&quot;%(real_current_state)

#applying the process_state_transition to all sigma points to later build the prior belief
X_current_state = [process_state_transition(x, u) for x in X_prior_state]
plot(X_current_state, pX, &quot;b+&quot;)

#rebuild the gaussian function after applying the process state transition to the sigma points samples
prior_bel_mu = sum(wm*X_current_state);
prior_bel_sigma_without_noise = sum (wc * (X_current_state - prior_bel_mu)* (X_current_state - prior_bel_mu))
prior_bel_sigma = prior_bel_sigma_without_noise + R

prior_bel_f_without_noise = scipy.stats.norm(prior_bel_mu, prior_bel_sigma_without_noise)
prior_bel_f = scipy.stats.norm(prior_bel_mu, prior_bel_sigma)
print &quot;prior belief (mu=%f,sigma=%f)&quot;%(prior_bel_mu,prior_bel_sigma)

#plot the prior belief after the process state transition without noise
#plot(abcises, prior_bel_f_without_noise.pdf(abcises),&quot;g&quot;)
#plot the prior belief (with noise)
plot(abcises, prior_bel_f.pdf(abcises),&quot;y&quot;)
#plot real current state
axvline(real_current_state,color=&quot;r&quot;)
subplot(212)
#also plot it in the bottom frame
axvline(real_current_state,color=&quot;r&quot;)

#so now our best guess is the prior belief. Then we get its sigma points
[X_prior_bel, wm, wc] = getSigmaPoints(prior_bel_mu, prior_bel_sigma, n, alpha, kappa, betta)

#so given the sigma points hypotesys, we get the expected measurements given our measurement model and noise
#in some way this is a substate of the prior_belief
Z_expected = [h(x) for x in X_prior_bel]
z_mu_expected = sum(wm*Z_expected);
z_sigma_expected_without_noise = sum (wc * (Z_expected - z_mu_expected)* (Z_expected - z_mu_expected))
z_sigma_expected = z_sigma_expected_without_noise + Q;
print &quot;expected measurement (mu=%f,sigma=%f)&quot;%(z_mu_expected,z_sigma_expected)

#plot the expected measurement given our best state guess (prior_belief)
#observe how the quality in this expectation depends on the prior belief convariance which
#at the same time depends on process covariance R
#In any case the expected measurement can be &quot;more precise&quot; or &quot;less precise&quot; that the prior belief
plot(abcises, scipy.stats.norm(z_mu_expected,z_sigma_expected).pdf(abcises),&quot;b&quot;)

# calculate the gain, who we trust: process or measurement
K = sum(wc*(X_prior_bel - prior_bel_mu)*(Z_expected - z_mu_expected))/z_sigma_expected
print &quot;Gain: %f&quot;%K

# if K gets 1 trust the measurement
# if K gets 0 trust the process state transition model

#simulate observation
z = measurement(real_current_state) + measurement_noise(Q);
print &quot;measurement %f&quot;%(z)
plot(abcises, scipy.stats.norm(z,Q).pdf(abcises),&quot;r&quot;)

#calculate the posterior gain
post_bel_mu = prior_bel_mu + K * h(z - z_mu_expected)
post_bel_sigma = prior_bel_sigma - K * z_sigma_expected *K

print &quot;posterior belef (mu=%f,sigma=%f)&quot;%(post_bel_mu,post_bel_sigma)
plot(abcises, scipy.stats.norm(post_bel_mu,post_bel_sigma).pdf(abcises),&quot;g--&quot;)
</pre></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/902/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/902/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/902/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=902&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/01/17/monodimensional-ukf-unscented-kalman-filter-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/01/ukf2.png" medium="image">
			<media:title type="html">ukf2</media:title>
		</media:content>
	</item>
		<item>
		<title>Panini de Calabacín</title>
		<link>http://geus.wordpress.com/2011/01/16/panini-de-calabacin/</link>
		<comments>http://geus.wordpress.com/2011/01/16/panini-de-calabacin/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 15:20:48 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=906</guid>
		<description><![CDATA[Ingredientes (para 2 paninis): - Calabacín mediano - Cebolla grande - Atún - Ajo - Queso - Pimiento - una andaluza Se pica un calabacín, una cebolla y tres dientes de ajos en trozos muy pequeñitos. Se sofrie lentamente con un chorreón de aceite de oliva, se le añade un puñado de pimiento picado (yo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=906&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://geus.files.wordpress.com/2011/01/imag0095.jpg"><img class="size-full wp-image-912 alignright" style="margin-left:15px;" src="http://geus.files.wordpress.com/2011/01/imag0095.jpg?w=630" alt=""   /></a><strong>Ingredientes</strong> (para 2 paninis):</p>
<p>- Calabacín mediano<br />
- Cebolla grande<br />
- Atún<br />
- Ajo<br />
- Queso<br />
- Pimiento<br />
- una andaluza</p>
<p><a href="http://geus.files.wordpress.com/2011/01/imag0089.jpg"><img class="size-full wp-image-913 aligncenter" src="http://geus.files.wordpress.com/2011/01/imag0089.jpg?w=630" alt=""   /></a></p>
<p style="text-align:justify;">Se pica un calabacín, una cebolla y tres dientes de ajos en trozos muy pequeñitos. Se sofrie lentamente con un chorreón de aceite de oliva, se le añade un puñado de pimiento picado (yo uso el congelado del mercadona). Cuando están las verduras un poco blanditas (2 o 3 minutos a fuego medio) se añaden dos latas de atún al sofrito y una hoja de laurel partida en trocitos muy pequeños (quitando el tallo de la hoja y otras durezas). Orégano al gusto.</p>
<p style="text-align:justify;">Antes de que se dore se saca y se distribuye sobre dos rebanadas de andaluzas o barrita. Yo las suelo tener congeladas por lo que primero las tuesto un poco. Luego se raya queso encima de los paninis y se les echa un poco mas de orégano encima. Finalmente de 10 a 15 minutos al horno a 260 grados al gusto.</p>
<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2011/01/imag0091.jpg"><img class="size-full wp-image-908 alignnone" style="margin-left:15px;" src="http://geus.files.wordpress.com/2011/01/imag0091.jpg?w=630" alt=""   /></a></p>
<p style="text-align:center;">&nbsp;</p>
<p style="text-align:justify;">&nbsp;</p>
<br />Filed under: <a href='http://geus.wordpress.com/category/thoughts/'>Thoughts</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/906/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/906/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/906/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=906&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2011/01/16/panini-de-calabacin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2011/01/imag0095.jpg" medium="image" />

		<media:content url="http://geus.files.wordpress.com/2011/01/imag0089.jpg" medium="image" />

		<media:content url="http://geus.files.wordpress.com/2011/01/imag0091.jpg" medium="image" />
	</item>
		<item>
		<title>Testing Kinect and ROS</title>
		<link>http://geus.wordpress.com/2010/12/27/testing-kinect-and-ros/</link>
		<comments>http://geus.wordpress.com/2010/12/27/testing-kinect-and-ros/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 17:10:31 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=888</guid>
		<description><![CDATA[This afternoon I&#8217;ve been playing a bit with Kinect and ROS. The implemented software by openni and the ROS team is quite easy to use and the result are impressive. Our Group (RTC Robotic and Computer Technology from the Universidad de Sevilla) is interested in Kinect to bring to our robots (mainly for eldery care [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=888&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">This afternoon I&#8217;ve been playing a bit with Kinect and ROS. The implemented software by openni and the ROS team is quite easy to use and the result are impressive. Our Group (RTC Robotic and Computer Technology from the Universidad de Sevilla) is interested in Kinect to bring to our robots (mainly for eldery care and rehabilitation proposes)the capability to understand better their environment: better navigation and SLAM, better Human-Robot Interaction, etc.</p>
<p>Here you can watch some basic samples:</p>
<span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2010/12/27/testing-kinect-and-ros/"><img src="http://img.youtube.com/vi/xdgSeyrUL_g/2.jpg" alt="" /></a></span>
<span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2010/12/27/testing-kinect-and-ros/"><img src="http://img.youtube.com/vi/d1CBGEBkZ1w/2.jpg" alt="" /></a></span>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/888/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/888/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/888/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=888&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/27/testing-kinect-and-ros/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Video conversion: from ogv to avi</title>
		<link>http://geus.wordpress.com/2010/12/27/video-conversion-from-ogv-to-avi/</link>
		<comments>http://geus.wordpress.com/2010/12/27/video-conversion-from-ogv-to-avi/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 15:33:18 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Science and Technical]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=885</guid>
		<description><![CDATA[Ubuntu 10.10. sudo apt-get install mencoder mencoder input.ogm -ovc xvid -oac mp3lame -xvidencopts pass=1 -o output.avi Regards. Filed under: Science and Technical<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=885&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ubuntu 10.10.</p>
<blockquote><p>sudo apt-get install mencoder<br />
mencoder input.ogm -ovc xvid -oac mp3lame -xvidencopts pass=1 -o output.avi</p></blockquote>
<p>Regards.</p>
<br />Filed under: <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/885/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/885/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/885/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=885&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/27/video-conversion-from-ogv-to-avi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Robótica: Introducción a ROS</title>
		<link>http://geus.wordpress.com/2010/12/15/robotica-introduccion-a-ros/</link>
		<comments>http://geus.wordpress.com/2010/12/15/robotica-introduccion-a-ros/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 11:17:40 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=874</guid>
		<description><![CDATA[El pasado Jueves 2 de Diciembre realizamos un seminario interno en el Departamento de Arquitectura y Tecnología de Computadores de introducción a la tecnología ROS. Aquí dejo las slides por si a alguien les pudiera servir. Gracias por los contenidos Creative Commons de la web de ROS y de las transparencias creadas por &#8220;Radu Bogdan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=874&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El pasado Jueves 2 de Diciembre realizamos un seminario interno en el Departamento de Arquitectura y Tecnología de Computadores de introducción a la tecnología ROS.</p>
<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2010/12/creative-commons.jpg"><img class="alignright" style="margin-left:10px;" title="creative-commons" src="http://geus.files.wordpress.com/2010/12/creative-commons.jpg?w=100&#038;h=100" alt="" width="100" height="100" /></a>Aquí dejo las slides por si a alguien les pudiera servir. Gracias por los contenidos Creative Commons de la web de <a href="www.ros.org">ROS</a> y de las transparencias creadas por &#8220;Radu Bogdan Rusu&#8221; para el evento &#8220;<a href="http://www.ros.org/wiki/Events/CoTeSys-ROS-School">CoTeSys-ROS Fall School on Cognition-enabled Mobile Manipulation</a>&#8220;. Este documento en sí es Creative Commons.</p>
<iframe src='http://www.slideshare.net/slideshow/embed_code/6173719' width='630' height='516'></iframe>
<p><a href="http://geus.files.wordpress.com/2010/12/creative-commons.jpg"><br />
</a></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/874/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/874/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/874/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=874&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/15/robotica-introduccion-a-ros/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2010/12/creative-commons.jpg" medium="image">
			<media:title type="html">creative-commons</media:title>
		</media:content>
	</item>
		<item>
		<title>Utilizar un directorio compartido en Windows desde linux mediante SAMBA-SMBFS</title>
		<link>http://geus.wordpress.com/2010/12/09/utilizar-un-directorio-compartido-en-windows-desde-linux-mediante-samba-smbfs/</link>
		<comments>http://geus.wordpress.com/2010/12/09/utilizar-un-directorio-compartido-en-windows-desde-linux-mediante-samba-smbfs/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 15:12:40 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Science and Technical]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=863</guid>
		<description><![CDATA[En el trabajo en red es fundamental un intercambio fluido de archivos. Sin embargo algunos problemas surgen cuando los sistemas operativos de los PCS de la red es heterogénea. Aquí dejo una receta básica para montar de forma permanente y automática un directorio compartido de windows con usuario MYUSER y contraseña MYPASS en un directorio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=863&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">En el trabajo en red es fundamental un intercambio fluido de archivos. Sin embargo algunos problemas surgen cuando los sistemas operativos de los PCS de la red es heterogénea. Aquí dejo una receta básica para montar de forma permanente y automática un directorio compartido de windows con usuario MYUSER y contraseña MYPASS en un directorio local de linux. En concreto en este ejemplo he utilizado es ubuntu 10.10 x64.</p>
<p>Instalamos el sistema de archivos samba (Samba File System)</p>
<blockquote><p>geus@geus-vaio:~$ sudo apt-get install smbfs</p></blockquote>
<p style="text-align:justify;">Creamos un archivo de credenciales donde ubicar la contraseña y el usuario. El principal problema de este archivo para mi gusto es que tiene que ir en texto plano. No he encontrado otra alternativa (si alguien la conoce que lo diga <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ). Seguro que algún gurú de la seguridad se me echa encima jeje. Una solución es eliminar todos los permisos de lectura/escritura/ejecución. De este modo aseguramos que el único que podría alcanzar tal información tendría que conocer la contraseña de root o ser sudo del sistema.</p>
<blockquote><p>geus@geus-vaio:~$ echo username=MYUSER&gt;.smbcredential<br />
geus@geus-vaio:~$ echo password=MYPASS&gt;&gt;.smbcredential<br />
geus@geus-vaio:~$ cat .smbcredentials<br />
<em>user=MYUSER</em><br />
<em>password=MYPASS</em><br />
geus@geus-vaio:~$ sudo chmod a-xrw .smbcredentials<br />
geus@geus-vaio:~$ sudo mkdir /media/NOMBRE_DIRECTORIO_MONTAJE<br />
geus@geus-vaio:~$ sudo chown geus\: /media/NOMBRE_DIRECTORIO_MONTAJE</p></blockquote>
<p>Finalmente en el archivo /etc/fstab añadimos la siguiente linea</p>
<blockquote><p>//NOMBREHOST_REMTO/NOMBRE_CARPETA    /media/NOMBRE_DIRECTORIO_MONTAJE    smbfs    credentials=/home/geus/.smbcredential,user,auto,gid=geus,uid=geus,umask007 0 0</p></blockquote>
<p style="text-align:justify;">Al estar en modo auto, durante la inicialización del sistema, se intentará montar la carpeta compartida. En cualquier caso siempre se puede hacer manualmente:</p>
<blockquote><p>geus@geus-vaio:~$ sudo mount /media/NOMBRE_DIRECTORIO_MONTAJE</p></blockquote>
<p style="text-align:justify;">Existen otros mecanismos para compartir directorios como sshfs, algo más lentos, pero más seguros y con capacidad de compartir en internet. Hace algunos años ya escribí sobre ellos: <a href="http://geus.wordpress.com/2008/05/17/sshfs-hints/">http://geus.wordpress.com/2008/05/17/sshfs-hints/</a></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/863/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/863/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/863/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=863&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/09/utilizar-un-directorio-compartido-en-windows-desde-linux-mediante-samba-smbfs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Saving Legacy Software: DLXView (reload) in Ubuntu 10.4 x64</title>
		<link>http://geus.wordpress.com/2010/12/07/saving-legacy-software-dlxview-reload-in-ubuntu-10-4/</link>
		<comments>http://geus.wordpress.com/2010/12/07/saving-legacy-software-dlxview-reload-in-ubuntu-10-4/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 20:17:52 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=842</guid>
		<description><![CDATA[DLXView is a software simulator which let you execute dlx-assembly code over different simulated processor architectures (among them, the famous static planning DLX proccessor, Tomasulo, etc.). This is  used manly for academic proposes by our department. Unfortunately this software quite old. It seems to be quite abandoned since its last modification was in 1997. AFAIK [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=842&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://cobweb.ecn.purdue.edu/~teamaaa/dlxview/">DLXView</a> is a software simulator which let you execute dlx-assembly code over different simulated processor architectures (among them, the famous static planning DLX proccessor, Tomasulo, etc.). This is  used manly for academic proposes by our department. Unfortunately this software quite old. It seems to be quite abandoned since its last modification was in 1997. AFAIK is now obsolete and unusable in several actual systems like Ubuntu 10.4 with x64.</p>
<p>Saving Legacy Software is always a challenge and it&#8217;s sometimes funny. This evening, after be struggling a bit with the source code, makefile and debugging with <a href="http://www.gnu.org/software/ddd/">ddd </a> I achieved make it run again properly on Ubuntu 10.4 in a x64 bit processor.</p>
<p>There were several problems:</p>
<ul>
<li> Some pieces of code uses some deprecated system functionality related with error handling.</li>
<li>Some data types names overlapped others actual standard data structures.</li>
<li>Used libraries were quite old.</li>
</ul>
<p style="text-align:justify;">Hence in such situation building the code wasn&#8217;t possible. However some precompiled versions exist on the internet. They apparently worked fine in my system, but when an dlx-assembly file was loaded the program crashed. It was due to a buffer overflow in his code (specifically in the ReadFile function in the asm.c file). I&#8217;m not sure if this is related with the use of 64-bit processor or if it&#8217;s related with some changes of Tcl/Tk libraries for using unicode strings. Anyways it was solved making a  specific buffer bigger and using the function snprintf.</p>
<p style="text-align:justify;">Of course these changes don&#8217;t assert that old or news problem appear. However it seems to be working fine, as it used to be.<br />
Corrections and suggestions are welcome.</p>
<p>• <a href="http://cobweb.ecn.purdue.edu/~teamaaa/dlxview/archives/dlxview0.9.linux-elf.tcl75tk41.tar.gz">The old and official tarball</a><br />
• The diff File:</p>
<blockquote><p>diff -crB dlxview0.9/asm.c dlxview0.9b/asm.c<br />
*** dlxview0.9/asm.c    1997-09-27 00:00:08.000000000 +0200<br />
&#8212; dlxview0.9b/asm.c    2010-12-07 19:13:40.000000000 +0100<br />
***************<br />
*** 1368,1375 ****<br />
register LoadInfo *infoPtr;    /* Information about the state of the<br />
* assembly process. */<br />
{<br />
! #define MAX_LINE_SIZE 200<br />
! #define MAX_NAME_SIZE 10<br />
char line[MAX_LINE_SIZE];<br />
char pseudoOp[MAX_NAME_SIZE+1];<br />
FILE *f;<br />
&#8212; 1368,1375 &#8212;-<br />
register LoadInfo *infoPtr;    /* Information about the state of the<br />
* assembly process. */<br />
{<br />
! #define MAX_LINE_SIZE 2000<br />
! #define MAX_NAME_SIZE 100<br />
char line[MAX_LINE_SIZE];<br />
char pseudoOp[MAX_NAME_SIZE+1];<br />
FILE *f;<br />
***************<br />
*** 1377,1383 ****<br />
int i, nullTerm;<br />
char *end, *curToken;<br />
char savedChar;<br />
!     char msg[40];<br />
double strtod();</p>
<p>f = fopen(fileName, &#8220;r&#8221;);<br />
&#8212; 1377,1383 &#8212;-<br />
int i, nullTerm;<br />
char *end, *curToken;<br />
char savedChar;<br />
!     char msg[255];<br />
double strtod();</p>
<p>f = fopen(fileName, &#8220;r&#8221;);<br />
Only in dlxview0.9: dlxview<br />
diff -crB dlxview0.9/Makefile dlxview0.9b/Makefile<br />
*** dlxview0.9/Makefile    1997-09-27 00:00:08.000000000 +0200<br />
&#8212; dlxview0.9b/Makefile    2010-12-07 19:00:28.000000000 +0100<br />
***************<br />
*** 1,8 ****<br />
# environment dependent variables; change these to their appropriate<br />
# directory paths for the X11 and tcl/tk library and header paths<br />
# Solaris paths<br />
! TCL_LIB = /usr/local/lib<br />
! TCL_INC = /usr/local/include<br />
X_LIB = /opt/x11r5/lib<br />
X_INC = /usr/local/X11R5/include<br />
# Linux paths<br />
&#8212; 1,8 &#8212;-<br />
# environment dependent variables; change these to their appropriate<br />
# directory paths for the X11 and tcl/tk library and header paths<br />
# Solaris paths<br />
! TCL_LIB = /usr/lib<br />
! TCL_INC = /usr/include/tcl<br />
X_LIB = /opt/x11r5/lib<br />
X_INC = /usr/local/X11R5/include<br />
# Linux paths<br />
***************<br />
*** 20,26 ****</p>
<p># Solaris may need the -lsocket and -lnsl flags added.  Tk4.1 and newer<br />
# also require the -ldl flag.<br />
! LLIBS = ${TCL_LIB}/libtcl7.6.a ${TCL_LIB}/libtk4.2.a -L${X_LIB} -lX11 -lnsl -lsocket -lm -ldl<br />
# LLIBS = ${TCL_LIB}/libtcl.so ${TCL_LIB}/libtk.so -L${X_LIB} -lX11 -lm -ldl<br />
# LLIBS = ${TCL_LIB}/libtcl.a ${TCL_LIB}/libtk.a -L${X_LIB} -lX11 -lm</p>
<p>&#8212; 20,26 &#8212;-</p>
<p># Solaris may need the -lsocket and -lnsl flags added.  Tk4.1 and newer<br />
# also require the -ldl flag.<br />
! LLIBS = -g ${TCL_LIB}/libtcl.a ${TCL_LIB}/libtk.a ${TCL_LIB}/libpthread.so ${TCL_LIB}/libc.so -L${X_LIB} -lX11 -lnsl -lm -ldl<br />
# LLIBS = ${TCL_LIB}/libtcl.so ${TCL_LIB}/libtk.so -L${X_LIB} -lX11 -lm -ldl<br />
# LLIBS = ${TCL_LIB}/libtcl.a ${TCL_LIB}/libtk.a -L${X_LIB} -lX11 -lm</p>
<p>***************<br />
*** 30,36 ****<br />
###########################################################################</p>
<p>CC = gcc<br />
! CFLAGS = ${CPPFLAGS} -O -I. -I${TCL_INC} -I${X_INC}<br />
TARGET = dlxview</p>
<p>OBJS = asm.o cop0.o getput.o io.o issue.o main.o script.o sim.o stop.o sym.o trap.o<br />
&#8212; 30,36 &#8212;-<br />
###########################################################################</p>
<p>CC = gcc<br />
! CFLAGS = ${CPPFLAGS} -O -I. -I${TCL_INC} -I${X_INC} -g<br />
TARGET = dlxview</p>
<p>OBJS = asm.o cop0.o getput.o io.o issue.o main.o script.o sim.o stop.o sym.o trap.o<br />
Only in dlxview0.9: .project<br />
diff -crB dlxview0.9/script.h dlxview0.9b/script.h<br />
*** dlxview0.9/script.h    1997-09-27 00:00:08.000000000 +0200<br />
&#8212; dlxview0.9b/script.h    2010-12-07 17:16:15.000000000 +0100<br />
***************<br />
*** 927,934 ****<br />
set help_cmd_stack \&#8221;HelpGeneral\&#8221;\n\<br />
$t delete 1.0 end\n\<br />
HelpIn help_title {\n\<br />
!                        DLXview: Interactive Animated DLX Pipeline<br />
!                Visualization\n\<br />
}\n\<br />
HelpIn HelpInfo {\n\<br />
1. General Information\n\<br />
&#8212; 927,933 &#8212;-<br />
set help_cmd_stack \&#8221;HelpGeneral\&#8221;\n\<br />
$t delete 1.0 end\n\<br />
HelpIn help_title {\n\<br />
!                        DLXview: Interactive Animated DLX Pipeline Visualization\n\<br />
}\n\<br />
HelpIn HelpInfo {\n\<br />
1. General Information\n\<br />
diff -crB dlxview0.9/sim.c dlxview0.9b/sim.c<br />
*** dlxview0.9/sim.c    1997-09-27 00:00:08.000000000 +0200<br />
&#8212; dlxview0.9b/sim.c    2010-12-07 17:30:43.000000000 +0100<br />
***************<br />
*** 27,32 ****<br />
&#8212; 27,33 &#8212;-<br />
#include &lt;string.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;tcl.h&gt;<br />
+ #include &lt;errno.h&gt;<br />
#include &#8220;dlx.h&#8221;<br />
#include &#8220;sym.h&#8221;</p>
<p>***************<br />
*** 1033,1049 ****<br />
static char *<br />
errstring(void)<br />
{<br />
!     extern int errno, sys_nerr;<br />
!     extern char *sys_errlist[];<br />
static char msgbuf[64];</p>
<p>if( !errno )<br />
return &#8220;no error&#8221;;<br />
!     if( errno &gt;= sys_nerr ) {<br />
sprintf( msgbuf, &#8220;unknown error %d&#8221;, errno );<br />
return msgbuf;<br />
}<br />
!     return sys_errlist[ errno ];<br />
}</p>
<p>&#8212; 1034,1051 &#8212;-<br />
static char *<br />
errstring(void)<br />
{<br />
!     extern int errno;<br />
!     char * strerror_msg;<br />
static char msgbuf[64];</p>
<p>+     strerror_msg=strerror( errno);<br />
if( !errno )<br />
return &#8220;no error&#8221;;<br />
!     if( strerror_msg == 0 ) {<br />
sprintf( msgbuf, &#8220;unknown error %d&#8221;, errno );<br />
return msgbuf;<br />
}<br />
!     return strerror_msg ;<br />
}</p></blockquote>
<br />Filed under: <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/842/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/842/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/842/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=842&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/07/saving-legacy-software-dlxview-reload-in-ubuntu-10-4/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>C#/LINQ vs Python &#8211; Functional and data oriented programming</title>
		<link>http://geus.wordpress.com/2010/12/07/clinq-vs-python-functional-and-data-oriented-programming/</link>
		<comments>http://geus.wordpress.com/2010/12/07/clinq-vs-python-functional-and-data-oriented-programming/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 03:31:01 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Science and Technical]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=567</guid>
		<description><![CDATA[Mi &#8220;lenguaje&#8221; funcional favorito es c#/LINQ. Con él veo claro el tratamiento de conjuntos, transformaciones, filtrados, etc. Sin embargo, es conocido que otros lenguajes (además de haskell y cia) como python  tienen buenas capacidades para expresar notación funcional. Aquí me dejo una chuleta de algunas equivalencias python(verde) vs c#(azul) que he ido recopilando últimamente. Me [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=567&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Mi &#8220;lenguaje&#8221; funcional favorito es c#/LINQ. Con él veo claro el tratamiento de conjuntos, transformaciones, filtrados, etc. Sin embargo, es conocido que otros lenguajes (además de haskell y cia) como python  tienen buenas capacidades para expresar notación funcional. Aquí me dejo una chuleta de algunas equivalencias python(verde) vs c#(azul) que he ido recopilando últimamente. Me será útil para poder echarle un vistazo cuando me haga falta.</p>
<p style="text-align:justify;">Recordar que para utilizar esta funcionalidad en C#/LINQ hay que importar el &#8220;namespace System.Linq&#8221;. Así mismo para algunas de las operaciones propuestas para python hay que importar el paquete &#8220;<a href="http://docs.python.org/library/itertools.html">itertools</a>&#8220;. También es interesante tener a mano la <a href="http://docs.python.org/tutorial/datastructures.html">documentación de las estructuras de datos en Python</a>.</p>
<p style="text-align:justify;">Si conocéis mas equivalencias animáos y añadirlas a los comentarios.<br />
Saludos.</p>
<blockquote>
<p style="text-align:justify;"><span style="color:#000080;">var a= new int[]{1,2,3,4,5,5,6,8};</span><br />
<span style="color:#000080;"> var b= new int[]{9,8,6,5,4};</span><br />
<span style="color:#008000;">a= [1,2,3,4,5,5,6,8]</span><br />
<span style="color:#008000;"> b= [9,8,6,5,4]</span></p>
</blockquote>
<p><strong>Selección/Transformación</strong></p>
<blockquote><p><span style="color:#000080;">var res= from i in a select i*i;</span><br />
<span style="color:#008000;">res= [ i*i for i in a ] ;</span></p></blockquote>
<p><strong>Proyección Anónima<br />
</strong></p>
<blockquote><p><span style="color:#000080;">var res= from i in a select new{prop1=i,prop2=Math.Sin(i)};</span><br />
<span style="color:#008000;">res= [ {'prop1': i, 'propb2':sin(i)} for i in a ] ;</span></p>
<p><span style="color:#000080;">a.ToDictionary(i=&gt; i*i);</span><br />
<span style="color:#000080;"> a.ToDictionary(i=&gt; i*i, i=&gt;i);</span><br />
<span style="color:#008000;">dic([(i*i, i) for i in a])</span></p></blockquote>
<p><strong>Max/Min</strong></p>
<blockquote><p><span style="color:#000080;">maxsinval = a.Max(i=&gt;Math.Sin(i))</span><br />
<span style="color:#008000;">maxsinval = max(a, lambda i: sin(i))</span></p></blockquote>
<p><strong>Distinct</strong></p>
<blockquote><p><span style="color:#000080;">res = a.Distinct()</span><br />
<span style="color:#008000;">res = set(a)</span></p></blockquote>
<p><strong>Union</strong></p>
<blockquote><p><span style="color:#000080;">res = a.Union(b);</span><br />
<span style="color:#008000;">res = Set(a).union(b)</span></p></blockquote>
<p><strong>Filtrado</strong></p>
<blockquote><p><span style="color:#000080;">res = from i in a where i%2==0 select i*i;</span><br />
<span style="color:#008000;">res = [ i*i for i in a if i%2==0] ;</span></p></blockquote>
<p><strong>Ordenación</strong></p>
<blockquote><p><span style="color:#000080;">res = a.Sort(i=&gt;i %2 ==0);</span><br />
<span style="color:#008000;">res = sorted(a, key= lambda i: i %2 ==0)</span></p></blockquote>
<p><strong>All/Any</strong></p>
<blockquote><p><span style="color:#000080;">a.All(i=&gt; i%2 ==0 )</span><br />
<span style="color:#008000;">all ([i%2==1 for i in a])</span></p>
<p><span style="color:#000080;">a.Any(i=&gt; i%2==0)</span><br />
<span style="color:#008000;">any ([i%2==1 for i in a])</span></p></blockquote>
<p><strong>First/Last/Count</strong></p>
<blockquote><p><span style="color:#000080;">a.Count(i=&gt;i%2==0)</span><br />
<span style="color:#008000;">len([i for i in a if i%2==0])</span></p>
<p><span style="color:#000080;">a.Count(i=&gt;i==3)</span><br />
<span style="color:#008000;">a.count(3)</span></p></blockquote>
<p><strong>Agregation/Reduction</strong></p>
<blockquote><p><span style="color:#000080;">a.Agreggate((i,j)=&gt;i*j);</span><br />
<span style="color:#008000;">reduce(lambda i, j: i*j,a)</span></p></blockquote>
<p><strong>Take/Skip</strong></p>
<blockquote><p><span style="color:#000080;">res = a.Take(3);</span><br />
<span style="color:#008000;">res = a[:3];</span></p>
<p><span style="color:#000080;">res = a.Skip(2);</span><br />
<span style="color:#008000;">res = a[2:];</span></p>
<p><span style="color:#000080;">res = a.Take(3).Skip(2);</span><br />
<span style="color:#008000;">res = a[2:3]</span></p>
<p><span style="color:#000080;">res = a.Skip(2).Take(3);</span><br />
<span style="color:#008000;">res = a[2:][:3]</span></p>
<p><span style="color:#000080;">a.TakeWhile(i=&gt;i%2==0)</span><br />
<span style="color:#008000;">[i for i in takewhile(lambda i: i %2==0)]</span></p>
<p><span style="color:#000080;">a.SkipWhile(i=&gt;i%2==0)</span><br />
<span style="color:#008000;">[i for i in dropwhile(lambda i: i%2==0)]</span></p></blockquote>
<p><strong>GroupBy</strong></p>
<blockquote><p><span style="color:#008000;">groups = []</span><br />
<span style="color:#008000;">uniquekeys = []</span><br />
<span style="color:#008000;">data = sorted(a)</span><br />
<span style="color:#008000;">for k, g in groupby(a, lambda i: i+&#8217;a'):</span><br />
<span style="color:#008000;"> uniquekeys.append(k)</span><br />
<span style="color:#008000;"> groups.append(list(g))</span></p></blockquote>
<p><strong>Combinatories Functions</strong></p>
<blockquote><p><span style="color:#008000;"><tt>permutations('ABCD', 2)<br />
combinations('ABCD', 2)<br />
combinations_with_replacement('ABCD', 2)</tt></span></p></blockquote>
<p><strong>Join/Cross Product</strong></p>
<p><strong><br />
</strong></p>
<h2>Conclusiones</h2>
<p>No demasiadas, simplemente que me gusta mas la notación de C#. Especialmente porque se puede leer secuencialmente las operaciones y transformaciones. Por el contrario las operaciones de Python se aplican de forma anidada por lo que se leen en orden inverso de aplicación. Un muy buen aspecto positivo de Python es que sus librerías incluyen la diversas funciones combinatorias cosa que c# no, esto es algo que me parece básico.</p>
<p>También, desde mi punto de vista decir que tiene mas mérito que c# llegue a este nivel de expresividad dado que es un lenguaje fuertemente tipado y estático (en su mayor parte). El compilador de c# hace un buen trabajo.</p>
<h2>Referencias</h2>
<p>Trabajo en python:<br />
<a href="http://docs.python.org/library/itertools.html">http://docs.python.org/library/itertools.html</a><br />
<a href="http://www.siafoo.net/article/52">http://www.siafoo.net/article/52</a><br />
<a href="http://www.artima.com/weblogs/viewpost.jsp?thread=98196">http://www.artima.com/weblogs/viewpost.jsp?thread=98196</a></p>
<p>Read related <em>developerWorks</em> articles by David Mertz:</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-prog.html">Functional programming in Python, Part 1</a></li>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-prog2.html">Functional programming in Python, Part 2</a></li>
<li><a href="http://www.ibm.com/developerworks/linux/library/l-prog3.html">Functional programming in Python, Part 3</a></li>
</ul>
<p><a href="http://sayspy.blogspot.com/2006/02/why-python-doesnt-need-something-like.html">http://sayspy.blogspot.com/2006/02/why-python-doesnt-need-something-like.html</a><br />
<a href="http://srtsolutions.com/public/blog/251010">http://srtsolutions.com/public/blog/251010</a><br />
<a href="http://docs.python.org/py3k/tutorial/datastructures.html#sets">http://docs.python.org/py3k/tutorial/datastructures.html#sets</a></p>
<p>Copias de linq a python:<br />
<a href="http://lost-theory.org/python/enum2.txt">http://lost-theory.org/python/enum2.txt</a><br />
<a href="http://themechanicalbride.blogspot.com/2007/03/linq-to-python.html">http://themechanicalbride.blogspot.com/2007/03/linq-to-python.html</a><br />
<a href="http://lost-theory.org/python/enum3.txt">http://lost-theory.org/python/enum3.txt</a></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/567/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=567&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/07/clinq-vs-python-functional-and-data-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Robotics &#8211; Simultaneous Localization And Mapping (SLAM) con ROS</title>
		<link>http://geus.wordpress.com/2010/12/02/robotics-simultaneous-localization-and-mapping-slam-con-ros/</link>
		<comments>http://geus.wordpress.com/2010/12/02/robotics-simultaneous-localization-and-mapping-slam-con-ros/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 19:54:44 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[ROS]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=801</guid>
		<description><![CDATA[Una tarea muy importante que debe realizar un robot autónomo es adivinar donde está localizado dado un mapa conocido, en  la bibliografía este problema es referido como &#8220;el problema de la localización&#8221;. Las cosas se complican cuando el mapa también es desconocido: Esta situación se conoce como &#8220;The kidnaped robot problem&#8221;. En estos casos hay [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=801&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2010/12/rviz-slam.png"><img class="alignright size-full wp-image-813" style="margin:10px;" title="rviz-slam" src="http://geus.files.wordpress.com/2010/12/rviz-slam.png?w=630" alt=""   /></a>Una tarea muy importante que debe realizar un robot autónomo es adivinar donde está localizado dado un mapa conocido, en  la bibliografía este problema es referido como <em>&#8220;el problema de la localización&#8221;</em>. Las cosas se complican cuando el mapa también es desconocido: Esta situación se conoce como <em>&#8220;The kidnaped robot problem&#8221;</em>. En estos casos hay que utilizar técnicas de <a href="http://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping">SLAM (Localización y Mapeo Simultaneo)</a> para ambos: localizarse y construir el mapa del entorno simultáneamente. De forma laxa podríamos decir que se trata de un tipo de exploración del robot en un entorno desconocido. Existen muchas y diversas técnicas de SLAM típicamente para 2D y 3D y utilizando sensores Lasers Rangers, Sonars o Cámaras mono o estéreo.</p>
<p style="text-align:justify;">ROS dispone de varios paquetes para realizar SLAM usando visión  con cámaras y principalmente usando Lasers Rangers: <a href="http://www.ros.org/wiki/vslam">vslam</a>, <a href="http://www.ros.org/wiki/gmapping">gmapping</a>, <a href="http://www.ros.org/wiki/karto">kartoMapping</a>, <a href="http://www.ros.org/wiki/graph_mapping">graphmapping</a>.</p>
<p style="text-align:justify;">Este post trataremos como arrancar un ejemplo básico con gmapping, El objetivo es aprender vagamente como funciona y poder aplicarlo en nuestros proyectos.</p>
<p style="text-align:center;"><span style="text-align:center; display: block;"><a href="http://geus.wordpress.com/2010/12/02/robotics-simultaneous-localization-and-mapping-slam-con-ros/"><img src="http://img.youtube.com/vi/zIgoFqeVc4M/2.jpg" alt="" /></a></span></p>
<h2 style="text-align:justify;">El algoritmo GMapping</h2>
<p style="text-align:justify;"><a href="http://openslam.org/">GMapping</a> es una librería libre perteneciente al proyecto <a href="http://openslam.org/">OpenSLAM</a> y que implementa una extensión la técnica <a href="http://www.informatik.uni-freiburg.de/~stachnis/pdf/grisetti06tro.pdf">SLAM Grid Mapping</a>. En cualquier caso, utilizaremos este software como si fuera una caja negra. Sabemos que su salida son la localización del robot en el mapa y el mapa en si mismo. Como entradas toma  información periódica sobre una estimación de la posición del robot (odometría &#8211; calculada por los encoders del motor) y la medida del sensor laser ranger (vector de distancia) en un entorno con superficie plana.</p>
<h2>Demo GMapping en ROS</h2>
<p style="text-align:justify;">¿Como probar este software en ROS? Sencillo, la gente de <a href="http://www.ros.org/wiki/bosch-ros-pkg">Bosch</a> ya ha realizado una demo, con el simulador stage para que podamos abordar el problema. Esta demo está localizado en el paquete <a href="http://www.ros.org/wiki/explore_stage">explore_stage</a>. Consiste en un mapa desconocido por un robot móvil tipo erratic. Observemos la wiki del paquete vemos la siguiente información de repositorio donde se ubica el código:</p>
<ul style="text-align:justify;">
<li>Repository: <a href="http://www.ros.org/wiki/bosch-ros-pkg">bosch-ros-pkg</a></li>
<li>Source: svn <a href="https://bosch-ros-pkg.svn.sourceforge.net/svnroot/bosch-ros-pkg/trunk/stacks/exploration/explore_stage">https://bosch-ros-pkg.svn.sourceforge.net/svnroot/bosch-ros-pkg/trunk/stacks/exploration/explore_stage</a></li>
</ul>
<p style="text-align:justify;">Descargaremos todo el directorio <em>[...]stacks/exploration/demos</em> ya que contiene algunos paquetes adicionales con mapas y modelos que nos serán necesarios.</p>
<blockquote><p>geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos$ svn co https://bosch-ros-pkg.svn.sourceforge.net/svnroot/bosch-ros-pkg/trunk/stacks/exploration<br />
<em>[...]</em><br />
geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos/exploration$ roscd explore_stage/<br />
geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos/exploration/explore_stage$ ls<br />
<em>config   explore.launch       explore_slam.xml  explore.xml   move.xml</em><br />
<em>explore  explore_slam.launch  explore.vcg       manifest.xml</em></p></blockquote>
<p style="text-align:justify;">Como se observa el paquete es muy sencillo, solo algunos componentes .launch con la aplicaciones.  Antes que nada compilemos el stack exploration ya que contiene un paquete exploration/explore con el código para realizar la exploración en el mapa desconocido.</p>
<blockquote>
<p style="text-align:justify;">geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos/exploration/explore$ rosmake exploration<br />
<em>[ rosmake ] Packages requested are: ['exploration'] </em><em> </em><br />
<em>[...]</em><br />
<em>[ rosmake ] Results: </em><br />
<em>[ rosmake ] Built 53 packages with 0 failures. </em></p>
</blockquote>
<p style="text-align:justify;">En concreto la aplicación de explorar está en el explore_slam.launch. Lanzamos la aplicación:</p>
<blockquote>
<p style="text-align:justify;">geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos/exploration/explore_stage$ roslaunch explore_slam.launch</p>
</blockquote>
<h2>Algunos problemas con Stage</h2>
<p style="text-align:justify;">Pueden que los usuarios de ubuntu reciban el siguiente error, debido a los cambios en la política de archivos del servidor gráfico X11. Existe un problema que no se encuentra el archivo rgb.txt que es una base de datos con colores.</p>
<blockquote>
<p style="text-align:justify;">[Loading /opt/ros/cturtle/stacks/external/full_organization_repositories/bosh-ros-pkg/bosch_demos/bosch_worlds/maze-noisy.world][Include segway-noisy.inc][Include sick.inc][ INFO] [1291307466.316198795]: Subscribed to Topics: base_scan<br />
err: unable to open color database: No such file or directory (try adding rgb.txt&#8217;s location to your STAGEPATH) (/tmp/buildd/ros-cturtle-simulator-stage-1.2.1/debian/ros-cturtle-simulator-stage/opt/ros/cturtle/stacks/simulator_stage/stage/build/Stage-3.2.2-Source/libstage/color.cc Color)</p>
</blockquote>
<p style="text-align:justify;">El problema se soluciona de forma sencilla añadiendo a la variable de entorno $STAGEPATH una ruta que contenga un rgb.txt correcto. En nuestro caso, el mismo paquete stage contiene ese archivo. Lo añadimos:</p>
<blockquote>
<p style="text-align:justify;">geus@geus-vaio:/opt/ros/cturtle/stacks$ find $ROS_PACKAGE_PATH | grep rgb.txt<br />
<em>/opt/ros/cturtle/stacks/simulator_stage/stage/share/stage/assets/rgb.txt</em><br />
<em>/opt/ros/cturtle/stacks/simulator_stage/stage/share/stage/rgb.txt</em><br />
<em>/opt/ros/cturtle/stacks/simulator_stage/stage/build/Stage-3.2.2-Source/assets/rgb.txt</em><br />
<em>/opt/ros/cturtle/stacks/simulator_stage/stage/build/Stage-3.2.2-Source/libstage/rgb.txt<br />
</em>geus@geus-vaio:/opt/ros/cturtle/stacks$ export STAGEPATH=`rospack find stage`/share/stage<br />
geus@geus-vaio:/opt/ros/cturtle/stacks$ echo $STAGEPATH<br />
<em>/opt/ros/cturtle/stacks/simulator_stage/stage/share/</em></p>
</blockquote>
<p>Ahora si. Lanzamos y ya funciona y podemos ver como arrancan varios procesos definidos en el archivo .launch.</p>
<blockquote><p>geus@geus-vaio:/opt/ros/cturtle/stacks/external/demos/exploration/explore_stage$ roslaunch ./explore_slam.launch</p></blockquote>
<p>Otra alternativa es añadir en el archivo explore_slam.launch el <a href="http://www.ros.org/wiki/roslaunch/XML/env">valor de la variable de entorno</a>:</p>
<p><pre class="brush: xml;">


...
</pre></p>
<h2>Interpretación de resultados</h2>
<p style="text-align:justify;">Tras lanzar el explore_slam.launch se ejecutan diversos procesos ROS. Entre ellos se abre el simulador stage, mostrado en la imagen. A los pocos segundos, tras algo de proceso el robot empieza a navegar y a explorar su entorno. Para poder ver bien que está ocurriendo podemos abrir la herramienta rviz. Primera imagen de este artículo.</p>
<p style="text-align:center;"><a href="http://geus.files.wordpress.com/2010/12/stage_slam_2.png"><img class="size-full wp-image-812 aligncenter" style="border:1px solid black;margin-top:5px;margin-bottom:5px;" title="stage_slam_2" src="http://geus.files.wordpress.com/2010/12/stage_slam_2.png?w=630" alt=""   /></a></p>
<blockquote><p>geus@geus-vaio:/opt/ros/cturtle/stacks$ rosrun rviz rviz</p></blockquote>
<p>Añadimos los visualizadores (plugins) de rviz &#8220;map&#8221;, &#8220;tf&#8221; y &#8220;laser scan&#8221;.</p>
<ul>
<li>&#8220;map&#8221; &#8211; sirve para que podamos ver el mapa que se está construyendo.  Mas concretamente monitorizar los mensajes de tipo <a href="http://www.ros.org/wiki/nav_msgs">nav_msgs</a>/OccupancyGrid publicados en el topic &#8220;/map&#8221;.</li>
<li>&#8220;tf&#8221; &#8211; sirve para monitorizar la posición estimada por el sistema SLAM.</li>
<li>&#8220;laser scan&#8221;- sirve para monitorizar el escaneo laser que está realizando el robot. Mas concretamente mensajes del tipo <a href="http://www.ros.org/wiki/sensor_msgs">sensor_msgs</a>/LaserScan</li>
</ul>
<p>Podemos observar que se han creado tres procesos principales: &#8220;/explore&#8221; &#8220;/move_base&#8221; &#8220;/stage&#8221; &#8220;/gmaping&#8221;.</p>
<ul>
<li>&#8220;/stage&#8221;- es el nodo simulador. Se limita a enviar al exterior mensajes de las lecturas del laser y la posición del robot a través del tópic /tf. También acepta comandos de movimiento a través del topic /cmd_vel</li>
<li>&#8220;/gmaping&#8221;- es el nodo que crea que realiza el SLAM. Crea el mapa a partir de la posición estimada y las lecturas del sensor Laser (topic /base_scan de tipo &#8220;sensor_msgs/LaserScan&#8221;).</li>
<li>&#8220;/explore&#8221; &#8211; es el nodo que realiza el algoritmo de exploración. Utiliza el mapa resultante y la posición del robot para estimar zonas donde es mas interesante seguir explorando. Una vez decidido un plan de exploración se lo indica al nodo &#8220;/move_base&#8221;</li>
<li>&#8220;/move_base&#8221; &#8211; es el nodo que se encarga de ejecutar un plan de ejecución. Se trata de un paquete esencial y genérico que ROS provee. Simplente sigue las ordenes del nodo &#8220;/explore&#8221; y ordena al &#8220;/stage&#8221; como debe mover los motores haciendo uso del topic &#8220;/cmd_vel&#8221; de tipo de mensaje &#8220;<a href="http://www.ros.org/wiki/geometry_msgs">geometry_msgs</a>/Twist<br />
&#8220;, siempre intentando crear una trayectoria sin colisionar.</li>
</ul>
<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2010/12/rxgraph_slam.png"><img class="alignright size-full wp-image-808" style="border:solid 1px black;margin:5px;" title="rxgraph_slam" src="http://geus.files.wordpress.com/2010/12/rxgraph_slam.png?w=630&#038;h=323" alt="" width="630" height="323" /></a>Esto es todo. Si lográis sustituir el nodo stage por un robot real con odometría y sensor laser, tenéis un sistema de SLAM listo para ser ejecutado.</p>
<p style="text-align:justify;">Saludos y Happy Robotics! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/linkedin/'>linkedin</a>, <a href='http://geus.wordpress.com/tag/ros/'>ROS</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/801/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/801/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/801/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=801&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/12/02/robotics-simultaneous-localization-and-mapping-slam-con-ros/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2010/12/rviz-slam.png" medium="image">
			<media:title type="html">rviz-slam</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2010/12/stage_slam_2.png" medium="image">
			<media:title type="html">stage_slam_2</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2010/12/rxgraph_slam.png" medium="image">
			<media:title type="html">rxgraph_slam</media:title>
		</media:content>
	</item>
		<item>
		<title>Delitos telemáticos</title>
		<link>http://geus.wordpress.com/2010/10/31/delitos-telematicos/</link>
		<comments>http://geus.wordpress.com/2010/10/31/delitos-telematicos/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 15:23:13 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=783</guid>
		<description><![CDATA[Hoy día, las estafas y los ataques en internet están a la orden del día. Algunos son difíciles de detectar, especialmente para el internauta de a pie. Otros sin embargo, son sencillos de identificar y deberíamos educarnos como sociedad en identificarlos y denunciarlos. Algunos ejemplos clásicos son los intentos de obtención de datos bancarios vía [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=783&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://geus.files.wordpress.com/2010/10/clint_eastwood.jpg"><img class="alignright size-full wp-image-784" style="margin:15px;" title="clint_eastwood" src="http://geus.files.wordpress.com/2010/10/clint_eastwood.jpg?w=630" alt=""   /></a>Hoy día, las estafas y los ataques en internet están a la orden del día. Algunos son difíciles de detectar, especialmente para el internauta de a pie. Otros sin embargo, son sencillos de identificar y deberíamos educarnos como sociedad en identificarlos y denunciarlos. Algunos ejemplos clásicos son los intentos de obtención de datos bancarios vía email (pishing), los premios ficticios, el mercado de alquiler y venta de pisos online hay estafas flagrantemente llamativas de inquilinos &#8220;que están de viaje&#8221; y que solo aceptan los pagos por pasarelas electrónicas como &#8220;western union&#8221;.</p>
<p style="text-align:justify;">Una notificación o denuncia a los delitos telemáticos puede hacerse <strong>en cuestión de 30 segundos</strong>, escribiendo una nota y añadiendo un par de enlaces y/o indicios de delitos, ips, emails, etc. Solo es necesario ir a la página web de <a href="https://www.gdt.guardiacivil.es/webgdt/home_alerta.php">Delitos Telemáticos de la Guardia Civil</a> <strong>(añadirla favoritos)</strong> y rellenar un formulario (email, localidad y descripción).</p>
<p style="text-align:justify;">Aún no somos conscientes de la enorme importancia que tiene para una sociedad y país tener una educación en hábitos y seguridad fuerte en internet.  Muchas guerras de hoy día son ya en internet, y mas aún lo serán en el futuro, nosotros somos simples civiles. Hoy día internet es lo mas parecido a una jungla o al salvaje oeste: estafadores, pistoleros, bandas organizadas, sherifs, heroes, villanos y gente inocente/ingenua.  Cada uno intenta aplicar su propia ley y solo los precavidos consiguen vivir muchos años sin tener problemas. Tenemos que educarnos a nosotros mismos a denunciar y protestar contra estos ataques.</p>
<br />Filed under: <a href='http://geus.wordpress.com/category/society/'>Society</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/783/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=783&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/10/31/delitos-telematicos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

		<media:content url="http://geus.files.wordpress.com/2010/10/clint_eastwood.jpg" medium="image">
			<media:title type="html">clint_eastwood</media:title>
		</media:content>
	</item>
		<item>
		<title>Algoritmo de combinaciones con C#/LINQ</title>
		<link>http://geus.wordpress.com/2010/10/26/algoritmo-de-combinaciones-con-clinq/</link>
		<comments>http://geus.wordpress.com/2010/10/26/algoritmo-de-combinaciones-con-clinq/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 08:53:45 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Science and Technical]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=771</guid>
		<description><![CDATA[Aunque se trata de un problema sencillo, típicamente estudiado en asignaturas de 1º o 2º como &#8220;Introducción a la programación&#8221; o &#8220;Análisis y Diseño de Algoritmos&#8221; me gustaría compartir el código de las combinaciones en C# con LINQ. La verdad es que he implementado varias veces en mi vida este algoritmo (en varios lenguajes), sin [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=771&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aunque se trata de un problema sencillo, típicamente estudiado en asignaturas de 1º o 2º como &#8220;Introducción a la programación&#8221; o &#8220;Análisis y Diseño de Algoritmos&#8221; me gustaría compartir el código de las combinaciones en C# con LINQ. La verdad es que he implementado varias veces en mi vida este algoritmo (en varios lenguajes), sin embargo esta implementación en concreto me parece peculiar y me recuerda mucho a la resolución en lenguajes declarativos tipo Prolog. Ahí la dejo por si a alguien le sirve.</p>
<p><pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.Linq;

namespace Combinatory
{
	public static class Combinatory
	{
		public static IEnumerable&lt;IEnumerable&lt;T&gt;&gt; Combinations&lt;T&gt; (IEnumerable&lt;T&gt; elements, int setLenght)
		{
		int elementLenght=elements.Count ();
			if ( setLenght == 1) 
				return elements.Select(e=&gt;Enumerable.Repeat (e, 1));
			else if(setLenght==elementLenght)
				return Enumerable.Repeat(elements,1);
			else 
			{
				return Combinations (elements.Skip (1), setLenght - 1)
								.Select (tail =&gt; Enumerable.Repeat (elements.First (), 1).Union (tail))
								.Union(Combinations (elements.Skip (1), setLenght));
			}
		}
	}
}
</pre></p>
<br />Filed under: <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/771/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/771/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/771/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=771&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/10/26/algoritmo-de-combinaciones-con-clinq/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>
	</item>
		<item>
		<title>Desarrollo en ROS con Eclipse</title>
		<link>http://geus.wordpress.com/2010/10/21/desarrollo-en-ros-con-eclipse/</link>
		<comments>http://geus.wordpress.com/2010/10/21/desarrollo-en-ros-con-eclipse/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 16:17:54 +0000</pubDate>
		<dc:creator>geus</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Science and Technical]]></category>
		<category><![CDATA[ROS]]></category>

		<guid isPermaLink="false">http://geus.wordpress.com/?p=752</guid>
		<description><![CDATA[Hemos hablado diversos posts sobre la plataforma ROS y ya sabemos de su potencia: ROS ¿El nuevo estándar de facto en robótica? Como instalar y utilizar un paquete de un repositorio federado Por desgracia ROS, a pesar de su buena organización y documentación no presenta una curva de aprendizaje rápida. Inicialmente cuesta ubicarse entre tantos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=752&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Hemos hablado diversos posts sobre la plataforma ROS y ya sabemos de su potencia:</p>
<ul>
<li> <a href="http://geus.wordpress.com/2010/04/17/ros-%c2%bfel-nuevo-estandar-de-facto-en-robotica/">ROS ¿El nuevo estándar de facto en robótica? </a></li>
<li><a href="http://geus.wordpress.com/2010/10/03/ros-como-instalar-y-utilizar-un-paquete-de-un-repositorio-federado/">Como instalar y utilizar un paquete de un repositorio federado</a><a href="http://geus.files.wordpress.com/2010/10/screenshot8.png"><img class="alignright size-medium wp-image-753" style="margin:15px;" title="screenshot8" src="http://geus.files.wordpress.com/2010/10/screenshot8.png?w=300&#038;h=280" alt="" width="300" height="280" /></a></li>
</ul>
<p style="text-align:justify;">Por desgracia ROS, a pesar de su buena organización y documentación no presenta una curva de aprendizaje rápida. Inicialmente cuesta ubicarse entre tantos paquetes existentes y además el proceso de desarrollo puede ser lento si no se dispone de un IDE adecuado.</p>
<p style="text-align:justify;">Eclipse puede solucionar ambos problemas simultáneamente, nos permitirá desarrollar de una manera mas cómoda y a la vez nos permitirá ubicarnos entre los distintos paquetes de ROS y aprender mas rápidamente. Con Eclipse es mas sencillo navegar entre los ficheros de código, paquetes y stacks. Por ejemplo cuando un símbolo en c++ es extraño para nosotros podemos ir a su definición usando ctrl+ left click. Además el desarrollo de nuevos paquetes es también mas sencillo dado que se puede utilizar el autocompletar. Por último también podrás depurar tu proyecto. Algo bastante importante.</p>
<p><strong>Pasos para poder compilar y usar la herramienta de auto-completar</strong>:</p>
<ol>
<li>Descargar Eclipse con soporte CDT</li>
<li> Establecer el workspace de eclipse en la raíz de la instalación (el directorio base de roscd)</li>
<li>Arrancar desde consola el eclipse (se supone que tenéis registrado en vuestro .bashrc el setup.sh de ROS)</li>
<li>Crear un nuevo proyecto C++ llamado stacks (directorio ya existente, aparecerá un warning)
<ol></ol>
<ul>
<li>Utilizar el tipo C++ -&gt; Makefile Project -&gt; Empty Project -&gt; Ohter Toolchain</li>
</ul>
<ol></ol>
</li>
<li>Crear otro proyecto C++ llamado ros (directorio ya existente)</li>
<li>Si te interesa compilar un paquete concreto, en las propiedades del proyecto-&gt; C/C++ Build
<ol>
<li>
<ul>
<li>make -C .</li>
</ul>
<ul>
<li>make -C . VERBOSE=1</li>
<li>rosmake <em>nombrepaquete</em></li>
</ul>
</li>
</ol>
<ul>
<li>Elige en BuildLocation-&gt; Build Directory -&gt; La url del paquete que deses compilar (es útil utilizar el botón workspace)</li>
</ul>
<ul>
<li>Deschequea el checkbox &#8220;Use Default Build Command&#8221; para utilizar un comando de construcción personalizado. Puedes poner varias alternativas</li>
</ul>
</li>
<li>Establece en el &#8220;Build Directory&#8221; el directorio del paquete que desees construir (haciendo uso del botón Workspace)</li>
<li>Fin. Estas listo para navegar por el código de ros y recompilar paquetes</li>
<li>Realizar el mismo proceso de creación de un proyecto para la carpeta /opt/ros/cturtle/ros, de esta forma podrás también navegar en las librerías básicas de ROS
<ol>
<li>
<ul></ul>
</li>
</ol>
</li>
</ol>
<p style="text-align:center;"><a href="http://geus.files.wordpress.com/2010/10/screenshot11.png"><img class="size-full wp-image-764 aligncenter" title="screenshot11" src="http://geus.files.wordpress.com/2010/10/screenshot11.png?w=630&#038;h=394" alt="" width="630" height="394" /></a></p>
<p><a href="http://geus.files.wordpress.com/2010/10/screenshot10.png"><br />
</a></p>
<p><strong>Observaciones:</strong></p>
<ol>
<li style="text-align:justify;">El autocompletar dentro del proyecto &#8220;stacks&#8221; funcionará correctamente pero solo con el código que esté situado en stacks. Por ejemplo &lt;ros/ros.h&gt; no funcionará puesto que está en el otro proyecto &#8220;ros&#8221;, para que funcione el autocompletar hay que establecer los Paths and Symbols en las propiedades del proyecto.</li>
<li style="text-align:justify;">Suponiendo que la instalación del código que estás utilizando es cturtle u otra instalación por defecto proveniente de un repositorio, es interesante crear un enlace simbólico en la carpeta /opt/ros/cturtle/stacks ($ROS_PACKAGE_PATH) a una carpeta externa donde ubiquemos nuestros proyectos y otras descargas o compilaciones manuales (por ejemplo de <a href="http://geus.wordpress.com/2010/10/03/ros-como-instalar-y-utilizar-un-paquete-de-un-repositorio-federado/ [screenshot8]">otros repositorios federados</a>)</li>
</ol>
<br />Filed under: <a href='http://geus.wordpress.com/category/robotics/'>Robotics</a>, <a href='http://geus.wordpress.com/category/science-and-technical/'>Science and Technical</a> Tagged: <a href='http://geus.wordpress.com/tag/ros/'>ROS</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/geus.wordpress.com/752/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/geus.wordpress.com/752/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/geus.wordpress.com/752/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=geus.wordpress.com&amp;blog=489820&amp;post=752&amp;subd=geus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://geus.wordpress.com/2010/10/21/desarrollo-en-ros-con-eclipse/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/239e6bcc732cc6d5a4f528d7f0c88ca2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">GeuS</media:title>
		</media:content>

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

		<media:content url="http://geus.files.wordpress.com/2010/10/screenshot11.png" medium="image">
			<media:title type="html">screenshot11</media:title>
		</media:content>
	</item>
	</channel>
</rss>
