<?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>AR Drone &#8211; Robohub</title>
	<atom:link href="https://robohub.org/tag/ar-drone/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 00:51:07 +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>Parrot grows both consumer and commercial drone business</title>
		<link>https://robohub.org/parrot-grows-both-consumer-and-commercial-drone-business/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Fri, 10 Apr 2015 19:24:00 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[mapping & surveillance]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[Pix4D]]></category>
		<category><![CDATA[SenseFly]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/parrot-grows-both-consumer-and-commercial-drone-business/</guid>

					<description><![CDATA[<a href="http://www.therobotreport.com/news/parrot-grows-both-consumer-and-commercial-drones-business/?utm_source=news&#038;utm_medium=feeds&#038;utm_campaign=website" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">
                  
                    <img src="http://www.therobotreport.com/cache/uploads/AR.Drone-at-ces2_560_207_s_c1.png" alt=""></a>
                            <p>Previously known for consumer products for smartphones,&#160;tablets and cars, Paris-based Parrot recently branched into both the consumer and commercial&#160;drone businesses.</p>


<p><a href="http://www.parrot.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Parrot</a> created the AR.Drone quadcopter and revealed it at CES 2010 in Las Vegas. Since then they have sold over a million of them - 700M in 2014 alone!&#160;In 2014, drones generated 34% of Parrot's total revenue.&#160;At CES 2014 they launched two new mini drones for the retail consumer market. All appear to have done quite well during the Christmas season.&#160;</p>

<p>But what is particularly interesting is Parrots growth In the commercial drone sector. Parrot is acquiring companies and developing products to provide drones, software and data solutions for the agriculture, mapping and surveillance industries.&#160;To jumpstart their&#160;movement toward commercial drones, two spinoffs from the Swiss Federal Institute of Technology (ETH), senseFly and Pix4D, were acquired in 2012.</p>

<ul><li><a href="https://www.sensefly.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img alt="" src="http://www.therobotreport.com/uploads/ebee-ag-in-flight.jpg">senseFly </a>designs and develops a line of winged drones and is soon to release a quadcopter as well. All their drones are for commercial use. senseFly's $25K eBee drone was rated one of the Top 7 Drones for Agriculture in 2014 by <a href="http://dronelife.com/2014/10/01/best-agricultural-drones-available-today/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">DroneLife</a>.<br>
	&#160;</li>
	<li><a href="https://pix4d.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Pix4D</a> provides image processing software for mapping and modeling geo-referenced 2D images into 3D models and for a wide range of GIS and CAD applications.</li>
</ul><p>Two more acquisitions in B2B (business-to-business) drones happened in 2014: Parrot invested in MicaSense and Airinov.</p>

<ul><li><a href="http://www.micasense.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MicaSense</a> is a Seattle-based software and systems company providing&#160;advanced data gathering and processing, coupled with professional analysis tools, to provide accurate and repeatable information on the status of a crop. Raw data from the MicaSense camera, a lightweight, multispectral camera, is transformed into vegetation index maps. Powerful analytics provide time-based trends and change maps. Analysis tools such as plant population counts enable optimized farm management. Parrot invested $2M in a Series A round of&#160;funding in November, 2014.<br>
	&#160;</li>
	<li><a href="http://www.airinov.fr/en/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Airinov</a> is a French provider of UAV farming applications and sensors for use on senseFly and other UAS. Their software can process flight and sensor data and produce fertilization recommendations which are&#160;compatible with most brands of dispenser equipment. Parrot invested $2.2M for a 20.9% equity interest in Airinov.</li>
</ul><p>Henri Seydoux, Parrot&#8217;s founder, chairman and CEO,&#160;said:</p>

<blockquote>
<p>We&#160;are moving forward with our external growth policy initiated in 2011 and focusing on new products with high-potential, outstanding and complementary technological expertise, applications for commercial and retail customer segments, strong operational and financial synergies. Parrot intends to meet the needs of professionals moving into the civil drone age and firmly believes in the commercial potential of this market, (on which the Parrot AR.Drone has already enabled us to gain global recognition) and I am very pleased that we can also serve the commercial drone market as well.</p>

<p>Agriculture is one of the fastest-growing market segments for unmanned aircraft commercial applications.&#160;The sensors required to capture accurate data are a critical part of the solution, and [our recent acquisition of MicaSense and Airinov] brings this technology to the table.</p>
</blockquote>

<p>As much fun as Parrot's drones are, there is a growing market for professional service&#160;drones for mapping, surveying, protection, real estate photography and agricultural uses. Shenzen-based <a href="http://www.dji-innovations.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Dajiang Innovation Technology (DJI)</a> has sold over 400M of their line of consumer and B2B drones; San Francisco startup <a href="http://blog.skycatch.com/2015/01/20/skycatch-partners-with-one-of-the-largest-and-most-innovative-heavy-machinery-makers-komatsu-to-automate-constructor-job-sites-world-wide/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Skycatch</a>&#160;has&#160;partnered&#160;with one of the largest heavy machinery makers, Komatsu, to automate construction and mining job sites world&#160;wide using drones, mapping software and various sensors.&#160;</p>

<ul><li>There is also a steadily growing defense and first-responder market led by Lockheed Martin, Boeing, AeroVironment, Elbit and Northrup Grumman.&#160;<a href="https://www.reportbuyer.com/product/1693045/the-global-uav-market-2015-2025.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">The Global UAV Market 2015-2025</a>&#160;projects the global defense UAV market to&#160;grow at a 5.66% CAGR&#160;from 2014 to 2025 with North America and Europe the largest markets and the military drone segment (UCAV - unmanned combat aerial vehicle) to dominate the UAV market.&#160;<br>
	&#160;</li>
	<li>But the real good news is Wintergreen Research's report entitled "<a href="http://www.reportsnreports.com/reports/323186-commercial-drones-highways-in-the-sky-unmanned-aerial-systems-uas-market-shares-strategies-and-forecasts-worldwide-2015-to-2021.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Commercial Drones: Highways in the Sky, UAS, Market Shares, Strategies and Forecasts, Worldwide, 2015 to 2021</a>" (whew!) which projects <span>commercial drone growth at 34.3% CAGR&#160;over the period from 2014 to 2021</span>. That's game-changing growth!</li>
</ul><p><a href="http://www.therobotreport.com/news/parrot-grows-both-consumer-and-commercial-drones-business/?utm_source=news&#038;utm_medium=feeds&#038;utm_campaign=website" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Read more</a></p>]]></description>
										<content:encoded><![CDATA[<img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-24669" src="http://robohub.org/wp-content/uploads/2013/12/ardrone2_1.jpg" alt="ardrone2_1" width="903" height="508" srcset="https://robohub.org/wp-content/uploads/2013/12/ardrone2_1.jpg 903w, https://robohub.org/wp-content/uploads/2013/12/ardrone2_1-300x168.jpg 300w, https://robohub.org/wp-content/uploads/2013/12/ardrone2_1-500x281.jpg 500w" sizes="(max-width: 903px) 100vw, 903px" />
<p>Previously known for consumer products for smartphones, tablets and cars, Paris-based Parrot recently branched into both the consumer and commercial drone businesses.<span id="more-48187"></span></p>
<div class="intro">
<p>Previously known for consumer products for smartphones, tablets and cars, Paris-based Parrot recently branched into both the consumer and commercial drone businesses.</p>
</div>
<p><a class="external" href="http://www.parrot.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Parrot</a> created the AR.Drone quadcopter and revealed it at CES 2010 in Las Vegas. Since then they have sold over a million of them &#8211; 700M in 2014 alone! In 2014, drones generated 34% of Parrot&#8217;s total revenue. At CES 2014 they launched two new mini drones for the retail consumer market. All appear to have done quite well during the Christmas season.</p>
<p>But what is particularly interesting is Parrots growth In the commercial drone sector. Parrot is acquiring companies and developing products to provide drones, software and data solutions for the agriculture, mapping and surveillance industries. To jumpstart their movement toward commercial drones, two spinoffs from the Swiss Federal Institute of Technology (EPF), senseFly and Pix4D, were invested in in 2012.</p>
<ul>
<li><a href="https://www.sensefly.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">senseFly </a><a href="https://www.sensefly.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer"><img decoding="async" class="right alignleft" src="http://www.therobotreport.com/cache/uploads/ebee-ag-in-flight_301_134_80.jpg" alt="" width="301" height="134" /></a>designs and develops a line of winged drones and is soon to release a quadcopter as well. All their drones are for commercial use. senseFly&#8217;s $25K eBee drone was rated one of the Top 7 Drones for Agriculture in 2014 by <a class="external" href="http://dronelife.com/2014/10/01/best-agricultural-drones-available-today/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">DroneLife</a>.</li>
<li><a href="https://pix4d.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Pix4D</a> provides image processing software for mapping and modeling geo-referenced 2D images into 3D models and for a wide range of GIS and CAD applications.</li>
</ul>
<p>Two more acquisitions in B2B (business-to-business) drones happened in 2014: Parrot invested in MicaSense and Airinov.</p>
<ul>
<li><a class="external" href="http://www.micasense.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MicaSense</a> is a Seattle-based software and systems company providing advanced data gathering and processing, coupled with professional analysis tools, to provide accurate and repeatable information on the status of a crop. Raw data from the MicaSense camera, a lightweight, multispectral camera, is transformed into vegetation index maps. Powerful analytics provide time-based trends and change maps. Analysis tools such as plant population counts enable optimized farm management. Parrot invested $2M in a Series A round of funding in November, 2014.</li>
<li><a class="external" href="http://www.airinov.fr/en/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Airinov</a> is a French provider of UAV farming applications and sensors for use on senseFly and other UAS. Their software can process flight and sensor data and produce fertilization recommendations which are compatible with most brands of dispenser equipment. Parrot invested $2.2M for a 20.9% equity interest in Airinov.</li>
</ul>
<p>Henri Seydoux, Parrot’s founder, chairman and CEO, said:</p>
<blockquote><p>We are moving forward with our external growth policy initiated in 2011 and focusing on new products with high-potential, outstanding and complementary technological expertise, applications for commercial and retail customer segments, strong operational and financial synergies. Parrot intends to meet the needs of professionals moving into the civil drone age and firmly believes in the commercial potential of this market, (on which the Parrot AR.Drone has already enabled us to gain global recognition) and I am very pleased that we can also serve the commercial drone market as well.</p>
<p>Agriculture is one of the fastest-growing market segments for unmanned aircraft commercial applications. The sensors required to capture accurate data are a critical part of the solution, and [our recent acquisition of MicaSense and Airinov] brings this technology to the table.</p></blockquote>
<p>As much fun as Parrot&#8217;s drones are, there is a growing market for professional service drones for mapping, surveying, protection, real estate photography and agricultural uses. Shenzen-based <a class="external" href="http://www.dji-innovations.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Dajiang Innovation Technology (DJI)</a> has sold over 400M of their line of consumer and B2B drones; San Francisco startup <a class="external" href="http://blog.skycatch.com/2015/01/20/skycatch-partners-with-one-of-the-largest-and-most-innovative-heavy-machinery-makers-komatsu-to-automate-constructor-job-sites-world-wide/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Skycatch</a> has partnered with one of the largest heavy machinery makers, Komatsu, to automate construction and mining job sites world wide using drones, mapping software and various sensors.</p>
<ul>
<li>There is also a steadily growing defense and first-responder market led by Lockheed Martin, Boeing, AeroVironment, Elbit and Northrup Grumman. <a href="https://www.reportbuyer.com/product/1693045/the-global-uav-market-2015-2025.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">The Global UAV Market 2015-2025</a> projects the global defense UAV market to grow at a 5.66% CAGR from 2014 to 2025 with North America and Europe the largest markets and the military drone segment (UCAV &#8211; unmanned combat aerial vehicle) to dominate the UAV market.</li>
<li>But the real good news is Wintergreen Research&#8217;s report entitled &#8220;<a class="external" href="http://www.reportsnreports.com/reports/323186-commercial-drones-highways-in-the-sky-unmanned-aerial-systems-uas-market-shares-strategies-and-forecasts-worldwide-2015-to-2021.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Commercial Drones: Highways in the Sky, UAS, Market Shares, Strategies and Forecasts, Worldwide, 2015 to 2021</a>&#8221; (whew!) which projects <span class="marker">commercial drone growth at 34.3% CAGR over the period from 2014 to 2021</span>. That&#8217;s game-changing growth!</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Up and flying with the AR.Drone and ROS: Handling feedback</title>
		<link>https://robohub.org/up-and-flying-with-the-ar-drone-and-ros-handling-feedback/</link>
		
		<dc:creator><![CDATA[Mike Hamer]]></dc:creator>
		<pubDate>Mon, 01 Jul 2013 14:14:19 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=16026</guid>

					<description><![CDATA[This is the third tutorial in the Up and flying with the AR.Drone and ROS series. In this tutorial we will: Learn about the AR.Drone&#8217;s state feedback (and how it is handled by ROS) Learn about the AR.Drone&#8217;s tag detection Program our first ROS nodes: A subscriber and a publisher In the previous tutorials we: Installed ROS, the AR.Drone driver [&#8230;]]]></description>
										<content:encoded><![CDATA[<link href="syntax_highlight.css" rel="stylesheet" media="all" type="text/css" />
<style type="text/css"><!--
.maintext p {
	margin-top: 1em !important;
	margin-bottom: 1em !important;
}
.maintext pre {
	margin-top: 1em !important;
	margin-bottom: 1em !important;
}
.maintext v {
	font-family:monospace !important;
	/*background-color:#EEE;*/
}
.maintext ol li {
	margin-top: 1em !important;
}
.maintext ol li ul {
	margin: 0px !important;
	padding: 0px !important;
}
.maintext ol li ul li{
	margin: 0.5em !important;
}
--></style>
<a href="https://github.com/mikehamer/ardrone_tutorials" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" class="size-full wp-image-16027" alt="ARDroneSubscribingFeedback" src="http://robohub.org/wp-content/uploads/2013/07/ARDroneHandlingFeedback900400.png" width="216" height="166" /></a>
<div style="clear: both;"></div>
<p>This is the third tutorial in the <em>Up and flying with the AR.Drone and ROS</em> series.</p>
<p>In this tutorial we will:</p>
<ol>
<li>Learn about the AR.Drone&#8217;s state feedback (and how it is handled by ROS)</li>
<li>Learn about the AR.Drone&#8217;s tag detection</li>
<li>Program our first ROS nodes: A subscriber and a publisher</li>
</ol>
<p><span id="more-16026"></span></p>
<p>In the previous tutorials we:</p>
<ol>
<li>Installed ROS, the AR.Drone driver and AR.Drone keyboard controller then flew the AR.Drone using the provided keyboard controller (<a href="/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">link</a>)</li>
<li>Learned about ROS communication, setup and then flew the AR.Drone using a joystick (<a href="/up-and-flying-with-the-ar-drone-and-ros-joystick-control/" data-wpel-link="internal">link</a>)</li>
</ol>
<p>In the next tutorials, we will:</p>
<ul>
<li>Write a controller to enable tag following</li>
<li>Write a controller for the drone which allows us to control drone velocity, rather than body angle</li>
</ul>
<h2><strong>What you&#8217;ll need for the tutorial</strong></h2>
<ol>
<li>An AR.Drone!</li>
<li>A computer or laptop with WiFi</li>
<li>Linux, either the ARDroneUbuntu virtual machine, or a custom installation</li>
<li>Either the keyboard or joystick controller from the previous tutorials</li>
</ol>
<p>I also assume that you&#8217;ve completed either the <a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">keyboard</a> or <a href="http://http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-joystick-control/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">joystick</a> tutorial, which detail how to setup the software, connect to the drone, etc, and provide a method of controlling the AR.Drone from your computer.</p>
<div class="aligncenter" style="background-color: #eee; padding: 5px; margin: 10px; margin-top: 4em; border: 1px solid #666; width: 90%;">
<p style="text-align: center; margin-top: 0; padding-top: 0;"><strong>Warning!</strong></p>
<p>In this tutorial, we will be flying the AR.Drone. <strong>Flying inside can be dangerous</strong>. When flying inside, you should always use the propeller-guard and fly in the largest possible area, making sure to stay away from walls and delicate objects. Even when hovering, the drone tends to drift, so always land the drone if not being flown.</p>
<p style="margin: 0px;">I accept no responsibility for damages or injuries that result from flying the drone.</p>
</div>
<h2><strong>Updating</strong></h2>
<h3>If you have not completed the <a href="http://http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-joystick-control/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">joystick</a> tutorial:</h3>
<p>Please go back and update your installation according to the instructions listed there.</p>
<h3>If you downloaded the ARDroneUbuntu virtual machine:</h3>
<p>To update your installation for this tutorial, click the &#8220;Update Tutorials&#8221; button in the ARDroneUbuntu Virtual Machine</p>
<h3>If you use a custom installation:</h3>
<p>At the terminal, enter the following:</p>
<pre>$ roscd ardrone_autonomy
$ git pull
$ roscd ardrone_tutorials
$ git pull
$ roscd
$ rosmake ardrone_tutorials</pre>
<h2><strong>AR.Drone State Feedback &#8211; A First Look</strong></h2>
<h3>Preparation:</h3>
<ol>
<li>Find the Orange-[Green|Yellow|Blue]-Orange tag that came with the AR.Drone.</li>
<li>In your ARDroneUbunutu virtual machine (or custom installation), open a new terminal window and type:
<pre>$ roscd ardrone_tutorials/launch</pre>
</li>
<li>If you intend to fly with the keyboard, type:
<pre>$ geany keyboard_controller_with_tags.launch</pre>
<p>Otherwise, if you intend to fly with the joystick:</p>
<pre>$ geany joystick_controller.launch</pre>
</li>
<li>Now find the line:
<pre>&lt;param name="enemy_colors" value="3" /&gt;</pre>
</li>
<li>And change the value to &#8220;1&#8221;, &#8220;2&#8221;, or &#8220;3&#8221;, depending on whether your tags are Orange-Green-Orange, Orange-Yellow-Orange or Orange-Blue-Orange respectively.</li>
</ol>
<h3>Tag Detection and Feedback Data</h3>
<ol>
<li>Run the system (but don&#8217;t takeoff with the drone!) using either the <a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">keyboard_controller</a>:
<pre>$ roslaunch ardrone_tutorials keyboard_controller_with_tags.launch</pre>
<p>or the <a href="http://http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-joystick-control/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">joystick_controller</a>:</p>
<pre>$ roslaunch ardrone_tutorials joystick_controller.launch</pre>
</li>
<li>Open a new terminal window and type:
<pre>$ rostopic list</pre>
<ul>
<li>This list shows all the active ROS &#8220;topics&#8221; used for communication to and from the AR.Drone</li>
</ul>
</li>
<li>In the same terminal window, type:
<pre>$ rostopic echo /ardrone/navdata</pre>
<ul>
<li>This echoes the AR.Drone&#8217;s feedback data into the terminal window.</li>
<li>Note that many items will be zero because the AR.Drone is not yet flying</li>
</ul>
</li>
<li>Move the Orange-Color-Orange tag in front of the AR.Drone&#8217;s front camera. It should be detected, and the console output (from the previous step), should update to reflect this detection.
<ul>
<li>Note the tags_xc and tags_yc values. These represent the x/y location of the tag within the image.</li>
<li>The video display window will show a dot at these coordinates, and the distance measurement above the dot</li>
</ul>
</li>
<li>Now place the tag somewhere that can be seen by the flying drone. After this is done, take off with the drone.</li>
<li>Watch the console output. What happens if you fly forwards? sideways? What variable changes if you rotate the drone?</li>
</ol>
<h3>Plotting the AR.Drone&#8217;s State</h3>
<ol>
<li>A more intuitive way of representing this feedback data is using a plot. PressCtrl-C to terminate the echo process from the last stage, and then type:
<pre>$ rxplot /ardrone/navdata/rotX,/ardrone/navdata/rotY</pre>
<ul>
<li>This launches a plotting window showing the AR.Drone&#8217;s estimated roll (rotX) and pitch (rotY).</li>
<li>Similar plots could, for example, be generated for yaw (rotZ), x and y velocity (vx and vy), altitude (altd), etc.</li>
</ul>
</li>
<li>Similarly to displaying the AR.Drone&#8217;s feedback data, we can use the plotting method to investigate how we are controlling the drone:
<pre>$ rxplot /cmd_vel/linear/y,/cmd_vel/linear/x</pre>
<ul>
<li>This plots the roll (linear/y) and pitch (linear/x) commands.</li>
<li>Note that these are scaled with a value of $\pm1$ being the maximum commandable angle (set by the euler_angle_max in the launch file).</li>
<li>Note also that the direction of AR.Drone movement is commanded (ie. move <em>along</em> the x-axis = /cmd_vel/linear/x = commanded pitch), whereas the AR.Drone&#8217;s feedback data is named with reference to axis of rotation (ie. tilt <em>around</em> y-axis = /ardrone/navdata/rotY = feedback pitch).</li>
</ul>
</li>
</ol>
<h3>Logging Data</h3>
<ol>
<li>To log data, we can use the inbuilt ROS command <a href="http://www.ros.org/wiki/rosbag/Tutorials/Recording%20and%20playing%20back%20data" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">rosbag</a>:
<pre>$ rosbag record -O ARDroneFlight.bag /ardrone/navdata /cmd_vel</pre>
<ul>
<li>This will record the topics /ardrone/navdata and /cmd_vel to a &#8220;bag-file&#8221;, stamped with the current date and time.</li>
<li>Leave this process running for a few seconds, fly the AR.Drone around, and when finished press Ctrl-C to terminate.</li>
<li>Recording all topics is possible with rosbag record -a, however this also records the AR.Drone&#8217;s HD video stream, thus bag-files will quickly become very large</li>
<li>The advantage of using rosbag to log data, is that bag-files can be replayed at a later time, and interact very nicely with the existing ROS infrastructure.</li>
</ul>
</li>
<li>Land the AR.Drone and close any windows / terminate any processes relating to the controller. Now, into the terminal window that ran the AR.Drone controller, type:
<pre>$ roscore</pre>
<p>Now open a new terminal window and type:</p>
<pre>$ rxplot /cmd_vel/linear/y,/cmd_vel/linear/x</pre>
<p>Now finally (ignoring the warning from the previous step), switch back to the terminal window that you used to run the rosbag command and type:</p>
<pre>$ rosbag play ARDroneFlight.bag</pre>
<p>Does the flight look familiar? It should! This is the flight you recorded in the last step! Use Ctrl-C to terminate the above processes.</li>
</ol>
<h2><strong>Custom Data Handling</strong></h2>
<p>In the last section, we investigated the AR.Drone&#8217;s feedback data by using ROS&#8217;s inbuilt plotting (rxplot) and logging (rosbag) commands. In this section, you will learn how we get this feedback data into your own application by writing a custom ROS Node. This node will be used to compare the commanded roll and pitch angles with the AR.Drone&#8217;s roll and pitch estimates, thus laying the foundations for the next tutorial, where we will use this feedback data to programmatically control the AR.Drone.</p>
<h3>Messages, Topics and Nodes</h3>
<p>In ROS terminology, a program is known as a <em>Node</em>. To interact with other nodes (for example the AR.Drone driver), each node will have some <em>subscribers</em>, which listen for information messages on a specific <em>topic</em> (communications channel); and some <em>publishers</em>, which send messages to a specific <em>topic</em>.</p>
<p>These messages can be anything. An example that we saw in the previous section was the <em>Navdata</em> message, which is sent over the /ardrone/navdata topic and contains feedback data from the AR.Drone.</p>
<p>We will now investigate this message a little further. Open up a new terminal window and type</p>
<pre>rosmsg show ardrone_autonomy/Navdata</pre>
<p>You should be presented with the following output:</p>
<pre>$ rosmsg show ardrone_autonomy/Navdata
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
float32 batteryPercent
uint32 state
int32 magX
int32 magY
int32 magZ
int32 pressure
int32 temp
float32 wind_speed
float32 wind_angle
float32 wind_comp_angle
float32 rotX
float32 rotY
float32 rotZ
int32 altd
float32 vx
float32 vy
float32 vz
float32 ax
float32 ay
float32 az
uint32 tags_count
uint32[] tags_type
uint32[] tags_xc
uint32[] tags_yc
uint32[] tags_width
uint32[] tags_height
float32[] tags_orientation
float32[] tags_distance
float32 tm</pre>
<p>This listing shows us the various members of the Navdata message, including their datatypes. Note that the Navdata message has a header, which includes the time the message is sent.</p>
<h3>Minimum Viable Subscriber</h3>
<p>Open up a new terminal window and type:</p>
<pre>$ roscd ardrone_tutorials
$ geany src/minimum_viable_subscriber.py</pre>
<p>Up will pop a geany window, ready for your to edit the new file. Enter the following into the new geany window, then save and close the file:</p>
<pre><code data-language="python">import roslib
import rospy

roslib.load_manifest('ardrone_tutorials')

from ardrone_autonomy.msg import Navdata

def ReceiveData(data):
  print '[{0:.3f}] Pitch: {1:.3f}'.format(data.header.stamp.to_sec(), data.rotY)

rospy.init_node('minimum_viable_subscriber')
sub_Navdata = rospy.Subscriber('/ardrone/navdata', Navdata, ReceiveData)

while not rospy.is_shutdown():
  pass</code></pre>
<p>We will now use the previously recorded bag-file to test the node that we&#8217;ve just written.</p>
<ol>
<li>In one terminal window, enter:
<pre>$ roscore</pre>
<p>Which begins the roscore process, which coordinates the interactions between nodes.</li>
<li>Now in a new terminal window type:
<pre>$ roscd ardrone_tutorials
$ python src/minimum_viable_subscriber.py</pre>
<p>This will launch the node that we&#8217;ve just programmed.</li>
<li>Finally, in a third terminal window, begin the bag-file playback with:
<pre>$ rosbag play ARDroneFlight.bag</pre>
<ul>
<li>Note you must be in the same directory as the bag-file for the above command to work</li>
</ul>
</li>
<li>If you switch back to the terminal window in which our new node is running, you should see a stream of time-stamped printouts with the drone&#8217;s pitch, for example:
<pre>[1353596639.491] Pitch: 4.375
[1353596639.511] Pitch: 4.128
[1353596639.531] Pitch: 3.750
[1353596639.552] Pitch: 3.304
[1353596639.571] Pitch: 3.063</pre>
</li>
</ol>
<h3>Minimum Viable Subscriber: A Closer Look</h3>
<p>If you made it through the previous section, congratulations, you have successfully written and tested a ROS node, which listens for Navdata measurements from the AR.Drone (or equivalently: a recorded flight) and outputs a time-stamped pitch measurement. But how does it all work?</p>
<p>Lets take a look at the source-code from the previous section, line by line:</p>
<pre><code data-language="python">import roslib
import rospy</code></pre>
<p>With these two lines, we import the standard ROS packages, required for every ROS node.</p>
<pre><code data-language="python">roslib.load_manifest('ardrone_tutorials')</code></pre>
<p>Once the required packages are imported, load the <a href="http://ros.org/wiki/Manifest" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><em>manifest</em> file</a>. This file details the dependencies of the current project (for example, that ardrone_tutorials is dependent on the AR.Drone driver, ardrone_autonomy), which through the above command are loaded into the path.</p>
<pre><code data-language="python">from ardrone_autonomy.msg import Navdata</code></pre>
<p>Once the project dependencies have been loaded, we can import those which are needed by the current node. In the above case, we load the Navdata message definition from the ardrone_autonomy package.</p>
<pre><code data-language="python">def ReceiveData(data):
  print '[{0:.3f}] Pitch: {1:.3f}'.format(data.header.stamp.to_sec(), data.rotY)</code></pre>
<p>Here we define a callback function to handle the Navdata messages. This function prints a formatted string containing the message&#8217;s timestamp and the AR.Drone&#8217;s pitch angle. This callback function will be used later in the program.</p>
<pre><code data-language="python">rospy.init_node('minimum_viable_subscriber')</code></pre>
<p>Before issuing any commands to the rospy package, we need to initialize a ROS node.</p>
<pre><code data-language="python">sub_Navdata = rospy.Subscriber('/ardrone/navdata', Navdata, ReceiveData)</code></pre>
<p>We can now subscribe the node to various topics. Above we subscribe the node to the /ardrone/navdata topic, which carries Navdata messages. Received messages should then be handled by the previously-defined ReceiveData function.</p>
<pre><code data-language="python">while not rospy.is_shutdown():
  pass</code></pre>
<p>Because our program is relying on callbacks for data processing, we need to stop the program from terminating. The above defines a loop that runs until the node is shut down (for example with Ctrl-C). In most situations the above loop would perform some sort of processing, however in our example, we simply pass (do nothing).</p>
<h2>Publishing Data</h2>
<p>In this section we will introduce the concept of publishing data to a topic (the opposite of subscribing). We will be using this more extensively in the next tutorial, where we will be programmatically controlling the AR.Drone by publishing messages to the /cmd_vel topic.</p>
<h3>Minimum Viable Publisher</h3>
<p>The goal of this section is to create a minimum_viable_publisher.py file such that Navdata messages are averaged over a second and the average pitch published to the (new) /ardrone/average_pitch topic. Modify the file as follows:</p>
<pre><code data-language="python">import roslib
import rospy

roslib.load_manifest('ardrone_tutorials')

from ardrone_autonomy.msg import Navdata
from std_msgs.msg import String

messages = []

def ReceiveData(data):
  messages.append(data)

rospy.init_node('minimum_viable_publisher')
sub_Navdata = rospy.Subscriber('/ardrone/navdata', Navdata, ReceiveData)
pub_Average = rospy.Publisher('/ardrone/average_pitch', String)

r = rospy.Rate(1)
while not rospy.is_shutdown():
  if len(messages)&gt;0:
    avg = sum([m.rotY for m in messages])/len(messages)
    messages = []

    avgmsg = String()
    avgmsg.data = 'Average Pitch: {0:.3f}'.format(avg)
    pub_Average.publish(avgmsg)
  r.sleep()</code></pre>
<p>You can run the program using the following series of commands:</p>
<ol>
<li>In one terminal, run:
<pre>$ roscore</pre>
</li>
<li>In the next terminal, run the new program
<pre>$ roscd ardrone_tutorials
$ python src/minimum_viable_publisher.py</pre>
</li>
<li>We now echo the published data to the topic we&#8217;ve created:
<pre>$ rostopic echo /ardrone/average_pitch</pre>
</li>
<li>And finally, like we&#8217;ve done twice before, we begin the playback of our recorded flight
<pre>$ rosbag play ARDroneFlight.bag</pre>
</li>
<li>Switching back to the terminal in which we ranrostopic echo, you should see a new message with the average pitch appearing once a second:
<pre>data: Average Pitch: 0.649
---
data: Average Pitch: 1.078
---
data: Average Pitch: 3.781
---
data: Average Pitch: 3.285
---</pre>
</li>
</ol>
<h3>Minimum Viable Publisher: A Closer Look</h3>
<p>Comparing minimum_viable_publisher.py to minimum_viable_subscriber.py from the last section, we can see many similarities:</p>
<pre><code data-language="python">from ardrone_autonomy.msg import Navdata
from std_msgs.msg import String</code></pre>
<p>We additionally import the String message, required for our new topic.</p>
<pre><code data-language="python">messages = []
def ReceiveData(data):
  messages.append(data)</code></pre>
<p>We have updated the navdata callback function to save the messages in a queue, rather than process them straight away.</p>
<p><strong>Note:</strong> because we&#8217;re accessing the messages list in both a callback function and the main loop, we should be using Python&#8217;s threading.Lock to control access to the list and prevent race conditions. See ardrone_tutorials/src/drone_video_display.py for an example.</p>
<pre><code data-language="python">pub_Average = rospy.Publisher('/ardrone/average_pitch', String)</code></pre>
<p>We create a new publisher, responsible for publishing messages of the String type to the /ardrone/average_pitch topic. Note that we do not need to explicitly initialize this topic, it will be initialized automatically on first usage.</p>
<p>The biggest change is in the program&#8217;s main loop, which I will now cover in a little more detail:</p>
<pre><code data-language="python">r = rospy.Rate(1)</code></pre>
<p>Firstly we define a Rate object. We use this to control the frequency of the main processing loop. In our case, we want to print a message every second, thus we want a frequency of $1 \text{Hz}$.</p>
<pre><code data-language="python">while not rospy.is_shutdown():
  if len(messages)&gt;0:
    avg = sum([m.rotY for m in messages])/len(messages)
    messages = []

    avgmsg = String()
    avgmsg.data = 'Average Pitch: {0:.3f}'.format(avg)
    pub_Average.publish(avgmsg)</code></pre>
<p>If messages have been received, we calculate the average pitch using a python list comprehension to extract the pitch (.rotY) from every Navdata message. We then empty the messages queue.</p>
<p>We then construct a new String message and set its data property, before publishing it to the topic we previously created.</p>
<pre><code data-language="python">r.sleep()</code></pre>
<p>Finally, we tell the rate object to sleep. This command will calculate how long it needs to sleep, such that the desired loop frequency is achieved.</p>
<h2>Conclusions</h2>
<p>I hope you&#8217;ve enjoyed working through this tutorial and learning about data flow in the ROS environment. In the next tutorial, which I will release in a month&#8217;s time, we will use what we have learned today to programmatically control the AR.Drone, while at the same time learning about PID control.</p>
<p>If you have any questions about the tutorial, please leave me a comment below and I will get back to you as soon as possible!</p>
<p>You can see all the tutorials in here: <a href="http://robohub.org/tag/parrot-ar-drone-tutorial/" data-wpel-link="internal">Up and flying with the AR.Drone and ROS</a>.</p>
<p><em>If you liked this article, you may also be interested in:</em></p>
<ul>
<li><a title="Permalink to Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft" href="http://robohub.org/parrot-ar-drone-app-harnesses-crowd-power-to-fast-track-vision-learning-in-robotic-spacecraft/" rel="bookmark" data-wpel-link="internal">Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft</a></li>
<li><a href="http://robohub.org/taking-your-first-steps-in-robotics-with-the-thymio-ii/" data-wpel-link="internal">Taking your first steps in robotics with the Thymio II</a></li>
<li><a title="Permalink to Discovering social robotics with the Aisoy1" href="http://robohub.org/discovering-social-robotics-with-the-aisoy1/" rel="bookmark" data-wpel-link="internal">Discovering social robotics with the Aisoy1</a></li>
<li><a title="Permalink to Classroom robotics: Motivating independent learning and discovery" href="http://robohub.org/classroom-robotics-motivating-independent-learning-and-discovery/" rel="bookmark" data-wpel-link="internal">Classroom robotics: Motivating independent learning and discovery</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a href="http://eepurl.com/t-UEf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">sign up for our weekly newsletter</a>.</em></p>
<p><em> </em></p>
<p><script type="text/x-mathjax-config">// <![CDATA[
MathJax.Hub.Config({
  TeX: { equationNumbers: { autoNumber: "AMS" } }
});
// ]]&gt;</script></p>
<p><script type="text/x-mathjax-config">// <![CDATA[
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
      processEscapes: true
    },
    "HTML-CSS": { availableFonts: ["TeX"] }
  });
// ]]&gt;</script></p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A conversation with Henri Seydoux</title>
		<link>https://robohub.org/a-conversation-with-henri-seydoux/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Fri, 03 May 2013 18:16:00 +0000</pubDate>
				<category><![CDATA[views]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[environment & agriculture]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[Pix4D]]></category>
		<category><![CDATA[quadcopter]]></category>
		<category><![CDATA[SenseFly]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?guid=56df6ad1f4c5e29b36e2d86e2d5e0e2c</guid>

					<description><![CDATA[By Frank Tobe, Editor and Publisher, The Robot ReportParrot's AR.Drone without styrofoam bumper guard (top) and with (bottom).A growing business within Parrot S.A., (PARRO:EUROLIST B) is their AR.Drone line of products, parts and software. Their first ...]]></description>
										<content:encoded><![CDATA[<p>A growing business within Parrot S.A., (PARRO:EUROLIST B) is their AR.Drone line of products, parts and software. Their first quadcopter product was developed internally by (1) observing the $1 billion market in radio controlled helicopters, (2) seeing gamers interest in using their game devices to drive cars, planes and copters, and (3) the increasingly widespread use of MEMS inertial sensors and high-definition digital cameras in consumer products. <span id="more-13667"></span>These were the building blocks from which came the AR.Drone, a super successful quad-motored copter flown partially autonomously and also by an app on your iPhone or smart tablet. AR.Drones have been sold to an eager audience of global consumers 400,000 strong!</p>
<div style="text-align: center;">
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td><img decoding="async" alt="" src="http://2.bp.blogspot.com/-kG_1a1bWbr0/UYRELEhojOI/AAAAAAAAC2s/bv2VBR2_EN0/s320/ar.drone.quadcopter.jpg" width="298" height="320" border="0" /></td>
</tr>
<tr>
<td class="tr-caption"><span style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">Parrot&#8217;s AR.Drone without styrofoam bumper guard (top) and with (bottom).</span></td>
</tr>
</tbody>
</table>
</div>
<p>As an aside, part of the business plan for selling the AR.Drones is to also sell parts to repair the devices when they crash &#8211; an inevitable outcome of the adventure of flying them. Parrot has made buying replacement parts easy and provides visual tutorials on how to install replacement parts and make needed repairs. A bit like printer companies selling their own brand of paper and ink.</p>
<table class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><img decoding="async" alt="" src="http://4.bp.blogspot.com/-UclOHfOluQY/UYQuipnlfnI/AAAAAAAAC2E/YNJiXWXZeH4/s320/Henri+Seydoux+Parrot.jpg" width="320" height="212" border="0" /></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">Henri Seydoux, Founder, Chairmen and CEO, Parrot SA.</span></td>
</tr>
</tbody>
</table>
<div>I had a brief chat with Henri Seydoux, founder, chairman and CEO of Parrot S.A., who said that there are more innovations coming. The success of the AR.Drone and now the AR.Drone 2 has proven Henri&#8217;s conviction that there is a large consumer market for this type of entertainment product and that there are other related high-potential markets on the horizon. But that&#8217;s not all that&#8217;s in store: Henri has a large cache (about €40 million) to invest in acquisitions to further his pursuit of innovations and products for this market, a market composed of any entertainment, consumer or professional use of drones (but not for defense, military or police activities).</p>
<div></div>
<div>Three recent acquisitions along those lines include senseFly, a Swiss start-up of a series of UASs for commercial survey, mapping and monitoring work; Pix4D, another Swiss start-up providing aerial image and 3D mapping processing software, and Varioptic, a provider of miniature cameras with adjustable lens offering autofocus and image stabilization solutions.</div>
</div>
<div></div>
<div>Professional drones providing mapping and geographical information for surveying, construction, mining, agriculture, forestry, environmental observation and protection and town planning also fit Seydoux&#8217;s vision.</div>
<div></div>
<div>Henri says that there may be an overabundance of UAS vendors at present however he is confident that Parrot, with their extensive experience in mass production and product engineering will continue to be able to achieve low-cost affordable products, and will thus prevail as a market leader.</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft</title>
		<link>https://robohub.org/parrot-ar-drone-app-harnesses-crowd-power-to-fast-track-vision-learning-in-robotic-spacecraft/</link>
		
		<dc:creator><![CDATA[Guido de Croon]]></dc:creator>
		<pubDate>Tue, 26 Mar 2013 20:59:50 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[ESA]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=11390</guid>

					<description><![CDATA[Astrodrone is both a simulation game app for the Parrot AR.Drone and a scientific crowd-sourcing experiment that aims to improve landing, obstacle avoidance and docking capabilities in autonomous space probes. As researchers at the European Space Agency&#8217;s Advanced Concepts Team, we wanted to study how visual cues could be used by robotic spacecraft to help them [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><em>Astrodrone is both a simulation game app for the Parrot AR.Drone and a scientific crowd-sourcing experiment that aims to improve landing, obstacle avoidance and docking capabilities in autonomous space probes.</em></p>
<p>As researchers at the <a href="http://www.esa.int/gsp/ACT/ai/op/astrodrone.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">European Space Agency&#8217;s Advanced Concepts Team</a>, we wanted to study how visual cues could be used by robotic spacecraft to help them navigate unknown, extraterrestrial environments. One of our main research goals was to explore how robots can share knowledge about their environments and behaviors to speed up this visual learning process.</p>
<p><span id="more-11390"></span></p>
<div id="attachment_11477" style="width: 635px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-11477" class=" wp-image-11477" alt="Playing_AstroDrone_node_full_image" src="http://robohub.org/wp-content/uploads/2013/03/Playing_AstroDrone_node_full_image.jpg" width="625" height="417" srcset="https://robohub.org/wp-content/uploads/2013/03/Playing_AstroDrone_node_full_image.jpg 625w, https://robohub.org/wp-content/uploads/2013/03/Playing_AstroDrone_node_full_image-300x200.jpg 300w, https://robohub.org/wp-content/uploads/2013/03/Playing_AstroDrone_node_full_image-449x300.jpg 449w" sizes="(max-width: 625px) 100vw, 625px" /><p id="caption-attachment-11477" class="wp-caption-text">© European Space Agency, Anneke Le Floc&#8217;h</p></div>
<div style="clear: both;"></div>
<div class="calloutkeyl">
<h2><strong>KEY INFO</strong></h2>
<p><strong>Project name<br />
</strong>AstroDrone</p>
<p><strong>Research team</strong></p>
<ul>
<li>Paul K. Gerke<br />
(European Space Agency/Radboud University Nijmegen)</li>
<li>Ida Sprinkhuizen-Kuyper<br />
(Radboud University Nijmegen)</li>
<li>Guido de Croon<br />
(European Space Agency/Delft University of Technology)</li>
</ul>
<p><strong>Links</strong><br />
<a href="http://www.esa.int/gsp/ACT/ai/op/astrodrone.html" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AstroDrone/ESA website<br />
</a><a href="https://itunes.apple.com/us/app/astro-drone/id597477649?mt=8&amp;ign-mpt=uo%3D2" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AstroDrone iPhone App</a></p>
<p><strong>Status</strong><br />
Ongoing research project<br />
Android App in development</p>
</div>
<p>Similar to the <a style="font-style: normal; line-height: 24px;" href="http://www.roboearth.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">RoboEarth</a> project, the central idea is that a group of robots sharing visual information such as raw camera images or abstracted mathematical image features would have a much broader visual experience to learn from than a single robot operating on its own.</p>
<p>We had already studied the use of motion-based cues in navigation, such as optic flow and the size changes of visually salient features like <a href="http://en.wikipedia.org/wiki/SURF" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">SURF</a>, but we we wanted to verify our findings in this area and at the same time investigate if the appearance of visual features could be used to aid navigation as well. To this end, we needed a very large robotic data set of visually salient image features paired with corresponding robotic state estimates, and it was simply infeasible to gather all this data by ourselves.</p>
<p>That&#8217;s where the <a href="http://ardrone2.parrot.com/usa/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Parrot AR.Drone</a> entered into play. The AR stands for Augmented Reality, and the drone is indeed a toy quad rotor meant for playing games. We thought we could develop a game for the Parrot that would serve as a means for crowd-sourcing the data we needed. And because the Parrot was designed to be used in augmented reality games and can be controlled by an iOS device, data-gathering could be done in a gaming context, making it fun for people to participate in the experiment.</p>
<p>To this end, we designed a mission-based game where players simulate docking the Parrot with the International Space Station as quickly as possible while maintaining good control. Bonus points are given for correct orientation and low speed on the final approach.</p>
<div class="calloutr">At the end of the mission, players can log their high scores on a score board, and at the same time contribute to the experiment by anonymously sharing abstract mathematical image features and velocity readings.</div>
<p>At the end of the mission, players can log their high scores on a score board, and at the same time contribute to the experiment by anonymously sharing abstract mathematical image features and velocity readings.</p>
<p>The Parrot AR.Drone is uniquely suitable for this purpose because:</p>
<ul>
<li>It is widely available to the public, with over a half-million units sold world-wide.</li>
<li>It is a real robot with many useful sensors, including two cameras (at the front and on the bottom), sonar, accelerometers, gyrometers, and (on the Parrot AR drone 2.0) a pressuremeter and magnetometer. Further, it already uses these sensors to achieve accurate onboard state estimation and (consequently) stable hovering.</li>
<li>It can be controlled by smart devices such as the iPhone or Android devices, which can be used send data over the internet.</li>
<li>The code for communicating with Parrot is open source.</li>
</ul>
<p><strong>Methodology<br />
</strong>The question we faced experimentally was how to couple the real-world object to the virtual space in which the drone would be flying. Having a reference object of known size was a goal since it would provide some form of ground-truth measurement. As it happens, the Parrot AR.Drone is delivered with a marker that is recognized in the images by the onboard firmware. The recognition gives an image position (x,y) and a distance to the marker. Note, however, that this information is not enough to disambiguate both the position and orientation of the drone with respect to the marker. Figure 1 shows two configurations that give exactly the same marker detection data. In the &#8216;red&#8217; case, the marker is in the left part of the image, because the drone is located on the right of the marker. In the &#8216;blue&#8217; case, the marker is in the left part of the image, because the drone has turned to the right. Note that the distances to the marker are the same.</p>
<div id="attachment_11479" style="width: 1721px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-11479" class=" wp-image-11479" alt="marker_ambiguity_selection" src="http://robohub.org/wp-content/uploads/2013/03/marker_ambiguity_selection.png" width="1711" height="1508" srcset="https://robohub.org/wp-content/uploads/2013/03/marker_ambiguity_selection.png 1711w, https://robohub.org/wp-content/uploads/2013/03/marker_ambiguity_selection-300x264.png 300w, https://robohub.org/wp-content/uploads/2013/03/marker_ambiguity_selection-1024x902.png 1024w, https://robohub.org/wp-content/uploads/2013/03/marker_ambiguity_selection-340x300.png 340w" sizes="(max-width: 1711px) 100vw, 1711px" /><p id="caption-attachment-11479" class="wp-caption-text">Figure 1: Ambiguity of retrieved marker data. The angle β and distance d are the same for the red and the blue case, but their position / heading are different.</p></div>
<p>In order to render the virtual space environment, we perform state estimation on the basis of the drone&#8217;s estimates of its height, speeds, angles, and its detection of the marker. The docking port of the ISS (the marker) is assumed to be at location (0,0,0). The state estimation uses an Extended Kalman Filter (EKF), and in the light of the discussion of the marker&#8217;s ambiguity, we decided to only update the position on the basis of the marker&#8217;s readings, and not the heading. The heading is estimated quite well on board the drone, where the Parrot AR.Drone 2 also uses a magnetometer.</p>
<p>Figure 2 shows what computational processes are happening on which device during the game. The marker detection and the estimation of the drone&#8217;s attitude, height, and speeds are performed by the firmware on board the drone. The app is running the drone&#8217;s control interface, sending and receiving data from the drone, performing state estimation (X,Y,Z) with respect to the marker and rendering the 3D world.</p>
<div id="attachment_11478" style="width: 1986px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-11478" class=" wp-image-11478 " alt="processing_distribution" src="http://robohub.org/wp-content/uploads/2013/03/processing_distribution.png" width="1976" height="702" srcset="https://robohub.org/wp-content/uploads/2013/03/processing_distribution.png 1976w, https://robohub.org/wp-content/uploads/2013/03/processing_distribution-300x106.png 300w, https://robohub.org/wp-content/uploads/2013/03/processing_distribution-1024x363.png 1024w, https://robohub.org/wp-content/uploads/2013/03/processing_distribution-500x177.png 500w" sizes="(max-width: 1976px) 100vw, 1976px" /><p id="caption-attachment-11478" class="wp-caption-text"><br />Figure 2: Distribution of processes over the devices involved in the game.</p></div>
<p>Of course, for the experiment we also need to process the drone&#8217;s onboard images. Because of the iPhone&#8217;s computational constraints, we decided to save 5 subsequent images while the player is trying to dock and to process the images after the flight. This processing now happens when the player visits the highscore table and agrees to join the experiment. After extracting the vision data and concatenating this with the state estimates, the data is encrypted for transmission. Finally, since some players may use 3G for sending their data, we considered that the data should be as compact as possible. Therefore, the data is compressed on board the iPhone before being sent. The data from 5 textured images on average takes around 77 kb.</p>
<div id="attachment_11480" style="width: 4190px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-11480" class=" wp-image-11480" alt="2013.03.002-035" src="http://robohub.org/wp-content/uploads/2013/03/2013.03.002-035.jpg" width="4180" height="2786" srcset="https://robohub.org/wp-content/uploads/2013/03/2013.03.002-035.jpg 4180w, https://robohub.org/wp-content/uploads/2013/03/2013.03.002-035-300x199.jpg 300w, https://robohub.org/wp-content/uploads/2013/03/2013.03.002-035-1024x682.jpg 1024w, https://robohub.org/wp-content/uploads/2013/03/2013.03.002-035-450x300.jpg 450w" sizes="(max-width: 4180px) 100vw, 4180px" /><p id="caption-attachment-11480" class="wp-caption-text">© European Space Agency, Anneke Le Floc’h</p></div>
<div class="calloutkeyl">
<h2><strong>PROJECT TIMELINE</strong></h2>
<p><strong>Feb &#8211; Nov 2012</strong><br />
Game development</p>
<p><strong><strong>Nov 2012 &#8211; Jan 2013</strong><br />
</strong>Game testing</p>
<p><strong>Jan 2013</strong><br />
App review @ Apple</p>
<p><strong>March 15, 2013</strong><br />
App launch</p>
<p><strong>March 2013 &#8211; ongoing</strong><br />
Data collection<br />
Analysis</p>
</div>
<p><strong>Testing and Launch</strong><br />
Our original plan was to work on the game from February to April 2012, launch it in May or June, and analyze the data from August to September. In reality, we didn&#8217;t converge on the final code until November 2012.</p>
<p>Of course, when you are developing the app, you know the program inside out and by habit you may avoid playing the game in such a way that would make the program malfunction. So in November we invited other people try out and rate the app. The ratings and comments were used to perform some final adjustments, and we sent the app to the Apple store for review in January 2013. At the same time, we began to execute our plans for the launch and related PR-activities. We saw this as an essential part of the project, as the “crowd” first has to know about a project in order to contribute to it.</p>
<p>The app was launched on the 15<sup>th</sup> of March 2013, accompanied by <a href="http://www.esa.int/Our_Activities/Technology/Smartphone_app_turns_home_drone_into_spacecraft" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">a press release about AstroDrone from the European Space Agency</a> and the video shown below. Parrot also promoted our app on their site. The news was soon picked up by BBC Technology, Wired, and the Verge, as well as news papers, and television shows such as ARD&#8217;s NachtMagazin. This (ongoing) media attention has helped us to reach the public: just one week after the launch, some 4,000 persons downloaded the AstroDrone app, and 458 of these people had already contributed to our experiment by sending their data. This is a nice start, but of course we hope there is more to come.</p>
<p><iframe width="600" height="340" src="https://www.youtube-nocookie.com/embed/NIb7-gVuV8k?feature=player_detailpage" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Next Steps</strong><br />
We have not arrived at the end of this project, but rather at the beginning. We are first solving some small issues by means of app updates. For example, if an iPad or iPod is connected to the drone&#8217;s WiFi, it cannot send its data. There was no message that showed the absence of an internet connection (solved in version 1.2). At the same time, we have started analyzing all the data that is coming in.</p>
<p>In the future, we may also improve our crowd-sourcing game in various ways, in order to make it as fun and easy as possible for players, and as useful as possible for our research. In any case, it&#8217;s an adventure to work with this exciting new way of gathering robotic data!</p>
<p>[Ed. <a href="http://robohub.org/author/hallie/" data-wpel-link="internal">Hallie Siegel</a>]</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Up and flying with the AR.Drone and ROS: Joystick control</title>
		<link>https://robohub.org/up-and-flying-with-the-ar-drone-and-ros-joystick-control/</link>
		
		<dc:creator><![CDATA[Mike Hamer]]></dc:creator>
		<pubDate>Sat, 05 Jan 2013 04:47:10 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=7071</guid>

					<description><![CDATA[This is the second tutorial in the Up and flying with the AR.Drone and ROS series. In this tutorial we will: Talk about the ROS communication hierarchy Setup a joystick to work with ROS Fly the AR.Drone with a joystick In the previous tutorial we: Installed ROS, the AR.Drone driver and AR.Drone keyboard controller then flew the AR.Drone using the [&#8230;]]]></description>
										<content:encoded><![CDATA[<style type="text/css"><!--
#fstxfloat * {   line-height: 1.5em } #fstxfloat p {   margin-top: 1em;   margin-bottom: 1em; } #fstxfloat pre {   margin-top: 1em;   margin-bottom: 1em; } #fstxfloat ol, #fstxfloat ul {   margin: 10px !important;   padding: 0px !important;   padding-left: 15px !important; } #fstxfloat h2 {   margin-top:2.5em;   font-weight:bold;   font-size:16px; }
--></style>
<a href="https://github.com/mikehamer/ardrone_tutorials" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-full wp-image-6626" title="ARDroneKeyboardControl" alt="" src="http://robohub.org/wp-content/uploads/2013/01/ARDroneJoystickControl.png" width="323" height="216" /></a>
<div style="clear: both;"></div>
<p>This is the second tutorial in the <em>Up and flying with the AR.Drone and ROS</em> series.</p>
<p>In this tutorial we will:</p>
<ol>
<li>Talk about the ROS communication hierarchy</li>
<li>Setup a joystick to work with ROS</li>
<li>Fly the AR.Drone with a joystick</li>
</ol>
<p><span id="more-7071"></span></p>
<p>In the <a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">previous tutorial</a> we:</p>
<ol>
<li>Installed ROS, the AR.Drone driver and AR.Drone keyboard controller then flew the AR.Drone using the provided keyboard controller (<a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">link</a>)</li>
</ol>
<p>In the next tutorials, we will:</p>
<ul>
<li>Look more closely at the data sent back from the drone and play with the on-board tag detection (<a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-handling-feedback/" data-wpel-link="internal">link</a>)</li>
<li>Write a controller for the drone to enable tag following</li>
<li>Write a controller for the drone which allows us to control drone velocity, rather than body angle</li>
</ul>
<h2><strong>What you&#8217;ll need for the tutorial</strong></h2>
<p>To complete this tutorial you will need:</p>
<ol>
<li>An AR.Drone!</li>
<li>A computer or laptop with WiFi</li>
<li>Linux, either the ARDroneUbuntu virtual machine, or a custom installation</li>
<li>A  (linux compatible) USB joystick or control pad</li>
</ol>
<p>I also assume that you&#8217;ve completed the <a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/" data-wpel-link="internal">previous tutorial</a>, which details how to setup the software, connect to the drone, etc.</p>
<div class="aligncenter" style="background-color: #eee; padding: 5px; margin: 10px; margin-top: 4em; border: 1px solid #666; width: 90%;">
<p style="text-align: center; margin-top: 0; padding-top: 0;"><strong>Warning!</strong></p>
<p>In this tutorial, we will be flying the AR.Drone. <strong>Flying inside can be dangerous</strong>. When flying inside, you should always use the propellor-guard and fly in the largest possible area, making sure to stay away from walls and delicate objects. Even when hovering, the drone tends to drift, so always land the drone if not being flown.</p>
<p style="margin: 0px;">I accept no responsibility for damages or injuries that result from flying the drone.</p>
</div>
<h2><strong>Updating</strong></h2>
<p>It has been three weeks since the launch of the first tutorial and I am very happy with the response so far. The tutorial has been viewed over 720 times and ARDroneUbuntu downloaded over 50 times. I was also given the honor of partaking in <a href="http://www.robotgarden.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">RobotGarden&#8217;s</a> very first Quadrocoptor Workshop, where we worked through the tutorial (and ironed out the bugs) together.</p>
<p>This response has taught me a few things about how to structure a tutorial series, and how to release a virtual machine. Based on what I have learned, I will be restructuring the source-code for the following tutorials. I will also be updating the virtual machine to reflect these changes.</p>
<p>When writing the first tutorial, I thought it would be better to have a separate repository for each tutorial to keep everything atomic and isolated to ensure the addition of a new tutorial would not affect anything in the past – However having learned from the video-hangout with RobotGarden, I realize this could cause an update nightmare down the track. For this reason, I have decided to operate from a <a href="https://github.com/mikehamer/ardrone_tutorials" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">single repository</a> and will maintain a stable branch for each tutorial, with the master branch always synchronized with the stable version of the latest tutorial. The source-code for each tutorial will also contain all source-code required to run the previous tutorials.</p>
<h2><strong>What this means for you:</strong></h2>
<ul>
<li><strong>If you downloaded the ARDroneUbuntu virtual machine before the release of this tutorial</strong>, you will need to click the &#8220;Update Tutorials&#8221; button <strong>twice</strong>. After this, your virtual machine will be updated to reflect the new changes.</li>
<li><strong>If you installed the tutorials manually</strong>, you will need to run the following at the terminal:
<pre># roscd
# rm -rf ardrone_tutorials_getting_started
# git clone https://github.com/mikehamer/ardrone_tutorials</pre>
</li>
<li><strong>If you have not yet downloaded the VM</strong>, no problems! I have released an up-to-date version that you can download <a href="http://bit.ly/VqtDql" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">from here</a></li>
</ul>
<p>Sorry for any hassle caused by the above, I hope this new structure will allow me to more easily deliver the next tutorials!</p>
<h2><strong>So without further ado, lets check out some data!</strong></h2>
<ol>
<li>Connect to the AR.Drone as detailed in the first tutorial (remembering to disconnect other network adaptors if they use the 192.168.1.x address range)</li>
<li>From within your Linux installation, launch two terminal windows (ARDroneUbuntu users, refer to the first tutorial if you&#8217;re not sure what I mean)</li>
<li>In the first window, launch the KeyboardController from the first tutorial, using the command:
<pre>$ roslaunch ardrone_tutorials keyboard_controller.launch</pre>
</li>
<li>Wait for everything to load and the video display to become active, then in the second terminal window enter the command:
<pre>$ rostopic list</pre>
<p>This command lists all active &#8220;topics&#8221;, the communication channels through which ROS programs (called &#8220;nodes&#8221;) communicate.</li>
<li>To view the currently running ROS Nodes, type:
<pre>$ rxgraph</pre>
<p>The window that appears will show a network of nodes, and how they are connected through the topics that we saw in the previous step.</li>
<li>When you&#8217;re ready, close this window. We&#8217;re now going to have a look at the messages that are being sent between nodes. At the terminal, type:
<pre>$ rostopic echo /ardrone/navdata</pre>
<p>The navdata message is published by the AR.Drone driver at a rate of 50Hz.</li>
<li>Press Ctrl-C to stop echoing the navdata message then switch to the other terminal window and press Ctrl-C again, to stop the roscore program</li>
</ol>
<h2><strong>So what are we setting up today?</strong></h2>
<p>After that whirlwind tour of the ROS communication hierarchy, lets take a look at what we&#8217;ll be building today:</p>
<a href="http://robohub.org/wp-content/uploads/2013/01/ROSCommunication.png" data-wpel-link="internal"><img decoding="async" class="aligncenter size-full wp-image-7336" title="ROSCommunication" alt="" src="http://robohub.org/wp-content/uploads/2013/01/ROSCommunication.png" width="800" height="278" srcset="https://robohub.org/wp-content/uploads/2013/01/ROSCommunication.png 800w, https://robohub.org/wp-content/uploads/2013/01/ROSCommunication-300x104.png 300w, https://robohub.org/wp-content/uploads/2013/01/ROSCommunication-500x173.png 500w" sizes="(max-width: 800px) 100vw, 800px" /></a>
<div style="clear: both;"></div>
<p>As shown above, today we&#8217;ll be setting up the joy_node (a standard ROS package) to listen for input from a joystick or control-pad. This input will be converted into a ROS message, then sent to our controller over the <em>joy</em> topic.</p>
<p>Our controller subscribes to the <em>joy</em> topic and reacts to the received messages by translating joystick movement into drone movement commands, which are then published to the <em>cmd_vel</em> topic; and button presses to takeoff, land, or emergency commands, which are each published to a respective channel.</p>
<p>The ardrone_driver receives these various commands and then sends them via the wireless network to the physical drone, which in turn sends back a video stream. This video stream is published by the ardrone_driver onto the <em>/ardrone/image_raw</em> topic, from where it is received and subsequently displayed by our controller.</p>
<h2><strong>Setting up a joystick</strong></h2>
<p>Firstly, we need to connect the joystick and set it up to work with ROS.</p>
<ol>
<li>Open a terminal window (or reuse one from before), then type:
<pre>$ ls /dev/input</pre>
</li>
<li>Take note of the <strong>jsX</strong> devices (where X is a number). These are not your joystick.</li>
<li>Now connect your joystick to the computer and again type:
<pre>$ ls /dev/input</pre>
</li>
<li>If you see a new <strong>jsX</strong> device appear, congratulations, you&#8217;ve successfully connected the joystick, take note of which device this is, then progress to the next section of the tutorial</li>
<li>If no new jsX device appears when you connect the joystick, you&#8217;re most likely using a virtual machine and may need to add the USB device manually.</li>
<li>If you are using the ARDroneUbuntu virtual machine, open the Machine &gt; Settings window, then the Ports &gt; USB tab. With the joystick plugged in, add a new USB device. Your joystick should appear in the dropdown list.</li>
<li>Click OK, then unplug the joystick from the computer</li>
<li>Repeat steps 3 and 4, plugging the joystick into a different USB port if it is not detected in step 4.</li>
</ol>
<h2><strong>Testing the joystick</strong></h2>
<p>Now that we have the joystick installed, let&#8217;s check to make sure everything is working. Type the following at a terminal, substituting <strong>jsX</strong> for the joystick device you previously identified:</p>
<pre>$ jstest /dev/input/jsX</pre>
<p>If you are greeted with a &#8220;jstest: Permission denied&#8221; error, type:</p>
<pre>$ sudo chmod a+r /dev/input/jsX</pre>
<p>Which enables all users to read the joystick device (ARDroneUbuntu users, the password is: <em>ardrone</em>). After running <em>jstest</em>, moving the joystick should cause the numbers on the screen to update, if not, try running <em>jstest</em> for the other jsX devices. Congratulations, your joystick device is working! Press Ctrl-C to exit.</p>
<h2><strong>Using the joystick with ROS</strong></h2>
<p>Now we&#8217;re ready to integrate the joystick device with the ROS ecosystem using ROS&#8217;s &#8220;Joy&#8221; package.</p>
<ol>
<li>Open up three terminal windows. In the first, launch roscore:
<pre>$ roscore</pre>
</li>
<li>In the second, we launch ROS&#8217;s joystick launcher, replacing jsX with the joystick device you previously identified:
<pre>$ rosparam set joy_node/dev "/dev/input/jsX"
$ rosrun joy joy_node</pre>
</li>
<li>Now in the third terminal window, we echo the Joy messages, sent out by the joy_node that we just launched:
<pre>$ rostopic echo joy</pre>
</li>
<li>If all is working, you should see a Joy message print on the console whenever the joystick is moved (or a button is pressed).</li>
</ol>
<h2><strong>Identifying Control Buttons &amp; Axes</strong></h2>
<p>We now have the task of identifying the various axis and buttons used to fly the drone. All in all, you will need to identify axes to control the AR.Drone&#8217;s roll, pitch, yaw-velocity and z-velocity; and buttons to trigger an emergency, command a takeoff, and command a landing.</p>
<p>To identify the emergency button for example, press the button you would like to trigger an emergency, and watch the terminal to see which button is enabled. In my case, I use the joystick&#8217;s trigger button for emergency (being able to react quickly to an emergency is very important). With the button pressed, the following is printed in the terminal window:</p>
<pre>axes: [-0.0, -0.0, -0.0, -0.0, 0.0, 0.0]
buttons: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]</pre>
<p>From this I can identify that: <em>Emergency = Button 0</em> (note that indexing starts from zero). The process follows similarly for identifying an axis:</p>
<ol>
<li>Press the joystick fully left. The axis that changes  (the first number in the list is axis 0) is the <em>roll axis,</em> the number if changes to is your <em>roll scale </em>(usually + or -1)</li>
<li>Press the joystick fully forward. The axis that changes is your <em>pitch axis</em>, and the number it changes to is the <em>pitch scale </em>(usually + or -1)</li>
<li>Rotate your joystick fully counter clockwise, the axis that changes is your <em>yaw axis</em> and the number it changes to is the <em>yaw scale </em>(usually + or -1)</li>
<li>Push your throttle stick fully forwards. The axis that changes is your <em>z-axis</em> and the number it changes to is the <em>z-scale</em> (usually + or -1).</li>
</ol>
<div>A quick example, I push my joystick fully left and see</div>
<pre>axes: [1.0, -0.0, -0.0, -0.0, 0.0, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]</pre>
<p>From this I identify that the <em>Roll Axis = 0 </em>and <em>Roll Scale = 1</em>.</p>
<p>After you have identified all axes and buttons, press Ctrl-C in all terminal windows to stop the processes.</p>
<h2><strong>Configuring the Joystick Controller</strong></h2>
<p>In ROS, a &#8220;Launch File&#8221; is used to configure and launch a set of nodes. We&#8217;ve already seen this in the first tutorial (and at the beginning of this one), where we typed:</p>
<pre>$ roslaunch ardrone_tutorials keyboard_controller.launch</pre>
<p>In this command, <em>keyboard_controller.launch</em> configures the ARDrone driver for indoor flight, then launches both the driver and keyboard controller. Similarly in this tutorial, we will be launching the joystick controller (and related nodes) using a launch file.</p>
<p>Go ahead and open a terminal window, then type:</p>
<pre>$ roscd ardrone_tutorials
$ geany launch/joystick_controller.launchtemplate</pre>
<p>This will open the<em> joystick_controller.launch </em>file in the text editor (non ARDroneUbuntu users can use a text editor of choice). You will need to customize this file for your setup.</p>
<ul>
<li>Update line 21 to reflect your joystick device (the /dev/input/jsX that you identified earlier).</li>
<li>Update lines 27-29 to reflect your button mapping</li>
<li>Update lines 32-35 to reflect your axis mapping</li>
<li>Update lines 38-41 to reflect your scales (usually either 1 or -1)<br />
These scaling factors determine for example the drone roll direction when the joystick is tilted along the roll axis. If your drone does the opposite of what you expect, change the sign on the relevant scaling factor (eg 1 becomes -1)</li>
</ul>
<p>Feel free to have a look at some of the parameters used on the drone. The drone&#8217;s control parameters can potentially be increased to allow for more aggressive flight.</p>
<p>Once you&#8217;re happy with the settings, <strong>save this file as joystick_controller.launch</strong>, then close the geany application.</p>
<h2><strong>Finally flying!</strong></h2>
<p>So, after that rather long endeavor (which you should only need to do once), lets fly!</p>
<p>Connect to the drone, disconnect other network devices, then open a terminal and type:</p>
<pre>$ roslaunch ardrone_tutorials joystick_controller.launch</pre>
<p>This will launch the nodes as you configured in launch file. If all goes well, you should now be able to fly the drone using your joystick.</p>
<p>Before commanding the drone to take-off, you should first check that your emergency button works. With the drone still landed, press the emergency button once. All onboard LEDs should turn red. Pushing the button again will reset the drone, and the LEDs will once again turn green. In addition to this, whenever a (mapped) button is pressed, the joystick_controller will print a message to the terminal, such as &#8220;Emergency Button Pressed&#8221;. This is a further indication that things are working!</p>
<p>You&#8217;re now ready to take off. Have fun!</p>
<h2>Going Further</h2>
<p>The above child&#8217;s play? Heres some ideas for exploring the ROS and ARDrone environment:</p>
<ul>
<li>While the joystick controller is running, open a new terminal window and type:
<pre>$ rxgraph</pre>
<p>This will display the node communication diagram that we investigated at the start of the post</li>
<li>Take a look at the data being sent back from the drone:
<pre>$ rostopic echo /ardrone/navdata</pre>
</li>
<li>Plot your flight speeds (or any other data of interest) with:
<pre>$ rxplot /ardrone/navdata/vx,/ardrone/navdata/vy</pre>
</li>
<li>Adjust drone parameters in the joystick_controller.launch file to fly more aggressively</li>
</ul>
<h2><strong>Troubleshooting</strong></h2>
<ul>
<li><strong>The joystick doesn&#8217;t do anything<br />
</strong>Check that the joystick device you configured in the launch file corresponds to your joystick. To do this, repeat the section &#8220;Testing the Joystick&#8221;</li>
<li><strong>My joystick device is correct, but the joystick doesn&#8217;t do anything<br />
</strong>Assuming you&#8217;ve gone through the &#8220;Testing the Joystick&#8221; section successfully, launch the joystick controller again and in a separate terminal, type:</li>
</ul>
<pre>$ rostopic echo joy</pre>
<p>Assuming everything is configured correctly, this will print joystick messages to the terminal when the joystick is removed.</p>
<ul>
<li>If nothing is printed, check to make sure you&#8217;ve configured the correct joystick device in the launch file, and that the joystick permissions are correct (see &#8220;Testing the Joystick&#8221;).</li>
<li>If something is printed, check to make sure your axis and button mappings in the launch file are correct. If this is the case, leave a comment to this tutorial and I will be happy to help!</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>The drone does the opposite of what I expect<br />
</strong>For example flying backwards when the joystick is tilted forwards. To solve this, determine the axes that respond counterintuitively then invert the sign of the respective scaling factors in the launch file. For example, if the pitch axis (forward-backward) is the opposite of what you would expect, the ScalePitch parameter would change from 1 to -1.</li>
<li><strong>I cannot connect to the drone<br />
</strong>Check that your computer is connected to the drone via wireless, and that all other network devices are disconnected</li>
<li><strong>The drone will not take off</strong></li>
</ul>
<p>&nbsp;</p>
<ul>
<li>Are all the onboard LEDs red? If so, try pressing the emergency button. Do they toggle to green? Perfect &#8211; you&#8217;re ready to fly!</li>
<li>If the LEDs are green and the drone still won&#8217;t take off, check that your button mapping is correct in the launch file</li>
</ul>
<p>&nbsp;</p>
<ul>
<li><strong>Other issues?<br />
</strong>If you have any questions, or comments about what you would like to see in the next tutorials, please send me a message or leave a comment to this post!</li>
</ul>
<p>You can see all the tutorials in here: <a href="http://robohub.org/tag/parrot-ar-drone-tutorial/" data-wpel-link="internal">Up and flying with the AR.Drone and ROS</a>.</p>
<p><em>If you liked this article, you may also be interested in:</em></p>
<ul>
<li><a title="Permalink to Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft" href="http://robohub.org/parrot-ar-drone-app-harnesses-crowd-power-to-fast-track-vision-learning-in-robotic-spacecraft/" rel="bookmark" data-wpel-link="internal">Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft</a></li>
<li><a href="http://robohub.org/taking-your-first-steps-in-robotics-with-the-thymio-ii/" data-wpel-link="internal">Taking your first steps in robotics with the Thymio II</a></li>
<li><a title="Permalink to Discovering social robotics with the Aisoy1" href="http://robohub.org/discovering-social-robotics-with-the-aisoy1/" rel="bookmark" data-wpel-link="internal">Discovering social robotics with the Aisoy1</a></li>
<li><a title="Permalink to Classroom robotics: Motivating independent learning and discovery" href="http://robohub.org/classroom-robotics-motivating-independent-learning-and-discovery/" rel="bookmark" data-wpel-link="internal">Classroom robotics: Motivating independent learning and discovery</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a href="http://eepurl.com/t-UEf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">sign up for our weekly newsletter</a>.</em></p>
<p><em> </em></p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Up and flying with the AR.Drone and ROS: Getting started</title>
		<link>https://robohub.org/up-and-flying-with-the-ar-drone-and-ros-getting-started/</link>
		
		<dc:creator><![CDATA[Mike Hamer]]></dc:creator>
		<pubDate>Mon, 10 Dec 2012 21:49:29 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=6625</guid>

					<description><![CDATA[Updated December 17th. In this tutorial (#1) we will: Install ROS, the AR.Drone driver and AR.Drone keyboard controller Fly the AR.Drone using the provided keyboard controller In tutorials 2-5, we will: Modify the keyboard controller to work with a joystick or control pad, giving much finer control (link) Look more closely at the data sent [&#8230;]]]></description>
										<content:encoded><![CDATA[<style type="text/css"><!--
#fstxfloat * { line-height: 1.5em } #fstxfloat p { margin-top: 1em; margin-bottom: 1em; } #fstxfloat pre { margin-top: 1em; margin-bottom: 1em; } #fstxfloat ol, #fstxfloat ul { margin: 10px !important; padding: 0px !important; padding-left: 15px !important; } #fstxfloat h2 { margin-top:2.5em; font-weight:bold; font-size:16px; }
--></style>
<a href="http://robohub.org/wp-content/uploads/2012/12/ARDroneKeyboardControl.png" data-wpel-link="internal"><img decoding="async" class="size-full wp-image-6626" title="ARDroneKeyboardControl" alt="" src="http://robohub.org/wp-content/uploads/2012/12/ARDroneKeyboardControl.png" width="323" height="216" srcset="https://robohub.org/wp-content/uploads/2012/12/ARDroneKeyboardControl.png 323w, https://robohub.org/wp-content/uploads/2012/12/ARDroneKeyboardControl-300x200.png 300w" sizes="(max-width: 323px) 100vw, 323px" /></a>
<div style="clear: both;"><span style="color: #ff0000;">Updated December 17th.</span></div>
<p>In this tutorial (#1) we will:</p>
<ol>
<li>Install ROS, the AR.Drone driver and AR.Drone keyboard controller</li>
<li>Fly the AR.Drone using the provided keyboard controller<span id="more-6625"></span></li>
</ol>
<p>In tutorials 2-5, we will:</p>
<ol start="2">
<li>Modify the keyboard controller to work with a joystick or control pad, giving much finer control (<a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-joystick-control/" data-wpel-link="internal">link</a>)</li>
<li>Look more closely at the data sent back from the drone and play with the onboard tag detection (<a href="http://robohub.org/up-and-flying-with-the-ar-drone-and-ros-handling-feedback/" data-wpel-link="internal">link</a>)</li>
<li>Write a controller for the drone to enable tag following</li>
<li>Write a controller for the drone which allows us to control drone velocity, rather than body angle</li>
</ol>
<h2><strong><span style="color: #ff0000;">Updates:</span></strong></h2>
<p>Based on feedback I received from a video hangout with <a href="http://www.robotgarden.org/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Robot Garden</a> (cofounded by fellow Robohub author, Andra Keay), I have made a few updates to the tutorial, summarized below and highlighted throughout the tutorial in red:</p>
<ol>
<li><strong>Fixed permissions problem which caused the keyboard button on the launch bar to do nothing</strong></li>
<li>Added keyboard_controller_with_tags.launch file, which enables the drone&#8217;s tag detection feature</li>
<li>Updated tutorial with command-line equivalent commands, for all graphical actions</li>
<li>Included a &#8220;Going Further&#8221; section at the end of the tutorial</li>
</ol>
<p>If you are running the ARDroneUbuntu virtual machine, updating the tutorial will download the above updates and fixes.</p>
<pre>Command-line equivalent (updating the tutorial):
$ roscd ardrone_tutorials
$ git pull</pre>
<h2><strong>What is the AR.Drone?</strong></h2>
<p>The <a href="http://ardrone2.parrot.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AR.Drone</a> is a quadrotor that can be flown from any WiFi enabled device with an appropriate application &#8211; most commonly an iPhone or Android phone.</p>
<p>Unlike other quadrotors, which can be difficult to fly manually, the AR.Drone is equipped with onboard sensors and controllers that stabilize the vehicle while flying and give it the ability to hover on a spot and await the next command. Because of this onboard stabilization, the AR.Drone is becoming very popular as both a toy (it can be flown by even the most inexperienced pilots), and as a research platform for computer vision and robotic exploration (researchers can focus on their algorithms without worrying that the drone will crash).</p>
<h2><strong>And what is ROS?</strong></h2>
<p><a href="http://www.ros.org" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ROS</a>, the &#8220;Robot Operating System&#8221;, is a software framework that enables the development of robotic applications &#8211; applications that control and interact with robots. A large number of groups using the AR.Drone for research purposes, use ROS to control the drone, which is why we are focusing on it here.</p>
<h2><strong>What you&#8217;ll need for the tutorial</strong></h2>
<p>To complete this tutorial you will need:</p>
<ol>
<li>An AR.Drone!</li>
<li>A computer or laptop with WiFi</li>
</ol>
<p>For future tutorials, you will need:</p>
<ol>
<li>USB Joystick or control pad  (linux compatible)</li>
</ol>
<h2><strong>Getting started</strong></h2>
<p>For these tutorials, we will be running the ROS software and AR.Drone controllers using the Linux operating system.</p>
<p><strong><em>If you don&#8217;t have Linux, want to get flying quickly or don&#8217;t know what I&#8217;m talking about:</em></strong></p>
<p>To get started, we&#8217;ll be downloading an &#8220;Xubuntu Virtual Machine&#8221;, which has been created especially for these tutorials. This virtual machine package contains everything that you need to get up and flying &#8211; fast!</p>
<p>To run the virtual machine package, you will first need to download and install the free <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">Virtual Box software</a>. You will also want to download the <a href="http://bit.ly/VqtDql" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">ARDroneUbuntu</a> virtual machine package.</p>
<p>Once you have Virtual Box installed, double click the <em>ARDroneUbuntu.ova</em> file that you downloaded. This will open it in the Virtual Box program.</p>
<p>A settings/import dialog should open. You should leave these settings as they are, unless you know what you&#8217;re doing.</p>
<p>After completing the import process, click start in the Virtual Box program to begin running ARDroneUbuntu.</p>
<p>Congratulations, you&#8217;re now running Xubuntu 12.04 (<strong>username</strong>: ardrone, <strong>password</strong>: ardrone)!  This has been preconfigured with all the software required for this series of tutorials, so you&#8217;re now good to go!</p>
<p>Once the virtual machine is running, you will be brought to the desktop. At the bottom of the screen you will see the launch bar:</p>
<a href="http://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png" data-wpel-link="internal"><img decoding="async" class="size-full wp-image-6627" title="VM Launchbar" alt="" src="http://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png" width="506" height="80" srcset="https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png 506w, https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar-300x47.png 300w, https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar-500x79.png 500w" sizes="(max-width: 506px) 100vw, 506px" /></a>
<div style="clear: both;"></div>
<p>The launch bar contains a number of icons, which I will be referring to throughout the tutorial:</p>
<ol>
<li><strong>Terminal</strong> &#8211; in this program, you run text-based programs and commands</li>
<li><strong>Text Editor </strong>&#8211; we will be using this in future tutorials to write some basic programs</li>
<li><strong>Keyboard Controller</strong> &#8211; this launches the keyboard controller</li>
<li><strong>Update Tutorials </strong>&#8211; this will update the AR.Drone driver and tutorial source code, it will also install new tutorials once they have been released.</li>
<li><strong>Quick Command Box</strong> &#8211; this is like the terminal and can be used for sending a quick command to the operating system</li>
</ol>
<p>Great, now that you&#8217;re up and running, lets update the tutorial files. Click the Update Tutorials (#4) button in the launch bar. This will launch a terminal window in which it will download and install any required software updates. You should be connected to the internet for this step.</p>
<pre>Command-line equivalent (updating the driver):
$ roscd ardrone_autonomy
$ git pull
$ rosmake ardrone_autonomy</pre>
<pre>Command-line equivalent (updating the tutorial):
$ roscd ardrone_tutorials
$ git pull
$ rosmake ardrone_tutorials</pre>
<p>Now you&#8217;re ready to fly and can skip the next section of the tutorial.</p>
<p><em><strong>If you have Linux (skip this section if you just downloaded the virtual machine):</strong></em></p>
<p>I&#8217;ll assume you understand enough about linux to follow the <a href="http://www.ros.org/wiki/fuerte/Installation/Ubuntu" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">ROS installation instructions</a> (summarized <a href="http://nootrix.com/2012/05/ros-installation/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">here</a>). I also assume you are running Ubuntu (or a deviant). If not, you should modify the apt-get commands to suit your system.</p>
<p>In addition to the summarized ROS installation instructions above, you will need to run:</p>
<pre>$ sudo rosdep init
$ rosdep update
$ sudo apt-get install ros-fuerte-joystick-drivers
$ rosdep install joy</pre>
<p>This will install the joystick drivers which are used in a future tutorial.</p>
<p>Now to install the AR.Drone driver&#8217;s prerequisites:</p>
<pre>$ sudo apt-get install daemontools libudev-dev libiw-dev</pre>
<p>Next, we will download the <a href="https://github.com/AutonomyLab/ardrone_autonomy" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AR.Drone driver</a> (full disclosure: I am a regular contributor to the driver) and the keyboard controller used for this tutorial:</p>
<pre>$ roscd
$ pwd
~/ros_workspace
$ git clone https://github.com/AutonomyLab/ardrone_autonomy.git
$ git clone https://github.com/mikehamer/ardrone_tutorials.git
$ ls
...  ardrone_autonomy  ardrone_tutorials  ...
$ rospack profile</pre>
<p>And now to compile the packages:</p>
<pre>$ roscd ardrone_auto&lt;TAB should autocomplete&gt;
$ ./build_sdk.sh
$ rosmake -a</pre>
<p>If TAB does not autocomplete the above-indicated command, or if rosmake reports any failures, you may have a problem with your installation. If this is the case, you should check the installation guide linked above.</p>
<p>If you&#8217;ve completed all of the above successfully, you&#8217;re ready to move on!</p>
<h2><strong>Warning!</strong></h2>
<p>We are now going to fly the drone. <strong>Flying inside can be dangerous</strong>. When flying inside, you should always use the propellor-guard and fly in the largest possible area, making sure to stay away from walls and delicate objects. Even when hovering, the drone tends to drift, so always land the drone if not being flown.</p>
<p>I accept no responsibility for damages or injuries that result from flying the drone.</p>
<p>If you have a laptop and are thus able to fly outside, check the last section of this tutorial for instructions on reconfiguring the drone.</p>
<h2><strong>First connection</strong></h2>
<p>Great, we&#8217;ve got the software, now lets have some fun!</p>
<p>Turn on the drone and wait until the propellors vibrate, indicating that the drone is ready.</p>
<p>Now connect your computer&#8217;s wireless to the AR.Drone&#8217;s network, just like you would connect to a normal wireless network. The network will be called <strong>ardrone&lt;something&gt;</strong>.</p>
<p>If your computer is also connected to a network via ethernet (or any other network adaptor), disconnect it. We only want the wireless network to be running*</p>
<p><em>* Advanced users: The drone acts as a wireless server and assigns itself (via its DHCP server) a fixed IP address of 192.168.1.1 and your wireless card an address from 192.168.1.2-255. For this reason, there can be routing issues if your ethernet card is also in the 192.168.1.0 subnet.</em></p>
<h2><strong>Running the keyboard controller</strong></h2>
<p><em><strong>If you&#8217;re using the supplied virtual machine:</strong></em></p>
<p>Click on the keyboard icon (#3) in the launch bar to run the keyboard controller program:</p>
<a href="http://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png" data-wpel-link="internal"><img decoding="async" class="size-full wp-image-6627" title="VM Launchbar" alt="" src="http://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png" width="506" height="80" srcset="https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar.png 506w, https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar-300x47.png 300w, https://robohub.org/wp-content/uploads/2012/12/VM-Launchbar-500x79.png 500w" sizes="(max-width: 506px) 100vw, 506px" /></a>
<div style="clear: both;"></div>
<p>Note that a connection can take up to 10 seconds. If after 10 seconds the window still says &#8220;Disconnected&#8221;, check the wireless connection to the drone, and check that any network cables have been unplugged from the computer.</p>
<p><em><strong>If you&#8217;re using a custom Linux installation or want to use the command line:</strong></em></p>
<p>Open a terminal window and type the command:</p>
<pre>roslaunch ardrone_tutorials keyboard_controller.launch</pre>
<p>Pressing TAB at various stages throughout the command should autocomplete. If this is not the case, or if this command causes errors, check that you have setup your .bashrc file as per the ROS installation guide, and that you ran <strong>rospack profile</strong> after cloning the two git repositories.</p>
<p>If successful, this command will print out many startup messages, including:</p>
<pre>Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_Thread__block'",)...</pre>
<p>This exception is a Python bug and won&#8217;t affect the program.</p>
<p>You will also see a printout:</p>
<pre>process[ardrone_driver-2]: started with pid [6178]
===================+&gt; 192.168.1.1</pre>
<p>Within a few seconds, the output should progress well past this stage and begin printing configuration messages as the initialization of the AR.Drone progresses. If this is not the case, check the wireless connection to the drone, and check that any network cables have been unplugged from the computer.</p>
<h2><strong>Up, up and away!</strong></h2>
<p>If the keyboard controller launched successfully, you will now be seeing a live video stream from the drone. If this is the case, we&#8217;re ready to fly!</p>
<p>The controls (defined in ardrone_tutorials/src/keyboard_controller.py) are:</p>
<ul>
<li><strong>E</strong> &#8211; Pitch Forward</li>
<li><strong>D</strong> &#8211; Pitch Backward</li>
<li><strong>S</strong> &#8211; Roll Left</li>
<li><strong>F</strong> &#8211; Roll Right</li>
<li><strong>W</strong> &#8211; Yaw Left</li>
<li><strong>R</strong> &#8211; Yaw Right</li>
<li><strong>Q</strong> &#8211; Increase Altitude</li>
<li><strong>A</strong> &#8211; Decrease Altitude</li>
<li><strong>Y</strong> &#8211; Takeoff</li>
<li><strong>H</strong> &#8211; Land</li>
<li><strong>SPACEBAR &#8211; EMERGENCY STOP</strong></li>
</ul>
<p><span style="color: #ff0000;">Update 17/12:<br />
Note: Pressing the Spacebar will toggle the drone between an emergency state (all onboard LEDs are red), and the ready state (all onboard LEDs are green). If your drone isn&#8217;t responding to commands, make sure it is in the ready state!</span></p>
<p>With that said, I now hand the controls to you. Remember to keep a thumb on the Spacebar at all times, just in case something goes wrong.</p>
<p>Have fun!</p>
<h2><strong><span style="color: #ff0000;">Going Further (Added 17/12/2012)</span></strong></h2>
<p>This tutorial was fairly straight forward, the purpose being simply to get you up and running with the right software. Future tutorials will be more technical, however if you&#8217;re wanting to scratch the itch, try running some of the following commands at the terminal:</p>
<p><strong><em>With a controller running:</em></strong></p>
<pre>$ rostopic echo /ardrone/navdata</pre>
<p>Will print the data packets that are being sent back from the drone at 50Hz.</p>
<pre>$ rosservice call /ardrone/togglecam</pre>
<p>Will toggle the drone&#8217;s video stream between front and bottom cameras.</p>
<pre>$ rxplot /ardrone/navdata/ax:ay /ardrone/navdata/vx:vy</pre>
<p>Will plot the x and y acceleration on one plot, and the estimated x and y velocity on a second plot.</p>
<p><strong><em>Now without a controller running (ie close the keyboard_controller window)</em></strong></p>
<pre>$ roslaunch ardrone_tutorials keyboard_controller_with_tags.launch</pre>
<p>This runs a new launch file that enables tag detection. Now run:</p>
<pre>$ rostopic echo /ardrone/navdata</pre>
<p>And have a look at the various tag detection data that is returned (you have to be holding tags in front of or below the drone for this to work).</p>
<p>By default, this launch file configures the drone to detect Orange-Blue-Orange stickers on the front facing camera, and the A4 &#8220;Oriented Roundel&#8221; that comes with the AR.Drone 2.0 on the downward facing camera.</p>
<p>If your stickers are a different color, change the launch-file parameter <em>enemy_colors</em> to 1 for Orange-Green-Orange, 2 for Orange-Yellow-Orange and 3 for Orange-Blue-Orange.</p>
<h2><strong>Coming up in tutorial #2 &#8211; Joystick control</strong></h2>
<p>By now you may have noticed that flying with the keyboard isn&#8217;t so easy. This is largely due to the binary nature of a keypress (not pressed/pressed), which translates into 0%/100% control. Although we could implement software remedies such as input windup based on how long the key has been held, this is for the most part only a band-aid solution; what we really need is an analogue input device. Enter the Joystick (or control pad).</p>
<p>In the second tutorial of this series, we will be covering a little ROS theory (topics, messages and launch files), before installing a joystick, linking it up to the ROS system and then using it to fly the drone.</p>
<h2><em><strong>Source code and configuration</strong></em></h2>
<p>For those of you interested in the source code or configuration, I will briefly discuss the various options below. We will be going into much more detail in the next tutorial.</p>
<p>Full source code for this tutorial is available from the <a href="https://github.com/mikehamer/ardrone_tutorials" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">GitHub repository</a>.</p>
<p><strong>src/drone_controller.py</strong></p>
<p>This file provides an abstracted interface to the AR.Drone driver and shouldn&#8217;t need to be modified</p>
<p><strong>src/drone_video_display.py</strong></p>
<p>This file implements the video display window and shouldn&#8217;t need to be modified</p>
<p><strong>src/keyboard_controller.py</strong></p>
<p>This file brings everything together. The KeyboardController class implemented in this file extends the DroneVideoDisplay class, adding a keyboard handler for control. Key mappings are defined in this file and can be changed to suit your preferences.</p>
<p><strong>launch/keyboard_controller.launch</strong></p>
<p>This is the default configuration file, which sets the drone&#8217;s configuration and launches all required processes</p>
<p><strong>launch/keyboard_controller_outdoor.launch</strong></p>
<p>This configuration file implements a more aggressive set of flight parameters for outdoor flight. If you are wanting to fly outdoors, the keyboard controller can be launched with the command:</p>
<pre>roslaunch ardrone_tutorials keyboard_controller_outdoor.launch</pre>
<p>For more information about configuring the AR.Drone, have a look at the <a href="https://github.com/AutonomyLab/ardrone_autonomy" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">AR.Drone driver&#8217;s</a> readme.</p>
<h2><strong>That&#8217;s all folks</strong></h2>
<p>I hope you&#8217;ve had fun with this tutorial and I look forward to bringing you the next one in two weeks time!</p>
<p>If you have any questions, or comments about what you would like to see in the next tutorials, please send me a message or leave a comment to this post! You can see all the tutorials in here: <a href="http://robohub.org/tag/parrot-ar-drone-tutorial/" data-wpel-link="internal">Up and flying with the AR.Drone and ROS</a>.</p>
<div class="divideronpost"></div>
<p><em>If you liked this article, you may also be interested in:</em></p>
<ul>
<li><a title="Permalink to Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft" href="http://robohub.org/parrot-ar-drone-app-harnesses-crowd-power-to-fast-track-vision-learning-in-robotic-spacecraft/" rel="bookmark" data-wpel-link="internal">Parrot AR.Drone app harnesses crowd power to fast-track vision learning in robotic spacecraft</a></li>
<li><a href="http://robohub.org/taking-your-first-steps-in-robotics-with-the-thymio-ii/" data-wpel-link="internal">Taking your first steps in robotics with the Thymio II</a></li>
<li><a title="Permalink to Discovering social robotics with the Aisoy1" href="http://robohub.org/discovering-social-robotics-with-the-aisoy1/" rel="bookmark" data-wpel-link="internal">Discovering social robotics with the Aisoy1</a></li>
<li><a title="Permalink to Classroom robotics: Motivating independent learning and discovery" href="http://robohub.org/classroom-robotics-motivating-independent-learning-and-discovery/" rel="bookmark" data-wpel-link="internal">Classroom robotics: Motivating independent learning and discovery</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a href="http://eepurl.com/t-UEf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">sign up for our weekly newsletter</a>.</em></p>
<p><em> </em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fly and film in HD</title>
		<link>https://robohub.org/fly-and-film-in-hd/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Wed, 31 Oct 2012 18:17:00 +0000</pubDate>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://www.therobotreport.com/index.php/blog/post/fly_and_film_in_hd/</guid>

					<description><![CDATA[... Parrot (PARRO on the Euronext Paris exchange), a French company famous for its audio and wireless devices for phones and cars, unveiled their first AR.Drone at CES in 2010 to huge crowds (I was there). The updated AR.Drone 2 was previewed at CES 20...]]></description>
										<content:encoded><![CDATA[<p>&#8230; <a href="http://www.parrot.com" title="Parrot" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Parrot</a> (PARRO on the Euronext Paris exchange), a French company famous for its audio and wireless devices for phones and cars, unveiled their first AR.Drone at CES in 2010 to huge crowds (I was there). The updated AR.Drone 2 was previewed at CES 2012 and is now available for sale. The big difference is the addition of a HD wide angle video camera.<span id="more-4942"></span><br />
&#8230; AR.Drone sales now represent over 10% of Parrot&#8217;s overall revenue. This novel quadcopter, which can be flown from an iPad, iPhone or other smart phone, is opening new retail markets for Parrot products.&nbsp; More than 300M AR.Drones have been sold thus far.<br />
&#8230; Their aftermarket sales and support &#8211; including tutorials &#8211; is a valuable and smart business add-on to expand sales and keep users happy.<br />
&#8230; Parrot recently purchased two companies to complement their AR.Drone project and perhaps enter the UAS market with more serious products: <a href="http://www.sensefly.com/" title="senseFly" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">senseFly</a> and <a href="http://pix4d.com/" title="Pix4D" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Pix4D</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>eBee first product from Parrot/senseFly investment</title>
		<link>https://robohub.org/ebee-first-product-from-parrotsensefly-investment/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Wed, 10 Oct 2012 00:16:00 +0000</pubDate>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[aerial photography]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[Pix4D]]></category>
		<category><![CDATA[SenseFly]]></category>
		<category><![CDATA[surveying]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?guid=657475ed91831e47dbc4f19e345de08b</guid>

					<description><![CDATA[In July, the Parrot Group partnered with senseFly, a Swiss start-up and spin-off from the Swiss EPFL, and invested $5.3 million to help senseFly grow. Their initial plan was to develop a high volume manufacturing capability and fund rapid growth and ne...]]></description>
										<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://2.bp.blogspot.com/-dR2sPlFvVOU/UHS1pCJjQTI/AAAAAAAABjQ/kFz9kC-bEu0/s1600/sensefly-ebee.jpg" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" src="http://2.bp.blogspot.com/-dR2sPlFvVOU/UHS1pCJjQTI/AAAAAAAABjQ/kFz9kC-bEu0/s1600/sensefly-ebee.jpg" alt="" border="0" /></a></div>
<p>&nbsp;</p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>In July, the <a href="http://www.parrot.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Parrot Group</a> partnered with <a href="http://www.sensefly.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">senseFly</a>, a Swiss start-up and spin-off from the Swiss EPFL, and invested $5.3 million to help senseFly grow. Their initial plan was to develop a high volume manufacturing capability and fund rapid growth and new product development. The eBee is the first such product from that venture. The just announced 3&#8242; wingspan eBee can fly for 45 minutes in 45km/hr winds, and will enable users to take their own aerial photos and produce precise ortho-mosaics and 3D models. senseFly has also established <a href="http://www.sensefly.com/aboutus/where-to-buy" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">an impressive global network of resellers</a> which presently excludes the US (because of FAA regulatory limitations). The eBee meets the special needs of mining and surveying professionals because of its wind resistance and robustness, high precision 3D image processing and mission planning software.<br />
<span id="more-3388"></span></p>
<div style="text-align: left;"><iframe src="http://www.youtube.com/embed/h5NeH8lEsQc?rel=0" frameborder="0" width="560" height="315"></iframe></p>
<div style="text-align: left;">
<p>senseFly, working with another Parrot Group partner and another EPFL spin-off (with a similarly intentioned $2.5 million equity investment from Parrot to spur growth and development), <a href="http://pix4d.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Pix4D</a>, has developed a suite of software which can create a flight path and take 2D geotagged images and then process them into 3D maps.</p>
<p>Below is an EPFL/Pix4D video displaying additional information about the process of filming, tagging and creating 3D maps and images.</p>
<div style="text-align: left;"><iframe src="http://www.youtube.com/embed/cJ-nCgBXZ5I?rel=0" frameborder="0" width="560" height="315"></iframe></div>
</div>
<p>When senseFly&#8217;s UAVs are allowed into civilian airspace, there are a myriad uses:</p>
<ul>
<li>Aerial photography</li>
<li>Mapping</li>
<li>Mine and quarry surveys</li>
<li>Emergency response</li>
<li>Agricultural and cattle monitoring</li>
<li>Remote sensing</li>
<li>Surveying (general and archeological)</li>
<li>Urban and regional planning</li>
<li>Infrastructure management</li>
<li>Etc.</li>
</ul>
<p>&nbsp;</p>
<div>As civilian airspace opens to drones like those from senseFly, the sky begins to offer unique perspectives to view and understand our environment. One can see a near-term future where images and data can be captured at low cost, anywhere, any time, and without complex infrastructure or long preparation time and transformed into useful management tools, maps and surveys.</div>
<p>&nbsp;</p>
<div>
<blockquote class="tr_bq"><p>“We are witnessing a revolution whereby flying drones are no longer exclusive to the military but are quickly spreading into the civilian world. In 2010, Parrot surprised competitors and fellow researchers alike when they hit the market with their iPhone-piloted quadcopter for filming and gaming. The same year, senseFly revolutionized the job of surveyors by providing fully autonomous flying cameras capable of producing precise 2D and 3D maps within minutes. Both companies are focused on developing very lightweight drones with the strong belief that this is critical to their use by the public at large – far beyond the military”, says Jean-Christophe CEO and co-founder of senseFly.</p></blockquote>
</div>
<p>&nbsp;</p>
<div class="blogger-post-footer"><img decoding="async" src="https://blogger.googleusercontent.com/tracker/75361554721657432-1960409002700753055?l=www.everything-robotic.com" alt="" width="1" height="1" /></div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Joggobot will keep you moving</title>
		<link>https://robohub.org/374/</link>
					<comments>https://robohub.org/374/#respond</comments>
		
		<dc:creator><![CDATA[John Payne]]></dc:creator>
		<pubDate>Fri, 15 Jun 2012 04:56:16 +0000</pubDate>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://alpha.robohub.org/?p=374</guid>

					<description><![CDATA[Researchers at the Exertion Games Lab at RMIT University in Melbourne, Australia have created a robot to support you while exercising. Joggobot is a modified version of the popular AR Drone quadrocopter platform developed by French company Parrot. The robot will track a marker pattern printed on your t-shirt and fly ahead of you when [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class=" "><iframe title="Joggobot" width="500" height="281" src="https://www.youtube-nocookie.com/embed/4x4d8IX_0kI?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>
Researchers at the <a target="_blank" href="http://exertiongameslab.org/" title="Exertion Games Lab website" data-wpel-link="external" rel="follow external noopener noreferrer">Exertion Games Lab</a> at <a target="_blank" href="http://www.rmit.edu.au/" title="RMIT University website" data-wpel-link="external" rel="follow external noopener noreferrer">RMIT University</a> in Melbourne, Australia have created a robot to support you while exercising. <q><a target="_blank" href="http://exertiongameslab.org/projects/joggobot" title="Joggobot project page on the Exertion Games Lab website" data-wpel-link="external" rel="follow external noopener noreferrer">Joggobot</a></q> is a modified version of the popular <a target="_blank" href="http://ardrone.parrot.com/parrot-ar-drone/usa/" title="AR Drone product page on Parrot website" data-wpel-link="external" rel="follow external noopener noreferrer">AR Drone</a> quadrocopter platform developed by French company <a target="_blank" href="http://www.parrot.com/usa/aboutparrot" title="Parrot website" data-wpel-link="external" rel="follow external noopener noreferrer">Parrot</a>. The robot will track a <a target="_blank">marker pattern</a> printed on your t-shirt and fly ahead of you when you go out for a run. The researchers describe Joggobot as an &#8220;exertion game&#8221;. They believe that jogging is play &#8211; we are not jogging to get from A to B, but for the experience of jogging &#8211; and point out that jogging with a physical device that reacts to its environment and, similar to a human jogger, has a limited amount of energy for exercise creates a very different interaction experience than pure audio-visual stimuli such as <a target="_blank" href="http://www.youtube.com/results?search_query=aerobics&amp;oq=aerobics&amp;aq=f&amp;aqi=&amp;aql=&amp;gs_l=youtube.3...14277.14277.0.14334.1.1.0.0.0.0.0.0..0.0...0.0." title="YouTube search on &#039;aerobics&#039;" data-wpel-link="external" rel="follow external noopener noreferrer">aerobic videos</a>. They hope that the robot can improve the jogging experience and enhance our understanding of why we jog (and hence why we do not jog enough).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robohub.org/374/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Is 2012 the year that robot applications take root?</title>
		<link>https://robohub.org/is-2012-the-year-that-robot-applications-take-root/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Mon, 02 Jan 2012 17:30:00 +0000</pubDate>
				<category><![CDATA[views]]></category>
		<category><![CDATA[Aldebaran]]></category>
		<category><![CDATA[AR Drone]]></category>
		<category><![CDATA[CES 2012]]></category>
		<category><![CDATA[ESSENTIAL DYNAMICS]]></category>
		<category><![CDATA[ILSHIM]]></category>
		<category><![CDATA[JS-Robotics]]></category>
		<category><![CDATA[Karotz]]></category>
		<category><![CDATA[Ladybug]]></category>
		<category><![CDATA[MakerBot]]></category>
		<category><![CDATA[Mantaro]]></category>
		<category><![CDATA[NAO]]></category>
		<category><![CDATA[Orbotix]]></category>
		<category><![CDATA[PARO]]></category>
		<category><![CDATA[Romotive]]></category>
		<category><![CDATA[Sphero]]></category>
		<category><![CDATA[SWIVL]]></category>
		<category><![CDATA[Topy]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<category><![CDATA[Violet]]></category>
		<category><![CDATA[Windoro]]></category>
		<category><![CDATA[Xybotyx]]></category>
		<guid isPermaLink="false">http://robohub.org/?guid=bdeed87a1f3d48b0671b719acb4d0733</guid>

					<description><![CDATA[By Frank Tobe, Editor/Publisher, The Robot ReportTell us what apps you want.In July of 2008, the app store concept was launched by Apple and it has dramatically changed the mobile industry. Over 1.2 billion apps were downloaded between Christmas and Ne...]]></description>
										<content:encoded><![CDATA[<div style="text-align: center;"></div>
<div style="text-align: center;"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: large;"><strong>Tell us what apps you want.</strong></span></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;"><img decoding="async" src="http://1.bp.blogspot.com/-8mGTnBFduJI/TwHlJeD08mI/AAAAAAAAAwk/ZuQduqfX2_0/s320/Apple+app+store+logo.png" alt="" width="320" height="318" border="0" /></div>
<p>In July of 2008, the app store concept was launched by Apple and it has dramatically changed the mobile industry. Over 1.2 billion apps were downloaded between Christmas and New Year according to <a href="http://www.flurry.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Flurry Analytics</a>. That&#8217;s about 60 percent higher than every week of December before Christmas, and marks the largest number of apps ever downloaded in a single week.</p>
<p>Robot app stores are now beginning to happen as well and visions of apps for tele-robotic safety and surveillance pop into mind, or light domestic duties, or…? My imagination runs wild at the thought and I imagine these new apps being easy to use, having multiple functions and a low cost.<span id="more-1913"></span></p>
<p>But that is then and now is now. At present there are three significantly different approaches to an app store for robots (although additional “stores” are in the planning stage and many existing stores are making arrangements to expand beyond their own boundaries (like iRobot’s online store and Willow Garage&#8217;s application chooser)):</p>
<ol>
<li><a href="http://www.myrobots.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MyRobots,</a> by Canadian RobotShop, has opened a combination app store and online environment to permit robotics products to be monitored and updated seamlessly as well as providing a Cloud repository for applications that run from the Cloud instead of the robot itself. MyRobots’ slogan is “Connect your robots; reap the benefits.” The online monitoring aspect of MyRobots is similar to the <a href="http://www.robotics.org/content-detail.cfm/Industrial-Robotics-News/MyMotoman-Remote-Monitoring-Service%3A-Anywhere-Anytime-On-Any-Device/content_id/2931" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MyMotoman Remote Monitoring Service</a> initiated my Yaskawa Motoman America in August.</li>
<li><a href="http://www.robotsappstore.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Robots App Store,</a> by San Francisco serial entrepreneur Elad Inbar, is developing their store to be an online marketplace for selling apps and also providing developers their own sales portal. Robots App Store, in addition to attempting to trademark the hyphenated words “Robot-app”, has a wonderfully <a href="http://www.robotsappstore.com/Pages/robots-Apps-infographics.aspx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">informative info-graphic</a> explaining the need and market for robot apps. What it doesn’t explain is how the process will be different than what most of us have come to expect when buying apps from Apple’s App Store. It involves tinkering with development tools and operating system platforms – a turnoff for all but the most avid hobbyist.</li>
<li><a href="http://www.roboearth.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RoboEarth</a>, an EU public-private consortium, is using the Internet to create a giant open source network and database repository that can be accessed and updated by robots around the world. Focused more on academia and industrial applications, RoboEarth speeds up robot learning and adaption in complex tasks and can execute tasks that were not explicitly planned for when the robot was designed.</li>
</ol>
<p>Service robotics – as differentiated from industrial or defense/security/space robotics &#8211; needs to provide inexpensive and efficient assistance to humans to be profitable in the consumer marketplace and emerge as a serious industry. We already have vacuum robots and adaptive cruise control bots, but there are thousands of other possible applications. Entertainment, embedded systems, eldercare and home assistance are certain to be amongst the first groups to benefit as the service robotics industry materializes.</p>
<p>There are two different approaches to providing those services:</p>
<table class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center;"><img decoding="async" src="http://3.bp.blogspot.com/-8N_H46Z17aw/TwHl5T2eQsI/AAAAAAAAAww/Bk8R3RkPRFI/s1600/C3P0.jpg" alt="" border="0" /></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
<div style="text-align: center;"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">C3P0</span></div>
<div style="text-align: center;"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">The Ultimate Humanoid Robot</span></div>
</td>
</tr>
</tbody>
</table>
<ol>
<li>A universal robotic tool that will be able to perform all the tasks we ask it to do, including social communication &#8211; a robot like C3P0. This is the goal of humanoid robots. At this time, humanoid robots are costly, difficult to control, slow and intrusive. Although human-robot communication is part of the lure, and there is much progress in that area, we are at least five years away from devices that not only speak but understand. IBM’s Watson and Apple’s Siri are proving that it can be done but their software isn’t yet available to front-end robotic applications and there is, at present, little comparable in the robotics world (although the recent ABC Nightline interview of Hanson Robotics’ Philip Dick robot shows there is serious ongoing development). Even when the two-way communication aspect is further developed and made available to roboticists, it will be many more years until the goal of a C3P0-like sophisticated humanoid robot will be ready.</li>
</ol>
<p>&nbsp;</p>
<ul>
<li>A more near-term and progressive solution is to forego universality and design specific devices that provide limited, task-specific means to communicate and complete specific tasks… think Roomba.</li>
</ul>
<p>&nbsp;</p>
<p>Certainly #2 has more near-term promise and is where most of the market is focused for the rest of this decade. As service robots begin to meet the four core criteria of low cost, low intrusiveness, safety and modularity – which is happening almost daily with technology changes – an incredible number of opportunities for service robot apps can be foreseen. The key will be to make them practical, affordable and acceptable by humans as part of their day-to-day life.</p>
<p><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><strong><a href="http://www.robotsappstore.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Robots App Store</a>:</strong></span></p>
<div class="separator" style="clear: both; text-align: center;"><img decoding="async" src="http://1.bp.blogspot.com/-BzVYNlqkRxY/TwHmTkK8DFI/AAAAAAAAAw8/C2qcKSlZ4oM/s320/Robots+app+store+logo.jpg" alt="" width="320" height="145" border="0" /></div>
<p>At discussions with Elad Inbar, CEO of Robots App Store, I asked about the size of the marketplace and was surprised to find that there are 14 million service robots out there now, and it’s estimatited that by the end of 2014 there will be 24 million. If only 15% of them were able to buy two apps at an average price of $9.99, that’s $72 million in revenue. If they each bought five apps instead of two, the figure would be $180 million. If 20% purchased five apps it would be a $¼ billion business. How real and applicable those figures are depends on many complex variables: willingness of the buyer to tinker, quality of the apps, flexibility of the robots, price, disposable income, etc. In fact, apps for robots with an Apple or Android front end will not be available in the Robots App Store but will onlybe available through the Apple (or Android) App Store – which limits the market metrics… an example of this Apple exclusivity is the hundreds of thousands of Parrot’s AR.Drone quadcopters.</p>
<p>Regardless of the metrics, the process of developing and sharing apps can provide a giant leap toward rejuvenating the robots we have and teaching the audience (the buyers) that they can get what they want from their robot(s). Thus the buyer becomes more educated and demanding and the producers less capricious &#8212; and more profitable.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><img decoding="async" style="margin-left: auto; margin-right: auto;" src="http://1.bp.blogspot.com/-r3lnOtmInlk/TwHmb7M037I/AAAAAAAAAxI/qDs0PcnVZik/s1600/robots-and-app-prices" alt="" border="0" /></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: xx-small;">From an <a href="http://www.robotsappstore.com/Pages/robots-Apps-infographics.aspx" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">infographic by Robots App Store</a> showing possible app prices for various robots</span></td>
</tr>
</tbody>
</table>
<p>Inbar’s Robots App Store is “focused solely on the personal and service robots marketplace because “industrial robots are very limited in their functionality… not to mention that they are oriented to quickly repeat the same tasks 24/7 unlike personal and service robots that can be extended to virtually everything! I believe in the consumers market – as they will grow like a hockey-stick!”</p>
<p>When I asked what kind of apps we will see once the store opens, Elad said, “We have more than 100 approved robotic developers working on apps for Romba, Pleo, AIBO, NAO, DARwin and others arranged in categories like Entertainment (dances, etc.), Story Telling (for kids), Utilities (like home search engines), Tools (like face recognition and such) and many others.”</p>
<p>Finally, I asked about the mechanics of porting an app or game from one robot to another. “ROS by Willow Garage, Gostai, URBI and others are trying to build a standard open platform OS that will run across all robots. We, as a marketplace, don’t take sides in this battle. We are serving every robot, ever developer, and every OS. But surely we’ll have to take sides one day when the critical mass will decide which is the widely spread and used OS…. Personally I believe that ROS is in the best position to become the de-facto standard and I personally love to work with their code. It is easy, simple and their libraries can be ported quickly between different robots – a huge advantage for every robot apps developer.”</p>
<p><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><strong><a href="http://www.myrobots.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MyRobots</a>:</strong></span></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;"><img decoding="async" src="http://1.bp.blogspot.com/-cY2UNToEfhU/TwHogFhKZlI/AAAAAAAAAx4/pAiFpGZ0I7Q/s1600/MyRobots-logo.jpg" alt="" border="0" /></div>
<p>The goal for MyRobots is to get all robotic platforms to collaborate and operate together (regardless of their operating system) via the use of Cloud robotics. Although like other stores MyRobots will sell downloadable apps too, their main interest is to develop applications that will run on the Cloud thereby freeing computation time and resources on the robot and will make a single app compatible with many different robotic platforms.</p>
<p>Says MyRobot’s Mario Tremblay:</p>
<blockquote class="tr_bq"><p>Cloud Robotics is the application of the cloud computing concept to robots. This means using the Internet to augment the robots capabilities by off-loading computation and providing services on demand. Being connected to the cloud also helps robots to collaborate with other machines, smart objects and humans. Through this collaboration, robots transcend their physical limitations and become more useful and capable since they can delegate parts of their tasks to more suitable parties. By combining increased communication capabilities to the ability and flexibility of running and storing part of their intelligence (i.e. software, behaviors and apps) on the MyRobots infrastructure, smart objects and robots become augmented and constitute a new and revolutionary concept for the future of robotic intelligence: Cloud Robotics.</p></blockquote>
<p><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><strong><a href="http://www.roboearth.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RoboEarth</a>:</strong></span></p>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;"><img decoding="async" src="http://4.bp.blogspot.com/-nYBzlSNJRTE/TwHnNf7sn0I/AAAAAAAAAxs/gyyJ-ipD0y0/s320/roboearthlogo.jpeg" alt="" width="320" height="61" border="0" /></div>
<p>RoboEarth is an EU-funded consortium of educators, research facilities and corporations working together to provide a world-wide-web for robot applications. RoboEarth, in development for the last two years, can be seen as a giant network and database repository where robots share information and learn from each other about their behavior and environment thereby showing a better way of robot collaboration and information sharing. RoboEarth’s premise is to out-source application development by tapping creativity and experience from wherever they can. Further, they believe (as do I) that more apps sold equates to more robots sold. Quoting Markus Waibel:</p>
<blockquote class="tr_bq"><p>The central beauty of the App Store idea is that it enables a feedback cycle: The more devices (phones/robots) you sell, the more lucrative the app store becomes for 3rd party developers to program new apps. And the more new apps, the more devices you sell. In my opinion, robotics does not yet have critical mass to jump start this at the present time.</p></blockquote>
<p>RoboEarth is fast becoming a large shared repository for maps, object models, task descriptions, robot models, semantic relations, probabilistic relations and “action recipes” (apps) within the global academic community. It remains to be seen whether the big robot manufacturers will embrace the technology for their products.</p>
<p>One unintended consequence of RoboEarth’s efforts may be within the used robots marketplace. Imagine the financial gain if an older, unused robot is rejiggered to have new equipment as well as easy to train software to put the robot back to work on new projects. Another possible beneficiary is the end user who will be less likely to retain an intergrator/consulting service if the robot can handle ongoing changes on its own.</p>
<p>The ultimate goal of RoboEarth is to enable robots to share and store what they discover about the world on their own Internet.</p>
<div style="text-align: center;">**********</div>
<p>As a personal aside, I live in a rural area outside of a medium-sized city. 4G LTE is planned for 2012-2013 for the city but not my area and I have to pay for a very unreliable T1 line to my office. It’s hard to imagine having a service robot doing its thing in my world while relying on the Cloud (as represented by my T1). Maybe the concept will grow on me with time but right now I’m wary and a bit afraid of the consequences.</p>
<div style="text-align: center;">**********</div>
<p>What do you want from a robot app store? Let’s compile a long list of “wants” and send them off to these app stores and see whether they can get them for us. Why should we wait to see if our app magically appears in their store? Let’s ask for what we want. <a href="mailto:ftobe@therobotreport.com">Send them to me</a> and I’ll combine them all and send them off to the stores.</p>
<p>Here’s what I would like:</p>
<ul>
<li>For my old Pleo, anything that makes it do things it doesn’t already do.</li>
<li>For my AR.Drone, a programmable camera shoot over a grid that I draw onscreen from a starting point where I place the drone.</li>
<li>For my little iSobot, a complicated routine of fetch, grab and return.</li>
<li>And for my new Swivl, something sexy where it follows my girlfriend around the room and refocuses as the distance changes.</li>
</ul>
<p>But I also want to buy a used two-armed Yaskawa Motoman and put it to work in my workshop doing ad hoc tasks. I’d love to be able to add a hardware component add-on (or two), be able to use ROS or some simulation software to test my apps, buy some additional apps that do the kind of tasks I need to do in the shop, and have all that work seamlessly and without line-for-line coding, excessive cost or too much fiddling.</p>
<p>What do <em>you</em> want? <a href="mailto:ftobe@therobotreport.com">Send them to me </a>and I’ll combine them all and send them off to the stores.</p>
<div class="blogger-post-footer"><img decoding="async" src="https://blogger.googleusercontent.com/tracker/75361554721657432-5474106227201838089?l=www.everything-robotic.com" alt="" width="1" height="1" /></div>
]]></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-13 16:55:14 by W3 Total Cache
-->