<?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/"
	>

<channel>
	<title>Ricardo Téllez &#8211; Robohub</title>
	<atom:link href="https://robohub.org/author/ricardo-tellez/feed/" rel="self" type="application/rss+xml" />
	<link>https://robohub.org</link>
	<description>Connecting the robotics community to the world</description>
	<lastBuildDate>Mon, 05 Oct 2026 01:10:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Flowstate: Intrinsic’s app to simplify the creation of robotics applications</title>
		<link>https://robohub.org/flowstate-intrinsics-app-to-simplify-the-creation-of-robotics-applications/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Sun, 18 Jun 2023 08:30:04 +0000</pubDate>
				<category><![CDATA[opinions]]></category>
		<guid isPermaLink="false">https://www.theconstructsim.com/?p=37325</guid>

					<description><![CDATA[Finally, Intrinsic (a spin-off of Google-X) has revealed the product they have been working with the help of the Open Source Robotics Corporation team (among others): Flowstate! What is Flowstate? Flowstate is a web-based software designed to simplify ...]]></description>
										<content:encoded><![CDATA[<div id="attachment_207545" style="width: 1034px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-207545" src="https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-1024x466.jpg" alt="" width="1024" height="466" class="size-large wp-image-207545" srcset="https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-1024x466.jpg 1024w, https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-425x194.jpg 425w, https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-768x350.jpg 768w, https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-1536x700.jpg 1536w, https://robohub.org/wp-content/uploads/2023/06/intrinsic_flowstate-2048x933.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-207545" class="wp-caption-text"><em>Copyright by Intrinsic</em>.</p></div>
<p>Finally, <a href="http://intrinsic.ai/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Intrinsic</a> (a spin-off of Google-X) has revealed the product they have been working with the help of the <em>Open Source Robotics Corporation</em> team (among others): <strong>Flowstate</strong>!</p>
<h2>What is Flowstate?</h2>
<div id="attachment_207547" style="width: 522px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-207547" src="https://robohub.org/wp-content/uploads/2023/06/unnamed.jpg" alt="" width="512" height="288" class="size-full wp-image-207547" srcset="https://robohub.org/wp-content/uploads/2023/06/unnamed.jpg 512w, https://robohub.org/wp-content/uploads/2023/06/unnamed-425x239.jpg 425w" sizes="(max-width: 512px) 100vw, 512px" /><p id="caption-attachment-207547" class="wp-caption-text">Introducing Intrinsic Flowstate | Intrinsic (<em>image copyright by Intrinsic</em>)</p></div>
<p>Flowstate is a web-based software designed to simplify the creation of software applications for industrial robots. The application provides a user-friendly desktop environment where blocks can be combined to define the desired behavior of an industrial robot for specific tasks.</p>
<h3>Good points</h3>
<ul>
<li>Flowstate offers a range of features, including <strong>simulation testing</strong>, <strong>debugging tools</strong>, and seamless <strong>deployment to real robots</strong>.</li>
<li>It is <strong>based on ROS</strong>, so we should be able to use our favorite framework and all the existing software to program on it, including Gazebo simulations.</li>
<li>It has a behavior tree based system to graphically control the flow of the program, which simplifies the way to create programs by <em>just</em> moving blocks around. But it is also possible to switch to expert mode to manually touch the code.</li>
<li>It has a library of already existing <strong>robot models and hardware</strong> ready to be added, but you can also add your own.</li>
<li>Additionally, the application provides <strong>pre-built AI skills</strong> that can be utilized as modules to achieve complex AI results without the need for manual coding.</li>
<li>One limitiation (but I actually consider a good point) is that the tool is thought <strong>for industrial robots</strong> not for service robots in general. This is good because it provides a focus for the product, specially for this initial release</li>
</ul>
<div id="attachment_207548" style="width: 1034px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-207548" src="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-1-1024x531.jpg" alt="" width="1024" height="531" class="size-large wp-image-207548" srcset="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-1-1024x531.jpg 1024w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-1-425x220.jpg 425w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-1-768x398.jpg 768w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-1.jpg 1240w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-207548" class="wp-caption-text">Flowstate | Intrinsic (<em>image copyright by Intrinsic</em>)</p></div>
<p>Based on the official post and the keynote released on Monday, May 15, 2023 (available <a href="https://intrinsic.ai/blog/posts/introducing-intrinsic-flowstate/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">here</a>), this is the information we have gathered so far. However, we currently lack a comprehensive understanding of how the software works, its complete feature set, and any potential limitations. To gain more insights, we must wait until July of this year, hoping that I will be among the lucky participants selected for the private beta (open call to the beta still available <a href="https://intrinsic.ai/beta/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">here</a>).</p>
<h3>Unclear points</h3>
<p>Even if I find interesting the proposal of Intrinsic, I have identified three potential concerns regarding it:</p>
<ol>
<li><strong>Interoperability across different hardware and software platforms poses a challenge</strong>. <a href="https://www.youtube.com/live/Vk5vuLMJbDI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The recruitment of the full OSRC team by Intrinsic</a> appears to address this issue, given that ROS is currently the closest system in the market to achieve such interoperability. However, widespread adoption of ROS by industrial robot manufacturers is still limited, with only a few companies embracing it.
<p>Ensuring hardware interoperability necessitates the adoption of a common framework by robot manufacturers, which is currently a distant reality. What we, ROS developers, aim right now is to be able to have somebody build the ROS drivers for the robotic arm we want to use (like for example the manufacturers of the robot, or the team of <a href="https://rosindustrial.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Industrial</a>). However, manufacturers generally hesitate to develop ROS drivers due to potential business limitations and their aims for customer lock-in. Unless a platform dedicates substantial resources to developing and maintaining drivers for supported robots, the challenge of hardware interoperability cannot be solved by a platform alone (actually, that is one of the goals that ROS-Industrial is trying to achieve).</p>
<p>Google possesses the potential to unite hardware companies towards this goal, as Wendy Tan White, the CEO of Intrinsic mentioned, “<em>This is an ecosystem effort</em>” However, it is crucial for the industrial community to perceive tangible benefits and value in supporting this initiative beyond merely assisting others in building their businesses. The specific benefits that the ecosystem stands to gain by supporting this initiative remain unclear.</li>
<div id="attachment_207549" style="width: 1034px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-207549" src="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-2-1024x505.jpg" alt="" width="1024" height="505" class="size-large wp-image-207549" srcset="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-2-1024x505.jpg 1024w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-2-425x210.jpg 425w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-2-768x379.jpg 768w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-2.jpg 1242w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-207549" class="wp-caption-text">Flowstate | Intrinsic (<em>image copyright by Intrinsic</em>)</p></div>
<li><strong>The availability of pre-made AI skills for robots is a complex task</strong>. Consider the widely used skills in ROS, such as navigation or arm path planning, exemplified by <a href="https://navigation.ros.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Nav2</a> and <a href="https://moveit.ros.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MoveIt</a>, which offer excellent functionality. However, integrating these skills into new robots is not as simple as plug-and-play. In fact, <a href="https://app.theconstructsim.com/courses/109" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">dedicated courses exist</a> to teach users how to effectively utilize the different components of navigation within a robot. This highlights the challenges associated with implementing such skills for robots in general. Thus, it is reasonable to anticipate similar difficulties in developing pre-made skills within Flowstate.
</li>
<li>
A final point that I don’t see clear (because it was not addressed in the presentation) is <strong>how the company is going to do business with Flowstate</strong>. This is a very important point for every robotics developer because we don’t want to be locked into proprietary systems. We understand that companies must have a business, but we want to understand clearly what the business is so we can decide if that is convenient or not for us, both in the short and the long run. For instance, Robomaker from Amazon did not gain much traction because forced the developers to pay for the cloud while running Robomaker, when they could do the same thing (with less fancy stuff) in their own local computers for free
</li>
</ol>
<h2>Conclusion</h2>
<p>Overall, while Flowstate shows promising, further information and hands-on experience are required to assess its effectiveness and address potential challenges.</p>
<p>I have applied to the restricted beta. I hope to be selected so I can have a first hand experience and report about it.</p>
<p>Please make sure to read the original post by Wendy Tan White and the keynote presentation, both can be found at the <a href="https://intrinsic.ai/blog/posts/introducing-intrinsic-flowstate" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">web of Intrinsic</a>.</p>
<div id="attachment_207550" style="width: 1034px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-207550" src="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-3-1024x537.jpg" alt="" width="1024" height="537" class="size-large wp-image-207550" srcset="https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-3-1024x537.jpg 1024w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-3-425x223.jpg 425w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-3-768x403.jpg 768w, https://robohub.org/wp-content/uploads/2023/06/intrinsic-flowstate-3.jpg 1231w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-207550" class="wp-caption-text">Flowstate | Intrinsic (<em>image copyright by Intrinsic</em>)</p></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ROS Awards 2022 results</title>
		<link>https://robohub.org/ros-awards-2022-results/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Sat, 02 Jul 2022 09:30:17 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<guid isPermaLink="false">https://www.theconstructsim.com/?p=29736</guid>

					<description><![CDATA[The ROS Awards are the Oscars of the ROS world! The intention of these awards is to express recognition for contributions to the ROS community and the development of the ROS-based robot industry, and to help those contributions gain awareness. Conditio...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/ros-awards-2022.002-1024x535.png" alt="" width="1024" height="535" class="aligncenter size-large wp-image-204922" srcset="https://robohub.org/wp-content/uploads/2022/06/ros-awards-2022.002-1024x535.png 1024w, https://robohub.org/wp-content/uploads/2022/06/ros-awards-2022.002-425x222.png 425w, https://robohub.org/wp-content/uploads/2022/06/ros-awards-2022.002-768x401.png 768w, https://robohub.org/wp-content/uploads/2022/06/ros-awards-2022.002.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>The ROS Awards are the Oscars of the ROS world! The intention of these awards is to express recognition for contributions to the ROS community and the development of the ROS-based robot industry, and to help those contributions gain awareness.</p>
<p><strong>Conditions</strong></p>
<ul>
<li>Selection of the winners is made by anonymous online voting over a period of 2 weeks</li>
<li>Anybody in the ROS community can vote through the <a href="https://www.theconstructsim.com/ros-awards-2022/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">voting enabled website</a></li>
<li>Organizers of the awards provide an initial list of 10 possible projects for each category but the list can be increased at any time by anybody during the voting period</li>
<li>Since the Awards are organized by <a href="https://www.theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> none of its products or developers can be voted</li>
<li>Winners are announced at the <a href="http://www.rosdevday.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Day</a> yearly conference</li>
<li><strong>New on 2022 edition:</strong> Winners of previous editions cannot win again, in order to not concentrate the focus on the same projects all the time. Remember, with these awards, we want to help spread all ROS projects!</li>
</ul>
<p><strong>Voting</strong></p>
<ol>
<li>Every person can only vote once in each category</li>
<li>You cannot change your answers once you have submitted your vote</li>
<li>Voting is closed 3 days before the conference, and a list of the finalists per each category is announced in the same week</li>
<li>Voters cannot use flaws in the system to influence voting. Any detection of trying to trick the system will disqualify the votes. You can, though, promote your favorite among your networks so others vote for it.</li>
</ol>
<p>Measures have been taken to prevent as much as possible batch voting from a single person.</p>
<h2>Categories</h2>
<h3>Best ROS Software</h3>
<p>The Best ROS Software category comprises any software that runs with ROS. It can be a package published on the ROS.org repo of just a software that uses ROS libraries to produce an input. Open Source and closed source are both valid. </p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/ROS_awards_best_software-1024x576.jpeg" alt="" width="1024" height="576" class="aligncenter size-large wp-image-204923" srcset="https://robohub.org/wp-content/uploads/2022/06/ROS_awards_best_software-1024x576.jpeg 1024w, https://robohub.org/wp-content/uploads/2022/06/ROS_awards_best_software-425x239.jpeg 425w, https://robohub.org/wp-content/uploads/2022/06/ROS_awards_best_software-768x432.jpeg 768w, https://robohub.org/wp-content/uploads/2022/06/ROS_awards_best_software.jpeg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p><strong>Finalists</strong></p>
<ol>
<li><a href="https://github.com/gazebosim/gz-sim" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ignition Gazebo</a>, by Open Robotics</li>
<li><a href="https://github.com/BehaviorTree/Groot" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Groot Behavior Tree</a>, by Davide Faconti</li>
<li><a href="https://cyberbotics.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webots</a>, by Cyberbotics</li>
<li><a href="https://github.com/robosoft-ai/SMACC2" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">SMACC2</a>, by Brett Aldrich</li>
<li><a href="https://github.com/ros-controls/ros2_control" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ros2_control</a>, by several ROS developers</li>
<li><a href="https://github.com/facontidavide/PlotJuggler" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">PlotJuggler</a>, by Davide Faconti</li>
</ol>
<p><strong>Winner:</strong> <a href="https://cyberbotics.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webots</a>, by Cyberbotics</p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-1024x509.jpg" alt="" width="1024" height="509" class="aligncenter size-large wp-image-204924" srcset="https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-1024x509.jpg 1024w, https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-425x211.jpg 425w, https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-768x381.jpg 768w, https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-1536x763.jpg 1536w, https://robohub.org/wp-content/uploads/2022/06/best_ros_software_webots-2048x1017.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>Learn more about the winner in this video:</p>
<div class="keep-aspect"><iframe title="TIAGo++ robot running ROS2 in Webots" width="500" height="281" src="https://www.youtube-nocookie.com/embed/2KYpuaREQm0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<h3>Best ROS-Based Robot</h3>
<p>The Best ROS-Based Robot category includes any robot that runs ROS inside it. They can be robotics products, robots for research, or robots for education. In all cases, they must be running ROS inside. </p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_robot.png" alt="" width="640" height="360" class="aligncenter size-full wp-image-204925" srcset="https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_robot.png 640w, https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_robot-425x239.png 425w" sizes="(max-width: 640px) 100vw, 640px" />
<p><strong>Finalists</strong></p>
<ol>
<li><a href="https://www.franka.de/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Panda</a> robot arm, by Franka Emika</li>
<li><a href="https://pal-robotics.com/robots/tiago/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">TIAGo</a>, by Pal Robotics</li>
<li><a href="https://www.universal-robots.com/products/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">UR robot arm</a>, by Universal Robots</li>
<li><a href="https://clearpathrobotics.com/turtlebot-4/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Turtlebot 4</a>, by Clearpath</li>
<li><a href="https://nanosaur.ai/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Nanosaur</a>, by Raffaello Bonghi</li>
<li><a href="https://www.leorover.tech/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Leo Rover</a>, by Leo Rover</li>
</ol>
<p><strong>Winner</strong>: <a href="https://nanosaur.ai/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Nanosaur</a>, by Raffaello Bonghi</p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-1024x506.jpg" alt="" width="1024" height="506" class="aligncenter size-large wp-image-204927" srcset="https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-1024x506.jpg 1024w, https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-425x210.jpg 425w, https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-768x380.jpg 768w, https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-1536x759.jpg 1536w, https://robohub.org/wp-content/uploads/2022/06/best_ros_robot_nanosaur-2048x1012.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>Learn more about the winner in this video:</p>
<div class="keep-aspect"><iframe title="nanosaur - Deep dive" width="500" height="281" src="https://www.youtube-nocookie.com/embed/66doJ5dYURQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<h3>Best ROS Developer</h3>
<p>Developers are the ones that create all the ROS software that we love. The Best ROS Developer category allows you to vote for any developer who has contributed to ROS development in one sense or another. </p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_developer.png" alt="" width="640" height="360" class="aligncenter size-full wp-image-204928" srcset="https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_developer.png 640w, https://robohub.org/wp-content/uploads/2022/06/ros_awards_2022_best_developer-425x239.png 425w" sizes="(max-width: 640px) 100vw, 640px" />
<p><strong>Finalists</strong></p>
<ol>
<li>Francisco Martín</li>
<li>Davide Faconti</li>
<li>Raffaello Bonghi</li>
<li>Brett Aldrich</li>
<li>Victor Mayoral Vilches</li>
<li>Pradheep Krishna</li>
</ol>
<p><strong>Winner</strong>: Francisco Martín</p>
<img decoding="async" src="https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-1024x522.jpg" alt="" width="1024" height="522" class="aligncenter size-large wp-image-204929" srcset="https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-1024x522.jpg 1024w, https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-425x217.jpg 425w, https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-768x391.jpg 768w, https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-1536x783.jpg 1536w, https://robohub.org/wp-content/uploads/2022/06/best_ros_developer_francisco_martin-2048x1044.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>Learn more about the winner in this video:</p>
<div class="keep-aspect"><iframe title="Conferencia-demo: programación de robots con ROS (14-04-2017) (1/9)" width="500" height="281" src="https://www.youtube-nocookie.com/embed/jF6CWkc6GnU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<h2>Insights from the 2022 Edition</h2>
<ol>
<li>This year, the third time we organise the awards, we have increased the total number of votes by 500% So we can say that the winners are a good representation of the feelings of the community.</li>
<li>Still this year, the winners of previous editions received many votes. Fortunately, we applied the new rule of not allowing to win previous winners, to provide space for other ROS projects have the focus on the community, and hence help to create a rich ROS ecosystem.</li>
</ol>
<h2>Conclusions</h2>
<p>The ROS Awards started in 2020 with a first edition where the winners were some of the best and well-known projects in the ROS world. In this third edition, we have massively increased the number of votes from the previous edition. We expect this award will continue to contribute to the spreading of good ROS projects.</p>
<p>See you again at ROS Awards 2023!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to build a robotics startup: getting some money to start</title>
		<link>https://robohub.org/how-to-build-a-robotics-startup-getting-some-money-to-start/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 18 May 2021 14:16:24 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[business]]></category>
		<guid isPermaLink="false">https://robohub.org/how-to-build-a-robotics-startup-getting-some-money-to-start/</guid>

					<description><![CDATA[This episode is about learning the options you have to get some money to start your startup and what is expected you achieve with that money In this podcast series of episodes we are going to explain how to create a robotics startup step by step. We ar...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2021/05/How-to-robotics-startup-Ricardo-Tellez-ep-3-1-1024x576.jpeg" alt="" width="1024" height="576" class="alignnone size-large wp-image-200071" srcset="https://robohub.org/wp-content/uploads/2021/05/How-to-robotics-startup-Ricardo-Tellez-ep-3-1-1024x576.jpeg 1024w, https://robohub.org/wp-content/uploads/2021/05/How-to-robotics-startup-Ricardo-Tellez-ep-3-1-425x239.jpeg 425w, https://robohub.org/wp-content/uploads/2021/05/How-to-robotics-startup-Ricardo-Tellez-ep-3-1-768x432.jpeg 768w, https://robohub.org/wp-content/uploads/2021/05/How-to-robotics-startup-Ricardo-Tellez-ep-3-1.jpeg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p><iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/19108121/height/90/theme/custom/thumbnail/yes/direction/backward/render-playlist/no/custom-color/87A93A/" height="90" width="100%" scrolling="no"  allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe></p>
<p><strong>This episode is about learning the options you have to get some money to start your startup and what is expected you achieve with that money.</strong></p>
<p>In this podcast series of episodes we are going to explain how to create a robotics startup step by step.</p>
<p>We are going to learn how to select your co-founders, your team, how to look for investors, how to test your ideas, how to get customers, how to reach your market, how to build your product… Starting from zero, how to build a successful robotics startup.</p>
<p>I’m Ricardo Tellez, CEO and co-founder of <a href="https://theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> startup, a robotics startup at which we deliver the best learning experience to become a ROS Developer, that  is, to learn how to program robots with ROS.</p>
<p>Our company is already 5 years long, we are a team of 10 people  working  around the world. We have more than 100.000 students, and tens of Universities around the world use our online academy to provide the teaching environment to their students. </p>
<p>We have bootstrapped our startup, but we also (unsuccessfully) tried getting investors. We have done a few pivots and finally ended at the point that we are right now. </p>
<p>With all this experience, I’m going to teach you how to build your own startup. And we are going to go through the process by creating ourselves another startup, so you can see in the path how to  create your own. So you are going to witness the creation of such robotics startup.</p>
<h1>Subscribe to the podcast using any of the following methods</h1>
<ul>
<li><a href="https://itunes.apple.com/es/podcast/the-ros-developers-podcast/id1338329189?l=en" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>iTunes</strong></li>
<li><a href="http://stitcher.com/s?fid=165492&#038;refid=stpr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Stitcher</strong></li>
<li><a href="https://open.spotify.com/show/0FQqQaqHmhO37iVd0BklOx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Spotify</strong></li>
</ul>
<h1>Or watch the video</h1>
<div class="keep-aspect"><iframe title="RDP94. How to build a robotics startup: getting some money to start" width="500" height="281" src="https://www.youtube-nocookie.com/embed/7PL0pwjMYiA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>The post <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/94-how-to-build-a-robotics-startup-getting-some-money-to-start/" data-wpel-link="external" target="_blank">94. How to build a robotics startup: getting some money to start</a> appeared first on <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to build a robotics startup: getting the team right</title>
		<link>https://robohub.org/how-to-build-a-robotics-startup-getting-the-team-right/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 06 Apr 2021 10:39:03 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[business]]></category>
		<guid isPermaLink="false">https://robohub.org/how-to-build-a-robotics-startup-getting-the-team-right/</guid>

					<description><![CDATA[This episode is about understanding why you can&#8217;t build your startup alone, and some criteria to properly select your co-founders. In this podcast series of episodes we are going to explain how to create a robotics startup step by step. We are go...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2021/04/how-to-create-a-robotics-startup-copy.jpg" alt="" width="1280" height="720" class="alignnone size-full wp-image-199568" srcset="https://robohub.org/wp-content/uploads/2021/04/how-to-create-a-robotics-startup-copy.jpg 1280w, https://robohub.org/wp-content/uploads/2021/04/how-to-create-a-robotics-startup-copy-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2021/04/how-to-create-a-robotics-startup-copy-1024x576.jpg 1024w, https://robohub.org/wp-content/uploads/2021/04/how-to-create-a-robotics-startup-copy-768x432.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p><iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/18609647/height/90/theme/custom/thumbnail/yes/direction/backward/render-playlist/no/custom-color/87A93A/" height="90" width="100%" scrolling="no"  allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe></p>
<p><strong>This episode is about understanding why you can’t build your startup alone, and some criteria to properly select your co-founders.</strong></p>
<p>In this podcast series of episodes we are going to explain how to create a robotics startup step by step.</p>
<p>We are going to learn how to select your co-founders, your team, how to look for investors, how to test your ideas, how to get customers, how to reach your market, how to build your product… Starting from zero, how to build a successful robotics startup.</p>
<p>I’m Ricardo Tellez, CEO and co-founder of <a href="https://theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> startup, a robotics startup at which we deliver the best learning experience to become a ROS Developer, that  is, to learn how to program robots with ROS.</p>
<p>Our company is already 5 years long, we are a team of 10 people  working  around the world. We have more than 100.000 students, and tens of Universities around the world use our online academy to provide the teaching environment to their students. </p>
<p>We have bootstrapped our startup, but we also (unsuccessfully) tried getting investors. We have done a few pivots and finally ended at the point that we are right now. </p>
<p>With all this experience, I’m going to teach you how to build your own startup. And we are going to go through the process by creating ourselves another startup, so you can see in the path how to  create your own. So you are going to witness the creation of such robotics startup.</p>
<h1>Subscribe to the podcast using any of the following methods</h1>
<ul>
<li><a href="https://itunes.apple.com/es/podcast/the-ros-developers-podcast/id1338329189?l=en" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>iTunes</strong></li>
<li><a href="http://stitcher.com/s?fid=165492&#038;refid=stpr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Stitcher</strong></li>
<li><a href="https://open.spotify.com/show/0FQqQaqHmhO37iVd0BklOx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Spotify</strong></li>
</ul>
<h1>Or watch the video</h1>
<div class="keep-aspect"><iframe title="RDP91: How to build a robotics startup: getting the team right" width="500" height="281" src="https://www.youtube-nocookie.com/embed/ESGyYDDmNS4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>The post <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/91-how-to-build-a-robotics-startup-getting-the-team-right/" data-wpel-link="external" target="_blank">91. How to build a robotics startup: getting the team right</a> appeared first on <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to build a robotics startup: the product idea</title>
		<link>https://robohub.org/how-to-build-a-robotics-startup-the-product-idea/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 23 Feb 2021 13:03:46 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[startup]]></category>
		<guid isPermaLink="false">https://robohub.org/how-to-build-a-robotics-startup-the-product-idea/</guid>

					<description><![CDATA[In this podcast series of episodes we are going to explain how to create a robotics startup step by step. We are going to learn how to select your co-founders, your team, how to look for investors, how to test your ideas, how to get customers, how to r...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2021/02/how-to-create-a-robotics-startup.jpg" alt="" width="1280" height="720" class="alignnone size-full wp-image-199159" srcset="https://robohub.org/wp-content/uploads/2021/02/how-to-create-a-robotics-startup.jpg 1280w, https://robohub.org/wp-content/uploads/2021/02/how-to-create-a-robotics-startup-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2021/02/how-to-create-a-robotics-startup-1024x576.jpg 1024w, https://robohub.org/wp-content/uploads/2021/02/how-to-create-a-robotics-startup-768x432.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p><iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/18037982/height/90/theme/custom/thumbnail/yes/direction/backward/render-playlist/no/custom-color/87A93A/" height="90" width="100%" scrolling="no"  allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe></p>
<p>In this podcast series of episodes we are going to explain how to create a robotics startup step by step.</p>
<p>We are going to learn how to select your co-founders, your team, how to look for investors, how to test your ideas, how to get customers, how to reach your market, how to build your product… Starting from zero, how to build a successful robotics startup.</p>
<p>I’m Ricardo Tellez, CEO and co-founder of <a href="https://theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> startup, a robotics startup at which we deliver the best learning experience to become a ROS Developer, that  is, to learn how to program robots with ROS.</p>
<p>Our company is already 5 years long, we are a team of 10 people  working  around the world. We have more than 100.000 students, and tens of Universities around the world use our online academy to provide the teaching environment to their students. </p>
<p>We have bootstrapped our startup, but we also (unsuccessfully) tried getting investors. We have done a few pivots and finally ended at the point that we are right now. </p>
<p>With all this experience, I’m going to teach you how to build your own startup. And we are going to go through the process by creating ourselves another startup, so you can see in the path how to  create your own. So you are going to witness the creation of such robotics startup.</p>
<p><strong>This episode is about deciding the product your startup will produce.</strong></p>
<h1>Related links</h1>
<ul>
<li><a href="https://freshconsulting.zoom.us/rec/play/tJAqc-iorWk3E9HGtASDUfB6W9W_Kvms0XAa-aJYzR60UiILNFSgNLEaYrBWSKchqwV8slSqei2TqIiC?continueMode=true&#038;utm_medium=email&#038;_hsmi=89398002&#038;utm_content=89398002&#038;utm_source=hs_email" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Why robotics startups fail</a>, document made by Fresh</li>
<li><a href="https://jibo.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Jibo robot</a></li>
<li><a href="https://ankicozmorobot.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cozmo robot</a></li>
<li><a href="https://www.rethinkrobotics.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Baxter robot</a></li>
</ul>
<h1>Subscribe to the podcast using any of the following methods</h1>
<ul>
<li><a href="https://itunes.apple.com/es/podcast/the-ros-developers-podcast/id1338329189?l=en" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>iTunes</strong></li>
<li><a href="http://stitcher.com/s?fid=165492&#038;refid=stpr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Stitcher</strong></li>
<li><a href="https://open.spotify.com/show/0FQqQaqHmhO37iVd0BklOx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS Developers Podcast</a> on <strong>Spotify</strong></li>
</ul>
<h1>Or watch the video</h1>
<div class="keep-aspect"><iframe title="RDP89. How to build a robotics startup: the product idea" width="500" height="281" src="https://www.youtube-nocookie.com/embed/nctBdHqG9OM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>The post <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/89-how-to-build-a-robotics-startup-the-product-idea/" data-wpel-link="external" target="_blank">89. How to build a robotics startup: the product idea</a> appeared first on <a rel="nofollow external noopener noreferrer" href="https://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Teaching robotics with ROS</title>
		<link>https://robohub.org/teaching-robotics-with-ros/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Sat, 24 Nov 2018 23:29:33 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<guid isPermaLink="false">http://www.theconstructsim.com/?p=11523</guid>

					<description><![CDATA[&#160; A couple of months ago I interviewed Joel Esposito about the state of robotics education for the ROS Developers Podcast #21. On that podcast, Joel talks about his deep research on how robotics is taught around the world. He identifies a set of c...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2018/11/IMG_4164.jpg" alt="" width="900" height="675" class="aligncenter size-full wp-image-113278" srcset="https://robohub.org/wp-content/uploads/2018/11/IMG_4164.jpg 900w, https://robohub.org/wp-content/uploads/2018/11/IMG_4164-425x319.jpg 425w, https://robohub.org/wp-content/uploads/2018/11/IMG_4164-768x576.jpg 768w" sizes="(max-width: 900px) 100vw, 900px" />
<p>A couple of months ago I interviewed Joel Esposito about <a href="http://www.theconstructsim.com/rdp-021-state-robotics-education-joel-esposito/" rel="noopener follow external noreferrer" data-wpel-link="external" target="_blank">the state of robotics education for the&nbsp;ROS Developers Podcast #21</a>. On that podcast, Joel talks about his research on how robotics is taught around the world. He identifies a set of common robotics subjects that need to be explained in order to make students know about robotics, and a list of resources that people are&nbsp;using to teach them. But most important, he points out the importance of practicing with robots what students learn.</p>
<p><span id="more-113139"></span></p>
<p>From my point of view, robotics is about doing, not about reading. A robotics class cannot be about learning how to compute the Jacobian of a matrix to find the inverse kinematics. Computing the Jacobian has nothing to do with robotics, it is just a mathematical tool that we use to solve a robotics problem. That is why <strong>a robotics class should not be focused on how to compute the Jacobian but on how to move the end effector to a given location</strong>.</p>
<ul>
<li>I want to move this robotic arm’s end effector to that point, how do I do it?</li>
<li>Well, you need to represent the current configuration of the arm in a matrix!</li>
<li>Ah, ok, how do I do that?</li>
<li>You need to use a matrix to encode its current state. Let’s do it. Take that simulated robot arm and create a ROS node that subscribes to the <em>/joint_states</em> and captures the joint values. From those values, create a matrix storing it. It has to be able to modify the matrix at any time step, so if I move the arm, the matrix must change.</li>
<li>[…]</li>
<li>Done! So what do I have to do now if I want to move the robot gripper close to this bottle?</li>
<li>You need to compute the Jacobian. Let’s do it! Create a program that manually introduce a desired position for the end effector. Then based on that data, compute the Jacobian.</li>
<li>How do I compute the Jacobian?</li>
<li>I love that you ask me that!</li>
<li>…</li>
</ul>
<p>I understand that learning and studying theory is a big part of robotics, but not the biggest. The biggest should be practicing and doing with robots. For that, I propose to use ROS as the base system, the enabler, that allows <strong>practical practice</strong>&nbsp;(does that exist?!?!) while learning robotics.</p>
<h2><strong>The proposal</strong></h2>
<p>Teaching subjects as complex as inverse kinematics or robot navigation should not be (just) a theoretical matter. Practice should be embedded into the teaching of those complex robotics subjects.</p>
<p>I propose to<strong> teach ROS at the same time that we teach robotics</strong>, and use the former during the whole robotics semester as a tool to build and implement the robotics subject we are teaching. The idea is that we <strong>use ROS to allow the student to actually practice what they are learning</strong>. For instance, if we are talking about the different algorithms for obstacle avoidance, we also provide a simulated robot and make the student create a ROS program that actually implements the algorithm for that robot. By following this approach, the learning of the student is not only theoretical but instead includes the practice of what is being told.</p>
<p>The advantage of using ROS in this procedure is that ROS already provides a lot of material that can provide a working infrastructure, where you as a teacher, can concentrate on teaching the student how to create the small part that is required for the specific subject you are teaching.</p>
<p>We have so many tools at present that were not available just 5 years ago… Let’s make use of them to increase the student quality and quantity of learning! Instead of using Powerpoint slides, let’s use interactive Python notebooks. Instead of using a single robot for the whole class, let’s provide a robot simulation to each student. Instead of providing an equation on the screen, let’s provide students the implementation of it in a ROS node for them to modify.</p>
<div id="attachment_11551" style="width: 744px" class="wp-caption aligncenter"><img decoding="async" class=" wp-image-11551" src="http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-1024x683.jpg" alt="Students learn robotics with ROS" width="734" height="489" srcset="http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-1024x683.jpg 1024w, http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-300x200.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-768x512.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-280x187.jpg 280w, http://www.theconstructsim.com/wp-content/uploads/2018/11/students-learn-robotics-with-ros-1170x780.jpg 1170w" sizes="(max-width: 734px) 100vw, 734px"></p>
<p class="wp-caption-text">Students learn robotics with ROS</p>
</div>
<h2><strong>Not a new method</strong></h2>
<p>What I preach is what I practice. This is the method that I am using on my class of <em>Robot Navigation</em> at the University of LaSalle in Barcelona. In this class, I teach the basics about how to make a robot autonomously move from one point in space to another while avoiding obstacles. You know, SLAM, particle filters, Dynamic Window Approaches and the like. As part of the class, students must learn ROS and use it to implement some of the theoretical concepts I explain to them, like for example, how to compute $odometry based on the values provided by the encoders.</p>
<p>However,&nbsp; I’m not the only one using this method to teach robotics. For example, professor Ross Knepper from Cornell University explained to me <a href="http://www.theconstructsim.com/rdp-023-ros-foundations-robotics-ross-knepper/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">on <em>Using ROS to teach the foundations of robotics</em> for the ROS Developers podcast #23</a>, how he teaching of ROS and robotics in parallel. He even goes further, forbidding students to use many ROS software like the ROS navigation stack or MoveIt! His point is very good: he wants the students to actually learn how to do it, not just how to use something that somebody else has done (like the navigation stack). But he uses the ROS infrastructure anyway.</p>
<h2><strong>How to teach robotics with ROS</strong></h2>
<p>The method would involve the following steps:</p>
<ol>
<li>You start with a ROS class that explains the most basic topics of ROS, just what is required to start working</li>
<li>Then you start explaining the robotics subject of your choice, making the students implement what you are teaching in a ROS program, using robots. I advise to use simulated robots.</li>
<li>Whenever a new ROS concept is required for continuing the implementation of some algorithm, then, a class dedicated to that subject is performed.</li>
<li>Continue with the next robotics subject</li>
<li>Add a real robot project where students must apply all that they have learned into a single project with a real ROS based robot</li>
<li>Add an exam</li>
</ol>
<h3><strong>1. Explain the basic ROS concepts</strong></h3>
<p>For this step, you should describe the basic subjects of ROS that would allow a student to create ROS programs. Those subjects include the following:</p>
<ul>
<li>ROS packages</li>
<li>Launching ROS nodes</li>
<li>Basic ROS line commands</li>
<li>ROS topic subscribers</li>
<li>ROS topic publishers</li>
<li>Rviz for visualization and debugging</li>
</ul>
<p>It is not necessary to dedicate too much time to those subjects, just the necessary time for them to know about ROS. Deeper knowledge and understanding of ROS will be learned by practicing along the different classes of the semester. While they are trying to create the software for the implementation of the theoretical concepts, they will have to practice those concepts, and ingrain them deeper into their brain.</p>
<p>Very important, explain those concepts by using simulated robots and making the students apply the concepts to the simulated robot. For example, make the students read from a topic, to get the distance to the closest obstacle. Or make them write to a topic to make the robot move around. Do not just explain what a topic is and provide a code on the slide. Make them actually connect to a producer of data, that is, the simulated robot.</p>
<p>I would also recommend that at this step you forget teaching about creating custom messages, or what are services or action clients. That is too much for such an introductory class and it is very unlikely you are going to need it in your next robotics class.</p>
<h3><strong>2. Explain and implement robotics subject</strong></h3>
<p>You can now proceed on teaching your robotics subject. How I recommend is to divide the time of the class into two:</p>
<ol>
<li>First part will be to explain the theory of the robotics subject</li>
<li>Second part to actually implement that theory. Create a program that actually does what you explained.</li>
</ol>
<p>It may happen that in order to implement that theoretical part, the student needs a lot of pre-made code that supports the specific point you are teaching. That will mean that you have to prepare your class even harder and provide to the student will all that support code. The good news is that, by using ROS, it is very likely that you will find that code already done by someone. Hence, find or develop that code, and provide it as ROS package to your students. More about where to find the code and how to provide it to your students, below.</p>
<p>An interesting point to include here is what professor Knepper indicates: he creates some exercises with deliberate errors, so the students learn to recognize situations where the system is not performing correctly, and, more important, to create the skills necessary to figure out how to solve those errors. Take that point also into consideration.</p>
<div style="width: 1034px" class="wp-caption alignnone"><img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2018/11/teaching-reinforcement-learning-with-ros-robots-1024x576.jpg" width="1024" height="576" class="size-full" /><p class="wp-caption-text">Teaching Domain Randomization Reinforcement Learning with ROS robots</p></div>
<h3><strong>3. Add new ROS concept</strong></h3>
<p>At some point in time, you may need to create a custom ROS message for the robotics subject you are teaching. Or you may need to use a ROS service because you need to provide a service for face recognition. Whatever you need to explain about ROS, now is the best moment. Use that necessity to explain the concept. What I mean is that explaining a concept like ROS action servers when the student has no idea what this could be used for is a bad idea. The optimal moment to explain that new ROS concept is when it is so clear for everyone that the concept is needed.</p>
<p>I have found myself that explaining complex concepts like ROS services when the students don’t need them makes it very difficult for them to understand, even if you provide good examples of usage. They cannot feel the pain of not using those concepts in their programs. Only when they are in the situation that actually requires the concept, only then are they going to feel the pain, and the knowledge is going to be integrated into their heads.</p>
<h3><strong>4. Continue with the next robotics subject</strong></h3>
<p>Keep pushing this way. Move to the next subject. Provide a different robot simulation. Request the students implement the concept. And keep going this way until you finish the whole course.</p>
<h3><strong>5. Real robots project</strong></h3>
<img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2018/08/Guardian.jpg" width="566" height="388" class="alignnone size-full" />
<p>Testing with simulators is good because it provides real life-like experience. However, the real test is when you use a real robot. Usually, Universities do not have a budget for a robot for each student, that is why we have been promoting so much the use of simulations. However, some real robot experience is necessary, and most universities can afford to have a few robots for the whole class. That is the point where the robotics project come into action.</p>
<p>Define a robotics project that encapsulates all the knowledge of the whole course. Make the students create groups that will test their results on the real robot. This approach has many advantages: students will have to summarize all the lessons into a single application. They will have to make it work in a real robot. Additionally, they will have to work in teams.</p>
<p>In order to provide this step to the students you will need to prepare the following:</p>
<ul>
<li>A simulation of the environment where the real robot will be executed. This allows the students to practice most of the code in the simulator, in a faster way. It also allows you to have some rest (otherwise the students may require your presence all the time at the real robots lab <img decoding="async" draggable="false" class="emoji" alt="?" src="https://s.w.org/images/core/emoji/11/svg/1f609.svg"></li>
<li>You cannot escape providing some hours per week for the students to practice with the real robot. So schedule that.</li>
</ul>
<div style="width: 778px" class="wp-caption alignnone"><img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2018/11/students-768x1024.jpg" width="768" height="1024" class="size-full" /><p class="wp-caption-text">robot students ROS</p></div>
<p>Finally, decide a day when you will evaluate the project for each team. That is going to be called <strong>demo day</strong>. On demo day, each group has to show how their code is able to make the robot perform as it is supposed to.</p>
<p>For example, at LaSalle, we use two Turtlebots for 15 students. The students must do teams of two people in order to do the project. Then, on demo day, their robot has to be able to serve the coffee on a real coffee shop in Barcelona (thank you Costa Coffee for your support!). All the students go to the coffee shop with their programs, and we bring the two robots. Then, while one team is demonstrating on one robot, the other is preparing.</p>
<div style="width: 1034px" class="wp-caption alignnone"><img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2018/11/gazebo2-1024x583.png" width="1024" height="583" class="size-full" /><p class="wp-caption-text">Costa Coffee Gazebo ROS simulation</p></div>
<p>&nbsp;</p>
<p>In case you need ROS certified robots, let me recommend you the online shop of my friends: <a href="https://www.roscomponents.com/en/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">ROS Components shop</a>. That is where I buy robots or pieces when I need them. No commission for me recommending it! I just think they are great.</p>
<h3><strong>6. Evaluation</strong></h3>
<p>One very important point in the whole process is how to evaluate the students. In my opinion, the evaluation must be continuous, otherwise the students just do nothing until the previous day of the exam. Afterward, everyone complains.</p>
<p>At LaSalle, I do an exam of one hour every month, covering the topics I have taught during that month, and the previous months too.</p>
<p>In our case, the exams are completely practical. They have to make the robot perform something related to the subjects taught. For example, they have to make the robot create a map of the environment using an extended Kalman filter. I may provide the implementation of the extended Kalman filter for straight usage, but the student must know how to use it. How to capture the proper data from the robot, how to provide that to the filter, and how to use the output to build the map.</p>
<p>As an example, here you can find a <a href="https://t.co/1YG5zgO2TQ" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">ROSject containing the last exam</a> I gave to the students about dead reckoning navigation. The ROSject contains everything they needed to do the exam, including instructions, scores, and robot simulations. That leads us to the next point.</p>
<h2><strong>How to provide the material to the students</strong></h2>
<p>If I have convinced you on using a practical method to teach robotics using ROS, at this point you must be concerned about two points:</p>
<ol>
<li>How am I going to create all that material?</li>
<li>How can I provide my students with a running environment where to execute that bunch of simulations and ROS code?</li>
</ol>
<p>Very good concerns.</p>
<p><strong>Preparing the material is a lot of work.</strong> And more important, there is a lot of risk. When you prepare such material, there is a large probability that what you prepared does not work for the student&#8217;s computer. That is why I propose to use an online platform for preparing all that material, and share the material inside the same platform, so you will be 100% sure that it will work no matter who is going to use it.</p>
<p>I propose to use the <a href="http://rosds.online" rel="noopener follow external noreferrer" data-wpel-link="external" target="_blank">ROS Development Studio</a>. That is a platform that we have developed at our company, <a href="http://www.theconstruct.ai" rel="noopener follow external noreferrer" data-wpel-link="external" target="_blank">The Construct</a>, for the easy creation, testing and distribution of ROS code.</p>
<p>The ROS Development Studio (or <strong>ROSDS</strong> for short), allows you to create the material using a web browser on any type of computer. It already provides the simulations you may need (even if you can add your own ones). It also provides a Python notebook structure that you can fill with the material for the students. It also allows you to include any code that your students may require in the form of ROS packages.</p>
<p>But the most interesting point of the ROSDS is that it allows you to <strong>share all your material by sending a simple web link to the students</strong>. That is what we call a <strong>ROSject</strong>. A <a href="http://rosjects.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROSject</a> is a <strong>complete ROS project</strong> that includes <strong>simulations, notebooks and code</strong> in a single web link. Whenever you provide this link to anybody, they <strong>will get a copy</strong> of the whole content, and they will be <strong>able to execute it in the exact same conditions</strong> as you created the ROSject.</p>
<p>This sharing feature makes it very easy also for the students to share with you their program for evaluation, in case of exams, or to help students when they are stuck while studying. Since the ROSject contains all the material, it will be very easy for you to correct the exam in the conditions the student created the program, without requiring you to copy files or set up your computer environment. Just tell the students to share with you the ROSject link.</p>
<p>We use the ROSjects at LaSalle to provide the different lessons and exercises. For example, we have a ROSject with the simulation of the coffee shop where the students will do the project evaluation. Also, we use the ROSject to create the exams (as you can see in the previous section).</p>
<p>Summarizing: ROSjects allow you to encapsulate your lessons in a complete unit that includes the explanations, with the simulations and with the code. And all that for free.</p>
<p>Still, you will have to create your ROSjects for your classes. This is something that is going to finish in the close future as more and more Universities are creating their ROSjects and publishing them online for anybody.</p>
<p>However, if you do not want to wait until they are created, I can recommend you our online academy the <a href="http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/" rel="noopener follow external noreferrer" data-wpel-link="external" target="_blank">Robot Ignite Academy</a>, where we provide already made ROS-based courses about deep learning, manipulation, robot perception, and more. The only drawback is that the academy has a certain cost per student. However, it is highly recommended because it simplifies your preparation. We use the Robot Ignite Academy at LaSalle, but many other Universities use it around the world, like Clarkson University (USA), University of Michigan (USA), Chukyo University (Japan), University of Sydney (Australia), University of Luxembourg (Luxembourg), Université de Reims (France) or University of Alicante (Spain).</p>
<div style="width: 1034px" class="wp-caption alignnone"><img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2018/11/examples-of-rosjects-1024x345.jpg" width="1024" height="345" class="size-full" /><p class="wp-caption-text">Some examples of rosjects. ARIAC and Cartpole created by The Construct, Autorace created by ROBOTIS</p></div>
<h2><strong>Additional topics you may need to cover</strong></h2>
<p>Finally, I would like to make a point about a problem that I have identified when using this method.</p>
<p>I find that most of the people that come to our <em>Robot Navigation</em> class have <strong>zero knowledge about programming in either Python or C++</strong>, <strong>nor any knowledge on how to use Linux shell</strong>. After interviewing several robotics teachers around the world, I found that this is the case also for other countries.</p>
<p>If that is your case, first I would recommend that you reduce the scope of learning programming to the use of Python. Do not go to C++. C++ is too complex to start teaching it together with robotics. Also, Python is very powerful and easy to learn.</p>
<p>I usually create an initial class about Python and Linux shell. I do this class and immediately, on the next week, I do an exam to the students about Python and Linux shell. The purpose of the exam is to stress to the students the importance of mastering those programming skills. They are the base of the rest.</p>
<p>Here you can find a free <a href="https://www.learnpython.org/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">online course for learning Python</a>, and here, another one for <a href="https://www.codecademy.com/learn/learn-the-command-line" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">learning Linux shell</a>.</p>
<p>Additional problems that you may find is that the students have <strong>problems understanding English</strong>. Most of ROS documentation is in English. The way to communicate in the ROS community is in English (whether we like it or not). You may feel tempted to create the course notes in your mother language, and only provide documentary resources in your own language. I suggest not to do it. Push your students to learn English . The community needs a common language, and at present it is English.</p>
<h2><strong>Webinar about this subject</strong></h2>
<p>If you want to know more and discuss about the subject, let me suggest you come to the webinar we are doing on the <em>29th November</em> about this matter.</p>
<p>You can check here more details about the <a href="http://bit.ly/2z7jqvq" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">How To Teach Autonomous Mobile Robotics</a> and how to subscribe to attend.</p>
<h2><strong>Conclusion</strong></h2>
<p>I started this post talking about the findings of Joel Esposito.&nbsp;Even if you listen to the podcast interview, you will see that his final conclusion is actually NOT to use ROS to teach robotics. I’m sure there are other teachers with the same opinion. Other teachers like professor Knepper do advocate for the opposite. Those are points of views, like mine in this article. I recommend you listen to the podcast interview with Joel so you can understand why he suggests that.</p>
<p>It is up to you to decide. Now you have several opinions here. Which one is best for you? Please leave your answer into the comments so we can start a debate about it. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Simulations are the key to intelligent robots</title>
		<link>https://robohub.org/simulations-are-the-key-to-intelligent-robots/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Mon, 01 Oct 2018 11:03:37 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<guid isPermaLink="false">https://robohub.org/simulations-are-the-key-to-intelligent-robots/</guid>

					<description><![CDATA[I read an article entitled Games Hold the Key to Teaching Artificial Intelligent Systems, by Danny Vena, in which the author states that computer games like Minecraft, Civilization, and Grand Theft Auto have been used to train intelligent systems to pe...]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2018/09/Simulations-Are-The-Key-To-Intelligent-Robots.png" alt="" width="1000" height="489" class="aligncenter size-full wp-image-109563" srcset="https://robohub.org/wp-content/uploads/2018/09/Simulations-Are-The-Key-To-Intelligent-Robots.png 1000w, https://robohub.org/wp-content/uploads/2018/09/Simulations-Are-The-Key-To-Intelligent-Robots-425x208.png 425w, https://robohub.org/wp-content/uploads/2018/09/Simulations-Are-The-Key-To-Intelligent-Robots-768x376.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" />
<p>I read an article entitled <a href="https://www.fool.com/investing/2017/01/18/games-hold-the-key-to-teaching-artificial-intellig.aspx" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Games Hold the Key to Teaching Artificial Intelligent Systems</a>, by Danny Vena, in which the author states that computer games like Minecraft, Civilization, and Grand Theft Auto have been used to train intelligent systems to perform better in visual learning, understand language, and collaborate with humans. The author concludes that games are going to be a key element in the field of artificial intelligence in the near future. And he is almost right.</p>
<p>In my opinion, the article only touches the surface of artificial intelligence by talking about games. Games have been a good starting point for the generation of intelligent systems that outperform humans, but going deeper into the realm of robots that are useful in human environments will require something more complex than games. And I’m talking about simulations.</p>
<p><span id="more-108383"></span></p>
<h2>Using games to bootstrap intelligence</h2>
<p>The idea behind beating humans at games has been in artificial intelligence since its birth. Initially, researchers created programs to beat humans at Tic Tac Toe and Chess&nbsp;(like, for example, IBM’s&nbsp;<a href="https://en.wikipedia.org/wiki/Deep_Blue_versus_Garry_Kasparov" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">DeepBlue</a>). However, those games’ intelligence was programmed from scratch by human minds. There were people writing the code that decided which move should be the next one. However, that <em>manual</em> approach to generate intelligence reached a limit: intelligence is so complex that we realized that it may be too difficult to manually write a program that emulates it.</p>
<p>Then, a new idea was born: what if we create a system that learns by itself? In that case, the engineers will only have to program the learning structures and set the proper environment to allow intelligence to bootstrap by itself.</p>
<div id="attachment_11072" style="width: 870px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11072" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/ticker_go_end_free.jpg" alt="AlphaGo beats Lee Sedol" width="860" height="460" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/ticker_go_end_free.jpg 860w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ticker_go_end_free-300x160.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ticker_go_end_free-768x411.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ticker_go_end_free-280x150.jpg 280w" sizes="(max-width: 860px) 100vw, 860px"></p>
<p class="wp-caption-text">AlphaGo beats Lee Sedol<br />(photo credit: intheshortestrun)</p>
</div>
<p>The results of that idea are programs that learn to play the games better than anyone in the world, even if nobody explains to the program how to play in the first place. For example, Google’s <a href="https://deepmind.com" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">DeepMind</a> company created&nbsp;<a href="https://en.wikipedia.org/wiki/AlphaGo_Zero" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">AlphaGo Zero program</a>&nbsp;uses that approach. The program was able to beat the best players of Go in the world. The company used the same approach to <a href="https://arxiv.org/abs/1312.5602" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">create programs that learnt to play Atari games</a>, starting from zero knowledge.&nbsp;Recently, <a href="http://www.openai.com" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">OpenAI</a> used this approach for their <a href="https://www.theverge.com/2018/8/6/17655086/dota2-openai-bots-professional-gaming-ai" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">bot program that beats pro players of the Dota 2 game</a>. By the way, if you want to reproduce the results of the Atari games, OpenAI released the <a href="https://gym.openai.com/envs" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">OpenAI Gym</a>, containing all the code to start training your system with Atari games, and compare the performance against other people.</p>
<p>What I took from those results is that the idea of making an intelligent system generate intelligence by itself is a good approach, and that the algorithms used for teaching can be used for making robots learn about their space (I’m not so optimistic about the way to encode the knowledge and to set the learning environment and stages, but that is another discussion).</p>
<h2>From games to simulations</h2>
<p>OpenAI wanted to go further. Instead of using games to generate programs that can play a game, they applied the same idea to make a robot do something useful: <a href="https://blog.openai.com/learning-dexterity/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">learn to manipulate a cube on its hand</a>. In this case, instead of using a game, they used a simulation of the robot. The simulation was used to emulate the robot and its environment as if it were a real one. Then, they allowed the algorithm to control the simulated robot and make the robot learn about the task to solve by using domain randomization. After many trials, the simulated robot was able to manipulate the block in the expected way. But that was not all! At the end of the article, the authors successfully transferred the learned control program of the simulated robot to a real robot, which performed in a way similar to the simulated one. Except it was real.</p>
<div id="attachment_11070" style="width: 310px" class="wp-caption aligncenter"><img decoding="async" class="size-medium wp-image-11070" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-300x217.jpg" alt="Simulated Hand OpenAI Manipulation Experiments" width="300" height="217" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-300x217.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-768x556.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-1024x741.jpg 1024w, http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-258x187.jpg 258w, http://www.theconstructsim.com/wp-content/uploads/2018/09/focusonarein-1170x847.jpg 1170w" sizes="(max-width: 300px) 100vw, 300px"></p>
<p class="wp-caption-text">Simulated Hand OpenAI Manipulation Experiment (image credit: OpenAI)</p>
</div>
<div id="attachment_11071" style="width: 310px" class="wp-caption aligncenter"><img decoding="async" class="size-medium wp-image-11071" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-300x169.png" alt="Real Hand OpenAI Manipulation Experiment" width="300" height="169" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-300x169.png 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-768x432.png 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-1024x576.png 1024w, http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-280x158.png 280w, http://www.theconstructsim.com/wp-content/uploads/2018/09/openai_robot-1170x658.png 1170w" sizes="(max-width: 300px) 100vw, 300px"></p>
<p class="wp-caption-text">Real Hand OpenAI Manipulation Experiment (photo credit:OpenAI)</p>
</div>
<p>A similar approach was applied by OpenAI to a <a href="https://blog.openai.com/spam-detection-in-the-physical-world/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Fetch robot trained to grasp a spam box</a>&nbsp;off of a table filled with different objects. The robot was trained in simulation and it was successfully transferred to the real robot.</p>
<div id="attachment_11107" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11107" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/OpenAI-teaches-Fetch-robot-to-grasp-from-table-using-simulations-photo-credit-OpenAI.jpg" alt="OpenAI teaches Fetch robot to grasp from table using simulations (photo credit: OpenAI)" width="800" height="450" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/OpenAI-teaches-Fetch-robot-to-grasp-from-table-using-simulations-photo-credit-OpenAI.jpg 800w, http://www.theconstructsim.com/wp-content/uploads/2018/09/OpenAI-teaches-Fetch-robot-to-grasp-from-table-using-simulations-photo-credit-OpenAI-300x169.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/OpenAI-teaches-Fetch-robot-to-grasp-from-table-using-simulations-photo-credit-OpenAI-768x432.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/OpenAI-teaches-Fetch-robot-to-grasp-from-table-using-simulations-photo-credit-OpenAI-280x158.jpg 280w" sizes="(max-width: 800px) 100vw, 800px"></p>
<p class="wp-caption-text">OpenAI teaches Fetch robot to grasp from table using simulations (photo credit: OpenAI)</p>
</div>
<p>We are getting close to the holy grail in robotics, a complete self-learning system!</p>
<h2>Training robots</h2>
<p>However, in their experiments, engineers from OpenAI discovered that training for robots is a lot more complex than training algorithms for games. Meanwhile, in games, the intelligent system has a very limited list of actions and perceptions available; robots face a huge and continuous spectrum in both domains, actions and perceptions. We can say that the options are infinite.</p>
<p>That increase in the number of options diminishes the usefulness of the algorithms used for RL. Usually, the way to deal with the problem is with some artificial tricks, like discarding some of the information completely or discretizing the data values artificially, reducing the options to only a few.</p>
<p>OpenAI engineers found that even if the robots were trained in simulations, their approach could not scale to more complex tasks.</p>
<h2>Massive data vs. complex learning algorithms</h2>
<p>As Andrew Ng indicated, and as an engineer from OpenAI personally indicated to me based on his results, <strong>massive data with simple learning algorithms wins over complicated algorithms with a small amount of data</strong>. This means that it is not a good idea to try to focus on getting more complex learning algorithms. Instead, the best approach for reaching intelligent robotics would be to use simple learning algorithms trained with massive amounts of data&nbsp;(which makes sense if we observe our own brain: a massive amount of neural networks trained over many years).</p>
<p>Google has always known that. Hence, in order to obtain massive amounts of data to train their robots, Google created <a href="https://www.youtube.com/watch?v=V05SuCSRAtg" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">a real life system with real robots, training all day long in a large space</a>. Even if it is a clever idea, we can all see that this is not practical in any sense for any kind of robot and application&nbsp;(breaking robots, limited to execution in real time, a limited amount of robots, a limited amount of environments, and so on…).</p>
<div id="attachment_11108" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11108" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/Google-robots-training-for-grasping.png" alt="Google robots training for grasping" width="800" height="382" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/Google-robots-training-for-grasping.png 800w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Google-robots-training-for-grasping-300x143.png 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Google-robots-training-for-grasping-768x367.png 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Google-robots-training-for-grasping-280x134.png 280w" sizes="(max-width: 800px) 100vw, 800px"></p>
<p class="wp-caption-text">Google robots training for grasping</p>
</div>
<p>That leads us to the same solution again: to use simulations. By using simulations, we can put any robot in any situation and train them there. Also, we can have virtually an infinite number of them training in parallel, and generate massive amounts of data in record time.</p>
<p>Even if that approach looks very clear right now, it was not three years ago when we created our company,&nbsp;<a href="http://www.theconstructsim.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a>, around robot simulations in the cloud. I remember exhibiting at the <a href="https://innorobo.com/en/home/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Innorobo</a> 2015 exhibition and finding, after extensive interviews among all the other exhibitors, that only two among them were using simulations for their work. Furthermore, roboticists considered simulations to be something nasty to be avoided at all cost, since nothing can compare with the real robot (<a href="http://www.theconstructsim.com/why-robotics-companies-must-use-simulators/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">check here for a post</a> I wrote about it at the time).</p>
<p>Thankfully, the situation has changed since then. Now, using simulations for training real robots is starting to become <em>the way</em>.</p>
<h2>Transferring to real robots</h2>
<p>We all know that it is one thing to get a solution with the simulation and another for that solution to work on the real robot. Having something done by the robot in the simulation doesn’t imply that it will work the same way on the real robot. Why is that?</p>
<p>Well, there is something called <strong>the reality gap</strong>. We can define the reality gap as the difference between the simulation of a situation and the real-life situation. Since it is impossible for us to simulate something to a perfect degree, there will always be differences between simulation and reality. If the difference is big enough, it may happen that the results obtained in the simulator are not relevant at all. That is, you have a big reality gap, and what applies in the simulation does not apply to the real world.</p>
<p>That problem of the reality gap is one of the main arguments used to discard simulators for robotics. And in my opinion, the path to follow is not to discard the simulators and find something else, but instead to <strong>find solutions to cross that reality gap</strong>. As for solutions, I believe we have two options:</p>
<p>1. <strong>Create more accurate simulators</strong>. That is on its way. We can see efforts in this direction. Some simulators concentrate on better physics&nbsp;(<a href="http://www.mujoco.org/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Mujoco</a>); others on a closer look at reality&nbsp;(Unreal or Unity-based simulators, like <a href="http://carla.org/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Carla</a> or <a href="https://github.com/Microsoft/AirSim" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">AirSim</a>). We can expect that as computer power continues to increase, and cloud systems become more accessible, the accuracy of simulations is going to keep increasing in both senses, physics and looks.</p>
<p>2. <strong>Build better ways to cross the reality gap</strong>. In its original work, <a href="https://pdfs.semanticscholar.org/d6f6/30cf3eac618bd075ec7ce37f60f60af237da.pdf" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Noise and the reality gap</a>, Jakobi (the person who identified the problem of the reality gap) indicated that one of the first solutions is to make a simulation independent of the reality gap. His idea was to introduce noise in those variables that are not relevant to the task.&nbsp;The modern version of that noise introduction is the concept of <strong>domain randomization</strong>, as described in the paper&nbsp;<a href="https://arxiv.org/pdf/1703.06907.pdf" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World</a>.</p>
<p>Domain randomization basically consists of performing the training of the robot in a simulated environment where its non-relevant-to-the-task features are changed randomly, like the colors of the elements, the light conditions, the relative position to other elements, etc.</p>
<p>The goal is to make the trained algorithm be unaffected by those elements in the scene that provide no information to the task at hand, but which may confuse it&nbsp;(because the algorithm doesn’t know which parts are the relevant ones to the task). I can see domain randomization as a way to tell the algorithm where to focus its attention, in terms of the huge flow of data that it is receiving.</p>
<div id="attachment_11076" style="width: 503px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11076" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/train.gif" alt="Domain randomization applied by OpenAI to train a Fetch robot in simulation" width="493" height="288"></p>
<p class="wp-caption-text">Domain randomization applied by OpenAI to train a Fetch robot in simulation (photo credit: OpenAI)</p>
</div>
<p>In more recent works, the OpenAI team has released a very interesting paper that improves domain randomization. They introduce the concept of <strong>dynamics randomization</strong>. In this case, it is not the environment that is changing in the simulation, but the properties of the robot (like its mass, distance between grippers, etc.). The paper is <a href="https://arxiv.org/pdf/1710.06537.pdf" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Sim-to-real transfer of robotic control with dynamics randomization</a>. That is the approach that OpenAI engineers took to successfully achieve the manipulation robot.</p>
<h2>Some software that goes on the line</h2>
<p>What follows is a list of software that allows the training of robots in simulations. I’m not including just robotics simulators&nbsp;(like <a href="http://www.gazebosim.org" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Gazebo</a>, <a href="http://www.cyberbotics.com" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Webots</a>, and&nbsp;<a href="http://www.coppeliarobotics.com/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">V-Rep</a>) because they are just that, robot simulators in the general sense. The software listed here goes one step beyond that and provides a more complete solutions for doing the training in simulations. Of course, I have discarded the system used by OpenAI&nbsp;(which is Mujoco) because it requires the building of your own development environment.</p>
<h3>Carla</h3>
<p><a href="http://carla.org/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Carla</a> is an open source simulator for self-driving cars based on Unreal Engine. It has recently included a ROS bridge.</p>
<div id="attachment_11109" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11109" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/Carla-simulator-photo-credit-Carla.jpg" alt="Carla simulator (photo credit Carla)" width="800" height="476" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/Carla-simulator-photo-credit-Carla.jpg 800w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Carla-simulator-photo-credit-Carla-300x179.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Carla-simulator-photo-credit-Carla-768x457.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/Carla-simulator-photo-credit-Carla-280x167.jpg 280w" sizes="(max-width: 800px) 100vw, 800px"></p>
<p class="wp-caption-text">Carla simulator (photo credit Carla)</p>
</div>
<h3>Microsoft Airsim</h3>
<p><a href="https://github.com/Microsoft/AirSim" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Microsoft Airsim</a> drones simulator follows a similar approach to Carla, but for drones. Recently, they updated the simulator to also include self-driving cars.</p>
<div id="attachment_11078" style="width: 771px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11078" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/airsim.jpg" alt="Airsim" width="761" height="400" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/airsim.jpg 761w, http://www.theconstructsim.com/wp-content/uploads/2018/09/airsim-300x158.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/airsim-280x147.jpg 280w" sizes="(max-width: 761px) 100vw, 761px"></p>
<p class="wp-caption-text">Airsim (photo credit: Microsoft)</p>
</div>
<h3>Nvidia Isaac</h3>
<p><a href="https://www.nvidia.com/en-us/deep-learning-ai/industries/robotics/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Nvidia Isaac</a> aims to be a complete solution for training robots on simulations and then transferring to real robots. There is still nothing available, but they are working on it.</p>
<div id="attachment_11079" style="width: 648px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11079" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/nvidia-infinite-conference-london-48-638.jpg" alt="Isaac" width="638" height="359" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/nvidia-infinite-conference-london-48-638.jpg 638w, http://www.theconstructsim.com/wp-content/uploads/2018/09/nvidia-infinite-conference-london-48-638-300x169.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/nvidia-infinite-conference-london-48-638-280x158.jpg 280w" sizes="(max-width: 638px) 100vw, 638px"></p>
<p class="wp-caption-text">Isaac (photo credit: Nvidia)</p>
</div>
<h3>ROS Development Studio</h3>
<p>The <a href="http://rds.theconstructsim.com" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">ROS Development Studio</a>&nbsp;is the development environment that our company created, and it has been conceived from the beginning to simulate and train any ROS-based robot, requiring nothing to be installed in your computer (cloud-based). Simulations for the robots are already provided with all the ROS controllers up and running, as well as the machine learning tools. It includes a system of Gym cloud computers for the parallel training of robots on an infinite number of computers.</p>
<div id="attachment_11110" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-11110" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/ROS-Development-Studio-showing-an-industrial-environment.png" alt="ROS Development Studio showing an industrial environment" width="800" height="399" src="http://www.theconstructsim.com/wp-content/uploads/2018/09/ROS-Development-Studio-showing-an-industrial-environment.png 800w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ROS-Development-Studio-showing-an-industrial-environment-300x150.png 300w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ROS-Development-Studio-showing-an-industrial-environment-768x383.png 768w, http://www.theconstructsim.com/wp-content/uploads/2018/09/ROS-Development-Studio-showing-an-industrial-environment-280x140.png 280w" sizes="(max-width: 800px) 100vw, 800px"></p>
<p class="wp-caption-text">ROS Development Studio showing an industrial environment</p>
</div>
<p style="text-align: center;">Here is a video showing a simple example of training two cartpoles in parallel using the Gym computers inside the ROS Development Studio:<br />
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/3xR44G57z0s" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen="allowfullscreen"></iframe></p>
<p>&nbsp;</p>
<p>(Readers, if you know other software like this that I can add, let me know.)</p>
<h2>Conclusion</h2>
<p>Making all those deep neural networks learn in a training simulation is the way to go, and as we may see in the future, this is just the tip of the iceberg. My personal opinion is that intelligence is yet more embodied than current AI approaches admit: you cannot have intelligence without a body. Hence, I believe that the use of simulated embodiments will be even higher in the future. We’ll see.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to start with self-driving cars using ROS</title>
		<link>https://robohub.org/how-to-start-with-self-driving-cars-using-ros/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 15:01:05 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[automotive]]></category>
		<guid isPermaLink="false">http://robohub.org/how-to-start-with-self-driving-cars-using-ros/</guid>

					<description><![CDATA[<p>&#160; Self-driving cars are inevitable. In recent years, self-driving cars research is becoming the main direction of automotive companies. BMW, Bosch, Google, Baidu, Toyota, GE, Tesla, Ford, Uber and Volvo are investing in&#160;autonomous driving research. Also, many new companies have appeared &#160;in the autonomous cars industry: Drive.ai, Cruise, nuTonomy, Waymo to name a few (read</p>
<p>The post <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/start-self-driving-cars-using-ros/" data-wpel-link="external" target="_blank">How to Start With Self-Driving Cars Using ROS</a> appeared first on <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="http://robohub.org/wp-content/uploads/2016/04/autonomouscars.jpg" alt="" width="900" height="506" class="aligncenter size-full wp-image-61726" srcset="https://robohub.org/wp-content/uploads/2016/04/autonomouscars.jpg 900w, https://robohub.org/wp-content/uploads/2016/04/autonomouscars-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2016/04/autonomouscars-500x281.jpg 500w" sizes="(max-width: 900px) 100vw, 900px" />
<p>Self-driving cars are inevitable.</p>
<p>In recent years, self-driving cars have become a priority for automotive companies. BMW, Bosch, Google, Baidu, Toyota, GE, Tesla, Ford, Uber and Volvo are investing in autonomous driving research. Also, many new companies have appeared in the autonomous cars industry: Drive.ai, Cruise, nuTonomy, Waymo to name a few (<a href="https://www.wired.com/2017/05/mapped-top-263-companies-racing-toward-autonomous-cars/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">read this post</a> for a list of 260 companies involved in the self-driving industry).<span id="more-87484"></span></p>
<p>The rapid development of this field has prompted a large demand for autonomous cars engineers. Among the skills required, <a href="https://hackernoon.com/five-skills-self-driving-companies-need-8546d2aba7c1" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">knowing how to program with ROS</a> is becoming an important one. You just have to visit the <a href="http://duerer.usc.edu/mailman/listinfo.cgi/robotics-worldwide" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">robotics-worldwide list</a> to see the large amount of job offers for working/researching in autonomous cars, which demand knowledge of ROS.</p>
<h2>Why ROS is interesting for autonomous cars</h2>
<p>Robot Operating System (ROS) is a mature and flexible framework for robotics programming. ROS provides the required tools to easily access sensors data, process that data, and generate an appropriate response for the motors and other actuators of the robot. The whole ROS system has been designed to be fully distributed in terms of computation, so different computers can take part in the control processes, and act together as a single entity (the robot).</p>
<p>Due to these characteristics, ROS is a perfect tool for self-driving cars. After all, an autonomous vehicle can be considered as just another type of robot, so the same types of programs can be used to control them. ROS is interesting because:</p>
<p>1. There is a lot  of code for autonomous cars already created. Autonomous cars require the creation of algorithms that are able to build a map, localize the robot using lidars or GPS, plan paths along maps, avoid obstacles, process pointclouds or cameras data to extract information, etc… Many algorithms designed for the navigation of wheeled robots are almost directly applicable to autonomous cars. Since those algorithms are already available in ROS, self-driving cars can just make use of them off-the-shelf.</p>
<p>2. Visualization tools are already available. ROS has created a suite of graphical tools that allow the easy <a href="http://wiki.ros.org/rosbag" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">recording</a> and <a href="http://wiki.ros.org/visualization" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">visualization of data</a> captured by the sensors, and representation of the status of the vehicle in a comprehensive manner. Also, it provides a <a href="http://wiki.ros.org/rqt/Tutorials" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">simple way to create additional visualizations</a> required for particular needs. This is tremendously useful when developing the control software and trying to debug the code.</p>
<p>3. It is relatively simple to start an autonomous car project with ROS onboard. You can start right now with a simple wheeled robot equipped with a pair of wheels, a camera, a laser scanner, and the ROS navigation stack. You&#8217;re set up in a few hours. That could serve as a basis to understand how the whole thing works. Then you can move to more professional setups, like for example buying a car that is already prepared for autonomous car experiments, with full ROS support (<a href="http://dataspeedinc.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">like the Dataspeed Inc. Lincoln MKZ DBW kit</a>).<br />
Self-driving car companies have identified those advantages and have started to use ROS in their developments. Examples of companies using ROS include BMW (<a href="https://www.youtube.com/watch?v=z9WzHXfYqFI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">watch their presentation at ROSCON 2015</a>), <a href="https://www.youtube.com/watch?time_continue=14&#038;v=3u2k3EcnRTQ" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Bosch</a> or nuTonomy.</p>
<img decoding="async" src="http://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51.png" alt="" width="1323" height="753" class="aligncenter size-full wp-image-89753" srcset="https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51.png 1323w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51-425x242.png 425w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51-768x437.png 768w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51-1024x583.png 1024w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.55.51-175x100.png 175w" sizes="(max-width: 1323px) 100vw, 1323px" />
<p><strong>Weak points of using ROS</strong></p>
<p>ROS is not all nice and good. At present, ROS presents two important drawbacks for autonomous vehicles:</p>
<p>1. Single point of failure. All ROS applications rely on a software component called the roscore. That component, provided by ROS itself, is in charge of handling all coordination between the different parts of the ROS application. If the component fails, then the whole ROS system goes down. This implies that it does not matter how well your ROS application has been constructed. If roscore dies, your application dies.</p>
<p>2. ROS is not secure. The current version of ROS does not implement any security mechanism for preventing third parties from getting into the ROS network and reading the communication between nodes. This implies that anybody with access to the network of the car can get to the ROS messaging and kidnap the car behavior.</p>
<p>All those drawbacks are expected to be solved in the newest version of ROS, ROS 2. <a href="https://www.openrobotics.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Open Robotics</a>, the creators of ROS have recently released a second beta of ROS 2 which <a href="https://github.com/ros2/ros2/wiki" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">can be tested here</a>. It is expected there will be a release version by the end of 2017.</p>
<p>In any case, we believe that the ROS-based path to self-driving vehicles is the way to go. That is why, we propose a low budget learning path for becoming a self-driving cars engineer, based on the ROS framework.</p>
<h2>Our low cost solution to become a self-driving car engineer</h2>
<p><strong>Step 1</strong><br />
First thing you need is to learn ROS. ROS is quite a complex framework to learn and requires dedication and effort. Watch the following video for a list of the 5 best methods to learn ROS. Learning basic ROS will help you understand how to create programs with that framework, and how to reuse programs made by others.</p>
<div class="keep-aspect"><iframe title="5 ROS Learning Methods: which one is the best for you?" width="500" height="281" src="https://www.youtube-nocookie.com/embed/udHlvH6TGvo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>Step 2</strong><br />
Next, you need to get familiar with the basic concepts of robot navigation with ROS. Learning how the ROS navigation stack works will provide you the knowledge of basic concepts in navigation like mapping, path planning or sensor fusion. There is no better way to learn this than taking the ROS Navigation in 5 days course developed by <a href="http://www.robotigniteacademy.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Robot Ignite Academy </a>(disclaimer &#8211; this is provided by my company The Construct).</p>
<p><strong>Step 3</strong><br />
Third step would be to learn the basic ROS application to autonomous cars: how to use the sensors available in any standard of autonomous car, how to navigate using a GPS, how to generate an algorithm for obstacle detection based on the sensors data, how to interface ROS with the Can-bus protocol used in all the cars used in the industry…</p>
<p>The following video tutorial is ideal to start learning ROS applied to Autonomous Vehicles from zero. The course teaches how to program a car with ROS for autonomous navigation by using an autonomous car simulation. The video is available for free, but if you want to get the most of it, we recommend you to do the exercises at the same time by enrolling into the Robot Ignite Academy.</p>
<div class="keep-aspect"><iframe title="Learn ROS for Self-Driving Cars - Full Course" width="500" height="281" src="https://www.youtube-nocookie.com/embed/jbimBoI42AM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>Step 4</strong><br />
After the basic ROS for Autonomous Cars course, you should learn more advanced subjects like obstacles and traffic signals identification, road following, as well as coordination of vehicles in cross roads. For that purpose, our recommendation would be to use the <a href="http://duckietown.mit.edu/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Duckietown project at MIT</a>. The project provides complete instructions to physically build a small size town, with lanes, traffic lights and traffic signals, to practice algorithms in the real world (even if at a small scale). It also provides instructions to build the autonomous cars that should populate the town. Cars are based on differential drives and a single camera for sensors. That is why they achieve a very low cost (around 100$ per each car).<br />
<div id="attachment_89754" style="width: 650px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-89754" src="http://robohub.org/wp-content/uploads/2017/09/552172802_640.jpg" alt="" width="640" height="360" class="size-full wp-image-89754" srcset="https://robohub.org/wp-content/uploads/2017/09/552172802_640.jpg 640w, https://robohub.org/wp-content/uploads/2017/09/552172802_640-425x239.jpg 425w" sizes="(max-width: 640px) 100vw, 640px" /><p id="caption-attachment-89754" class="wp-caption-text">Image by Duckietown project</p></div></p>
<p>Due to the low monetary requirements, and to the good experience it offers for testing real stuff, the Duckietown project is ideal to start practicing autonomous cars concepts like line following based on vision, detecting other cars, traffic signal-based behavior. Still, if your budget is below that cost, you can use a Gazebo simulation of the Duckietown, and still practice most of the content.</p>
<div class="keep-aspect"><iframe title="Duckietown simulation for MIT 2.166" width="500" height="281" src="https://www.youtube-nocookie.com/embed/-odzZPCdSlk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>Step 5</strong><br />
Then if you really want to go pro, you need to practice with real life data. For that purpose we propose you install and learn from the Autoware project. This project provides real data obtained from real cars on real streets, by means of ROS bags. ROS bags are logs containing data captured from sensors which can be used in ROS programs as if the programs were connected to the real car. By using those bags, you will be able to test algorithms as if you had an autonomous car to practice with (the only limitation is that the data is always the same and restricted to the situation that happened when it was recorded).</p>
<div id="attachment_89755" style="width: 1290px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-89755" src="http://robohub.org/wp-content/uploads/2017/09/maxresdefault-1.jpg" alt="" width="1280" height="720" class="size-full wp-image-89755" srcset="https://robohub.org/wp-content/uploads/2017/09/maxresdefault-1.jpg 1280w, https://robohub.org/wp-content/uploads/2017/09/maxresdefault-1-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2017/09/maxresdefault-1-768x432.jpg 768w, https://robohub.org/wp-content/uploads/2017/09/maxresdefault-1-1024x576.jpg 1024w" sizes="(max-width: 1280px) 100vw, 1280px" /><p id="caption-attachment-89755" class="wp-caption-text">Image by the Autoware project<br /></p></div>
<p>The <a href="https://github.com/CPFL/Autoware" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Autoware project</a> is an amazing huge project that, apart from the ROS bags, provides multiple state-of-the-art algorithms for localization, mapping, obstacles detection and identification using deep learning. It is a little bit complex and huge, but definitely worth studying for a deeper understanding of ROS with autonomous vehicles. I recommend you to watch the Autoware ROSCON2017 presentation for an overview of the system (will be available in October 2017).</p>
<p><strong>Step 6</strong><br />
Final step would be to start implementing your own ROS algorithms for autonomous cars and testing them in different, realistic situations. Previous steps provided you with real-life situations, the bags were limited to the situations where they were recorded. Now it is time to test your algorithms in different situations. You can use already existing algorithms in a mix of all the steps above, but at some point, you will see that all those implementations lack some things required for your goals. You will have to start developing your own algorithms, and you will need lots of tests. For this purpose, one of the best options is to use a Gazebo simulation of an autonomous car as a testbed for your ROS algorithms. Recently, Open Robotics has released a simulation of<a href="http://robohub.org/simulated-car-demo-using-ros-kinetic-and-gazebo-8/" data-wpel-link="internal"> cars for Gazebo 8 simulator.</a><br />
<div id="attachment_89756" style="width: 1151px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-89756" src="http://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.56.03.png" alt="" width="1141" height="712" class="size-full wp-image-89756" srcset="https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.56.03.png 1141w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.56.03-425x265.png 425w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.56.03-768x479.png 768w, https://robohub.org/wp-content/uploads/2017/09/Captura-de-pantalla-2017-09-28-a-las-20.56.03-1024x639.png 1024w" sizes="(max-width: 1141px) 100vw, 1141px" /><p id="caption-attachment-89756" class="wp-caption-text">Image by Open Robotics<br /></p></div></p>
<p>That simulation based on ROS contains a Prius car model, together with 16 beam lidar on the roof, 8 ultrasonic sensors, 4 cameras, and 2 planar lidar, which you can use to practice and create your own self-driving car algorithms. By using that simulation, you will be able to put the car in as many different situations as you want, checking if your algorithm works on those situations, and repeating as many times as you want until it works.</p>
<h2>Conclusion</h2>
<p>Autonomous driving is an exciting subject with demand for experienced engineers increasing year after year. ROS is one of the best options to quickly jump into the subject. So learning ROS for self-driving vehicles is becoming an important skill for engineers. We have presented here a full path to learn ROS for autonomous vehicles while keeping the budget low. Now it is your turn to make the effort and learn. Money is not an excuse anymore. Go for it!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The need for robotics standards</title>
		<link>https://robohub.org/the-need-for-robotics-standards/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 29 Aug 2017 21:01:33 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[industrial]]></category>
		<category><![CDATA[ROS]]></category>
		<guid isPermaLink="false">http://robohub.org/the-need-for-robotics-standards/</guid>

					<description><![CDATA[<p>&#160; Last week I was talking to&#160;one lead engineer of a Singapore company which&#160;is building a benchmarking system for robot solutions. Having seen my presentation at ROSCON2016 about robot benchmarking, he asked me how would I benchmark solutions that are non-ROS compatible. I said that I wouldn&#8217;t. I would not dedicate time to benchmark solutions</p>
<p>The post <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/need-robotics-standards/" data-wpel-link="external" target="_blank">The Need For Robotics Standards</a> appeared first on <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="http://robohub.org/wp-content/uploads/2017/08/ROSCON.jpg" alt="" width="1000" height="1333" class="aligncenter size-full wp-image-84447" srcset="https://robohub.org/wp-content/uploads/2017/08/ROSCON.jpg 1000w, https://robohub.org/wp-content/uploads/2017/08/ROSCON-319x425.jpg 319w, https://robohub.org/wp-content/uploads/2017/08/ROSCON-768x1024.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" />
<p>Last week I was talking to&nbsp;one lead engineer of a Singapore company which&nbsp;is building a benchmarking system for robot solutions. Having seen <a href="https://www.youtube.com/watch?v=1dQyp1oMyNg" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">my presentation at ROSCON2016 about robot benchmarking</a>, he asked me how I would benchmark solutions that are non-ROS compatible. I said that I wouldn’t dedicate time to benchmark solutions that are not ROS-based. Instead, I suggested I would use the time to polish the&nbsp;ROS-based benchmarking&nbsp;and suggest that vendors adopt that middleware in their products.</p>
<p><span id="more-84249"></span></p>
<h3>Benchmarks are necessary and they need standards</h3>
<p>Benchmarks are necessary to improve any field. By having a benchmark, different solutions to a single problem can be compared and hence a direction for improvement can be traced. Currently,&nbsp;robotics lacks such benchmarking system.</p>
<p>I strongly believe that to create a benchmark for robotics we need a standard at the level of programming.</p>
<p>By having a standard at the level of programming, manufacturers can build their own hardware solutions at will, as long as&nbsp;they are programmable with the programming standard. That is the approach taken by devices that can be plugged into a computer. Manufacturers create the product on their own terms,&nbsp;and then provide a Windows driver that allows any computer in the world (that runs Windows) to communicate with the product. Once this computer-to-product communication is made, you can create programs that compare the same type of devices from different manufacturers for performance, quality, noise, whatever your benchmark is trying to compare.</p>
<p>You see? Different types of devices, different types of hardware. But all of them can be compared through the same benchmarking system that relies on the Windows standard.</p>
<h3>Software&nbsp;development for robots also needs standards</h3>
<p>The need for&nbsp;standards is not only required for comparing solutions&nbsp;but also to speed robotics development. By having a robotics standard, developers can concentrate on building solutions that do not have to be re-implemented whenever the robot hardware changes. Actually, given the middleware structure, developers&nbsp;can disassociate enough from the hardware that they can almost spend 100% of their time in the software realm, while still developing code for robots.</p>
<p>We need the same type of standard for robotics. We need a kind of <em>operating system</em> that allows us to compare different robotics solutions. We need the Windows of the PCs, the Android of the phones, the CAN of the buses…</p>
<p><img decoding="async" class="aligncenter size-large wp-image-6773" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_0154-e1503648768343-768x1024.jpg" alt="IMG_0154" width="768" height="1024" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_0154-e1503648768343-225x300.jpg 225w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_0154-e1503648768343-768x1024.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_0154-e1503648768343-1170x1560.jpg 1170w" sizes="(max-width: 768px) 100vw, 768px"></p>
<h3>A few standard proposals and a winner</h3>
<p>But you already know that.&nbsp;I’m not the first one to state this. Actually, many people have already tried to create such a standard. Some examples include <a href="http://playerstage.sourceforge.net" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Player</a>, <a href="http://www.ros.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS</a>, <a href="http://www.yarp.it/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">YARP</a>, <a href="http://www.orocos.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">OROCOS</a>, <a href="https://github.com/urbiforge/urbi" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Urbi</a>, <a href="http://www.mira-project.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MIRA</a> or <a href="http://jderobot.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">JdE Robot</a>, to name a few.</p>
<p>Personally, I actually don’t care which standard is used. It could be ROS, it could be YARP, or it could be any other that still has not been created. The only thing I really care about is that we &nbsp;adopt a standard&nbsp;as soon as possible.</p>
<p>And it looks like the developers have decided. Robotics developers prefer&nbsp;ROS as their common middleware to program robots.</p>
<p>No other middleware for robotics&nbsp;has had such a large adoption. Some data about it:</p>
<table>
<tbody>
<tr>
<td></td>
<td>ROS</td>
<td>YARP</td>
<td>OROCOS</td>
</tr>
<tr>
<td>Number of Google pages:</td>
<td><a href="https://www.google.es/search?hl=en&amp;authuser=0&amp;source=hp&amp;q=%22robot+operating+system%22+ros&amp;oq=%22robot+operating+system%22+ros&amp;gs_l=psy-ab.3..0l2j0i22i30k1l2.2200.14948.0.15827.29.28.0.0.0.0.107.2043.27j1.28.0....0...1.1.64.psy-ab..1.28.2041.0..35i39k1j0i67k1j0i10k1j0i20k1.eg1GRPhoRiQ" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">243.000</a></td>
<td><a href="https://www.google.es/search?hl=en&amp;authuser=0&amp;q=yarp+robot&amp;oq=yarp&amp;gs_l=psy-ab.1.0.0i71k1l4.0.0.0.18252.0.0.0.0.0.0.0.0..0.0....0...1..64.psy-ab..0.0.0.JYEc1yYdJaY" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">37.000</a></td>
<td><a href="https://www.google.es/search?hl=en&amp;authuser=0&amp;q=orocos+robot&amp;oq=orocos+robot&amp;gs_l=psy-ab.3..0i7i30k1.29927.30728.0.31128.6.6.0.0.0.0.77.428.6.6.0....0...1.1.64.psy-ab..0.6.426...0j0i7i10i30k1.qHjuzlGz-54" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">42.000</a></td>
</tr>
<tr>
<td>Number of citations if the paper describing the middleware:</td>
<td><a href="https://scholar.google.com/scholar?cites=143767492575573826&amp;as_sdt=2005&amp;sciodt=0,5&amp;hl=en" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">3.638</a></td>
<td><a href="https://scholar.google.com/scholar?cites=3797314318845413779&amp;as_sdt=2005&amp;sciodt=0,5&amp;hl=en" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">463</a></td>
<td><a href="https://scholar.google.com/scholar?cites=12019843289051907420&amp;as_sdt=2005&amp;sciodt=0,5&amp;hl=en" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">563</a></td>
</tr>
<tr>
<td>Alexa ranking:</td>
<td><a href="https://www.alexa.com/siteinfo/ros.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">14.118</a><img decoding="async" class="aligncenter size-full wp-image-6764" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195039.png" alt="Screenshot from 2017-08-24 19:50:39" width="366" height="226" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195039-300x185.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195039-280x173.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195039.png 366w" sizes="(max-width: 366px) 100vw, 366px"></td>
<td><a href="https://www.alexa.com/siteinfo/yarp.it" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">1.505.000</a><img decoding="async" class="aligncenter size-full wp-image-6766" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195029.png" alt="Screenshot from 2017-08-24 19:50:29" width="369" height="235" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195029-300x191.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195029-280x178.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195029.png 369w" sizes="(max-width: 369px) 100vw, 369px"></td>
<td><a href="https://www.alexa.com/siteinfo/orocos.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">668.293</a><img decoding="async" class="aligncenter size-full wp-image-6765" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195019.png" alt="Screenshot from 2017-08-24 19:50:19" width="362" height="222" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195019-300x184.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195019-280x172.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-195019.png 362w" sizes="(max-width: 362px) 100vw, 362px"></td>
</tr>
</tbody>
</table>
<p>Note 1: Only showing the current big three players.</p>
<p>Note 2: Very simple comparison. Difficult to compare in other terms since data is not available.</p>
<p>Note 3: Data measured&nbsp;in August 2017. May vary at the time you are reading this. Links provided on the numbers themselves, so you can check yourself.</p>
<p>This is not only the feeling that we, roboticists, have. The numbers also indicate that ROS is becoming the standard for robotics programming.</p>
<p><a href="http://wiki.ros.org/Robots" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-full wp-image-6763" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-192559.png" alt="Screenshot from 2017-08-24 19:25:59" width="931" height="768" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-192559-300x247.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-192559-768x634.png 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-192559-227x187.png 227w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-192559.png 931w" sizes="(max-width: 931px) 100vw, 931px"></a></p>
<h3>Why ROS?</h3>
<p>The question is then, why has ROS emerged on top of all the other possible contestants. None of them is worst than ROS in terms of features. Actually you can find some feature in all the other middlewares that outperform ROS. If that is so, why or how has ROS achieved the status of <em>becoming the standard</em> ?</p>
<p>A simple answer from my point of view: excellent learning tutorials and debugging tools.</p>
<p><a href="http://robotignite.academy" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-large wp-image-6769" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/1-1024x441.png" alt="1" width="1024" height="441" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/1-300x129.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/1-768x331.png 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/1-1024x441.png 1024w, http://www.theconstructsim.com/wp-content/uploads/2017/08/1-280x121.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/1-1170x504.png 1170w, http://www.theconstructsim.com/wp-content/uploads/2017/08/1.png 1316w" sizes="(max-width: 1024px) 100vw, 1024px"></a></p>
<p>&nbsp;</p>
<p>Here there is<a href="https://www.bloomberg.com/news/articles/2017-05-17/the-not-so-secret-code-that-powers-robots-around-the-globe" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"> a video where Leila Takayama</a>, early developer of ROS, explains when she realized&nbsp;that the key for having ROS used worldwide would be to provide tools that simplify the reuse of ROS code. None of the other projects have such a set of clear and structured tutorials. In addition, few of the other middlewares provide debugging tools for their packages. The lack of these two essential aspects is preventing new people from using&nbsp;their middlewares (even if I understand the developers of OROCOS and YARP for not providing it… who wants to write tutorials or build debugging tools… nobody! ? )</p>
<p>&nbsp;</p>
<p>Additionally, it is not only about tutorials and debugging tools. ROS creators also provide a good system of managing packages. The result is that developers worldwide could use others packages in a (relatively) easy way. This created an explosion in ROS packages available, providing off-the-shelf almost anything for your brand new ROSified robot.</p>
<p>Now, the impressive rate at which contributions to the ROS ecosystem are made makes it almost unstoppable in terms of growing.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-6775" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-02-23-203927.png" alt="Screenshot from 2017-02-23 20:39:27" width="1003" height="747" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-02-23-203927-300x223.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-02-23-203927-768x572.png 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-02-23-203927-251x187.png 251w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-02-23-203927.png 1003w" sizes="(max-width: 1003px) 100vw, 1003px"></p>
<p>&nbsp;</p>
<h3>What about companies?</h3>
<p>At the beginning, ROS was mostly used by students at Universities. However, as ROS becomes more mature and the number of packages increases, companies are realizing that adopting ROS&nbsp;is also good for them because they will be able to use code developed by others. On top of that, it will be easier for them&nbsp;to hire new engineers who already know the middleware (otherwise they would need to teach the newcomers their own middleware).</p>
<p>As a result, many companies have jumped onto the ROS train, developing from scratch their products to be ROS compatible. Examples include <a href="http://www.robotnik.eu/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Robotnik</a>, <a href="http://fetchrobotics.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Fetch Robotics</a>, <a href="http://www.savioke.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Savioke</a>, <a href="http://www.pal-robotics.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Pal Robotics</a>, <a href="http://en.yujinrobot.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Yujin Robots</a>, <a href="http://www.theconstructsim.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">The Construct</a>, <a href="https://www.rapyuta-robotics.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Rapyuta Robotics</a>, <a href="http://erlerobotics.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Erle Robotics</a>, <a href="https://www.shadowrobot.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Shadow Robot</a> or <a href="https://www.clearpathrobotics.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Clearpath</a>, to name a few of the sponsors of the next <a href="https://roscon.ros.org/2017/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROSCON</a> ? . Creating&nbsp;their ROS-compatible products, they decreased their development time by several orders of magnitude.</p>
<p>To bring things further, two Spanish companies have revolutionised the standardization of robotics products using ROS middleware: on one side, <a href="http://www.robotnik.eu/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Robotnik</a> has created the <a href="https://www.roscomponents.com/en/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS Components</a> shop. A shop where anyone can buy ROS compatible devices, starting from mobile bases to sensors or actuators.&nbsp;On the other side, <a href="http://erlerobotics.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Erle Robotics</a> (now Acutronic Robotics) is in the process of developing <a href="https://www.h-ros.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Hardware ROS</a>. The H-ROS is a&nbsp;standardized software and hardware infrastructure&nbsp;to easily create reusable and reconfigurable&nbsp;robot hardware parts<b>. </b>ROS is enabling hardware standarization too, but this time driven by companies, not research! That must mean something…</p>
<p><a href="https://www.youtube.com/watch?v=_ULJrmJ7xOo" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-large wp-image-6770" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-1024x521.png" alt="Screenshot from 2017-08-24 22:25:45" width="1024" height="521" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-300x153.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-768x391.png 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-1024x521.png 1024w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-280x143.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/Screenshot-from-2017-08-24-222545-1170x596.png 1170w" sizes="(max-width: 1024px) 100vw, 1024px"></a></p>
<p>Finally,&nbsp;it looks like industrial robot manufacturers have understood the value that a standard can provide to their business. Even if they do not make their industrial robots ROS-enabled from the start, they are adopting <a href="http://rosindustrial.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS Industrial</a>&nbsp; a flavour of ROS, which allows them to ROSify their industrial robots and re-use all the software created for manipulators in the ROS ecosystem.</p>
<p>But are all companies jumping onto the ROS train? Not all of them!</p>
<p>Some&nbsp;companies like <a href="https://www.jibo.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Jibo</a>, <a href="https://www.ald.softbankrobotics.com/en" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Aldebaran</a> or <a href="http://www.google.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Google</a>&nbsp;still do not rely on ROS for their robot programming. Some of them rely on their own middleware created before the existence of ROS &nbsp;(that is the case of Aldebaran). Some others, though, are creating their own middleware from scratch. Their reasons: they do not believe ROS is good, they have already created a&nbsp;middleware, or&nbsp;do not want to develop their products dependent on the middleware of others. Those companies have very fair reasons to go&nbsp;their way. However, will that make them competitive? (if we have to judge from history, mobiles, VCRs, the answer may be no).</p>
<h3>So is ROS the standard for programming robots?</h3>
<p>That question is still too soon to be answered. It looks like it is becoming the standard, but many things can change. It is unlikely that another middleware takes the current title from&nbsp;ROS, but it may happen. There could be a new player that wipes ROS from the map (maybe Google will release its middleware to the public &#8211; like they did with Android &#8211; and take the sector by storm?).</p>
<p>Still, ROS has its problems, like a lack of security or the instability of some important packages. Even if the OSRF group are working hard to build a better ROS system (for instance ROS2 is in beta phase with many root improvements), some hard work is still required for some basic things (like the ROS controllers for real robots).</p>
<p><a href="http://www.theconstructsim.com/barista-the-first-robot-serving-coffee-in-the-world" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-large wp-image-6768" src="http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-1024x683.jpg" alt="IMG_3330" width="1024" height="683" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-300x200.jpg 300w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-768x512.jpg 768w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-1024x683.jpg 1024w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-280x187.jpg 280w, http://www.theconstructsim.com/wp-content/uploads/2017/08/IMG_3330-1170x780.jpg 1170w" sizes="(max-width: 1024px) 100vw, 1024px"></a></p>
<p>Given those numbers, at <a href="http://www.theconstructsim.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> we believe that ROS IS THE STANDARD (that is why we are devoted to creating <a href="http://robotignite.academy" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">the best ROS learning tutorials of the world</a>). Actually, it was thanks to this standardization that two Barcelona students were able to create an autonomous robot product for coffee shops in only three months with zero knowledge of robotics (see <a href="http://www.theconstructsim.com/barista-the-first-robot-serving-coffee-in-the-world" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Barista robot</a>).</p>
<p>This is the future, and it is good. In this future, thanks to standards, almost anyone will be able to build, design and program their own robotics product, similar to how PC stores are building computers today.</p>
<p>So my advice, as I said to the Singapore engineer, is to bet on ROS. Right now, it is the best option for a robotics standard.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Teaching ROS quickly to students</title>
		<link>https://robohub.org/teaching-ros-quickly-to-students/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Fri, 09 Jun 2017 09:00:03 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[ROS]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">http://robohub.org/teaching-ros-quickly-to-students/</guid>

					<description><![CDATA[<p>&#160; Lecturer Steffen Pfiffner of University of Weingarten in Germany is teaching&#160;ROS to 26 students at the same time at a very fast pace. His students, all of them within&#160;the Master on Computer Science of University of Weingarten, use only a web browser. They connect to a web page containing the lessons, a ROS development</p>
<p>The post <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/teaching-ros-fast-to-many-students/" data-wpel-link="external" target="_blank">Teaching ROS Fast To Many Students</a> appeared first on <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-79391" src="http://robohub.org/wp-content/uploads/2017/05/teach_ros_robot_ignite_academy_learn_ros_robots_robtoics_programming.jpg" alt="" width="900" height="571" srcset="https://robohub.org/wp-content/uploads/2017/05/teach_ros_robot_ignite_academy_learn_ros_robots_robtoics_programming.jpg 900w, https://robohub.org/wp-content/uploads/2017/05/teach_ros_robot_ignite_academy_learn_ros_robots_robtoics_programming-425x270.jpg 425w, https://robohub.org/wp-content/uploads/2017/05/teach_ros_robot_ignite_academy_learn_ros_robots_robtoics_programming-768x487.jpg 768w" sizes="(max-width: 900px) 100vw, 900px" />
<p>Lecturer Steffen Pfiffner of University of Weingarten in Germany is teaching ROS to 26 students at the same time at a very fast pace. His students, all of them within the Master on Computer Science of University of Weingarten, use only a web browser. They connect to a web page containing the lessons, a ROS development environment and several ROS based simulated robots. Using the browser, Pfiffner and his colleague Benjamin Stähle, are able to teach how to program with ROS quickly and to many students. This is what Robot Ignite Academy is made for.<span id="more-79167"></span></p>
<p>“With Ignite Academy our students can jump right into ROS without all the hardware and software setup problems. And the best: they can do this from everywhere,&#8221; says Pfiffner.</p>
<p>Robot Ignite Academy provides a web service which contains the teaching material in text and video format, the simulations of several ROS based robots that the students must learn to program, and the development environment required to build ROS programs and test them on the simulated robot.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-79392" src="http://robohub.org/wp-content/uploads/2017/05/robot-ignite.png" alt="" width="1024" height="640" srcset="https://robohub.org/wp-content/uploads/2017/05/robot-ignite.png 1024w, https://robohub.org/wp-content/uploads/2017/05/robot-ignite-425x266.png 425w, https://robohub.org/wp-content/uploads/2017/05/robot-ignite-768x480.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><hr class="xh2  "></p>
<h3>Student&#8217;s point of view</h3>
<p>Students bring their own laptops to the class and connect to the <a href="http://robotignite.academy" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">online platform</a>. From that moment, their laptop becomes a ROS development machine, ready to develop programs for many simulated real robots.</p>
<p>The Academy provides the text, the videos and the examples that the student has to follow. Then, the student creates her own ROS program and makes the robot perform a specific action. The student develops the ROS programs as if she is in a typical ROS development computer.</p>
<p>The main advantage is that students can use a Windows, Linux or Mac machine to learn ROS. They don’t even have to install ROS in their computers. The only prerequisite of the laptop is to have a browser. So students do not mess with all the installation problems that frustrate them (and the teachers!), especially when they are starting.</p>
<p>After class, students can continue with their learning at home, library or even the beach if there is a wifi available! All their code, learning material and simulations are stored online so they can access them from anywhere, anytime using any computer.</p>
<hr class="xh2  ">
<h3>Teacher&#8217;s point of view</h3>
<p>The advantage of using the platform is not only for the students but also for the teachers. Teachers do not have to create the material and maintain it. They do not have to prepare the simulations or work on multiple different computers. They don’t even have to prepare the exams!! (which are already provided by the platform).</p>
<p>So what are the teachers for?</p>
<p>By making use of the provided material, the teacher can concentrate on guiding the students by explaining the most confusing parts, answer questions, suggest modifications according to the level of each student, and adapt the pace to the different types of students.</p>
<p>This new method of teaching ROS is exploding among the Universities and High Schools that want to provide the latest and most practical teachings to their students. The method, developed by Robot Ignite Academy, combines a new way of teaching based on practice and an online learning platform. Those two points combined make the teaching of ROS a smooth experience and can potentially see the students&#8217; knowledge base skyrocket.</p>
<p>As user Walace Rosa indicates in his video comment about Robot Ignite Academy:</p>
<blockquote><p>It is a game changer [in] teaching ROS!</p></blockquote>
<p>The method is becoming very popular in the robotics circuits too, and many teachers are using it for younger students. For example, High School Mundet in Barcelona is using it to teach ROS to 15 years old students.</p>
<p>Additionally, the academy provides a free online certification exam with different levels of knowledge certification. Many Universities are using this exam to certify that their students did learn the material since the exam is quite demanding.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-79393" src="http://robohub.org/wp-content/uploads/2017/05/ROS-classroom-teaching.jpg" alt="" width="1024" height="768" srcset="https://robohub.org/wp-content/uploads/2017/05/ROS-classroom-teaching.jpg 1024w, https://robohub.org/wp-content/uploads/2017/05/ROS-classroom-teaching-425x319.jpg 425w, https://robohub.org/wp-content/uploads/2017/05/ROS-classroom-teaching-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><hr class="xh2  "></p>
<h3>Some examples of past events</h3>
<ul>
<li><span class="s2"> 1 week ROS course in Barcelona for <em><a href="http://smart-e-mariecurie.eu/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">SMART-E project</a></em> team members. This is a private course given by Robot Ignite Academy at Barcelona for 15 members of the SMART-E project that need to be up to speed with ROS fast. <strong>From 8th to 12nd of May 2017</strong></span></li>
<li> 1 day ROS course for the <em><a href="http://www.enginyersbcn.cat/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">Col·legi d’Enginyers de Barcelona</a></em>. <strong>The 17th of May 2017</strong>.</li>
<li> 3 months course for <em><a href="http://www.salleurl.edu/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">University of La Salle</a></em> in Barcelona within the <em><a href="http://www.beslasalle.net/portal/masters/masters-electronica-madr-barcelona" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">Master on Automatics, Domotics and Robotics</a></em>. <strong>From 10th of May to 29th of June 2017</strong>.</li>
<li> 1 weekend ROS course for teenagers in Bilbao, Spain. <strong>The 20th and 21st of May 2017</strong>.</li>
<li> We can also organize a special event like these for you and your team.</li>
</ul>
<hr class="xh2  ">
<h3>Helpful ROS videos</h3>
<div class="keep-aspect"><iframe title="ROS BASICS IN 5 DAYS #1 - Course Overview &amp; Introduction" width="500" height="281" src="https://www.youtube-nocookie.com/embed/DBFYZRMLr70?list=PLK0b4e05LnzaOZxQt0OwMRwIa8ysYG9_a" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<div class="keep-aspect"><iframe title="3 reasons why students struggle with ROS" width="500" height="281" src="https://www.youtube-nocookie.com/embed/XUwREG8ZOgc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Machine Learning with OpenAI Gym on ROS Development Studio</title>
		<link>https://robohub.org/machine-learning-with-openai-gym-on-ros-development-studio/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Mon, 08 May 2017 08:15:37 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ROS]]></category>
		<guid isPermaLink="false">http://robohub.org/machine-learning-with-openai-gym-on-ros-development-studio/</guid>

					<description><![CDATA[<p>Imagine how easy it would be to learn skating, if only it doesn&#8217;t&#160;hurt everytime you fall. Unfortunately, we, humans, &#160;don&#8217;t have that option. Robots, however, can now &#8220;learn&#8221; their skills on a simulation platform without being afraid of crashing into a wall. Yes, &#8220;it learns&#8220;! This is possible with the reinforcement learning algorithms provided by</p>
<p>The post <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/machine-learning-openai-gym-ros-development-studio/" data-wpel-link="external" target="_blank">Machine Learning with OpenAI Gym on ROS Development Studio</a> appeared first on <a rel="nofollow external noopener noreferrer" href="http://www.theconstructsim.com/" data-wpel-link="external" target="_blank">The Construct</a>.</p>]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-77885" src="http://robohub.org/wp-content/uploads/2017/05/comp.jpg" alt="" width="900" height="600" srcset="https://robohub.org/wp-content/uploads/2017/05/comp.jpg 900w, https://robohub.org/wp-content/uploads/2017/05/comp-425x283.jpg 425w, https://robohub.org/wp-content/uploads/2017/05/comp-768x512.jpg 768w" sizes="(max-width: 900px) 100vw, 900px" />
<p>Imagine how easy it would be to learn skating, if only it doesn’t hurt everytime you fall. Unfortunately, we, humans,  don’t have that option. Robots, however, can now “<strong>learn</strong>” their skills on a simulation platform without being afraid of crashing into a wall. Yes, “<strong>it learns</strong>“! This is possible with the reinforcement learning algorithms provided by <a href="https://gym.openai.com/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">OpenAI Gym</a> and the ROS Development Studio.<span id="more-77736"></span></p>
<p>You can now train your robot to navigate through an environment filled with obstacles just based on the sensor inputs, with the help of OpenAI Gym. In April 2016, OpenAI introduced “Gym”, a platform for developing and comparing reinforcement learning algorithms. Reinforcement learning is an area of machine learning that allows an intelligent agent (for example, robot) to learn the best behaviors in an environment by trial-and-error. The agent takes actions in an environment so as to maximize its rewards. We have deployed the <a href="https://github.com/erlerobot/gym-gazebo" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">gym_gazebo</a> package from <a href="http://erlerobotics.com/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">Erle Robotics</a>. in the ROS Development Studio. It enables the users to test their reinforcement learning for their robots in Gazebo.</p>
<hr class="xh2  ">
<h2>How to Train your Robot</h2>
<div id="attachment_5866" class="wp-caption aligncenter">
<a href="http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1.png" rel="attachment wp-att-5866 follow external noopener noreferrer" data-wpel-link="external" target="_blank"><img decoding="async" class="size-medium wp-image-5866" src="http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1-300x127.png" sizes="(max-width: 600px) 100vw, 600px" srcset="http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1-300x127.png 300w, http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1-768x324.png 768w, http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1-280x118.png 280w, http://www.theconstructsim.com/wp-content/uploads/2017/04/Maze1.png 922w" alt="Robot training to navigate through an environment with obstacles" width="600" height="254" /></a>
<p class="wp-caption-text">Robot training to navigate through an environment with obstacles</p>
</div>
<p>In this example we will be seeing how a turtlebot is able to learn navigating through an environment without hitting an obstacle. The turtlebot will use a reinforcement learning method known as Q-learning.</p>
<p>There are four environments already available for the user to test their simulations with. These environments can be launched using the respective launch files:</p>
<ul>
<li>GazeboCircuitTurtlebotLidar_v0.launch</li>
<li>GazeboCircuit2TurtlebotLidar_v0.launch</li>
<li>GazeboRoundTurtlebotLidar_v0.launch</li>
<li>GazeboMazeTurtlebotLidar_v0.launch</li>
</ul>
<p>The images of the different environments are given below:</p>
<table>
<caption>The various environments already available:</caption>
<colgroup>
<col width="20%" />
<col width="20%" /></colgroup>
<tbody>
<tr class="odd">
<td align="center">Circuit<br />
<img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2017/04/circuit.png" alt="" /></td>
<td align="center">Circuit2<br />
<img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2017/04/circuit2.png" alt="" /></td>
</tr>
<tr class="even">
<td align="center">Round<br />
<img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2017/04/round.png" alt="" /></td>
<td align="center">Maze<br />
<img decoding="async" src="http://www.theconstructsim.com/wp-content/uploads/2017/04/maze.png" alt="" /></td>
</tr>
</tbody>
</table>
<p>The user is requested to try out the existing environment before developing their own environments for training the robot. An environment is where the robot’s possible actions and rewards are defined. For example, in the available environments, there are three possible actions for the Turtlebot robot:</p>
<p>– Forward ( with a reward of 5 points)<br />
– Left ( with a reward of 1 point)<br />
– Right ( with a reward of 1 point)</p>
<p>If it collides into the walls, then the training episode ends (with a penalty of 200 points). The turtlebot has to learn to navigate through the environment, based on the rewards obtained from different episodes. This can be achieved using the Q-learning algorithm. Let us see, how it can be done using the ROS Development Studio.</p>
<hr class="xh2  ">
<h2>Using the ROS Development Studio for training the robot</h2>
<p>First, we have to set the path in the jupyter-notebook as given below:</p>
<h4><code>import sys<br />
sys.path.append("/usr/local/lib/python2.7/dist-packages/")<br />
sys.path.append("/home/ubuntu/gym-gazebo")<br />
sys.path.append("/home/user/catkin_ws/src/gym_construct/src")<br />
%matplotlib inline<br />
</code></h4>
<p>The python scripts in the folder <code>gym_construct/src/</code> help us simulate the reinforcement learning techniques for a Turtlebot. Currently, the number of episodes has been set to 20.<br />
Feel free to increase the number of episodes in the python scripts (usually up to 5000) to actually train the robot to navigate the environment completely.Run the  only the script corresponding to the environment:</p>
<p>Run the python corresponding to the environment:</p>
<h4><code>## Circuit-2 Environment --&gt; Q-learning<br />
%run /home/user/catkin_ws/src/gym_construct/src/circuit2_turtlebot_lidar_qlearn.py<br />
</code></h4>
<p>The robot undergoes several training episodes and each of these episodes are rewarded based on the number of steps taken by the robot before hitting the environment. We will be able to see that the robot incrementally increases its rewards over time compared to its previous versions. With a very large number of episodes, the robot will learn to navigate the environment without hitting the obstacle.</p>
<hr class="xh2  ">
<h2>Plotting the learning curve of the robot</h2>
<p>The machine learning algorithm generates the output files in the output directory specified in the python script file. In order to plot the curve, we run the <code>display_plot.py</code>. But before that, don’t forget to restart the kernel and set the path once again.</p>
<img decoding="async" class="aligncenter size-medium wp-image-5904" src="http://www.theconstructsim.com/wp-content/uploads/2017/05/download2-300x207.png" alt="download2" width="450" height="307" />
<p>As the number of episodes increases, we will see that the robot’s mean rewards also increases. The user can choose his own robot, environments, action and rewards for testing his reinforcement learning algorithms in OpenAI Gym and RDS. Watch the video below for more on this.</p>
<hr class="xh2  ">
<h2>Video describing the procedure to run OpenAI Gym on RDS</h2>
<div class="keep-aspect"><iframe title="[ROS tutorial] OpenAI Gym For ROS based Robots 101. Gazebo Simulator" width="500" height="281" src="https://www.youtube-nocookie.com/embed/o9FpZ1QQqcc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>I hope you were able to follow the tutorial.  So, that’s all folks. It’s now up to you to develop and test reinforcement learning algorithms in OpenAI Gym and RDS.</p>
<p>Have fun training your robot!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Developing ROS programs for the Sphero robot</title>
		<link>https://robohub.org/developing-ros-programs-for-the-sphero-robot/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Mon, 13 Mar 2017 15:30:40 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[household]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ROS]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Sphero]]></category>
		<guid isPermaLink="false">http://robohub.org/developing-ros-programs-for-the-sphero-robot/</guid>

					<description><![CDATA[You probably know the Sphero robot. It is a small robot with the shape of a ball. In case that you have one, you must know that it is possible to control it using ROS, by installing in your computer the Sphero ROS packages developed by Melonee Wise and connecting to the robot&#160;using the bluetooth]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-73660" src="http://robohub.org/wp-content/uploads/2017/03/sphero-robotic-ball-5-1024x736.jpg" alt="" width="1024" height="736" srcset="https://robohub.org/wp-content/uploads/2017/03/sphero-robotic-ball-5-1024x736.jpg 1024w, https://robohub.org/wp-content/uploads/2017/03/sphero-robotic-ball-5-1024x736-425x305.jpg 425w, https://robohub.org/wp-content/uploads/2017/03/sphero-robotic-ball-5-1024x736-768x552.jpg 768w, https://robohub.org/wp-content/uploads/2017/03/sphero-robotic-ball-5-1024x736-417x300.jpg 417w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>You probably know the Sphero robot. It is a small robot with the shape of a ball. In case that you have one, you must know that it is possible to control it using ROS, by installing in your computer the Sphero ROS packages developed by Melonee Wise and connecting to the robot using the bluetooth of the computer.<span id="more-73602"></span></p>
<p>Now, you can use the ROS Development Studio to create ROS control programs for that robot, testing as you go by using the integrated simulation.</p>
<p>The ROS Development Studio (RDS) provides off-the-shelf a simulation of Sphero with a maze environment. The simulation provides the same interface as the ROS module created by Melonee, so you can test your develop and test the programs on the environment, and once working properly, transfer it to the real robot.</p>
<p>We created the simulation to teach ROS to the students of the Robot Ignite Academy. They have to learn ROS enough to make the Sphero get out of the maze by using odometry and IMU.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73661" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192857-1024x529.png" alt="" width="1024" height="529" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192857-1024x529.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192857-1024x529-425x220.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192857-1024x529-768x397.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192857-1024x529-500x258.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><hr class="xh2  "></p>
<p><strong>Using the simulation</strong></p>
<p>To use the Sphero simulation on RDS go to rds.theconstructsim.com and sign in. If you select the Public simulations, you will quickly identify the Sphero simulation.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73662" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192251.png" alt="" width="717" height="554" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192251.png 717w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192251-425x328.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192251-388x300.png 388w" sizes="(max-width: 717px) 100vw, 717px" />Press the red Play button. A new screen will appear giving you details about the simulation and asking you which launch file you want to launch. The main.launch selected by default is the correct one, so just press Run.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73663" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192318.png" alt="" width="815" height="704" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192318.png 815w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192318-425x367.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192318-768x663.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-192318-347x300.png 347w" sizes="(max-width: 815px) 100vw, 815px" />After a few seconds the simulation will appear together with the development environment for creating the programs for Sphero and testing them.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73664" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193415-1024x528.png" alt="" width="1024" height="528" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193415-1024x528.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193415-1024x528-425x219.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193415-1024x528-768x396.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193415-1024x528-500x258.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" />On the left hand side you have a notebook containing information about the robot and how to program it with ROS. This notebook contains just some examples, but it can be completed and/or modified at your will. As you can see it is an iPython notebook and follows its standard. So it is up to you to modify it, add new information or else. Remember that any change you do to the notebook will be saved in a simulation in your private area of RDS, so you can come back later and launch it with your modifications.</p>
<img decoding="async" class="aligncenter size-full wp-image-73665" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193920-1024x705.png" alt="" width="1024" height="705" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193920-1024x705.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193920-1024x705-425x293.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193920-1024x705-768x529.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-193920-1024x705-436x300.png 436w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>You must know that the code included in the notebook is directly executable by selecting the cell of the code (do a single click on it) and pressing the small play button at the top of the notebook. This means that, once you press that button, the code will be executed and start controlling the Sphero simulated robot for a few time-steps (remember to have the simulation activated (Play button of the simulation activated) to see the robot move).</p>
<p>On the center area, you can see the IDE. It is the development environment for developing the code. You can browse there all the packages related to the simulation or any other packages that you may create.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73666" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194132.png" alt="" width="959" height="912" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194132.png 959w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194132-425x404.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194132-768x730.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194132-315x300.png 315w" sizes="(max-width: 959px) 100vw, 959px" />On the right hand side, you can see the simulation and beneath it, the shell. The simulation shows the Sphero robot as well as the environment of the maze. On the shell, you can issue commands in the computer that contains the simulation of the robot. For instance, you can use the shell to launch the keyboard controller and move the Sphero around. Try typing the following:</p>
<ul>
<li><em>$ roslaunch sphero_gazebo keyboard_teleop.launch</em></li>
</ul>
<p>Now you must be able to move the robot around the maze by pressing some keys of the keyboard (instructions provided on the screen).</p>
<img decoding="async" class="aligncenter size-full wp-image-73667" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194551.png" alt="" width="500" height="987" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194551.png 500w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194551-215x425.png 215w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-194551-152x300.png 152w" sizes="(max-width: 500px) 100vw, 500px" />
<p>You can also launch there Rviz, and then watch the robot, the frames and any other additional information you may want of the robot. Type the following:</p>
<ul>
<li><em>$ rosrun rviz rviz</em></li>
</ul>
<p>Then press the Screen red icon located at the bottom-left of the screen (named the graphical tools). A new tab should appear, showing how the Rviz is loading. After a while, you can configure the Rviz to show the information you desire.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73668" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-195210-1024x768.png" alt="" width="1024" height="768" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-195210-1024x768.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-195210-1024x768-425x319.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-195210-1024x768-768x576.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-195210-1024x768-400x300.png 400w" sizes="(max-width: 1024px) 100vw, 1024px" />There are many ways you can configure the screen to provide more focus to what interests you the most.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-73669" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200711-1024x527.png" alt="" width="1024" height="527" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200711-1024x527.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200711-1024x527-425x219.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200711-1024x527-768x395.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200711-1024x527-500x257.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><img decoding="async" class="aligncenter size-full wp-image-73670" src="http://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200744-1024x531.png" alt="" width="1024" height="531" srcset="https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200744-1024x531.png 1024w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200744-1024x531-425x220.png 425w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200744-1024x531-768x398.png 768w, https://robohub.org/wp-content/uploads/2017/03/Screenshot-from-2017-03-09-200744-1024x531-500x259.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" />To end this post, I would like to indicate that you can download the simulation to your computer at any time, by doing right-click on the directories and selecting Download. You can also clone the The Construct simulations repository to download it (among other simulations available).</p>
<hr class="xh2  ">
<p><em>If you liked this tutorial, you may also enjoy these:</em></p>
<ul>
<li><a href="http://robohub.org/ugcs-photogrammetry-technique-for-uav-land-surveying-missions/" target="_blank" data-wpel-link="internal">UgCS photogrammetry technique for UAV land surveying missions</a></li>
<li><a href="http://robohub.org/programming-for-robotics-introduction-to-ros/" target="_blank" data-wpel-link="internal">Programming for robotics: Introduction to ROS</a></li>
<li><a href="http://robohub.org/python-programming-your-nao-robot/" target="_blank" data-wpel-link="internal">Python programming your NAO robot</a></li>
<li><a href="http://robohub.org/robotics-maths-python-a-fledgling-computer-scientists-guide-to-inverse-kinematics/" target="_blank" data-wpel-link="internal">Robotics, maths, python: A fledgling computer scientist’s guide to inverse kinematics</a></li>
<li><a href="http://robohub.org/3-d-printing-hydraulically-powered-robots-no-assembly-required/" target="_blank" data-wpel-link="internal">3-D printing hydraulically-powered robots, no assembly required</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" target="_blank" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://robohub.org/&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNFmCoRAKHuz2BWNf-njm6KSkgAacA" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a title="" href="http://eepurl.com/t-UEf" target="_blank" rel="external follow noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://eepurl.com/t-UEf&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNGjDpzB3aAol7pCzSfh7VU9iN6oQQ" data-wpel-link="external">sign up for our weekly newsletter</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Adjust how you learn and quickly pick up robotics programming</title>
		<link>https://robohub.org/adjust-how-you-learn-and-quickly-pick-up-robotics-programming/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Thu, 06 Oct 2016 09:30:14 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[The Construct]]></category>
		<guid isPermaLink="false">http://robohub.org/adjust-how-you-learn-and-quickly-pick-up-robotics-programming/</guid>

					<description><![CDATA[&#160; The Biggest Obstacle Preventing Robotics Going Mainstream Is Not Having Good Programmers Able To Program Robots Brian Gerkey, CEO of the Open Source Robotics Foundation &#160; Want to be up to speed on robotics programming? Want to learn the latest robotics programming standards in 5 days? Want to avoid all that tedious documentation&#160;in order]]></description>
										<content:encoded><![CDATA[<div id="attachment_66616" style="width: 1034px" class="wp-caption aligncenter"><a href="http://robohub.org/wp-content/uploads/2016/09/IMG_1384-1-1024x684.jpg" data-wpel-link="internal"><img decoding="async" aria-describedby="caption-attachment-66616" class="size-large wp-image-66616" src="http://robohub.org/wp-content/uploads/2016/09/IMG_1384-1-1024x684-1024x684.jpg" alt="Credit: Ricardo Tellez" width="1024" height="684" srcset="https://robohub.org/wp-content/uploads/2016/09/IMG_1384-1-1024x684.jpg 1024w, https://robohub.org/wp-content/uploads/2016/09/IMG_1384-1-1024x684-425x284.jpg 425w, https://robohub.org/wp-content/uploads/2016/09/IMG_1384-1-1024x684-449x300.jpg 449w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p id="caption-attachment-66616" class="wp-caption-text">Credit: Ricardo Tellez</p></div>
<p>&#8220;The biggest obstacle preventing robotics going mainstream is not having good programmers able to program robots,&#8221; Brian Gerkey, CEO of the <a href="http://www.osrfoundation.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Open Source Robotics Foundation</a>.</p>
<h2 class="p1">Learning to program robots is difficult.</h2>
<p class="p1">I mean, real robots.</p>
<p class="p1">I am not talking about learning to program Lego and the like. I’m talking about making a <a href="https://www.youtube.com/watch?v=hkbUIatgfBM" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Reem robot</a> move around a shopping mall helping people to carry their bags. Or a <a href="https://www.youtube.com/watch?v=CEIUrF7iOXk" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Fetch robot</a> cooperate on a warehouse with humans helping them to fetch the packages.</p>
<div class="keep-aspect"><iframe title="Fetch Automates Your Warehouse With Robots" width="500" height="281" src="https://www.youtube-nocookie.com/embed/CEIUrF7iOXk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p class="p1">Yes, programming of these robots is difficult.</p>
<p class="p1">In order to simplify the programming of those robots, frameworks have been created:</p>
<ol>
<li class="p1"><a href="http://www.ros.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS</a></li>
<li class="p1"><a href="http://www.orocos.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">OROCOS</a></li>
<li class="p1"><a href="http://www.yarp.it/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">YARP</a></li>
<li class="p1"><a href="http://www.gostai.com/products/urbi/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">URBI</a></li>
<li class="p1">etc…</li>
</ol>
<p class="p1">Those are the real thing. They are frameworks that are installed in real robots and used to make them work. I’m not talking about using Matlab for programming your algorithm in a robot. Matlab is not used in real life, only in academia for non-replicable results. Here we are talking about the real thing.</p>
<p class="p1">But don’t be get me wrong. Even if those frameworks are quite complex, anybody can learn to program robots. The question is: how long does it take?</p>
<p class="p1"><strong>Why does it take so long to learn how to program robots?</strong></p>
<p>We have identified a series of problems that prevent quick learning of robotics.</p>
<h3>You don’t have access to robots to play with</h3>
<p class="p1">There are many different robots available and they are really expensive. <span class="s1">Acquiring, maintaining, and explaining the hardware are real problems that limit class size and the learning experience of the students.</span></p>
<p class="p1">As Nikolaus Correll, <span class="ff2 ws2"><span class="ff1 ws3">Rowan Wing and David Coleman</span></span> indicate in their paper, <a href="https://www.researchgate.net/publication/258792932_A_One-Year_Introductory_Robotics_Curriculum_for_Computer_Science_Upperclassmen" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><em>A One-Year Introductory Robotics Curriculum for Computer Science Upperclassmen</em>:</a></p>
<blockquote>
<p class="p1"><span class="s1">Only a subset of the course material of a robotics curriculum can be assessed conceptually or mathematically. Demonstrating a thorough understanding of an algorithm requires implementation. Unlike purely computational algorithms, which can be assessed automatically using test-input, authentic assessment scenarios are difficult to create for a robotics class.</span></p>
</blockquote>
<p class="p1">Hence, students can hardly practice what they are learning.</p>
<p class="p1">We strongly believe in the <a href="http://www.papert.org/articles/SituatingConstructionism.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">CONSTRUCTIONISM</a> approach. Defined by Seymor Papert around 1980, the constructionism approach advocates for learning by making. That is, you are not learning when somebody is teaching you, but you are learning when you practice.</p>
<p class="p1">If you don’t have a robot to practise with, you cannot learn properly and at full speed.</p>
<h3 class="p1">Concepts are complex to understand</h3>
<p class="p1">The concepts of learning how to make a robot work are complex (how to make a robot grasp, how to build a navigation program, how to make it reason, etc.), which makes the learning curve very steep.</p>
<p class="p1">How many of you out there use ROS? Ok, how would you explain ROS to others who know nothing about it? Difficult, isn’t it?</p>
<p class="p1">The most meaningful unit in robotics for a newcomer is making the robot do something. Given the student’s program to make the robot do something, the robot either does it or not. This is very clear to understand. You push this button and the robot does that (or not, if you have a failure in your program). The feedback of your performance is very clear and straight.</p>
<p class="p1">It is not the same to get the feedback about the robot doing an action than to do it because the compilation said you forgot to include something in the CMakeLists.</p>
<p class="p1">The longer it takes to associate the errors with the result in the robot, the more difficult it is for the student to close the loop of understanding, and hence, learn why or why not this works that way. This is the concept of <strong>delayed reward</strong>. The longer delayed reward, the more difficult to understand the relation cause-effect and the longer it will take to learn the concept associated.</p>
<p class="p1">The challenge is then to provide such feedback very quickly, even if there are many steps and concepts involved in a robot action. Hence, teaching materials cannot start by indicating how to install everything, how to compile, or how to create a download new packages.</p>
<p class="p1">Nobody needs to know the definition of ROS to start using it. It is not a good idea to start teaching ROS by defining what a package is, or what a workspace is, then how catkin works, then what is the ROS_MASTER_URI, etc.</p>
<p class="p1">All of those are important, but not at this early stage. Going at that pace will take ages to make the robot do something, and for the student to understand.</p>
<p class="p1"><a href="http://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-01-at-16.37.37-1024x452.png" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-66706" src="http://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-01-at-16.37.37-1024x452-1024x452.png" alt="screen-shot-2016-09-01-at-16-37-37-1024x452" width="1024" height="452" srcset="https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-01-at-16.37.37-1024x452.png 1024w, https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-01-at-16.37.37-1024x452-425x188.png 425w, https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-01-at-16.37.37-1024x452-500x221.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<h3 class="p1">Documentation made by teachers for teachers</h3>
<p class="p1">We found that documentation, tutorials and classes are made by people who already know robotics for people who already understand robotics. I call these type of tutorials <strong>reference tutorials</strong>. Those tutorials basically start by describing concepts one-by-one, following a hierarchy of well-defined definitions by people who already understand the subject. If you ask the reason of that concept or for what do you need it, they will tell you that you will understand later (but later is too late!).</p>
<p class="p1">Generally speaking, robotics is sometimes taught as if it were for the instructor. It is very structured with a clear concepts hierarchy. It is a problem that documentations of robot programming frameworks work as a <em>reference tutorial</em> for the engineers that wrote it. Of course, you can learn from those but it is a lot harder and much slower (I learnt ROS that way).</p>
<p class="p1">I do believe we do not work this way. One thing is the way we structure information once we know the whole space, and another is the way we structure it when we are learning. Very different things.</p>
<h2 class="p1">The solution we propose</h2>
<p class="p1">The<span class="Apple-converted-space"> </span>method we propose is to make the students forget as many concepts as possible and concentrate on doing things with the robots. Complex concepts will be taught later when the student has the base. This approach is based on how we learn and not in how we order our thoughts once we have them.</p>
<p class="p1">We propose a solution to speed the learning that provides the following steps:</p>
<p><strong>1. In media res. </strong>That is the trick Star Wars used to make the movie more appealing (new Star Trek movies have copied successfully, I think).</p>
<p class="p1">This means, start in the middle, not the edges. The idea is to put the student in the middle of the knowledge to learn and make it move to the sides, discarding a lot of things in the way to the side.</p>
<p class="p1"><strong>2. Learning by doing.</strong> Not by reading or by typing, by working on a robot.</p>
<p class="p1">This is the successful case of <a href="https://www.codecademy.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Code Academy</a>. There you can learn to code by doing and quickly observing the result of what you have done.</p>
<p class="p1">We must have the same type of environment for robotics learning. Do, then observe <strong>on the robot</strong> the result of your program.</p>
<p class="p1"><strong>3. A step by step guide. </strong>Showing only what is required for the next action of the robot, and removing out of the equation what is not required/useful at that specific learning moment (even if important for the success of the step).</p>
<p class="p1">For example, you must have a <em>catkin_ws</em> in order to launch a ROS package, but we do not believe that we must explain to a new student how to create a <em>catkin_ws</em>. Instead, we provide it done ready to be used, and once he becomes used to it, then we show how to create your own.</p>
<p class="p1"><a href="http://robohub.org/wp-content/uploads/2016/09/Screenshot-from-2016-08-10-121840-1024x422.png" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-66707" src="http://robohub.org/wp-content/uploads/2016/09/Screenshot-from-2016-08-10-121840-1024x422-1024x422.png" alt="screenshot-from-2016-08-10-121840-1024x422" width="1024" height="422" srcset="https://robohub.org/wp-content/uploads/2016/09/Screenshot-from-2016-08-10-121840-1024x422.png 1024w, https://robohub.org/wp-content/uploads/2016/09/Screenshot-from-2016-08-10-121840-1024x422-425x175.png 425w, https://robohub.org/wp-content/uploads/2016/09/Screenshot-from-2016-08-10-121840-1024x422-500x206.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<h2 class="p1">Implementation</h2>
<p class="p1">At The Construct, we have integrated all those ideas into a platform that allows students to quickly learn (in 5 days) any concept of robotics programming. I mean, for real robots!</p>
<p class="p1">Our platform is called <a href="http://www.robotigniteacademy.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Robot Ignite Academy</a>, and we like to call it the <strong>Code Academy for Robotics</strong>. We integrated step by step explanations with a robot simulation and program development environment, everything inside a web browser (hence you can learn using any type of device).</p>
<p class="p1"><a href="http://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-29-at-12.37.38-1024x576.png" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-66708" src="http://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-29-at-12.37.38-1024x576-1024x576.png" alt="screen-shot-2016-09-29-at-12-37-38-1024x576" width="1024" height="576" srcset="https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-29-at-12.37.38-1024x576.png 1024w, https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-29-at-12.37.38-1024x576-425x239.png 425w, https://robohub.org/wp-content/uploads/2016/09/Screen-Shot-2016-09-29-at-12.37.38-1024x576-500x281.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p class="p1">At Ignite Academy, students will learn complex robotics concepts by:</p>
<ol>
<li class="p1"><strong>Using simulations of the real robots</strong>. Many. Examples include Turtlebot-2, Husky, Sphero, Wam, quadcopters… even BB-8! Students use a simulation of the robots as if they had the robot.</li>
<li class="p1"><strong>Use a step-by-step lesson process</strong> that engages the student on doing something with the robot after every step, in order to check that he is understanding the explanation.</li>
<li class="p1"><strong>Use the description not only to explain, but also to do</strong>. Include interactions in the explanation. For example, generate graphics dynamically on the explanation based on what the robot is doing at that moment.</li>
<li class="p1"><strong>Forget about certain basic concepts</strong> (for example, what is ROS… who cares? You don’t need to know what is ROS in order to use it and make a robot work) We believe that once you have mastered the real thing, getting those concepts will be easy peace. But if you put them on the pile of things you have to learn together with the others, it makes the whole thing difficult to swallow.</li>
</ol>
<p>All that without having to install anything in your computer, and with simulations at the core of the learning system, not only as something additional.</p>
<p class="p1">In our system, the simulation is at the center. We provide different simulated robots that the student has to practice with. They use simulation as if they had the real robot, with the difference that they don’t have to care about building it. It is just provided and ready to be used.</p>
<h2 class="p1">Conclusion</h2>
<p class="p1">We are providing the Ignite Academy platform online, for anyone. <strong>Students</strong> can use it for their personal learning. <strong>Teachers</strong> can use it for teaching during the class. <strong>Companies</strong> can use it to upgrade their workers.</p>
<p>What is also important to state is that you don’t have to care about installing anything. Connect using a web browser from any type of computer and start learning.</p>
<a href="http://robohub.org/wp-content/uploads/2016/09/DSC09928-1024x680.jpg" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-66709" src="http://robohub.org/wp-content/uploads/2016/09/DSC09928-1024x680-1024x680.jpg" alt="dsc09928-1024x680" width="1024" height="680" srcset="https://robohub.org/wp-content/uploads/2016/09/DSC09928-1024x680.jpg 1024w, https://robohub.org/wp-content/uploads/2016/09/DSC09928-1024x680-425x282.jpg 425w, https://robohub.org/wp-content/uploads/2016/09/DSC09928-1024x680-452x300.jpg 452w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NASA Robonaut 2 simulation: Placing an ISS panel in The Construct</title>
		<link>https://robohub.org/nasa-robonaut-2-simulation-placing-an-iss-panel-in-the-construct/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Fri, 24 Jun 2016 16:35:10 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[ISS]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[The Construct]]></category>
		<guid isPermaLink="false">http://robohub.org/nasa-robonaut-2-simulation-placing-an-iss-panel-in-the-construct/</guid>

					<description><![CDATA[One of the most wanted robot simulations is a robot that can be used for anything. Robonaut is one of this kind. NASA kindly gave this simulation for public use and we though in The Construct that we could use it to make an even better user friendly ve...]]></description>
										<content:encoded><![CDATA[<div id="attachment_63973" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63973" class="size-large wp-image-63973" src="http://robohub.org/wp-content/uploads/2016/06/start-1024x412-1024x412.png" alt="Image: The Construct" width="1024" height="412" srcset="https://robohub.org/wp-content/uploads/2016/06/start-1024x412.png 1024w, https://robohub.org/wp-content/uploads/2016/06/start-1024x412-425x171.png 425w, https://robohub.org/wp-content/uploads/2016/06/start-1024x412-500x201.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63973" class="wp-caption-text">Image: The Construct</p></div>
<p>By <a href="http://www.theconstructsim.com/author/2016-06-22-192633-330172/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Miguel Angel</a></p>
<p>One of the most wanted robot simulations is a robot that can be used for anything. <span class="original-content">Robonaut</span> is one like this. NASA kindly gave this simulation for public use and we thought here in The Construct that we could use it to make an even better user-friendly version. We created a test to demonstrate the possibilities that The Construct has to offer in Space Zero gravity simulations. <span id="more-63950"></span>We also envisioned this as a proof of concept of how The Construct could be used as a platform for competitions such as <span class="original-content">RoboCup</span>, special for Space Exploration themes.</p>
<p>To launch this simulation you simply have to select the Robonaut2 simulation and select the following launch: $r2_robocup_at_space_1.launch</p>
<p>And there you have it! All the technical <span class="original-content">hassle</span> was <span class="original-content">solved</span> by The Construct and you have a ready to use R<span class="original-content">obonaut</span>. This launch will spawn the torso version of Robonaut, with all its controllers in a zero gravity space. It will also spawn a <span class="original-content">taskboard</span> full of functional buttons and switches without the third panel which will be spawned separately. One it&#8217;s done, you should get something like this:</p>
<div id="attachment_63973-2" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63973-2" class="wp-image-63973 size-large" src="http://robohub.org/wp-content/uploads/2016/06/start-1024x412-1024x412.png" alt="Robonaut1" width="1024" height="412" srcset="https://robohub.org/wp-content/uploads/2016/06/start-1024x412.png 1024w, https://robohub.org/wp-content/uploads/2016/06/start-1024x412-425x171.png 425w, https://robohub.org/wp-content/uploads/2016/06/start-1024x412-500x201.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63973-2" class="wp-caption-text">Image: The Construct</p></div>
<p>To check that Robonaut is functioning correctly, it should have its arms in an L shape ready to start moving like in the picture above. Once all is running, please check that the <span class="original-content">taskboard</span> is publishing. The <span class="original-content">taskboard</span> publishes in a topic the state of the switches and buttons in the panel. In this early version, it only tracks the three lower switches and the security switch on the top right-hand corner of the first panel. To check all the <span class="original-content">taskboard</span> systems are working, this is the correct output to the following command in the <span class="original-content">Webshell</span>:</p>
<p>$rostopic info /taskboard/TaskboardPanelA</p>
<p>Type:<br />
gazebo_taskboard/TaskboardPanelA<br />
Publishers: * /taskboard_state_tracker<br />
Subscribers: * /taskboard_systems_actuator</p>
<p>You should see the publisher of the Topic and a subscriber that controls when to activate the magnet that maintains the panel to be placed in position.</p>
<div id="attachment_63974" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63974" class="wp-image-63974 size-large" src="http://robohub.org/wp-content/uploads/2016/06/taskboard_and_panel-1024x410.png" alt="taskboard_and_panel" width="1024" height="410" srcset="https://robohub.org/wp-content/uploads/2016/06/taskboard_and_panel-1024x410.png 1024w, https://robohub.org/wp-content/uploads/2016/06/taskboard_and_panel-425x170.png 425w, https://robohub.org/wp-content/uploads/2016/06/taskboard_and_panel-500x200.png 500w, https://robohub.org/wp-content/uploads/2016/06/taskboard_and_panel.png 1642w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63974" class="wp-caption-text">Image: The Construct</p></div>
<div id="attachment_63975" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63975" class="size-large wp-image-63975" src="http://robohub.org/wp-content/uploads/2016/06/taskboard-1024x413.png" alt="Image: The Construct" width="1024" height="413" srcset="https://robohub.org/wp-content/uploads/2016/06/taskboard-1024x413.png 1024w, https://robohub.org/wp-content/uploads/2016/06/taskboard-425x172.png 425w, https://robohub.org/wp-content/uploads/2016/06/taskboard-500x202.png 500w, https://robohub.org/wp-content/uploads/2016/06/taskboard.png 1643w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63975" class="wp-caption-text">Image: The Construct</p></div>
<div id="attachment_63976" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63976" class="size-large wp-image-63976" src="http://robohub.org/wp-content/uploads/2016/06/taskboard_closeup-1024x409-1024x409.png" alt="Image: The Construct" width="1024" height="409" srcset="https://robohub.org/wp-content/uploads/2016/06/taskboard_closeup-1024x409.png 1024w, https://robohub.org/wp-content/uploads/2016/06/taskboard_closeup-1024x409-425x170.png 425w, https://robohub.org/wp-content/uploads/2016/06/taskboard_closeup-1024x409-500x200.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63976" class="wp-caption-text">Image: The Construct</p></div>
<div id="attachment_63977" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63977" class="size-large wp-image-63977" src="http://robohub.org/wp-content/uploads/2016/06/panel-1024x410-1024x410.png" alt="Image: The Construct" width="1024" height="410" srcset="https://robohub.org/wp-content/uploads/2016/06/panel-1024x410.png 1024w, https://robohub.org/wp-content/uploads/2016/06/panel-1024x410-425x170.png 425w, https://robohub.org/wp-content/uploads/2016/06/panel-1024x410-500x200.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63977" class="wp-caption-text">Image: The Construct</p></div>
<p>Once you are ready just launch the grab and place panel 3 launch:</p>
<div id="attachment_63978" style="width: 647px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63978" class="size-full wp-image-63978" src="http://robohub.org/wp-content/uploads/2016/06/webshell.png" alt="Source: The Construct" width="637" height="138" srcset="https://robohub.org/wp-content/uploads/2016/06/webshell.png 637w, https://robohub.org/wp-content/uploads/2016/06/webshell-425x92.png 425w, https://robohub.org/wp-content/uploads/2016/06/webshell-500x108.png 500w" sizes="(max-width: 637px) 100vw, 637px" /><p id="caption-attachment-63978" class="wp-caption-text">Source: The Construct</p></div>
<p>This will reset the power switch and the panel to their starting positions.<br />
Once done, Robonaut will start moving to grab the panel.</p>
<div id="attachment_63979" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63979" class="size-large wp-image-63979" src="http://robohub.org/wp-content/uploads/2016/06/seq_1-1024x415-1024x415.png" alt="Source: The Construct" width="1024" height="415" srcset="https://robohub.org/wp-content/uploads/2016/06/seq_1-1024x415.png 1024w, https://robohub.org/wp-content/uploads/2016/06/seq_1-1024x415-425x172.png 425w, https://robohub.org/wp-content/uploads/2016/06/seq_1-1024x415-500x203.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63979" class="wp-caption-text">Source: The Construct</p></div>
<div id="attachment_63980" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63980" class="size-large wp-image-63980" src="http://robohub.org/wp-content/uploads/2016/06/seq_2-1024x429-1024x429.png" alt="Source: The Construct" width="1024" height="429" srcset="https://robohub.org/wp-content/uploads/2016/06/seq_2-1024x429.png 1024w, https://robohub.org/wp-content/uploads/2016/06/seq_2-1024x429-425x178.png 425w, https://robohub.org/wp-content/uploads/2016/06/seq_2-1024x429-500x209.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63980" class="wp-caption-text">Source: The Construct</p></div>
<div id="attachment_63981" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63981" class="size-large wp-image-63981" src="http://robohub.org/wp-content/uploads/2016/06/seq_6-1024x427-1024x427.png" alt="Source: The Construct" width="1024" height="427" srcset="https://robohub.org/wp-content/uploads/2016/06/seq_6-1024x427.png 1024w, https://robohub.org/wp-content/uploads/2016/06/seq_6-1024x427-425x177.png 425w, https://robohub.org/wp-content/uploads/2016/06/seq_6-1024x427-500x208.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63981" class="wp-caption-text">Source: The Construct</p></div>
<p>Once grabbed, it will place it just in front of the desired spot.</p>
<div id="attachment_63982" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63982" class="size-large wp-image-63982" src="http://robohub.org/wp-content/uploads/2016/06/seq_10-1024x420-1024x420.png" alt="Source: The Construct" width="1024" height="420" srcset="https://robohub.org/wp-content/uploads/2016/06/seq_10-1024x420.png 1024w, https://robohub.org/wp-content/uploads/2016/06/seq_10-1024x420-425x174.png 425w, https://robohub.org/wp-content/uploads/2016/06/seq_10-1024x420-500x205.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63982" class="wp-caption-text">Source: The Construct</p></div>
<p>Then it will activate the magnet by firstly opening the security lid and then activating the power switches. Once activated, the panel will receive a force that will hopefully place it inside the taskboard.</p>
<div id="attachment_63983" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-63983" class="size-large wp-image-63983" src="http://robohub.org/wp-content/uploads/2016/06/sw_0-1024x346-1024x346.png" alt="Source: The Construct" width="1024" height="346" srcset="https://robohub.org/wp-content/uploads/2016/06/sw_0-1024x346.png 1024w, https://robohub.org/wp-content/uploads/2016/06/sw_0-1024x346-425x144.png 425w, https://robohub.org/wp-content/uploads/2016/06/sw_0-1024x346-500x169.png 500w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-63983" class="wp-caption-text">Source: The Construct</p></div>
<p>This launch can be executed as many time as you like, so that there is no need of relaunching the simulation every time. There are other features that you might want to explore like the “model_destination_validator.py” which you can use to evaluate correct placing of objects based on their relative position to prior placed markers. Very useful for unsupervised learning and competitions.</p>
<p>Here is a full-length demo:</p>
<p>https://www.youtube.com/watch?v=QABa4pbk4qs</p>
<p>Come on, try it! We would love to see intelligent algorithms and systems to make <span class="original-content">Robonaut </span>work as a charm!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Create a ROS sensor plugin for Gazebo</title>
		<link>https://robohub.org/create-a-ros-sensor-plugin-for-gazebo/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Thu, 07 Jan 2016 21:35:34 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[Gazebo]]></category>
		<category><![CDATA[ROS]]></category>
		<guid isPermaLink="false">http://robohub.org/create-a-ros-sensor-plugin-for-gazebo/</guid>

					<description><![CDATA[There are magnificent tutorials about how to create plugins for Gazebo in the GazeboSim webpage. There are even some tutorials about how to create plugins for Gazebo + ROS. Those tutorials show that there are several types of plugins (world, model, sensor, system, visual), and indicate how to create a plugin for&#160;a world type plugin. [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-58133" src="http://robohub.org/wp-content/uploads/2015/05/ROS_Plugin_Sensor_Gazebo.jpg" alt="ROS_Plugin_Sensor_Gazebo" width="1000" height="522" srcset="https://robohub.org/wp-content/uploads/2015/05/ROS_Plugin_Sensor_Gazebo.jpg 1000w, https://robohub.org/wp-content/uploads/2015/05/ROS_Plugin_Sensor_Gazebo-425x222.jpg 425w, https://robohub.org/wp-content/uploads/2015/05/ROS_Plugin_Sensor_Gazebo-500x261.jpg 500w" sizes="(max-width: 1000px) 100vw, 1000px" />
<p>There are magnificent <a href="http://gazebosim.org/tutorials?cat=write_plugin" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">tutorials about how to create plugins for Gazebo</a> in the GazeboSim webpage. There are even some tutorials about how to create <a href="http://www.gazebosim.org/tutorials?tut=ros_plugins&amp;cat=connect_ros" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">plugins for Gazebo + ROS,</a> which show that there are several types of plugins (world, model, sensor, system, visual), and indicate how to create a plugin for a world-type plugin. But I recently I needed to create a plugin for a light detector and couldn&#8217;t find a concrete example. Here&#8217;s a how-to post showing you how I did it.<span id="more-56656"></span></p>
<h2>How to: light sensor plugin in Gazebo</h2>
<p>Following the indications provided at the answers forum of <em>Gazebo</em>, I decided to build a very simple light detector sensor based on a camera. Instead of using a <em>raytracing</em> algorithm from lights, the idea is to use a camera to capture an image, then use the image to calculate the illuminance of the image, and then publish that illuminance value through a ROS topic.</p>
<p>Since the plugin is meant to be used with ROS, the whole plugin should be compilable using ROS environment.</p>
<h2>Creating a ROS package for the plugin</h2>
<p>First we need to create the package in our catkin workspace that will allow us to compile the plugin without a problem.</p>
<pre><code class="prettyprint prettyprinted"><span class="pln">cd </span><span class="pun">~/</span><span class="pln">catkin_ws/src
catkin_create</span><span class="pun">-</span><span class="pln">pkg gazebo_light_sensor_plugin gazebo_ros roscpp</span></code></pre>
<h2>Creating the plugin code</h2>
<p>For this purpose, since we are using a camera to capture the light, we are going to create a plugin class that inherits from the CameraPlugin. The code that follows has been created taking as guideline the code of the authentic <a href="https://github.com/ros-simulation/gazebo_ros_pkgs/blob/jade-devel/gazebo_plugins/src/gazebo_ros_camera.cpp" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">gazebo ROS camera plugin</a>.</p>
<p>Create a file called <em>light_sensor_plugin.h</em> inside the <strong>include</strong> directory of your package, including the following code:</p>
<pre><code class="prettyprint prettyprinted"><span class="pln">#ifndef GAZEBO_ROS_LIGHT_SENSOR_HH
#define GAZEBO_ROS_LIGHT_SENSOR_HH

#include &lt;string&gt;

// library for processing camera data for gazebo / ros conversions
#include &lt;gazebo/plugins/CameraPlugin.hh&gt;

#include &lt;gazebo_plugins/gazebo_ros_camera_utils.h&gt;

namespace gazebo
{
class GazeboRosLight : public CameraPlugin, GazeboRosCameraUtils
{
/// brief Constructor
/// param parent The parent entity, must be a Model or a Sensor
public: GazeboRosLight();

/// brief Destructor
public: ~GazeboRosLight();

/// brief Load the plugin
/// param take in SDF root element
public: void Load(sensors::SensorPtr _parent, sdf::ElementPtr _sdf);

/// brief Update the controller
protected: virtual void OnNewFrame(const unsigned char *_image,
unsigned int _width, unsigned int _height,
unsigned int _depth, const std::string &amp;_format);

ros::NodeHandle _nh;
ros::Publisher _sensorPublisher;

double _fov;
double _range;
};
}
#endif

</span></code></pre>
<p>As you can see, the code includes a node handler to connect to the <em>roscore</em>. It also defines a publisher that will publish messages containing the illuminance value. Two parameters have been defined: <em>fov</em> (field of view) and <em>range</em>. At present only <em>fov</em> is used to indicate the amount of pixels around the center of the image that will be taken into account to calculate the illuminance.</p>
<p>Then create a file named <em>light_sensor_plugin.cpp</em> containing the following code in the <strong><em>src</em></strong> directory of your package:</p>
<pre><code class="prettyprint prettyprinted"><span class="pln">#include &lt;gazebo/common/Plugin.hh&gt;
#include &lt;ros/ros.h&gt;
#include "/home/rtellez/iri-lab/iri_ws/src/gazebo_light_sensor_plugin/include/light_sensor_plugin.h"

#include "gazebo_plugins/gazebo_ros_camera.h"

#include &lt;string&gt;

#include &lt;gazebo/sensors/Sensor.hh&gt;
#include &lt;gazebo/sensors/CameraSensor.hh&gt;
#include &lt;gazebo/sensors/SensorTypes.hh&gt;

#include &lt;sensor_msgs/Illuminance.h&gt;

namespace gazebo
{
 // Register this plugin with the simulator
 GZ_REGISTER_SENSOR_PLUGIN(GazeboRosLight)

 ////////////////////////////////////////////////////////////////////////////////
 // Constructor
 GazeboRosLight::GazeboRosLight():
 _nh("light_sensor_plugin"),
 _fov(6),
 _range(10)
 {
 _sensorPublisher = _nh.advertise&lt;sensor_msgs::Illuminance&gt;("lightSensor", 1);
 }

 ////////////////////////////////////////////////////////////////////////////////
 // Destructor
 GazeboRosLight::~GazeboRosLight()
 {
 ROS_DEBUG_STREAM_NAMED("camera","Unloaded");
 }

 void GazeboRosLight::Load(sensors::SensorPtr _parent, sdf::ElementPtr _sdf)
 {
 // Make sure the ROS node for Gazebo has already been initialized
 if (!ros::isInitialized())
 {
 ROS_FATAL_STREAM("A ROS node for Gazebo has not been initialized, unable to load plugin. "
 &lt;&lt; "Load the Gazebo system plugin 'libgazebo_ros_api_plugin.so' in the gazebo_ros package)");
 return;
 }

 CameraPlugin::Load(_parent, _sdf);
 // copying from CameraPlugin into GazeboRosCameraUtils
 this-&gt;parentSensor_ = this-&gt;parentSensor;
 this-&gt;width_ = this-&gt;width;
 this-&gt;height_ = this-&gt;height;
 this-&gt;depth_ = this-&gt;depth;
 this-&gt;format_ = this-&gt;format;
 this-&gt;camera_ = this-&gt;camera;

 GazeboRosCameraUtils::Load(_parent, _sdf);
 }

 ////////////////////////////////////////////////////////////////////////////////
 // Update the controller
 void GazeboRosLight::OnNewFrame(const unsigned char *_image,
 unsigned int _width, unsigned int _height, unsigned int _depth,
 const std::string &amp;_format)
 {
 static int seq=0;

 this-&gt;sensor_update_time_ = this-&gt;parentSensor_-&gt;GetLastUpdateTime();

 if (!this-&gt;parentSensor-&gt;IsActive())
 {
 if ((*this-&gt;image_connect_count_) &gt; 0)
 // do this first so there's chance for sensor to run once after activated
 this-&gt;parentSensor-&gt;SetActive(true);
 }
 else
 {
 if ((*this-&gt;image_connect_count_) &gt; 0)
 {
 common::Time cur_time = this-&gt;world_-&gt;GetSimTime();
 if (cur_time - this-&gt;last_update_time_ &gt;= this-&gt;update_period_)
 {
 this-&gt;PutCameraData(_image);
 this-&gt;PublishCameraInfo();
 this-&gt;last_update_time_ = cur_time;

 sensor_msgs::Illuminance msg;
 msg.header.stamp = ros::Time::now();
 msg.header.frame_id = "";
 msg.header.seq = seq;

 int startingPix = _width * ( (int)(_height/2) - (int)( _fov/2)) - (int)(_fov/2);

 double illum = 0;
 for (int i=0; i&lt;_fov ; ++i)
 {
 int index = startingPix + i*_width;
 for (int j=0; j&lt;_fov ; ++j)
 illum += _image[index+j];
 }

 msg.illuminance = illum/(_fov*_fov);
 msg.variance = 0.0;

 _sensorPublisher.publish(msg);

 seq++;
 }
 }
 }
 }
}

</span></code></pre>
<p>That is the code that calculates, in a very basic form, the illuminance.</p>
<h2>Create a CMakeLists.txt</h2>
<p>Copy the following code in your <em>CMakeLists.txt</em></p>
<pre><code>cmake_minimum_required(VERSION 2.8.3)
project(gazebo_light_sensor_plugin)

# Load catkin and all dependencies required for this package
find_package(catkin REQUIRED COMPONENTS
roscpp
gazebo_ros
)

# Depend on system install of Gazebo
find_package(gazebo REQUIRED)

link_directories(${GAZEBO_LIBRARY_DIRS})
include_directories(${Boost_INCLUDE_DIR} ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS})

add_library(${PROJECT_NAME} src/light_sensor_plugin.cpp)
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${GAZEBO_LIBRARIES} CameraPlugin)

catkin_package(
DEPENDS
roscpp
gazebo_ros
)
</code></pre>
<h2>Update the package.xml</h2>
<p>Now you need to include the following line in your <em>package.xml</em>, between the tags <em>&lt;export&gt;&lt;/export&gt;</em></p>
<p><code class="prettyprint prettyprinted"><span class="tag">&lt;gazebo_ros</span> <span class="atn">plugin_path</span><span class="pun">=</span><span class="atv">"${prefix}/lib"</span> <span class="atn">gazebo_media_path</span><span class="pun">=</span><span class="atv">"${prefix}"</span> <span class="tag">/&gt;</span></code></p>
<p>Now you are ready to <strong>compile the plugin</strong>. Compilation should generate the library containing the plugin inside your building directory.</p>
<h2>Create a world file</h2>
<p>Below is an example of a world file that includes the plugin. Save this code in a file named <em>light.world</em> inside the directory <em>worlds</em> of your package. This world file simply loads the camera with its plugin, so it might be a bit ugly, but it will be good enough for your tests. Feel free to add more elements and models in the world file.</p>
<pre><code>&lt;?xml version="1.0" ?&gt;
&lt;sdf version="1.4"&gt;
 &lt;world name="default"&gt;
 &lt;include&gt;
 &lt;uri&gt;model://ground_plane&lt;/uri&gt;
 &lt;/include&gt;

 &lt;include&gt;
 &lt;uri&gt;model://sun&lt;/uri&gt;
 &lt;/include&gt;

 &lt;!-- reference to your plugin --&gt;
 &lt;model name='camera'&gt;
 &lt;pose&gt;0 -1 0.05 0 -0 0&lt;/pose&gt;
 &lt;link name='link'&gt;
 &lt;inertial&gt;
 &lt;mass&gt;0.1&lt;/mass&gt;
 &lt;inertia&gt;
 &lt;ixx&gt;1&lt;/ixx&gt;
 &lt;ixy&gt;0&lt;/ixy&gt;
 &lt;ixz&gt;0&lt;/ixz&gt;
 &lt;iyy&gt;1&lt;/iyy&gt;
 &lt;iyz&gt;0&lt;/iyz&gt;
 &lt;izz&gt;1&lt;/izz&gt;
 &lt;/inertia&gt;
 &lt;/inertial&gt;
 &lt;collision name='collision'&gt;
 &lt;geometry&gt;
 &lt;box&gt;
 &lt;size&gt;0.1 0.1 0.1&lt;/size&gt;
 &lt;/box&gt;
 &lt;/geometry&gt;
 &lt;max_contacts&gt;10&lt;/max_contacts&gt;
 &lt;surface&gt;
 &lt;contact&gt;
 &lt;ode/&gt;
 &lt;/contact&gt;
 &lt;bounce/&gt;
 &lt;friction&gt;
 &lt;ode/&gt;
 &lt;/friction&gt;
 &lt;/surface&gt;
 &lt;/collision&gt;
 &lt;visual name='visual'&gt;
 &lt;geometry&gt;
 &lt;box&gt;
 &lt;size&gt;0.1 0.1 0.1&lt;/size&gt;
 &lt;/box&gt;
 &lt;/geometry&gt;
 &lt;/visual&gt;
 &lt;sensor name='camera' type='camera'&gt;
 &lt;camera name='__default__'&gt;
 &lt;horizontal_fov&gt;1.047&lt;/horizontal_fov&gt;
 &lt;image&gt;
 &lt;width&gt;320&lt;/width&gt;
 &lt;height&gt;240&lt;/height&gt;
 &lt;/image&gt;
 &lt;clip&gt;
 &lt;near&gt;0.1&lt;/near&gt;
 &lt;far&gt;100&lt;/far&gt;
 &lt;/clip&gt;
 &lt;/camera&gt;
 &lt;plugin name="gazebo_light_sensor_plugin" filename="libgazebo_light_sensor_plugin.so"&gt;
 &lt;cameraName&gt;camera&lt;/cameraName&gt;
 &lt;alwaysOn&gt;true&lt;/alwaysOn&gt;
 &lt;updateRate&gt;10&lt;/updateRate&gt;
 &lt;imageTopicName&gt;rgb/image_raw&lt;/imageTopicName&gt;
 &lt;depthImageTopicName&gt;depth/image_raw&lt;/depthImageTopicName&gt;
 &lt;pointCloudTopicName&gt;depth/points&lt;/pointCloudTopicName&gt;
 &lt;cameraInfoTopicName&gt;rgb/camera_info&lt;/cameraInfoTopicName&gt;
 &lt;depthImageCameraInfoTopicName&gt;depth/camera_info&lt;/depthImageCameraInfoTopicName&gt;
 &lt;frameName&gt;camera_depth_optical_frame&lt;/frameName&gt;
 &lt;baseline&gt;0.1&lt;/baseline&gt;
 &lt;distortion_k1&gt;0.0&lt;/distortion_k1&gt;
 &lt;distortion_k2&gt;0.0&lt;/distortion_k2&gt;
 &lt;distortion_k3&gt;0.0&lt;/distortion_k3&gt;
 &lt;distortion_t1&gt;0.0&lt;/distortion_t1&gt;
 &lt;distortion_t2&gt;0.0&lt;/distortion_t2&gt;
 &lt;pointCloudCutoff&gt;0.4&lt;/pointCloudCutoff&gt;
 &lt;robotNamespace&gt;/&lt;/robotNamespace&gt;
 &lt;/plugin&gt;
 &lt;/sensor&gt;
 &lt;self_collide&gt;0&lt;/self_collide&gt;
 &lt;kinematic&gt;0&lt;/kinematic&gt;
 &lt;gravity&gt;1&lt;/gravity&gt;
 &lt;/link&gt;
 &lt;/model&gt;
 &lt;/world&gt;
&lt;/sdf&gt;

</code></pre>
<h2>Create a launch file</h2>
<p>Now comes the final step: to create a launch that will upload everything for you. Save the following code as <em>main.launch</em> inside the <em>launch</em> directory of your package.</p>
<pre><code>&lt;launch&gt;
 &lt;!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched --&gt;
 &lt;include file="$(find gazebo_ros)/launch/empty_world.launch"&gt;
 &lt;arg name="verbose" value="true"/&gt;
 &lt;arg name="world_name" value="$(find gazebo_light_sensor_plugin)/worlds/light.world"/&gt;
 &lt;!-- more default parameters can be changed here --&gt;
 &lt;/include&gt;
 &lt;/launch&gt;</code></pre>
<h2>Ready to run!</h2>
<p>Now launch the world. Be sure that a roscore is running or your machine, and that the GAZEBO_PLUGIN_PATH environment var includes the path to the new plugin.</p>
<p>Now execute the following command:</p>
<pre><code>roslaunch gazebo_light_sensor_plugin main.launch</code></pre>
<p>You can see what the camera is observing by running the following command:</p>
<pre><code>rosrun image_view image_view image:=/camera/rgb/image_raw</code></pre>
<img decoding="async" class="aligncenter size-full wp-image-58136" src="http://robohub.org/wp-content/uploads/2015/05/Screenshot-from-2015-05-20-173457.png" alt="Screenshot-from-2015-05-20-173457" width="319" height="273" />
<div style="clear:both"></div>
<p>You can also have the value of luminance by watching the published topic:</p>
<pre><code>rostopic echo /gazebo_light_sensor_plugin/lightSensor</code></pre>
<p>&nbsp;</p>
<h2><img decoding="async" class="aligncenter size-full wp-image-58135" src="http://robohub.org/wp-content/uploads/2015/05/Screenshot-from-2015-05-20-173532.png" alt="Screenshot-from-2015-05-20-173532" width="205" height="165" /></h2>
<div style="clear:both"></div>
<h2>Conclusion</h2>
<p>Now you have a plugin for your Gazebo simulations that can measure (very roughly) the light detected. You can use it in you local copy of Gazebo or even inside The Construct.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>7 reasons why robotics companies should be using simulators</title>
		<link>https://robohub.org/why-robotics-companies-must-use-simulators/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Mon, 28 Dec 2015 12:44:59 +0000</pubDate>
				<category><![CDATA[views]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[Simulation]]></category>
		<guid isPermaLink="false">http://robohub.org/why-robotics-companies-must-use-simulators/</guid>

					<description><![CDATA[&#160; To my surprise, I recently discovered that many robotics companies barely use a simulator to simulate their robots. During my long experience at Pal Robotics developing humanoid robots, I understood&#160;how a good simulator can make a difference, speeding up the development and maintenance processes of robot building. &#160;In this post I would like to [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-58140" src="http://robohub.org/wp-content/uploads/2015/05/robot_simulation_.jpg" alt="robot_simulation_" width="1024" height="576" srcset="https://robohub.org/wp-content/uploads/2015/05/robot_simulation_.jpg 1024w, https://robohub.org/wp-content/uploads/2015/05/robot_simulation_-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2015/05/robot_simulation_-500x281.jpg 500w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>During my long experience at <a href="http://www.pal-robotics.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Pal Robotics</a> developing humanoid robots, I learned just how much a good simulator can help speed up the development and maintenance processes of robot building. To my surprise, however, I recently discovered that lots of robotics companies don&#8217;t use a simulator for this purpose. In this post I&#8217;ll share with you the key reasons why you should be using a simulator for your robot development.<span id="more-56660"></span></p>
<h2>1. Test ideas prior to building</h2>
<p>Simulations are the best place to start when developing a new robot. By using a simulator to develop your robot, you can quickly identify whether your idea is feasible, with little expense. You can also easily test and discover which are the physical constraints that your robot must face in order to accomplish its goal.</p>
<p>Simulators allow you to easily and quickly test of many different ideas for the same robotic problem, and then decide which one to build based on actual data.</p>
<h2>2. Parallelise development</h2>
<p>Once your robot has been defined and tested in the simulator, you can start its physical construction. The good thing with simulators is that they allow you to keep doing tests even if your robot is not built yet.</p>
<p>In other words, while your mechanical or electrical departments are building the actual robot, your software department can start developing software and testing it on the simulated robot. Current simulators are closer to reality, so you can develop your software for the simulated robot, make sure it works there, and then transfer the software to the real robot once it has been constructed. Chances are that your software will work with the real robot with only minor mods.</p>
<p>You do not have to wait for your robot to be built before developing its software.</p>
<h2>3. Test in different environments</h2>
<p>Your robot software could have many bugs that only appear once you take it outside your lab. By using a simulator, you can test your robot in many different environments.</p>
<img decoding="async" class="aligncenter size-full wp-image-58142" src="http://robohub.org/wp-content/uploads/2015/05/robonaut_r2_iss_taskboard.png" alt="robonaut_r2_iss_taskboard" width="650" height="228" srcset="https://robohub.org/wp-content/uploads/2015/05/robonaut_r2_iss_taskboard.png 650w, https://robohub.org/wp-content/uploads/2015/05/robonaut_r2_iss_taskboard-425x149.png 425w, https://robohub.org/wp-content/uploads/2015/05/robonaut_r2_iss_taskboard-500x175.png 500w" sizes="(max-width: 650px) 100vw, 650px" />
<div style="clear:both"></div>
<h2>4. Debug in simulation</h2>
<p>Your robot software should be debugged first in the simulator. In fact, you should never allow a software engineer to test software on the real robot if the software does not work on the simulator. It won’t work!</p>
<p>Not only does debugging in the simulator save you a lot of time (since testing and correcting basic errors on the real robot is very time consuming), but it also prevents your untested software from breaking your robot!</p>
<h2>5. Develop modifications and improvements</h2>
<p>With your simulation in place, you can think about modifications for your robot and test them. What is the next feature that your clients are requesting? You can easily test if whether new features are possible, to what extent, and what it would require you to modify and add. Just use the simulation to see if they are possible or not.</p>
<h2>6. Functionality testing suite</h2>
<p>Once your robot is built and the software is working properly inside it, you will have to maintain it. Correcting bugs, adding new features, adapting to changes in the frameworks you use &#8230; all this requires that you update the software that is already running on your robot.</p>
<p>Chances are that some of these changes will crash some of the functionality that already works in the robot. To prevent minimize the damage, you must create a suite of functionality tests.</p>
<p>Functionality tests are tests that execute on a simulation of your robot and check whether the robot is still able to function in the simulation as expected. You can perform these tests at night. The suite must download the latests code from your repository, compile it, and execute it on the simulated robot.</p>
<p>For each functionality, the robot must be placed on a specific situation in the simulation that allows you to test that functionality. A reward function must check whether the robot was able to accomplish the functionality or not. In the case that it cannot, the suit should send an email to the person in charge of that functionality, in order to make that person aware of the functionality crash.</p>
<img decoding="async" class="aligncenter size-full wp-image-58143" src="http://robohub.org/wp-content/uploads/2015/05/reem_both_arms3.jpg" alt="reem_both_arms3" width="1917" height="950" srcset="https://robohub.org/wp-content/uploads/2015/05/reem_both_arms3.jpg 1917w, https://robohub.org/wp-content/uploads/2015/05/reem_both_arms3-425x211.jpg 425w, https://robohub.org/wp-content/uploads/2015/05/reem_both_arms3-1024x507.jpg 1024w, https://robohub.org/wp-content/uploads/2015/05/reem_both_arms3-500x248.jpg 500w" sizes="(max-width: 1917px) 100vw, 1917px" />
<h2>7. Make your robot popular</h2>
<p>Whether your company targets a mainstream audience, or a specialized one, you will want your robot to be used. By creating and freely providing a simulation of your robot, you are giving your audience a chance to experiment and find uses for your robot without being tied to an expensive purchase. You can also allow to people publish tools and ideas for your robot on the Internet, which further extends your reach.</p>
<h2>Conclusion</h2>
<p>Simulators are a powerful tool for robotics companies that can speed up the development process and prevent costly errors.</p>
<p>In a nutshell, follow these steps next time you are doing a robot development:</p>
<ol>
<li>Do some drawings and design the robot you want to build based on the task you are trying to solve.</li>
<li>Implement those designs in the simulator and perform some tests.</li>
<li>Modify the robot based on the simulator results.</li>
<li>Start building the real robot. At the same time use the simulator to develop its software.</li>
<li>Test your software on the real robot. If errors are found, use the simulator to correct them and retest. Only use the real robot once errors are corrected.</li>
<li>If customers require mods or improvements, use the simulator to test whether they are (theoretically) possible.</li>
<li>Once your robot is built (including software), build a functionality test suite that executes functionality tests over the simulation every night to prevent changes in the software from shutting down the robot&#8217;s functions.</li>
<li>Finally, provide for free a model of your robot (including controllers) and help users to use it!</li>
</ol>
<h3 style="text-align: center;"></h3>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Robot Race to Hawaii Contest</title>
		<link>https://robohub.org/the-robot-race-to-hawaii-contest/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 24 Nov 2015 22:16:16 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[competitions]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Simulation]]></category>
		<guid isPermaLink="false">http://robohub.org/the-robot-race-to-hawaii-contest/</guid>

					<description><![CDATA[The Robot Race to Hawaii Contest is a robotics contest were participants have to program a humanoid Nao robot to make it run the 10 meters race in the shortest amount of time possible. The whole competition is run in a Webots simulation which is run inside The Construct, the platform that hosts the competition. [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-56681" src="http://robohub.org/wp-content/uploads/2015/11/Hawaii_The_Construct.jpg" alt="Hawaii_The_Construct" width="930" height="481" srcset="https://robohub.org/wp-content/uploads/2015/11/Hawaii_The_Construct.jpg 930w, https://robohub.org/wp-content/uploads/2015/11/Hawaii_The_Construct-425x220.jpg 425w, https://robohub.org/wp-content/uploads/2015/11/Hawaii_The_Construct-500x259.jpg 500w" sizes="(max-width: 930px) 100vw, 930px" />
<p>The Robot Race to Hawaii is a robotics contest where participants program a humanoid Nao robot to run a 10-meter race in the shortest time possible. The whole competition is run in a <a href="http://www.cyberbotics.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Webots</a> simulation inside <a href="http://www.theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">The Construct</a> hosting platform. Participants need only a computer equipped with web browser to participate, and are not required to download any applications. There is no cost to enter.<span id="more-56644"></span></p>
<p>The competition is simple, making it a good entry point and hands-on exercise for newcomers to robotics. The Construct provides the simulated environment with the robot already in it, as well as a sample controller that participants have the option to use as a starting point for building the walking controller. Because the challenge is hosted in The Construct and stored in the cloud, contestants participate via their web browser and do not need to worry about downloading and installing software.</p>
<p>Teachers, you can use this contest as an assignment for your students, as participants can expect to learn:</p>
<ul>
<li><strong>How to code in Python.</strong> The controllers of the robots must be written in Python, which is one of the best languages for introducing someone to programming and especially to robotics. A good place to start learning about python is <a href="https://www.codecademy.com/en/tracks/python" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">CodeAcademy</a>.</li>
<li><strong>How a robotics simulator works.</strong> The simulator used for the contest is Webots. Participants must learn how this simulator works in order to understand how all the parts interact together (robot simulation, controller, computer, etc). Fortunately, there are nice tutorials to learn about it <a href="http://www.cyberbotics.com/dvd/common/doc/webots/guide/section1.2.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">here</a>.</li>
<li><strong>How to build models of objects for robot simulators.</strong> Throughout the competition, participants will be asked to create simulated models of simple objects, like a chair, a glass or a blackboard, once per week. This will provide them with deeper knowledge of what a simulation means. The same Webots tutorial linked to above contains information about how to create a model.</li>
<li><strong>The basics of biped walking.</strong> Even if the contest provides a sample controller allowing the robot to walk, participants may be interested in applying more complex techniques for robot walking. Learning about how to make a biped walk can help create faster controllers. You can learn about robot walking <a href="http://www.robots-dreams.com/2010/10/unclebots-humanoid-robot-walking-tutorial-video.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">here</a> or read many of the scientific papers available in the web.</li>
</ul>
<p><img decoding="async" class="alignleft size-medium wp-image-56682" src="http://robohub.org/wp-content/uploads/2015/11/cubo_webots_8_robot_race_to_hawaii_contest-425x301.jpg" alt="cubo_webots_8_robot_race_to_hawaii_contest" width="425" height="301" srcset="https://robohub.org/wp-content/uploads/2015/11/cubo_webots_8_robot_race_to_hawaii_contest-425x301.jpg 425w, https://robohub.org/wp-content/uploads/2015/11/cubo_webots_8_robot_race_to_hawaii_contest-424x300.jpg 424w, https://robohub.org/wp-content/uploads/2015/11/cubo_webots_8_robot_race_to_hawaii_contest.jpg 883w" sizes="(max-width: 425px) 100vw, 425px" />More complex topics such as writing and compiling C++ controllers, using ROS as a robotics framework, or the programming of more complex robot skills like opening doors or grasping a objects have been deliberately left out of this challenge in order to make it suitable for people with minimal knowledge of robotics. STEM high school students and first year robotics students should find the competition accessible.</p>
<p>Participation is open to anyone, however, so expect some pros to enter.</p>
<p><strong>By the way, did I mention that the winner of the contest will get a trip to Hawaii?!?! </strong>Register here: <a href="http://contest.theconstructsim.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">contest.theconstructsim.com</a></p>
<p>Good luck!</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Echoes of the DRC at Humanoids 2015</title>
		<link>https://robohub.org/echoes-of-the-drc-at-humanoids-2015/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Fri, 13 Nov 2015 13:25:14 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[views]]></category>
		<category><![CDATA[DARPA]]></category>
		<category><![CDATA[DRC]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[healthcare]]></category>
		<category><![CDATA[humanoids]]></category>
		<category><![CDATA[research]]></category>
		<guid isPermaLink="false">http://robohub.org/echoes-of-the-drc-at-humanoids-2015/</guid>

					<description><![CDATA[Last week, the Humanoids 2015 conference was held in Seoul, Korea. It&#8217;s the first event to focus on humanoid robots since the Darpa Robotics Challenge (DRC) earlier this year and, in fact, the location is home to the DRC winners, Team KAIST. Hence, it was no surprise that the event was very DRC orientated and even featured [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="alignnone size-full wp-image-56323" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5737.jpg" alt="IMG_5737" width="1024" height="768" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5737.jpg 1024w, https://robohub.org/wp-content/uploads/2015/11/IMG_5737-425x319.jpg 425w, https://robohub.org/wp-content/uploads/2015/11/IMG_5737-400x300.jpg 400w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>Last week, the <a href="http://www.humanoids2015.org/main/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Humanoids 2015</a> conference was held in Seoul, Korea. It&#8217;s the first event to focus on humanoid robots since the <a href="http://www.theroboticschallenge.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Darpa Robotics Challenge</a> (DRC) earlier this year and, in fact, the location is home to the DRC winners, <a href="http://www.theroboticschallenge.org/finalist/kaist" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Team KAIST</a>. Hence, it was no surprise that the event was very DRC orientated and even featured a mini-Darpa challenge.</p>
<p><span id="more-56322"></span></p>
<p>Humanoids is a small conference compared to IROS or ICRA. And I really appreciate that because it gives you the chance to interact more closely with people that actually work in the humanoid field; less people, fewer concurrent sessions and more interaction.</p>
<p>The conference lasted three days, with the first dedicated to workshops and the others to the main conference itself.</p>
<img decoding="async" class="alignleft size-full wp-image-56324" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5697-e1447253487261-768x1024.jpg" alt="IMG_5697-e1447253487261-768x1024" width="768" height="1024" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5697-e1447253487261-768x1024.jpg 768w, https://robohub.org/wp-content/uploads/2015/11/IMG_5697-e1447253487261-768x1024-319x425.jpg 319w, https://robohub.org/wp-content/uploads/2015/11/IMG_5697-e1447253487261-768x1024-225x300.jpg 225w" sizes="(max-width: 768px) 100vw, 768px" />
<p>I attended the <a href="http://www.neuralrehabilitation.org/benchmarking/workshop-humanoids-2015/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Benchmarking bipedal functions of humanoids robots: towards a unified framework</a> workshop and gave a talk about <strong>how to use cloud simulations for benchmarking</strong> in a general and unbiased way. Very interesting papers were presented at that workshop, especially about how to build a general framework to benchmark walking in humanoids (by partners in the Koroibot project)</p>
<p>The main conference was divided into plenary talks, paper presentations and interactive sessions. There were guided visits to the laboratories of <a href="http://www.kist.re.kr/en/index.jsp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">KIST</a> (the Korean Institute for Science and Technology) and a full demo of the Hubo robot doing all the DRC tests.</p>
<img decoding="async" class="alignright size-full wp-image-56326" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5707-e1447253636415-768x1024.jpg" alt="IMG_5707-e1447253636415-768x1024" width="768" height="1024" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5707-e1447253636415-768x1024.jpg 768w, https://robohub.org/wp-content/uploads/2015/11/IMG_5707-e1447253636415-768x1024-319x425.jpg 319w, https://robohub.org/wp-content/uploads/2015/11/IMG_5707-e1447253636415-768x1024-225x300.jpg 225w" sizes="(max-width: 768px) 100vw, 768px" />
<p>I loved the two plenary talks, especially the first one given by <a href="http://lasa.epfl.ch/people/member.php?SCIPER=115671" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Aude Billard</a> from EPFL. She presented a beautiful path of research towards the creation of robots that can do better than humans (super-human competences). She showed her results with the study of a robot that was able to grasp a racket when it was thrown, by making use of dynamical systems. It was impressive to see how her robot was able to grasp rackets and even balls, where a human is not able to do this.</p>
<p>The second plenary talk was given by <a href="http://groups.csail.mit.edu/locomotion/russt.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Russ Tedrake</a>, a DRC participant. He outlined several problems the teams faced when trying to control a robot during the challenge. He demonstrated his quest in trying to exploit the structure of the governing equations of model based control, in order to create more robust control for robot dynamics. I really enjoyed his talk, even if I did not understand it very much.</p>
<p>Paper presentations were limited to ten minutes per publication and I recommend you check the whole list of presented papers <a href="http://www.humanoids2015.org/sub/sub03_12.asp" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">here</a>.</p>
<p>The Technical Tours were visits to some the KIST laboratories like the <b>Center for Intelligent Robotics</b>, and the <b>Healthcare Robotics Research Group</b>. The first lab is dedicated to the use of social robots to enhance the cognitive abilities of the elderly. It&#8217;s  focused on small humanoids that engage the elderly to play games that stress their cognitive skills. The second lab is more concerned with robots for surgery.</p>
<img decoding="async" class="alignnone size-full wp-image-56328" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5721xxxxx.jpg" alt="IMG_5721xxxxx" width="1400" height="480" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5721xxxxx.jpg 1400w, https://robohub.org/wp-content/uploads/2015/11/IMG_5721xxxxx-425x146.jpg 425w, https://robohub.org/wp-content/uploads/2015/11/IMG_5721xxxxx-1024x351.jpg 1024w, https://robohub.org/wp-content/uploads/2015/11/IMG_5721xxxxx-500x171.jpg 500w" sizes="(max-width: 1400px) 100vw, 1400px" />
<img decoding="async" class="alignnone size-full wp-image-56329" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5736-e1447253701185-768x1024.jpg" alt="IMG_5736-e1447253701185-768x1024" width="768" height="1024" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5736-e1447253701185-768x1024.jpg 768w, https://robohub.org/wp-content/uploads/2015/11/IMG_5736-e1447253701185-768x1024-319x425.jpg 319w, https://robohub.org/wp-content/uploads/2015/11/IMG_5736-e1447253701185-768x1024-225x300.jpg 225w" sizes="(max-width: 768px) 100vw, 768px" />
<p>Now, the most impressive activity was the <strong>DRC demo</strong>. It was amazing to see how the KAIST team performed a complete demo from beginning to end without any trouble. The robot was able to get into the car, drive, get out, open a door, close the valve, perform a drill, walk and finally climb the stairs. And they did this on three consecutive days. Based on my experience at several Robocup competitions, I know how difficult it is to make all this work for a demo, so I cannot say anything but: bravo KAIST!</p>
<div class="keep-aspect"><iframe title="Darpa Robotics Challenge demo by KAIST team during Humanoids2015 conference (1/2)" width="500" height="281" src="https://www.youtube-nocookie.com/embed/tTFMMHnyO24?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<div class="keep-aspect"><iframe title="Darpa Robotics Challenge demo by KAIST team during Humanoids2015 conference (2/2)" width="500" height="281" src="https://www.youtube-nocookie.com/embed/d8cNKxf5S6E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>Evaluating the conference, from my point of view, I feel that it is very (too much) focused on control for humanoids. The vast majority of papers are dedicated to specific control problems that humanoids face and that make them so much more complex than wheeled robots. I, personally, noticed the lack of papers more concerned with cognitive issues, where the fact that the robot is a humanoid might be used to create more complex behaviours.</p>
<p>There could also have been a panel of experts of some sort to analyse the results of the DARPA Robotics Challenge and how a second round of the contest would improve humanoid technology (or not).</p>
<p>Perhaps next year!</p>
<img decoding="async" class="alignnone size-full wp-image-56330" src="http://robohub.org/wp-content/uploads/2015/11/IMG_5694-e1447254110701.jpg" alt="IMG_5694-e1447254110701" width="1024" height="1365" srcset="https://robohub.org/wp-content/uploads/2015/11/IMG_5694-e1447254110701.jpg 1024w, https://robohub.org/wp-content/uploads/2015/11/IMG_5694-e1447254110701-319x425.jpg 319w, https://robohub.org/wp-content/uploads/2015/11/IMG_5694-e1447254110701-768x1024.jpg 768w, https://robohub.org/wp-content/uploads/2015/11/IMG_5694-e1447254110701-225x300.jpg 225w" sizes="(max-width: 1024px) 100vw, 1024px" />
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Construct: Robot simulations in the cloud</title>
		<link>https://robohub.org/the-construct-robot-simulations-in-the-cloud/</link>
		
		<dc:creator><![CDATA[Ricardo Téllez]]></dc:creator>
		<pubDate>Tue, 20 Oct 2015 16:05:58 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[Simulation]]></category>
		<guid isPermaLink="false">http://robohub.org/the-construct-robot-simulations-in-the-cloud/</guid>

					<description><![CDATA[The Construct is a Barcelona based startup created to simplify the simulation of robots. The goal is to allow anybody to simulate complex robots and environments with minimal knowledge, without having to install or maintain anything in their computer and without having to build the simulations from scratch. With The Construct, users run their robot [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="alignnone size-full wp-image-55380" src="http://robohub.org/wp-content/uploads/2015/10/the_construct_1a.png" alt="the_construct_1a" width="1899" height="913" srcset="https://robohub.org/wp-content/uploads/2015/10/the_construct_1a.png 1899w, https://robohub.org/wp-content/uploads/2015/10/the_construct_1a-425x204.png 425w, https://robohub.org/wp-content/uploads/2015/10/the_construct_1a-1024x492.png 1024w, https://robohub.org/wp-content/uploads/2015/10/the_construct_1a-500x240.png 500w" sizes="(max-width: 1899px) 100vw, 1899px" />
<p><a href="http://www.theconstructsim.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">The Construct</a> is a Barcelona based startup created to simplify the simulation of robots. The goal is to allow anybody to simulate complex robots and environments with minimal knowledge, without having to install or maintain anything in their computer and without having to build the simulations from scratch.</p>
<p><span id="more-55378"></span></p>
<p>With The Construct, users run their robot simulations in the cloud, using a web browser so they don&#8217;t need to install, configure or store files on their computer. Any WebGL enabled browser will suffice.</p>
<p>Once logged in, users must select which simulator to run. Currently available simulators include<strong> <a href="http://www.gazebosim.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Gazebo</a>, <a href="http://www.cyberbotics.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Webots</a> </strong>and DRC, and more are in the pipeline. All simulators are fully integrated with<strong> <a href="http://www.ros.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS</a></strong> (it&#8217;s not mandatory to use it though).</p>
<img decoding="async" class="alignnone size-full wp-image-55382" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_2.png" alt="The_Construct_2" width="1919" height="872" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_2.png 1919w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_2-425x193.png 425w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_2-1024x465.png 1024w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_2-500x227.png 500w" sizes="(max-width: 1919px) 100vw, 1919px" />
<p>Users will also find different versions of the same simulator available. This means that they can run a Gazebo 4.0 with ROS Indigo under Ubuntu 14.04, or a Gazebo 1.9 with ROS Hydro under Ubuntu 12.04. It all depends on their needs.</p>
<p>An interesting feature of The Construct is that it allows sharing of simulations, that is, users can work at the same time on the same simulation, each from their own point of view. This feature opens a lot of simulation possibilities, such as collaboration between workmates, worldwide robotics classes in real time or hosting a competition where all the participants share the same interface and resources.</p>
<img decoding="async" class="alignnone size-full wp-image-55383" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_3.png" alt="The_Construct_3" width="898" height="646" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_3.png 898w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_3-425x306.png 425w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_3-417x300.png 417w" sizes="(max-width: 898px) 100vw, 898px" />
<div id="attachment_55387" style="width: 300px" class="wp-caption alignleft"><img decoding="async" aria-describedby="caption-attachment-55387" class="wp-image-55387 size-thumbnail" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_4-290x290.png" alt="The_Construct_4" width="290" height="290" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-290x290.png 290w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-100x100.png 100w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-220x220.png 220w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-32x32.png 32w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-64x64.png 64w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-96x96.png 96w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_4-128x128.png 128w" sizes="(max-width: 290px) 100vw, 290px" /><p id="caption-attachment-55387" class="wp-caption-text">The Construct running on an iPad2 (Nao robot by Aldebaran on Webots)</p></div>
<p>Since simulations are created and accessed through a web browser, users can utilize any type of computer or device &#8211; a Linux, Windows PC or Mac, a tablet or smartphone.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="attachment_55388" style="width: 300px" class="wp-caption alignleft"><img decoding="async" aria-describedby="caption-attachment-55388" class="wp-image-55388 size-thumbnail" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_5-290x290.jpg" alt="The_Construct_5" width="290" height="290" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-290x290.jpg 290w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-100x100.jpg 100w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-220x220.jpg 220w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-32x32.jpg 32w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-64x64.jpg 64w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-96x96.jpg 96w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_5-128x128.jpg 128w" sizes="(max-width: 290px) 100vw, 290px" /><p id="caption-attachment-55388" class="wp-caption-text">The Construct running on an iPhone4S (Wam arm by Barret on Gazebo)</p></div>
<p>As the cloud provides high CPU power, it is possible to simulate really big environments, such as a  city, or very complex robots.</p>
<div id="attachment_3500" style="width: 1914px" class="wp-caption aligncenter"><a href="http://www.theconstructsim.com/wp-content/uploads/2015/10/Screenshot-from-2015-03-26-21_15_51.png" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" aria-describedby="caption-attachment-3500" class="wp-image-3500 size-full" src="http://www.theconstructsim.com/wp-content/uploads/2015/10/Screenshot-from-2015-03-26-21_15_51.png" alt="Screenshot from 2015-03-26 21_15_51" width="1904" height="912" /></a><p id="caption-attachment-3500" class="wp-caption-text">The simulation of a city, which includes the sea and an island.</p></div>
<p>Users can launch their already existing simulations in The Construct  without a problem. It&#8217;s fully compatible with desktop simulators, and allows switching from desktop to cloud and vice versa at anytime without losing features in the simulations.</p>
<p><img decoding="async" class="alignleft size-thumbnail wp-image-55390" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_6-290x290.jpg" alt="The_Construct_6" width="290" height="290" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-290x290.jpg 290w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-100x100.jpg 100w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-220x220.jpg 220w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-32x32.jpg 32w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-64x64.jpg 64w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-96x96.jpg 96w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_6-128x128.jpg 128w" sizes="(max-width: 290px) 100vw, 290px" />The Construct was an official tool at the <a href="http://www.ieee-raspebras2015.com/node/35" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">2015 IEEE-RAS Summer School on Experimental Methodology,</a> <a href="http://www.ieee-raspebras2015.com/node/35" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Performance Evaluation and Benchmarking in Robotics</a>, and it&#8217;s developers are currently working with the University of Pisa and the <a href="http://www.centropiaggio.unipi.it/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Center Piaggio</a> to build an off-the-shelf grasping simulation system using a soft robotic hand.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img decoding="async" class="alignleft size-thumbnail wp-image-55391" src="http://robohub.org/wp-content/uploads/2015/10/The_Construct_7-290x290.png" alt="The_Construct_7" width="290" height="290" srcset="https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-290x290.png 290w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-100x100.png 100w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-220x220.png 220w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-32x32.png 32w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-64x64.png 64w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-96x96.png 96w, https://robohub.org/wp-content/uploads/2015/10/The_Construct_7-128x128.png 128w" sizes="(max-width: 290px) 100vw, 290px" />
<p>Recently, the company participated in the <a href="http://robohub.org/meet-the-winners-of-robotlaunch-2015/" target="_blank" data-wpel-link="internal">Robot Launch 2015 startup competition</a>, winning the Reader&#8217;s pick award and the Siemens Industrial Award. This later award makes The Construct a <a href="https://www.frontier.spigit.com/Page/Home" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Frontier Partner of Siemens</a>.</p>
<p>You can see a demo about how to launch your already created simulations in The Construct by <a href="http://www.theconstructsim.com/?p=3248" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">visiting this post</a>.</p>
<p>You can also enrol in The Construct for a free account and start running your simulations in the cloud. Just visit us <a href="http://www.theconstructsim.com" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">here</a>.</p>
<div class="keep-aspect"><iframe title="What Is The Construct?" width="500" height="281" src="https://www.youtube-nocookie.com/embed/Fubo4VV4dKA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: robohub.org @ 2026-10-14 13:28:51 by W3 Total Cache
-->