<?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>DIY &#8211; Robohub</title>
	<atom:link href="https://robohub.org/tag/diy/feed/" rel="self" type="application/rss+xml" />
	<link>https://robohub.org</link>
	<description>Connecting the robotics community to the world</description>
	<lastBuildDate>Mon, 05 Oct 2026 01:07:31 +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>Dan O&#8217;Mara: Turning Robotics Education on its Head &#124; Sense Think Act Podcast #19</title>
		<link>https://robohub.org/dan-omara-turning-robotics-education-on-its-head-sense-think-act-podcast-19/</link>
		
		<dc:creator><![CDATA[Audrow Nash]]></dc:creator>
		<pubDate>Tue, 24 May 2022 18:45:27 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[startup]]></category>
		<guid isPermaLink="false">https://robohub.org/?p=204487</guid>

					<description><![CDATA[In this episode, Audrow Nash speaks to Dan O&#8217;Mara, who is the founder and COO of Circuit Launch and Mechlabs. Circuit Launch is a space for hardware entrepreneurs to work in Oakland, California, and Mechlabs is a project-based course to learn robotics. This interview is mostly about Mechlabs, but talks about the origins of Circuit [&#8230;]]]></description>
										<content:encoded><![CDATA[<img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-204488" src="https://robohub.org/wp-content/uploads/2022/05/cover-art-1.png" alt="" width="1280" height="720" srcset="https://robohub.org/wp-content/uploads/2022/05/cover-art-1.png 1280w, https://robohub.org/wp-content/uploads/2022/05/cover-art-1-425x239.png 425w, https://robohub.org/wp-content/uploads/2022/05/cover-art-1-1024x576.png 1024w, https://robohub.org/wp-content/uploads/2022/05/cover-art-1-768x432.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p>In this episode, Audrow Nash speaks to Dan O&#8217;Mara, who is the founder and COO of Circuit Launch and Mechlabs. Circuit Launch is a space for hardware entrepreneurs to work in Oakland, California, and Mechlabs is a project-based course to learn robotics. This interview is mostly about Mechlabs, but talks about the origins of Circuit Launch, including how it is not a maker or coworking space and its business model. For Mechlabs, we talk about several of its aspects that make it different than a university education in robotics, including how there are mentors not instructors, how projects are scoped, and how people are invited to work on what is most interesting to them. We also talk about the future of Mechlabs and how it fits with current universities.</p>
<p><span id="more-204487"></span></p>
<div class="keep-aspect"><iframe title="Dan O&#039;Mara: Turning Robotics Education on its Head | Sense Think Act Podcast #19" width="500" height="281" src="https://www.youtube-nocookie.com/embed/2qo_E0fsPG0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>Episode Links</strong></p>
<ul>
<li><a href="https://ftp.osuosl.org/pub/ros/download.ros.org/sensethinkact/episodes/STA%20Ep%2019%20-%20Dan%20O&#039;Mara.mp3" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Download the episode </a></li>
<li><a href="https://mechlabs.ai/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Mechlabs&#8217; website</a></li>
<li><a href="https://circuitlaunch.com/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Circuit Launch&#8217;s website</a></li>
<li><a href="https://www.linkedin.com/in/omaradan/" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Dan&#8217;s LinkedIn</a></li>
</ul>
<p><strong>Podcast info</strong></p>
<ul>
<li><a href="https://sensethinkact.com" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Podcast website</a></li>
<li><a href="https://podcasts.apple.com/us/podcast/sense-think-act/id1582090036" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Apple Podcasts</a></li>
<li><a href="https://open.spotify.com/show/52wK4oMDvgijRk6E82tC5d" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Spotify</a></li>
<li><a href="https://sensethinkact.com/itunes.xml" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">RSS</a></li>
<li><a href="https://www.youtube.com/c/SenseThinkActPodcast" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Full episodes</a></li>
<li><a href="https://www.youtube.com/channel/UChfnCpNwZzYtZ32J-pZvNDg" target="_blank" rel="noopener follow external noreferrer" data-wpel-link="external">Clips</a></li>
</ul>
]]></content:encoded>
					
		
		<enclosure url="https://ftp.osuosl.org/pub/ros/download.ros.org/sensethinkact/episodes/STA%20Ep%2019%20-%20Dan%20O&#039;Mara.mp3" length="177601405" type="audio/mpeg" />

			</item>
		<item>
		<title>Building a 7 axis robot from scratch</title>
		<link>https://robohub.org/building-a-7-axis-robot-from-scratch/</link>
		
		<dc:creator><![CDATA[Daniel Carrillo-Zapata]]></dc:creator>
		<pubDate>Sun, 11 Apr 2021 08:50:53 +0000</pubDate>
				<category><![CDATA[tutorials]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[industrial]]></category>
		<guid isPermaLink="false">https://robohub.org/building-a-7-axis-robot-from-scratch/</guid>

					<description><![CDATA[Do you fancy making yourself an industrial robot to enjoy at home? Jeremy Fielding, a passionate fan of mechanical engineering, did. So he built one. Good news is: he&#8217;s preparing a series of videos to teach you the whole process from scratch. How much power do you need to run 7 motors at one time? [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" src="https://robohub.org/wp-content/uploads/2021/04/IMG_20210410_120129.jpg" alt="" width="1200" height="750" class="alignnone size-full wp-image-199614" srcset="https://robohub.org/wp-content/uploads/2021/04/IMG_20210410_120129.jpg 1200w, https://robohub.org/wp-content/uploads/2021/04/IMG_20210410_120129-425x266.jpg 425w, https://robohub.org/wp-content/uploads/2021/04/IMG_20210410_120129-1024x640.jpg 1024w, https://robohub.org/wp-content/uploads/2021/04/IMG_20210410_120129-768x480.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" />
<p>Do you fancy making yourself an industrial robot to enjoy at home? Jeremy Fielding, a passionate fan of mechanical engineering, did. So he built one. Good news is: he&#8217;s preparing a series of videos to teach you the whole process from scratch. How much power do you need to run 7 motors at one time? If you lose power, how do you prevent the arm from collapsing on you or dropping the load? How do you keep the cost down? He&#8217;s recorded over 100 hours of video, and he&#8217;s planning to teach you how he used the servo motors, how you can use them for your projects and how he designed his 7 axis, articulated robot. <span id="more-199612"></span></p>
<p>Jeremy&#8217;s aim (<a href="http://jeremyfielding.com/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">website</a>, <a href="https://youtube.com/c/JeremyFieldingSr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">YouTube</a>, <a href="https://twitter.com/jeremy_fielding" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Twitter</a>, <a href="https://www.instagram.com/jeremy_fielding/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Instagram</a>) is simple: draw people to engineering with amazing projects, inspire them with ideas, then teach them how to do it. And for this video series, <strong>he&#8217;s also looking for your collaboration</strong>. So if you&#8217;ve got experience and knowledge on building this type of robots and you&#8217;d like to share it, maybe you end up being part of the series!</p>
<p>We&#8217;d like to thank <a href="https://mobile.twitter.com/BlackInRobotics" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Black in Robotics</a> for making it possible for us to discover Jeremy. Here&#8217;s the video Jeremy has released to introduce his project:</p>
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">We had to go find this guy on YouTube because he looked very cool! <a href="https://t.co/xomix1TZXo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://t.co/xomix1TZXo</a> <a href="https://twitter.com/jeremy_fielding?ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">@jeremy_fielding</a> <a href="https://twitter.com/hashtag/BlackInRobotics?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">#BlackInRobotics</a> <a href="https://twitter.com/hashtag/NationalRoboticsWeek?src=hash&amp;ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">#NationalRoboticsWeek</a> <a href="https://twitter.com/RoboWeek?ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">@RoboWeek</a></p>
<p>&mdash; Black in Robotics (@BlackInRobotics) <a href="https://twitter.com/BlackInRobotics/status/1380637151457595400?ref_src=twsrc%5Etfw" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">April 9, 2021</a></p></blockquote>
<p> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Check out <a href="https://youtube.com/c/JeremyFieldingSr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Jeremy&#8217;s YouTube channel</a> to discover many more instructional videos. You can also support his work on <a href="https://www.patreon.com/jeremyfieldingsr" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Patreon</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ep.283: Misty II: A Robotics Platform for Developers, with  Ian Bernstein  </title>
		<link>https://robohub.org/misty-ii-a-robotics-platform-for-developers/</link>
		
		<dc:creator><![CDATA[Audrow Nash]]></dc:creator>
		<pubDate>Sun, 07 Apr 2019 21:14:42 +0000</pubDate>
				<category><![CDATA[podcast]]></category>
		<category><![CDATA[actuation]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[household]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[startup]]></category>
		<guid isPermaLink="false">https://robohub.org/misty-ii-a-robotics-platform-for-developers/</guid>

					<description><![CDATA[Ian Bernstein on the design and features of a small mobile robot designed for developers.]]></description>
										<content:encoded><![CDATA[<img src="https://robohub.org/wp-content/uploads/2019/03/Feature-Image-1024x599.jpeg"/><p><img decoding="async" class="aligncenter size-full wp-image-123835" src="https://robohub.org/wp-content/uploads/2019/03/Feature-Image.jpeg" alt="" width="1240" height="725" srcset="https://robohub.org/wp-content/uploads/2019/03/Feature-Image.jpeg 1240w, https://robohub.org/wp-content/uploads/2019/03/Feature-Image-425x248.jpeg 425w, https://robohub.org/wp-content/uploads/2019/03/Feature-Image-768x449.jpeg 768w, https://robohub.org/wp-content/uploads/2019/03/Feature-Image-1024x599.jpeg 1024w" sizes="(max-width: 1240px) 100vw, 1240px" /><br />
<iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/598804065&#038;color=%23ff5500&#038;auto_play=false&#038;hide_related=false&#038;show_comments=true&#038;show_user=true&#038;show_reposts=false&#038;show_teaser=true"></iframe></p>
<p><span style="font-weight: 400;">In this episode, Audrow Nash speaks with Ian Bernstein, Founder and Head of Product at Misty Robotics, about a robotics platform designed for developers called Misty II.  Bernstein discusses the motivation behind making a robotics platform for developers (relating it to personal computers), Misty II’s hardware extensibility and software “skills,” and the future direction of Misty Robotics.</span></p>
<p><span id="more-123834"></span></p>
<p>A video introducing the Misty II platform:</p>
<div class="keep-aspect"><iframe title="Misty II - Where are the Robots?" width="500" height="281" src="https://www.youtube-nocookie.com/embed/stnrf7aczgE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>Ian Bernstein</strong></p>
<p><img decoding="async" class="wp-image-123837 alignleft" src="https://robohub.org/wp-content/uploads/2019/03/Ian-Headshot.jpg" alt="" width="200" height="259" srcset="https://robohub.org/wp-content/uploads/2019/03/Ian-Headshot.jpg 1149w, https://robohub.org/wp-content/uploads/2019/03/Ian-Headshot-329x425.jpg 329w, https://robohub.org/wp-content/uploads/2019/03/Ian-Headshot-768x993.jpg 768w, https://robohub.org/wp-content/uploads/2019/03/Ian-Headshot-792x1024.jpg 792w" sizes="(max-width: 200px) 100vw, 200px" />Ian Bernstein is Founder and Head of Product at Misty Robotics, a spin-off company from Sphero, Inc. focused on building personal robots for the home and office. In this role, Bernstein leads Misty Robotics’ product development and design. Prior to Misty Robotics, Bernstein served as Founder and Chief Technology Officer at Sphero, Inc. that has shipped more than 3 million robots to date. Bernstein joined TechStars in 2010 with Sphero co-founder Adam Wilson and created Sphero, the original app-enabled robotic ball. Bernstein has had a lifelong passion for robotics and creation and has been building robots since he was 12. Ian holds a BS in Electrical and Electronics Engineering from Colorado State University.</p>
<div style="clear:both"></div>
<p><strong>Links</strong></p>
<ul>
<li><a href="http://feeds.soundcloud.com/stream/598804065-robohubpodcast-misty-ii-a-robotics-platform-for-developers.mp3" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Download mp3 (13.8 MB)</li>
<li><a href="https://www.mistyrobotics.com">Misty Robotics&#8217; homepage</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using iTunes</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using RSS</a></li>
<li><a href="https://www.patreon.com/robohub_podcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Support us on Patreon</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		<enclosure url="http://feeds.soundcloud.com/stream/598804065-robohubpodcast-misty-ii-a-robotics-platform-for-developers.mp3" length="0" type="audio/mpeg" />

			</item>
		<item>
		<title>ep.251: Open Source Prosthetic Leg, with  Elliott Rouse  </title>
		<link>https://robohub.org/open-source-prosthetic-leg/</link>
		
		<dc:creator><![CDATA[Audrow Nash]]></dc:creator>
		<pubDate>Sat, 06 Jan 2018 19:59:01 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[bio-inspired]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[research]]></category>
		<guid isPermaLink="false">http://robohub.org/open-source-prosthetic-leg/</guid>

					<description><![CDATA[Elliott Rouse on the design and software interface of an open source prosthetic leg.]]></description>
										<content:encoded><![CDATA[<img src="https://robohub.org/wp-content/uploads/2018/01/rouse-01-1024x576.png"/><p><img decoding="async" class="alignnone size-full wp-image-94762" src="http://robohub.org/wp-content/uploads/2018/01/rouse-01.png" alt="" width="1366" height="768" srcset="https://robohub.org/wp-content/uploads/2018/01/rouse-01.png 1366w, https://robohub.org/wp-content/uploads/2018/01/rouse-01-425x239.png 425w, https://robohub.org/wp-content/uploads/2018/01/rouse-01-768x432.png 768w, https://robohub.org/wp-content/uploads/2018/01/rouse-01-1024x576.png 1024w" sizes="(max-width: 1366px) 100vw, 1366px" /><br />
<iframe src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/379731743&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true" width="100%" height="166" frameborder="no" scrolling="no"></iframe><br />
<span style="font-weight: 400;">In this episode, Audrow Nash interviews Elliott Rouse, Assistant Professor at the University of Michigan, about an open-source prosthetic leg—that is a robotic knee and ankle. Rouse’s goal is to provide an inexpensive and capable platform for researchers to use so that they can work on prostheses without developing their own hardware, which is both time-consuming and expensive. </span><span style="font-weight: 400;">Rouse discusses the design of the leg, the software interface, and the project&#8217;s timeline.</span></p>
<p><span id="more-94757"></span></p>
<p><strong>Elliott Rouse</strong></p>
<p><img decoding="async" class="wp-image-94760 alignleft" src="http://robohub.org/wp-content/uploads/2018/01/Rouse_UM_Sq.jpg" alt="" width="200" height="184" srcset="https://robohub.org/wp-content/uploads/2018/01/Rouse_UM_Sq.jpg 440w, https://robohub.org/wp-content/uploads/2018/01/Rouse_UM_Sq-425x391.jpg 425w" sizes="(max-width: 200px) 100vw, 200px" /><span style="font-weight: 400;">Elliott</span> Rouse is an Assistant Professor in the Mechanical Engineering Department at the University of Michigan, where he directs the Neurobionics Lab. The vision of his group is to discover the fundamental science that underlies human joint dynamics during locomotion and incorporate these discoveries in a new class of wearable robotic technologies. The Lab uses technical tools from mechanical and biomedical engineering applied to the complex challenges of human augmentation, physical medicine, rehabilitation and neuroscience. Dr. Rouse and his research have been featured at TED, on the Discovery Channel, CNN, National Public Radio, Wired Magazine UK, Business Insider, and Odyssey Magazine.</p>
<p>&nbsp;</p>
<p><strong>Links</strong></p>
<ul>
<li><a href="https://neurobionics.engin.umich.edu" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Rouse&#8217;s lab website</a></li>
<li><a href="http://www.elliottjrouse.com/?home" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Rouse&#8217;s personal website</a></li>
<li><a href="http://feeds.soundcloud.com/stream/379731743-robohubpodcast-open-source-prosthetic-leg.mp3" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Download mp3 (12.6 MB)</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using iTunes</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using RSS</a></li>
<li><a href="https://www.patreon.com/robohub_podcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Support us on Patreon</a></li>
</ul>
]]></content:encoded>
					
		
		<enclosure url="http://feeds.soundcloud.com/stream/379731743-robohubpodcast-open-source-prosthetic-leg.mp3" length="0" type="audio/mpeg" />

			</item>
		<item>
		<title>ep.239: Robot Academy, with  Peter Corke  </title>
		<link>https://robohub.org/robot-academy/</link>
		
		<dc:creator><![CDATA[Audrow Nash]]></dc:creator>
		<pubDate>Sat, 22 Jul 2017 16:11:04 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[social robotics]]></category>
		<guid isPermaLink="false">http://robohub.org/robot-academy/</guid>

					<description><![CDATA[Peter Corke on free, online courses in robotics and computer vision. ]]></description>
										<content:encoded><![CDATA[<img src="https://robohub.org/wp-content/uploads/2017/07/RobotAcademy-1024x715.png"/><p><span style="font-weight: 400;"><img decoding="async" class="alignnone size-full wp-image-81986" src="http://robohub.org/wp-content/uploads/2017/07/RobotAcademy.png" alt="" width="1157" height="808" srcset="https://robohub.org/wp-content/uploads/2017/07/RobotAcademy.png 1157w, https://robohub.org/wp-content/uploads/2017/07/RobotAcademy-425x297.png 425w, https://robohub.org/wp-content/uploads/2017/07/RobotAcademy-768x536.png 768w, https://robohub.org/wp-content/uploads/2017/07/RobotAcademy-1024x715.png 1024w" sizes="(max-width: 1157px) 100vw, 1157px" /></span><br />
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/334327519&amp;color=ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false"></iframe><br />
<span style="font-weight: 400;">In this episode, Audrow Nash interviews Peter Corke, Professor of Robotics at the Queensland University of Technology and Director of the Australian Centre for Robotic Vision, about Robot Academy. Robot Academy is an online platform that provides free-to-use undergraduate-level learning resources for robotics and robotic vision.</span></p>
<p><span id="more-81984"></span></p>
<p><span style="font-weight: 400;">The content was developed for two 6-week Massively Open Online Courses (MOOCs) that Corke taught in 2015 and 2016. This content is now available as individual lessons (over 200 videos, each less than 10 minutes long) or in masterclasses (collections of videos, around 1 hour in duration, previously a MOOC lecture). Unlike a MOOC, all lessons are available all the time. </span></p>
<p><span style="font-weight: 400;">While the content is typically designed for undergraduate-level students, around 20% of the lessons require no more than general knowledge. Each lesson is rated in terms of difficulty (on a 5-point scale), and Robot Academy references videos on Khan Academy to help students get up to speed to follow more advanced lessons.</span></p>
<p>&nbsp;</p>
<p><strong>Peter Corke</strong></p>
<p><img decoding="async" class="wp-image-81985 alignleft" src="http://robohub.org/wp-content/uploads/2017/07/Peter-Corke-225x275-c-default.jpg" alt="" width="150" height="183" /> Peter Corke is Professor of Robotics and Control at the Queensland University of Technology leading the ARC Centre of Excellence for Robotic Vision in Australia. Previously he was a Senior Principal Research Scientist at the CSIRO ICT Centre where he founded and led the Autonomous Systems laboratory, the Sensors and Sensor Networks research theme and the Sensors and Sensor Networks Transformational Capability Platform. He is a Fellow of the IEEE. He was the Editor-in-Chief of the IEEE Robotics and Automation magazine; founding editor of the Journal of Field Robotics; member of the editorial board of the International Journal of Robotics Research, and the Springer STAR series. He has over 300 publications in the field and has held visiting positions at the University of Pennsylvania, University of Illinois at Urbana-Champaign, Carnegie-Mellon University Robotics Institute, and Oxford University.</p>
<p>&nbsp;</p>
<p><strong>Links</strong></p>
<ul>
<li><a href="https://robotacademy.net.au" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Robot Academy&#8217;s homepage</a></li>
<li><a href="http://petercorke.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Peter Corke&#8217;s website</a></li>
<li><a href="http://feeds.soundcloud.com/stream/334327519-robotspodcast-robots-robot-academy.mp3" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Download mp3 (12.5 MB)</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using iTunes</a></li>
<li><a href="http://feeds.feedburner.com/robotspodcast" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Subscribe to Robots using RSS</a></li>
</ul>
]]></content:encoded>
					
		
		<enclosure url="http://feeds.soundcloud.com/stream/334327519-robotspodcast-robots-robot-academy.mp3" length="0" type="audio/mpeg" />

			</item>
		<item>
		<title>The cheap arm project: An affordable, open-source robotics project</title>
		<link>https://robohub.org/the-cheap-arm-project-an-affordable-open-source-robotics-project/</link>
		
		<dc:creator><![CDATA[Dominic Cassidy]]></dc:creator>
		<pubDate>Thu, 30 Mar 2017 09:00:41 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[actuation]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[household]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[modular]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[research]]></category>
		<guid isPermaLink="false">http://robohub.org/the-cheap-arm-project-an-affordable-open-source-robotics-project/</guid>

					<description><![CDATA[What do you get when you put together wood and rope? Well according to Plymouth University&#8217;s Professor Guido Bugmann: a low-cost, open source, 2 meter tall robot! All buildable for under £2000. The Cheap Arm Project (CHAP) began as an MSc project aimed at developing an affordable mobile robot arm system that could be used by [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="size-full wp-image-74761 aligncenter" src="http://robohub.org/wp-content/uploads/2017/03/CHAP_Controller_sm.jpg" alt="" width="653" height="490" srcset="https://robohub.org/wp-content/uploads/2017/03/CHAP_Controller_sm.jpg 653w, https://robohub.org/wp-content/uploads/2017/03/CHAP_Controller_sm-425x319.jpg 425w" sizes="(max-width: 653px) 100vw, 653px" />
<p>What do you get when you put together wood and rope? Well according to Plymouth University&#8217;s Professor Guido Bugmann: a low-cost, open source, 2 meter tall robot! All buildable for under £2000. The Cheap Arm Project (CHAP) began as an MSc project aimed at developing an affordable mobile robot arm system that could be used by wheelchair users to access daily objects at inaccessible heights or weights (the extreme case being 2 litre bottle).<span id="more-74760"></span></p>
<p>Now the project has turned open source in the hope of continuing development and gathering more feedback. With the entire hardware and software details available online, with detailed instructions, the team hopes that community members will attempt to construct their own CHAP robot.</p>
<img decoding="async" class="aligncenter size-full wp-image-74762" src="http://robohub.org/wp-content/uploads/2017/03/CHAPConcept_3.jpg" alt="" width="740" height="808" srcset="https://robohub.org/wp-content/uploads/2017/03/CHAPConcept_3.jpg 740w, https://robohub.org/wp-content/uploads/2017/03/CHAPConcept_3-389x425.jpg 389w" sizes="(max-width: 740px) 100vw, 740px" />
<p>While building an entire robot may conventionally seem a complex and expensive undertaking, CHAP stands out with its use of 3D printed parts and wood. In fact, the &#8220;under £2000&#8221; price tag of required parts is primarily made up of the use six Dynamixel motors, each costing up to £200 and used by the project due to having numerous available during development. With this in mind, future work will look at the use of lower cost motors.</p>
<div class="keep-aspect"><iframe title="CHAP Robot V1" width="500" height="281" src="https://www.youtube-nocookie.com/embed/-FDXMkB4JsY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>Rather than a robot &#8216;brain&#8217;, CHAP is powered by a human one. To accomplish this, CHAP&#8217;s Raspberry Pi was used to host a local web page to enable tele-operation from any connected device, all accessible through a WiFi hotspot also hosted by the Pi. This was an important design choice as it removed the need for platform specific apps and associated costs, simultaneously simplifying deployment and testing.</p>
<p>This was done deliberately to keep the design simple, and to allow users the freedom to interact with their world. Early user-tests discovered that some level of intelligence would be needed to simplify controls. With currently three joints, and three axis available; some steps are needed to automate object interaction (pull requests welcome!).</p>
<img decoding="async" class="aligncenter size-full wp-image-74763" src="http://robohub.org/wp-content/uploads/2017/03/side.jpg" alt="" width="955" height="1600" srcset="https://robohub.org/wp-content/uploads/2017/03/side.jpg 955w, https://robohub.org/wp-content/uploads/2017/03/side-254x425.jpg 254w, https://robohub.org/wp-content/uploads/2017/03/side-768x1287.jpg 768w, https://robohub.org/wp-content/uploads/2017/03/side-611x1024.jpg 611w" sizes="(max-width: 955px) 100vw, 955px" />
<p>The next step for CHAP will be refinement of hardware and software; however the very first will be building a community! With full design documents available it is hoped that with support these can be improved and simplified, while simultaneously improving the effectiveness of the software.</p>
<p>Link to the github site can be found here: <a href="https://mobile-chap.github.io/Web/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">https://mobile-chap.github.io/Web/</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>UgCS photogrammetry technique for UAV land surveying missions</title>
		<link>https://robohub.org/ugcs-photogrammetry-technique-for-uav-land-surveying-missions/</link>
		
		<dc:creator><![CDATA[SPH Engineering]]></dc:creator>
		<pubDate>Thu, 09 Mar 2017 14:00:00 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[environment & agriculture]]></category>
		<category><![CDATA[exploration & mining]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[mapping & surveillance]]></category>
		<category><![CDATA[sensing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[surveying]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<category><![CDATA[video]]></category>
		<guid isPermaLink="false">http://robohub.org/ugcs-photogrammetry-technique-for-uav-land-surveying-missions/</guid>

					<description><![CDATA[&#160; UgCS is easy-to-use software for planning and flying UAV drone-survey missions. It supports almost any UAV platform, providing convenient tools for areal and linear surveys and enabling direct drone control. What&#8217;s more, UgCS enables professional land survey mission planning using photogrammetry techniques. How to plan photogrammetry mission with UgCS Standard land surveying photogrammetry mission planning [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<div id="attachment_73423" style="width: 860px" class="wp-caption aligncenter"><a href="http://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot.png" data-wpel-link="internal"><img decoding="async" aria-describedby="caption-attachment-73423" class="size-full wp-image-73423" src="http://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot.png" alt="" width="850" height="478" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-425x239.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-768x432.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-500x281.png 500w" sizes="(max-width: 850px) 100vw, 850px" /></a><p id="caption-attachment-73423" class="wp-caption-text">Figure 15: Adding 40m overshot to both ends of each survey line</p></div>
<p><a href="https://www.ugcs.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">UgCS</a> is easy-to-use software for planning and flying UAV drone-survey missions. It supports almost any UAV platform, providing convenient tools for areal and linear surveys and enabling direct drone control. What&#8217;s more, UgCS enables professional land survey mission planning using photogrammetry techniques.</p>
<p><strong>How to plan photogrammetry mission with UgCS</strong></p>
<p>Standard land surveying photogrammetry mission planning with UgCS can be divided into following steps :</p>
<ol>
<li>Obtain input data</li>
<li>Plan mission</li>
<li>Deploy ground control points</li>
<li>Fly mission</li>
<li>Image geotagging</li>
<li>Data processing</li>
<li>Map import to UgCS (optional)</li>
</ol>
<p><a href="https://www.youtube.com/watch?v=SalCQoG6WUw&#038;feature=youtu.be" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://www.youtube.com/watch?v=SalCQoG6WUw&amp;feature=youtu.be</a></p>
<hr class="xh2  ">
<p><strong>Step one: Obtain input data</strong></p>
<p>Firstly, to reach the desired result, input settings have to be defined:</p>
<ul class="txt">
<li>Required GSD (ground sampling distance &#8211; size of single pixel on ground),</li>
<li>Survey area boundaries,</li>
<li>Required forward and side overlap.</li>
</ul>
<p>GSD and area boundaries are usually defined by the customer’s requirements for output material parameters, for example by scale and resolution of digital map. Overlap should be chosen according to specific conditions of surveying area and requirements of data processing software.</p>
<p>Each data processing software (e.g., Pix4D, Agisoft Photoscan, Dronedeploy, Acute 3d) has specific requirements for side and forward overlaps for different surfaces. To choose correct values, please refer to documentation of chosen software. In general, 75% forward and 60% side overlap will be a good choice. Overlapping should be increased for areas with small amount of visual cues, for example for deserts or forests.</p>
<p>Often, aerial photogrammetry beginners are excited about the option to produce digital maps with extremely high resolution (1-2cm/pixel), and to use very small GSD for mission planning. This is very bad practice. Small GSD will result in longer flight time, hundreds of photos for each acre, tens of hours of processing and heavy output files. GSD should be set according to the output requirements of the digital map.</p>
<p>Other limitations can occur. For example, GSD of 10cm/pixel is required, but designed to use a Sony A6000 camera. Based on mentioned GSD and camera’s parameters, the flight altitude would be set to 510 meters. In most countries, maximum allowed altitude of UAV&#8217;s (without special permission) is limited to 120m/400ft AGL (above ground). Taking into account the maximum allowed altitude, the maximum possible GSD in this case could be no more than 2.3cm.</p>
<hr class="xh2  ">
<p><strong>Step two: Plan your mission</strong></p>
<p>Mission planning consists of two stages:</p>
<ul class="txt">
<li>Initial planning,</li>
<li>Route optimisation.</li>
</ul>
<p><em>-Initial planning:</em></p>
<p>The first step is to set surveying area using UgCS Photogrammetry tool. Area can be set using visual cues on underlying map or using exact coordinates of edges. The result &#8211; survey area is marked with yellow boundaries (Figure 1).</p>
<div id="attachment_73401" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73401" class="size-full wp-image-73401" src="http://robohub.org/wp-content/uploads/2017/03/Fig1_set_survey_area.png" alt="" width="850" height="478" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig1_set_survey_area.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig1_set_survey_area-425x239.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig1_set_survey_area-768x432.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig1_set_survey_area-500x281.png 500w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73401" class="wp-caption-text">Figure 1: Setting the survey area</p></div>
<p>The next step is to set GSD and overlapping for the camera in Photogrammetry tool&#8217;s settings window (Figure 2).</p>
<div id="attachment_73402" style="width: 290px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73402" class="size-full wp-image-73402" src="http://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera.png" alt="" width="280" height="280" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera.png 280w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-220x220.png 220w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-32x32.png 32w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-50x50.png 50w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-64x64.png 64w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-96x96.png 96w, https://robohub.org/wp-content/uploads/2017/03/Fig2_set_camera-128x128.png 128w" sizes="(max-width: 280px) 100vw, 280px" /><p id="caption-attachment-73402" class="wp-caption-text">Figure 2: Setting camera&#8217;s Ground Sampling Distance and overlapping</p></div>
<p>To take photos in Photogrammetry tool&#8217;s setting window, define the control action of the camera (Figure 3). Set camera by distance triggering action with default values.</p>
<div id="attachment_73403" style="width: 339px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73403" class="size-full wp-image-73403" src="http://robohub.org/wp-content/uploads/2017/03/Fig3_camera_control_action.png" alt="" width="329" height="234" /><p id="caption-attachment-73403" class="wp-caption-text">Figure 3: Setting camera&#8217;s control action</p></div>
<p>At this point, initial route planning is completed. UgCS will automatically calculate photogrammetry route (see Figure 4).</p>
<div id="attachment_73404" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73404" class="size-full wp-image-73404" src="http://robohub.org/wp-content/uploads/2017/03/Fig4_un-optimized_route.png" alt="" width="850" height="478" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig4_un-optimized_route.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig4_un-optimized_route-425x239.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig4_un-optimized_route-768x432.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig4_un-optimized_route-500x281.png 500w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73404" class="wp-caption-text">Figure 4: Calculated photogrammetry survey route before optimisation</p></div>
<p><em>-Route optimisation</em></p>
<p>To optimise the route, it&#8217;s calculated parameters should be known: altitude, estimated flight time, number of shots, etc.</p>
<p>Part of the route&#8217;s calculated information can be found in the elevation profile window. To access the elevation profile window (if it is not visible on screen) click the parameters icon on the route card (lower-right corner, see Figure 5), and from the drop-down menu select show elevation:</p>
<div id="attachment_73405" style="width: 281px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73405" class="size-full wp-image-73405" src="http://robohub.org/wp-content/uploads/2017/03/Fig5_parameters.png" alt="" width="271" height="178" /><p id="caption-attachment-73405" class="wp-caption-text">Figure 5: Accessing elevation window from Route cards Parameters settings</p></div>
<p>The elevation profile window will present an estimated route length, duration, waypoint count and min/max altitude data:</p>
<div id="attachment_73408" style="width: 665px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73408" class="size-full wp-image-73408" src="http://robohub.org/wp-content/uploads/2017/03/Fig6_elevation_profile_parameters.png" alt="" width="655" height="254" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig6_elevation_profile_parameters.png 655w, https://robohub.org/wp-content/uploads/2017/03/Fig6_elevation_profile_parameters-425x165.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig6_elevation_profile_parameters-500x194.png 500w" sizes="(max-width: 655px) 100vw, 655px" /><p id="caption-attachment-73408" class="wp-caption-text">Figure 6: Route values in elevation profile window</p></div>
<p>To get other calculated values, open route log by clicking on route status indicator: the green check-mark (upper-right corner, see Figure 7) of the route card:</p>
<div id="attachment_73409" style="width: 731px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73409" class="size-full wp-image-73409" src="http://robohub.org/wp-content/uploads/2017/03/Fig7_route_values-1.png" alt="" width="721" height="293" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig7_route_values-1.png 721w, https://robohub.org/wp-content/uploads/2017/03/Fig7_route_values-1-425x173.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig7_route_values-1-500x203.png 500w" sizes="(max-width: 721px) 100vw, 721px" /><p id="caption-attachment-73409" class="wp-caption-text">Figure 7: Route card and status indicator, Route log</p></div>
<p>Using route parameters, it can be optimised to be more efficient and safe.</p>
<p><em>-Survey line direction</em></p>
<p>By default, UgCS will trace survey lines from south to north. But, in most cases, it will be more optimal to fly parallel to the longest boundary line of the survey area. To change survey line direction, edit direction angle field in the photogrammetry tool. In the example, by changing angle to 135 degrees, the number of passes is reduced from five (Figure 4) to four (Figure 8) and route length is 1km instead of 1.3km.</p>
<div id="attachment_73410" style="width: 737px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73410" class="size-full wp-image-73410" src="http://robohub.org/wp-content/uploads/2017/03/Fig8_optimized_route_passes.png" alt="" width="727" height="490" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig8_optimized_route_passes.png 727w, https://robohub.org/wp-content/uploads/2017/03/Fig8_optimized_route_passes-425x286.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig8_optimized_route_passes-445x300.png 445w" sizes="(max-width: 727px) 100vw, 727px" /><p id="caption-attachment-73410" class="wp-caption-text">Figure 8: Changed survey line angle to be parallel to longest boundary</p></div>
<p><em>-Altitude type</em></p>
<p>UgCS Photogrammetry tool has the option to define how to trace the route according to altitude, with constant altitude above ground (AGL) or above mean sea level (AMSL). Please refer to your data processing software requirements as to which altitude tracking method it recommend.</p>
<p>In the UgCS team&#8217;s experience, the choice of altitude type depends on desired result. For orthophotomap (standard aerial land survey output format) it is better to choose AGL to ensure constant GSD for the entire map. If the aim is to produce DEM or 3D reconstruction, use AMSL so the data processing software has more data to correctly determine ground elevation by photos in order to provide more qualitative output.</p>
<div id="attachment_73411" style="width: 663px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73411" class="size-full wp-image-73411" src="http://robohub.org/wp-content/uploads/2017/03/Fig9_altitude_type_AMSL.png" alt="" width="653" height="254" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig9_altitude_type_AMSL.png 653w, https://robohub.org/wp-content/uploads/2017/03/Fig9_altitude_type_AMSL-425x165.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig9_altitude_type_AMSL-500x194.png 500w" sizes="(max-width: 653px) 100vw, 653px" /><p id="caption-attachment-73411" class="wp-caption-text">Figure 9: Elevation profile with constant altitude above mean sea level (AMSL)</p></div>
<p>In this case, UgCS will calculate flight altitude based on the lowest point of the survey area.</p>
<p>If AGL is selected in photogrammetry tool&#8217;s settings, UgCS will calculate the altitude for each waypoint. But in this case, terrain following will be rough if no “additional waypoints” are added (see Figure 10).</p>
<div id="attachment_73412" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73412" class="size-full wp-image-73412" src="http://robohub.org/wp-content/uploads/2017/03/Fig10_altitude_type_AGL.png" alt="" width="850" height="624" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig10_altitude_type_AGL.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig10_altitude_type_AGL-425x312.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig10_altitude_type_AGL-768x564.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig10_altitude_type_AGL-409x300.png 409w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73412" class="wp-caption-text">Figure 10: Elevation profile with AGL without additional waypoints</p></div>
<p>Therefore, if AGL is used, add some “additional waypoints” flags and UgCS will calculate a flight plan with elevation profile accordingly (see Figure 11).</p>
<div id="attachment_73413" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73413" class="size-full wp-image-73413" src="http://robohub.org/wp-content/uploads/2017/03/Fig11_AGL_with_additional_waypoints.png" alt="" width="850" height="612" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig11_AGL_with_additional_waypoints.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig11_AGL_with_additional_waypoints-425x306.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig11_AGL_with_additional_waypoints-768x553.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig11_AGL_with_additional_waypoints-417x300.png 417w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73413" class="wp-caption-text">Figure 11: Elevation profile with AGL with additional waypoints</p></div>
<p><em>-Speed</em></p>
<p>In general, if flight speed is increased it will minimise flight time. But high speed in combination with large camera exposure can result in blurred images. In most cases 10m/s is the best choice.</p>
<p><em>-Camera control method</em></p>
<p>UgCS supports 3 camera control methods (actions):</p>
<ol>
<li>Make a shot (trigger camera) in waypoint,</li>
<li>Make shot every N seconds,</li>
<li>Make shot every N meters.</li>
</ol>
<p>Not all autopilots support all 3 camera control options. For example (quite old) DJI A2 does support all three options, but newer (starting from Phantom 3 and up to M600) cameras support only triggering in waypoints and by time. DJI promised to implement triggering by distance, but it’s not available yet.</p>
<p>Here are some benefits and drawbacks for all three methods:</p>
<div id="attachment_73416" style="width: 832px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73416" class="size-full wp-image-73416" src="http://robohub.org/wp-content/uploads/2017/03/table.jpg" alt="" width="822" height="464" srcset="https://robohub.org/wp-content/uploads/2017/03/table.jpg 822w, https://robohub.org/wp-content/uploads/2017/03/table-425x240.jpg 425w, https://robohub.org/wp-content/uploads/2017/03/table-768x434.jpg 768w, https://robohub.org/wp-content/uploads/2017/03/table-175x100.jpg 175w, https://robohub.org/wp-content/uploads/2017/03/table-500x282.jpg 500w" sizes="(max-width: 822px) 100vw, 822px" /><p id="caption-attachment-73416" class="wp-caption-text">Table 1: Benefits and Drawback for camera triggering methods</p></div>
<p>In conclusion:</p>
<ul class="txt">
<li>Trigger in waypoints should be preferred when possible</li>
<li>Trigger by time should be used only if no other method is possible</li>
<li>Trigger by distance should be used when triggering in waypoints is not possible to use</li>
</ul>
<p>To select triggering method in UgCS Photogrammetry tool accordingly, use one of three available icons:</p>
<ul class="txt">
<li>Set camera mode</li>
<li>Set camera by time</li>
<li>Set camera by distance</li>
</ul>
<p><em>-Glibal control</em></p>
<p>Drones, e.g., DJI Phantom 3, Phantom 4, Inspire, M100 or M600 with integrated gimbal, have the option to control camera position as part of an automatic route plan.</p>
<p>It is advisable to set camera to nadir position in the first waypoint, and in horizontal position before landing to prevent lenses from potential damage.</p>
<p>To set camera position, select the waypoint preceding the photogrammetry area and click set camera attitude/zoom (Figure 12) and enter &#8220;90&#8221; in the &#8220;Tilt&#8221; field (Figure 13).</p>
<div id="attachment_73418" style="width: 346px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73418" class="size-full wp-image-73418" src="http://robohub.org/wp-content/uploads/2017/03/Fig12_Gimbal_control_set_camera.png" alt="" width="336" height="314" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig12_Gimbal_control_set_camera.png 336w, https://robohub.org/wp-content/uploads/2017/03/Fig12_Gimbal_control_set_camera-321x300.png 321w" sizes="(max-width: 336px) 100vw, 336px" /><p id="caption-attachment-73418" class="wp-caption-text">Figure 12: Setting camera attitude</p></div>
<div id="attachment_73420" style="width: 299px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73420" class="size-full wp-image-73420" src="http://robohub.org/wp-content/uploads/2017/03/Fig13_Gimbal_control_Tilt.png" alt="" width="289" height="438" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig13_Gimbal_control_Tilt.png 289w, https://robohub.org/wp-content/uploads/2017/03/Fig13_Gimbal_control_Tilt-280x425.png 280w, https://robohub.org/wp-content/uploads/2017/03/Fig13_Gimbal_control_Tilt-198x300.png 198w" sizes="(max-width: 289px) 100vw, 289px" /><p id="caption-attachment-73420" class="wp-caption-text">Figure 13: Setting camera position</p></div>
<p>As described previously, this waypoint should be a Stop&amp;Turn type, otherwise the drone could skip this action.</p>
<p>To set camera to horizontal position, select last waypoint of survey route and click set camera attitude/zoom and enter &#8220;0&#8221; in the &#8220;Tilt&#8221; field.</p>
<p><em>-Turn types</em></p>
<p>Most autopilots or multirotor drones support different turn types in waypoints. Most popular DJI drones have three turn-types:</p>
<ul class="txt">
<li>Stop and Turn: drone flies to the fixed point accurately, stays at that fixed point and then flies to next fixed point.</li>
<li>Bank Turn: the drone would fly with constant speed from one point to another without stopping.</li>
<li>Adaptive Bank Turn: It is almost the same performance like Bank Turn mode (Figure 13), but the real flight routine will be more accurately than Bank Turn.</li>
</ul>
<p>It is advisable not to use Bank Turn for photogrammetry missions. Drone interprets Bank Turns as “recommendation destination waypoint”. The drone will fly towards this direction but will almost never pass through the waypoint. Because drone will not pass the waypoint, no action will be executed, meaning the camera will not be triggered, etc.</p>
<p>Adaptive Bank Turn should be used with caution because a drone can miss waypoints and, again, no camera triggering will be initiated.</p>
<div id="attachment_73422" style="width: 410px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73422" class="size-full wp-image-73422" src="http://robohub.org/wp-content/uploads/2017/03/Fig14_dji_turn_types.png" alt="" width="400" height="189" /><p id="caption-attachment-73422" class="wp-caption-text">Figure 14: Illustration of typical DJI drone trajectories for Bank Turn and Adaptive Bank Turn types</p></div>
<p>Sometimes, adaptive bank turn type has to be used in order to have shorter flight time compared to stop and turn. When using adaptive bank turns, it is recommended to use overshot (see below) for the photogrammetry area.</p>
<p><em>-Overshot</em></p>
<p>Initially overshot was implemented for fixed wing (airplane) drones in order to have enough space for manoeuvring a U-turn.</p>
<p>Overshot can be set in photogrammetry tool to add an extra segment to both ends of each survey line.</p>
<div id="attachment_73423-2" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73423-2" class="size-full wp-image-73423" src="http://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot.png" alt="" width="850" height="478" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-425x239.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-768x432.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig15_adding_overshot-500x281.png 500w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73423-2" class="wp-caption-text">Figure 15: Adding 40m overshot to both ends of each survey line</p></div>
<p>In the example (Figure 15) can be seen that UgCS added 40m additional segments to both ends of each survey line (comparing to Figure 8).</p>
<p>Adding overshot is useful for copter-UAVs in two situations:</p>
<ol>
<li>When Adaptive Bank Turns are used (or similar method for non-DJI drones), adding overshot will increase the chance that drone will precisely enter survey line and camera control action will be triggered. UgCS Team recommends to specify overshot that is approximately equal to distance between the parallel survey lines.</li>
<li>When Stop and Turn type is in use in combination with action to trigger camera in waypoints, there is a possibility that before making the shot, drone will start rotation to next waypoint &#8211; it can result in having photos with wrong orientation or blurred. To avoid that, shorter overshot has to be set, for example 5m. Don’t specify too short value (&lt; 3m) because some drones could ignore waypoints, that are too close.</li>
</ol>
<div id="attachment_73425" style="width: 1210px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73425" class="size-full wp-image-73425" src="http://robohub.org/wp-content/uploads/2017/03/Fig16_speed2.jpg" alt="" width="1200" height="675" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig16_speed2.jpg 1200w, https://robohub.org/wp-content/uploads/2017/03/Fig16_speed2-425x239.jpg 425w, https://robohub.org/wp-content/uploads/2017/03/Fig16_speed2-768x432.jpg 768w, https://robohub.org/wp-content/uploads/2017/03/Fig16_speed2-1024x576.jpg 1024w, https://robohub.org/wp-content/uploads/2017/03/Fig16_speed2-500x281.jpg 500w" sizes="(max-width: 1200px) 100vw, 1200px" /><p id="caption-attachment-73425" class="wp-caption-text">Figure 16: Example of blurred image taken by drone in rotation to next waypoint</p></div>
<p><em>-Takeoff point</em></p>
<p>It is important to <strong><em>check the takeoff area</em></strong> at site before flying any mission! To better explain best practice on how to set takeoff point, first discuss an example of how it should not be done. Supposing that the takeoff point in our example mission (Figure 17) would be from the point marked with the airplane-icon, and drone pilot would upload the route on the ground with set automatic mission for automatic take-off.</p>
<div id="attachment_73426" style="width: 655px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73426" class="size-full wp-image-73426" src="http://robohub.org/wp-content/uploads/2017/03/Fig17_take_off.png" alt="" width="645" height="434" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig17_take_off.png 645w, https://robohub.org/wp-content/uploads/2017/03/Fig17_take_off-425x286.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig17_take_off-446x300.png 446w" sizes="(max-width: 645px) 100vw, 645px" /><p id="caption-attachment-73426" class="wp-caption-text">Figure 17: Take-off point example</p></div>
<p>Most drones in automatic takeoff mode would climb to low altitude about 3-10meters and then fly straight towards the first waypoint. Other drones would fly towards first waypoint straight from ground. Looking closely at the example map (Figure 17), some trees between the takeoff point and the first waypoint can be noticed. In this example, the drone more likely will not reach a safe altitude and will hit the trees.</p>
<p>Not only the surroundings can affect takeoff planning. Drone manufacturers can change drones elevation behavior in drone firmware, therefore after firmware updates it is recommended that you check drones automatic takeoff mode.</p>
<p>Also, a very important consideration is that most small UAVs use relative altitude for mission planing. Altitude counted relatively according to first waypoint is a second reason why an actual takeoff point should be near the first waypoint, and on the same terrain level.</p>
<p>UgCS Team recommends placing the first waypoint as close as possible to actual takeoff point and specifying a safe takeoff altitude (≈30m in most situations will be above any trees, see Figure 18). This is the only method that warrants safe takeoff for any mission. It also protects from any weird drone behaviour and unpredictable firmware updates, etc.</p>
<div id="attachment_73427" style="width: 997px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73427" class="size-full wp-image-73427" src="http://robohub.org/wp-content/uploads/2017/03/Fig18_take_off_near_survey_grid.png" alt="" width="987" height="398" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig18_take_off_near_survey_grid.png 987w, https://robohub.org/wp-content/uploads/2017/03/Fig18_take_off_near_survey_grid-425x171.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig18_take_off_near_survey_grid-768x310.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig18_take_off_near_survey_grid-500x202.png 500w" sizes="(max-width: 987px) 100vw, 987px" /><p id="caption-attachment-73427" class="wp-caption-text">Figure 18: Route with safe take-off</p></div>
<p><em>-Entry point to the survey grid</em></p>
<p>In the previous example, (see Figure 18), it can be noticed, that after adding the takeoff point, the route&#8217;s survey grid entry point was changed. This is because if additional waypoint is added subsequently to the photogrammetry area, UgCS will plan to fly the survey grid starting from nearest corner to the previous waypoint.</p>
<p>To change the entry point to survey grid, set additional waypoint close to the desired starting corner (see Figure 19).</p>
<div id="attachment_73428" style="width: 930px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73428" class="size-full wp-image-73428" src="http://robohub.org/wp-content/uploads/2017/03/Fig19_entry_point_to_survey_grid.png" alt="" width="920" height="409" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig19_entry_point_to_survey_grid.png 920w, https://robohub.org/wp-content/uploads/2017/03/Fig19_entry_point_to_survey_grid-425x189.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig19_entry_point_to_survey_grid-768x341.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig19_entry_point_to_survey_grid-500x222.png 500w" sizes="(max-width: 920px) 100vw, 920px" /><p id="caption-attachment-73428" class="wp-caption-text">Figure 19: Changing survey grid entry point by adding additional waypoint</p></div>
<p><em>-Landing point</em></p>
<p>If no landing point will be added outside the photogrammetry area after the survey mission, the drone will fly and hover in the last waypoint. There are two options for landing:</p>
<ol>
<li>Take manual control over the drone and fly to landing point manually,</li>
<li>Activate the Return Home command in UgCS or from Remote Controller (RC).</li>
</ol>
<p>In situations when the radio link with the drone is lost, for example if the survey area is large or there are problems with the remote controller, depending on the drone and it’s settings, one of these actions can occur:</p>
<ul>
<li>Drone will return to home location automatically if lost radio link with ground station,</li>
<li>Drone will fly to last waypoint of survey area and hover as long as battery capacity will enable that, then: drone will perform emergency landing, or it will try to fly to home location.</li>
</ul>
<p>The recommendation is to add an explicit landing points to the route in order to avoid relying on unpredictable drone behavior or settings.</p>
<p>If the drone doesn’t support automatic landing, or the pilot prefers to land manually, place the route’s last waypoint over the planned landing point with an altitude for comfortable manual drone descending and landing above any obstacles in the surrounding area. In general 30m is best choice.</p>
<p><em>-Action execution</em></p>
<p>Photogrammetry tool has a <i>magic</i> parameter “Action Execution” with three possible values:</p>
<ul class="txt">
<li>Every point</li>
<li>At start</li>
<li>Forward passes</li>
</ul>
<p>This parameter defines how and where camera actions specified for photogrammetry tool will be executed.</p>
<p>The most useful option for photogrammetry/survey missions is to set forward passes, the drone will make photos only on survey lines, but will not make excess photos on perpendicular lines.</p>
<p><em>-Complex survey areas</em></p>
<p>UgCS enables photogrammetry/survey mission planning for irregular areas, having functionality to combine any number of photogrammetry areas in one route, avoiding splitting the area in separate routes.</p>
<p>For example, if a mission has to be planned for two fields connected in a T-shape, and if these two fields are marked as one photogrammetry area, the whole route will not be optimal, regardless any direction of survey lines.</p>
<div id="attachment_73431" style="width: 782px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73431" class="size-full wp-image-73431" src="http://robohub.org/wp-content/uploads/2017/03/fig20.png" alt="" width="772" height="569" srcset="https://robohub.org/wp-content/uploads/2017/03/fig20.png 772w, https://robohub.org/wp-content/uploads/2017/03/fig20-425x313.png 425w, https://robohub.org/wp-content/uploads/2017/03/fig20-768x566.png 768w, https://robohub.org/wp-content/uploads/2017/03/fig20-407x300.png 407w" sizes="(max-width: 772px) 100vw, 772px" /><p id="caption-attachment-73431" class="wp-caption-text">Figure 20: Complex survey area before optimisation</p></div>
<p>If the survey area is marked as two photogrammetry areas within one route, survey lines for each area can be optimised individually (see Figure 21).</p>
<div id="attachment_73434" style="width: 736px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73434" class="size-full wp-image-73434" src="http://robohub.org/wp-content/uploads/2017/03/Fig21_complex_survey_area_combined.png" alt="" width="726" height="597" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig21_complex_survey_area_combined.png 726w, https://robohub.org/wp-content/uploads/2017/03/Fig21_complex_survey_area_combined-425x349.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig21_complex_survey_area_combined-365x300.png 365w" sizes="(max-width: 726px) 100vw, 726px" /><p id="caption-attachment-73434" class="wp-caption-text">Figure 21: Optimised survey flight passes for each part of a complex photogrammetry area</p></div>
<hr class="xh2  ">
<p><strong>Step three: deploy ground control points</strong></p>
<p>Ground control points are mandatory if the survey output map has to be precisely aligned to coordinates on Earth.</p>
<p>There are lots of discussions about the necessity of ground control points in cases when a drone is equipped with Real Time Kinematics (RTK) GPS receivers with centimeter-level accuracy. This is useful, but the drone coordinates are not in themselves sufficient because, for precise map aligning, image center coordinates are necessary.</p>
<p>Data processing softwares like Agisoft Photoscan, Dronedeplay, Pix4d, Icarus OneButton and others will produce very accurate maps using geotagged images, but the real precision of the map will not be known without ground control points.</p>
<p>Conclusion: ground control points have to be used to create survey-grade result. For a map with approximate precision, it is sufficient to rely just on RTK GPS and the capabilities of data processing software.</p>
<hr class="xh2  ">
<p><strong>Step four: fly your mission</strong></p>
<p>For carefully planned missions, flying it is the most straightforward step. Mission execution differs according to the type of UAV and equipment used, therefore it will not be described in detail in this article (please refer to equipment’s and UgCS documentation).</p>
<p>Important issues before flying:</p>
<ul>
<li>In most countries there are strict regulations for UAV usage. Always comply with the regulations! Usually these rules can be found on web-site of local aviation authority.</li>
<li>In some countries special permission for any kind of aerial photo/video shooting is needed. Please check local regulations.</li>
<li>In most cases missions are planned before arriving to flying location (e.g., in office, at home) using satellite imaginary from Google maps, Bing, etc. Before flying always check actual circumstances at the location. There could be a need to adjust take-off/landing points, for example, to avoid tall obstacles (e.g., trees, masts, power lines) in your survey area.</li>
</ul>
<hr class="xh2  ">
<p><strong>Step five: image geotagging</strong></p>
<p>Image geotagging is optional if ground control points were used, but almost any data processing software will require less time to process geotagged images.</p>
<p>Some of the latest and professional drones with integrated cameras can geotag images automatically during flight. In other cases images can be geotagged in UgCS after flight.</p>
<p>Very important: UgCS uses the telemetry log from drone, that is received via radio channel, to extract the drone’s altitude for any given moment (when pictures were taken). To geotag pictures using UgCS, assure robust telemetry reception during flight.</p>
<p>For detailed information how to geotag images using UgCS refer to UgCS User Manual.</p>
<hr class="xh2  ">
<p><strong>Step six: data processing</strong></p>
<p>For data processing, use third party software or services available on the market.</p>
<p>From UgCS Team experience, the most powerful and flexible software is Agisoft Photoscan (<a href="http://www.agisoft.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">http://www.agisoft.com/</a>), but sometimes too much user input is required to get necessary results. The most uncomplicated solution for users is online service Dronedeploy (<a href="https://www.dronedeploy.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">https://www.dronedeploy.com/</a>). All other software packages and services will fit somewhere between these two in terms of complexity and power.</p>
<hr class="xh2  ">
<p><strong>Step seven (optional): import created map to UgCS</strong></p>
<p>Should the need arise for the mission to be repeated in the future, UgCS enables importing the GeoTiff file as a map layer and using it for mission planning. More detailed instructions can be found in UgCS User Manual. See the result of an imported map created using UgCS photogrammetry tool imported as GeoTiff file in Figure 22.</p>
<div id="attachment_73436" style="width: 860px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-73436" class="size-full wp-image-73436" src="http://robohub.org/wp-content/uploads/2017/03/Fig22_UgCS_map_import.png" alt="" width="850" height="478" srcset="https://robohub.org/wp-content/uploads/2017/03/Fig22_UgCS_map_import.png 850w, https://robohub.org/wp-content/uploads/2017/03/Fig22_UgCS_map_import-425x239.png 425w, https://robohub.org/wp-content/uploads/2017/03/Fig22_UgCS_map_import-768x432.png 768w, https://robohub.org/wp-content/uploads/2017/03/Fig22_UgCS_map_import-500x281.png 500w" sizes="(max-width: 850px) 100vw, 850px" /><p id="caption-attachment-73436" class="wp-caption-text">Figure 22: Imported GeoTiff map as layer. The map is output of a Photogrammetry survey mission panned with UgCS</p></div>
<p>Visit the <a href="https://www.ugcs.com/" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">UgCS homepage</a></p>
<p>Download this tutorial as a <a href="https://www.ugcs.com/files/photogrammetry_tool/UgCS-for_Land_surveying-with-photogrammetry.pdf" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">PDF</a></p>
<hr class="xh2  ">
<p><em>If you liked this tutorial, you may also enjoy these:</em></p>
<ul>
<li><a href="http://robohub.org/programming-for-robotics-introduction-to-ros/" target="_blank" data-wpel-link="internal">Programming for robotics: Introduction to ROS</a></li>
<li><a href="http://robohub.org/python-programming-your-nao-robot/" target="_blank" data-wpel-link="internal">Python programming your NAO robot</a></li>
<li><a href="http://robohub.org/robotics-maths-python-a-fledgling-computer-scientists-guide-to-inverse-kinematics/" target="_blank" data-wpel-link="internal">Robotics, maths, python: A fledgling computer scientist’s guide to inverse kinematics</a></li>
<li><a href="http://robohub.org/adjust-how-you-learn-and-quickly-pick-up-robotics-programming/" target="_blank" data-wpel-link="internal">Adjust how you learn and quickly pick up robotics programming</a></li>
<li><a href="http://robohub.org/3-d-printing-hydraulically-powered-robots-no-assembly-required/" target="_blank" data-wpel-link="internal">3-D printing hydraulically-powered robots, no assembly required</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" target="_blank" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://robohub.org/&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNFmCoRAKHuz2BWNf-njm6KSkgAacA" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a title="" href="http://eepurl.com/t-UEf" target="_blank" rel="external follow noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://eepurl.com/t-UEf&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNGjDpzB3aAol7pCzSfh7VU9iN6oQQ" data-wpel-link="external">sign up for our weekly newsletter</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NAIST OpenHand M2S released</title>
		<link>https://robohub.org/naist-openhand-m2s-released/</link>
		
		<dc:creator><![CDATA[Felix von Drigalski]]></dc:creator>
		<pubDate>Thu, 16 Feb 2017 10:30:07 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[3D printing]]></category>
		<category><![CDATA[actuation]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[gripper]]></category>
		<category><![CDATA[industrial]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[research]]></category>
		<guid isPermaLink="false">http://robohub.org/naist-openhand-m2s-released/</guid>

					<description><![CDATA[The NAIST OpenHand M2S was developed by a team of students as part of the school’s annual CICP project (read the blog post about it here), in which students can propose and organize their own research projects. Based on the Yale OpenHand M2, the NAIST OpenHand M2S was developed for textile manipulation, sensitive grasping as [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" class="aligncenter size-full wp-image-71896" src="http://robohub.org/wp-content/uploads/2017/02/render.jpg" alt="" width="925" height="600" srcset="https://robohub.org/wp-content/uploads/2017/02/render.jpg 925w, https://robohub.org/wp-content/uploads/2017/02/render-425x276.jpg 425w, https://robohub.org/wp-content/uploads/2017/02/render-768x498.jpg 768w, https://robohub.org/wp-content/uploads/2017/02/render-463x300.jpg 463w" sizes="(max-width: 925px) 100vw, 925px" />
<p>The <a href="http://www.naist.jp/en/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">NAIST</a> OpenHand M2S was developed by a team of students as part of the school’s annual CICP project (read the blog post about it <a href="http://vsp.naist.jp/en/2017/01/cicp-workshop-2016-posters-and-presentations/" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">here</a>), in which students can propose and organize their own research projects. Based on the <a href="https://www.eng.yale.edu/grablab/openhand/model_m2.html" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">Yale OpenHand M2</a>, the NAIST OpenHand M2S was developed for textile manipulation, sensitive grasping as well as pinpoint pushing with high loads. All of the parts (except motors, sensors etc.) can be downloaded from <a href="https://github.com/naist-robotics/naist-openhand-m2s" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">here</a> and 3D printed.</p>
<div class="keep-aspect"><iframe title="NAIST OpenHand M2S @ CICP 2016 (English ver.)" width="500" height="281" src="https://www.youtube-nocookie.com/embed/vZjTQ-7LhDY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>For grasping and manipulation, the hand is equipped with two 3D force sensors that act as fingertips. Using these, the hand can gently grasp textiles and let them glide through its fingers, pull them taut when tension is required, and even recognize different materials. By rubbing its fingertips together, a force signal is generated which allows the hand to sense if it successfully grasped a textile, and which kind of material it is.</p>
<p>Lastly, the rigid finger of the hand allows it to push with high loads and tuck into small openings. This can be used for tasks like making a bed, but also during the manufacturing of a car or airplane seat, which is part of the team’s research. Future versions of the hand will be able to pick up thin objects from a table easily without moving the robot.</p>
<p>You <a href="https://www.researchgate.net/publication/313438586_A_versatile_open-source_two-finger_gripper_for_textile_manipulation" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">can read the conference paper</a> here. Download the 3D files <a href="https://github.com/naist-robotics/naist-openhand-m2s" target="_blank" rel="noopener noreferrer follow external" data-wpel-link="external">here</a>, to use the gripper in your own research.</p>
<hr class="xh2  ">
<p><em>If you liked this article, you may also enjoy these:</em></p>
<ul>
<li><a href="http://robohub.org/robotics-maths-python-a-fledgling-computer-scientists-guide-to-inverse-kinematics/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">Robotics, maths, python: A fledgling computer scientist’s guide to inverse kinematics</a></li>
<li><a href="http://robohub.org/python-programming-your-nao-robot/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">Python programming your NAO robot</a></li>
<li><a href="http://robohub.org/soft-robotic-gripper-can-pick-up-and-identify-wide-array-of-objects/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">Soft robotic gripper can pick up and identify wide array of objects</a></li>
<li><a href="http://robohub.org/sticky-business-five-adhesives-tested-for-3d-printing/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">Sticky business: Five adhesives tested for 3D printing</a></li>
<li><a href="http://robohub.org/3-d-printing-hydraulically-powered-robots-no-assembly-required/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">3-D printing hydraulically-powered robots, no assembly required</a></li>
</ul>
<p><em>See all <a href="http://robohub.org/" target="_blank" rel="noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://robohub.org/&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNFmCoRAKHuz2BWNf-njm6KSkgAacA" data-wpel-link="internal">the latest robotics news</a> on Robohub, or <a title="" href="http://eepurl.com/t-UEf" target="_blank" rel="external follow noopener noreferrer" data-saferedirecturl="https://www.google.com/url?hl=en-GB&amp;q=http://eepurl.com/t-UEf&amp;source=gmail&amp;ust=1477500783522000&amp;usg=AFQjCNGjDpzB3aAol7pCzSfh7VU9iN6oQQ" data-wpel-link="external">sign up for our weekly newsletter</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mapping in the Cloud</title>
		<link>https://robohub.org/mapping-in-the-cloud/</link>
		
		<dc:creator><![CDATA[Markus Waibel]]></dc:creator>
		<pubDate>Mon, 23 Dec 2013 16:00:34 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[AI-cognition]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[cloud robotics]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[household]]></category>
		<category><![CDATA[mapping & surveillance]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[reviews]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=14910</guid>

					<description><![CDATA[UPDATE: New video of a collaborative, cloud-based mapping experiment. Mapping is essential for mobile robots and a cornerstone of many more robotics applications that require a robot to interact with its physical environment. It is widely considered the most difficult perceptual problem in robotics, both from an algorithmic but also from a computational perspective. Mapping essentially [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" width="720" height="540" class="aligncenter size-full wp-image-14912" alt="RoboEarth - mapping in the cloud" src="http://robohub.org/wp-content/uploads/2013/06/RoboEarth-mapping-in-the-cloud.jpg" srcset="https://robohub.org/wp-content/uploads/2013/06/RoboEarth-mapping-in-the-cloud.jpg 720w, https://robohub.org/wp-content/uploads/2013/06/RoboEarth-mapping-in-the-cloud-300x225.jpg 300w, https://robohub.org/wp-content/uploads/2013/06/RoboEarth-mapping-in-the-cloud-400x300.jpg 400w" sizes="(max-width: 720px) 100vw, 720px" />
<div style="clear: both;"></div>
<p><span style="background-color: yellow;">UPDATE: New video of a collaborative, cloud-based mapping experiment.</span> Mapping is essential for mobile robots and a cornerstone of many more robotics applications that require a robot to interact with its physical environment. It is widely considered the most difficult perceptual problem in robotics, both from an algorithmic but also from a computational perspective. Mapping essentially requires solving a huge optimization problem over a large amount of images and their extracted features. This requires beefy computers and high-end graphics cards – resulting in power-hungry and expensive robots.</p>
<p><span id="more-14910"></span><br />
<span style="background-color: yellow;"><strong>Update</strong></span></p>
<div class=" "><iframe title="Cloud-based Collaborative 3D Mapping in Real-Time with Low-Cost Robots" width="500" height="281" src="https://www.youtube-nocookie.com/embed/sZBSQrks5Hw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><span style="background-color: yellow;">Here is a video of a collaborative mapping experiment using Rapyuta, the open source cloud robotics framework. Instead of just compressing each frame of the stream, we now run a dense visual odometry algorithm to produce keyframes and these keyframes are eventually sent to the cloud for optimization. This technique is a very natural way to compress since keyframes are produced only when the robot has moved a certain distance or angle. The Cloud, in addition to optimization, now also does merging of maps produced by multiple robots. The code is open under the Apache 2.0 license at <a href="https://github.com/rapyuta/rapyuta-mapping" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">https://github.com/rapyuta/rapyuta-mapping</a>.</span></p>
<hr align="left" size="1" width="100%" />
<div class="minitext">This work is part of Rapyuta, an open-source cloud robotics platform. See <a href="http://rapyuta.org/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">rapyuta.org</a> for more details. This research was funded by the European Union Seventh Framework Programme FP7/2007-2013 under grant agreement no. 248942 RoboEarth. This work also received support from AWS (Amazon Web Services) in Education Grant award.</div>
<hr align="left" size="1" width="100%" />
<p>Together with our <a href="http://www.roboearth.org" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RoboEarth</a> colleagues Dominique Hunziker, Dhananjay Sathe, Mayank Singh, we have set up an inexpensive, light weight robot so that it can perform full 3D mapping in real-time by offloading heavy computation to the <a href="http://rapyuta.org/rapyuta-the-roboearth-cloud-engine" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RoboEarth Cloud Engine (nickname: Rapyuta)</a> (<a href="http://robohub.org/rapyuta-the-roboearth-cloud-engine/" data-wpel-link="internal">see previous Robohub article</a>). In the video below Master student <a href="https://plus.google.com/u/0/101865990499626620105" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Vlad Usenko</a> shows how robots can sidestep this problem.</p>
<div class=" "><iframe title="Mapping in the Cloud with Rapyuta" width="500" height="281" src="https://www.youtube-nocookie.com/embed/yq5tklyRLOI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><strong>How it works</strong><br />
What actually happens here? As you can see from the video and the figure below, the robot is equipped with an RGBD sensor (ASUS <a href="http://www.asus.com/Multimedia/Xtion_PRO" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Xtion PRO</a>), an ARM-based single board computer (<a href="http://www.hardkernel.com/renewal_2011/products/prdt_info.php" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Odriod-U2</a>), and an off-the-shelf wireless dongle. The robot transmits RGB images (QVGA resolution) and depth images (QVGA resolution) at 30 FPS to Rapyuta with a frame by frame compression (JPEG for RGB, and PNG for depth images). The single board computer is only used for compression, communication, and low-level control of the robot &#8211; the heavy computation all happens off-board. The optimized map shown at the end of the video is built by manually triggering the optimization process in the cloud after the demo (i.e., not in real time).</p>
<a href="http://robohub.org/mapping-in-the-cloud/roboearth-roomba/" rel="attachment wp-att-14980" data-wpel-link="internal"><img decoding="async" class="alignright size-full wp-image-14980" alt="RoboEarth-roomba" src="http://robohub.org/wp-content/uploads/2013/06/RoboEarth-roomba.png" width="1024" height="640" srcset="https://robohub.org/wp-content/uploads/2013/06/RoboEarth-roomba.png 1024w, https://robohub.org/wp-content/uploads/2013/06/RoboEarth-roomba-300x187.png 300w, https://robohub.org/wp-content/uploads/2013/06/RoboEarth-roomba-480x300.png 480w" sizes="(max-width: 1024px) 100vw, 1024px" /></a>
<div style="clear: both;"></div>
<p>The main purpose of this demonstrator is to showcase that today&#8217;s wireless technologies allow robots to outsource computationally heavy data processing to the cloud. As shown in the figure below, and as I&#8217;ve laid out in an earlier article on <a href="http://robohub.org/analysis-robot-learning-in-the-cloud/" data-wpel-link="internal">Cloud Robotics</a>, bandwidth is a key driver for cloud-based robot services and applications.</p>
<img decoding="async" width="1182" height="628" class="alignleft size-full wp-image-14925" alt="Cloud-Robotics-Communication-Data-Rates" src="http://robohub.org/wp-content/uploads/2013/06/Cloud-Robotics-Communication-Data-Rates.jpg" srcset="https://robohub.org/wp-content/uploads/2013/06/Cloud-Robotics-Communication-Data-Rates.jpg 1182w, https://robohub.org/wp-content/uploads/2013/06/Cloud-Robotics-Communication-Data-Rates-300x159.jpg 300w, https://robohub.org/wp-content/uploads/2013/06/Cloud-Robotics-Communication-Data-Rates-1024x544.jpg 1024w, https://robohub.org/wp-content/uploads/2013/06/Cloud-Robotics-Communication-Data-Rates-500x265.jpg 500w" sizes="(max-width: 1182px) 100vw, 1182px" />
<div style="clear: both;"></div>
<p>Most actual mapping scenarios call for a slightly different split in work-load: You&#8217;d want to perform visual odometry locally and only send keyframes to Rapyuta for global optimization. The good news is that we already supports this setup: Rapyuta provides the corresponding software packages to run on ODroid boards along with the necessary cloud computing infrastructure.</p>
<p><strong>What&#8217;s next? </strong><br />
This demonstration stops short of actually using the data returned from the cloud: A map is created and available in real time, but not actively used to control the robot. Using the map to control the robot, e.g. to improve exploration, is one logical extension.</p>
<p>Another natural next step would be to use the computational resources in the cloud for localizing in an existing map. Imagine a robot entering a new building and trying to get its bearings. Such localization in an existing map requires performing a search over the entire map – essentially a very large set of images and their features – to find the best match between what the robot is seeing now and a part of the map.</p>
<p>But the cloud can be used to do much more interesting things than improve single robot navigation. Multiple robots can instantaneously share their maps, so applications like multi-robot mapping become much easier. This implies using the cloud as more than a pure computational resource – it becomes a medium to store, share, and collectively improve data. This is interesting for static scenes, but things get even more interesting for dynamic scenes, for example when multiple robots track dynamic objects in the map. With <a href="http://www.roboearth.org/software-components#wire" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">WIRE</a>, some of my RoboEarth colleagues have developed algorithms to do just that. We are currently working on integrating this functionality with Rapyuta and the RoboEarth database and will make it available as a Rapyuta cloud service later this year.<br />
<a href="http://robohub.org/mapping-in-the-cloud/dsc_0019/" rel="attachment wp-att-14918" data-wpel-link="internal"><img decoding="async" class="alignright size-medium wp-image-14918" alt="DSC_0019" src="http://robohub.org/wp-content/uploads/2013/06/DSC_0019-300x199.jpg" width="300" height="199" srcset="https://robohub.org/wp-content/uploads/2013/06/DSC_0019-300x199.jpg 300w, https://robohub.org/wp-content/uploads/2013/06/DSC_0019-1024x680.jpg 1024w, https://robohub.org/wp-content/uploads/2013/06/DSC_0019-451x300.jpg 451w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Many of the key advantages of using this Cloud Robotics approach to mapping will only become apparent when maps are brought together with the vast amounts of knowledge required to understand environments. Performing mapping in the cloud not only allows the creation of maps but also the ability to understand them: By bringing computation close to the knowledge required to make sense of all of a robot&#8217;s sensor information, Cloud Robotics offers robots a very powerful way to understand the world around them. When working together, cloud computing frameworks like Rapyuta and online knowledge bases like RoboEarth can allow us to make robots that are both smart and inexpensive.</p>
<div style="clear: both;"></div>
<p><strong>Additional information</strong><br />
For further information, see:</p>
<ul>
<li><a href="http://rapyuta.org/mapping-ethz" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Technical details and tutorial for this setup </a> (available early July)</li>
<li><a href="http://vimeo.com/67734264" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Video of recent live Cloud Robotics Mapping demo at ROSCon 2013</a></li>
<li><a href="http://www.roboearth.org/iros2013" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Cloud Robotics Workshop at IROS 2013</a> in November, Tokyo</li>
<li><a href="http://rapyuta.org" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Homepage of the RoboEarth Cloud Engine (codename &#8220;Rapyuta&#8221;)</a></li>
<li><a href="http://www.roboearth.org" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">RoboEarth homepage</a></li>
</ul>
<p><strong>Questions?</strong><br />
Feel free to post in the comments below.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Breaking it down with the DanceBot: Getting started with electronics</title>
		<link>https://robohub.org/breaking-it-down-with-the-dancebot-getting-started-with-electronics/</link>
		
		<dc:creator><![CDATA[Raymond Oung]]></dc:creator>
		<pubDate>Sat, 12 Oct 2013 17:29:50 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[Robohub focus on Robotics Education]]></category>
		<category><![CDATA[tutorials]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=21000</guid>

					<description><![CDATA[The MP3 DanceBot is a little robot that dances to the beat of your music. It’s a project that began in the summer of 2011 to introduce students to the basics of electronics and robotics. Students learn some of the basic components found in modern day electronic appliances while constructing a robot, which they can [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The <a href="http://dancebots.org" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">MP3 DanceBot</a> is a little robot that dances to the beat of <em>your</em> music. It’s a project that began in the summer of 2011 to introduce students to the basics of electronics and robotics. Students learn some of the basic components found in modern day electronic appliances while constructing a robot, which they can take home and continue to play and develop with.<br />
<span id="more-21000"></span><br />
<a href="http://dancebots.org" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" class="aligncenter size-large wp-image-21001" alt="DanceBots_Girls_Soldering" src="http://robohub.org/wp-content/uploads/2013/10/DanceBots_Girls_Soldering-1024x678.jpg" width="584" height="386" srcset="https://robohub.org/wp-content/uploads/2013/10/DanceBots_Girls_Soldering-1024x678.jpg 1024w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Girls_Soldering-300x198.jpg 300w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Girls_Soldering-452x300.jpg 452w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Girls_Soldering.jpg 1280w" sizes="(max-width: 584px) 100vw, 584px" /></a></p>
<div style="clear: both;"></div>
<div class="minitext aligncenter">Two girls learn the basics of electronics while constructing a DanceBot</div>
<h2>Tutorial Structure</h2>
<p>The entire tutorial takes about 10 hours to complete and is tailored towards students aged 12 and above.</p>
<p>The project will be presented in six tutorials:</p>
<ol>
<li><strong>In the first tutorial (this one) we will be looking at how the DanceBot works, and will be covering how to read circuit diagrams.</strong></li>
<li>In the second tutorial, we will look at how to construct the DanceBot&#8217;s power supply.</li>
<li>In the third tutorial, we will be building the DanceBot&#8217;s audio amplifier.</li>
<li>In the fourth tutorial, we will build the DanceBot&#8217;s micro controller, digital line converter and H-bridge.</li>
<li>In the fifth tutorial, we will assemble the DanceBot&#8217;s LEDs.</li>
<li>And in the final part, we will look at the mechanical construction, and how to program your DanceBot to groove to your favorite tunes!</li>
</ol>
<p>But before we get started, let&#8217;s take a look at the final product:</p>
<p>http://www.youtube.com/watch?v=XDDs63Z69Tc</p>
<h2>Fun, funky and fabulous, but how does it work?</h2>
<p>The picture below is a rough sketch of what we&#8217;ll be building in these tutorials. You’ll see some common elements found on many robots.</p>
<p><img decoding="async" class="aligncenter size-medium wp-image-21022" alt="DanceBots_Schematic_Mechanical" src="http://robohub.org/wp-content/uploads/2013/10/DanceBots_Schematic_Mechanical-243x300.png" width="243" height="300" srcset="https://robohub.org/wp-content/uploads/2013/10/DanceBots_Schematic_Mechanical-243x300.png 243w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Schematic_Mechanical.png 812w" sizes="(max-width: 243px) 100vw, 243px" /><br />
Some of the major components that you’ll find in the robot are:</p>
<ol type="a">
<li type="a">Light Emitting Diodes (LEDs)</li>
<li type="a">A speaker</li>
<li type="a">Thick gauge wire</li>
<li type="a">Electronics</li>
<li type="a">A battery pack</li>
<li type="a">An MP3-player</li>
<li type="a">A base</li>
<li type="a">Two wheels</li>
<li type="a">Two motors</li>
</ol>
<p>The key to how all of this works is the music that is played by your MP3-player. There are generally two channels (i.e. left-channel and right-channel) for music that you play on your MP3-player. These channels send music to your left and right ear, respectively. In the third part of the tutorial series, using the provided software, you will program dance moves into your favorite song by replacing the right-channel of music with binary-encoded dance moves! When your MP3-player is plugged in and you play your encoded song, the left-channel goes directly to an audio amplifier and plays the music through the speaker, while the right-channel goes to a small computer, which interprets the digital information as motor and light commands.</p>
<img decoding="async" class="aligncenter size-full wp-image-21029" alt="DanceBots_Encoded_Music" src="http://robohub.org/wp-content/uploads/2013/10/DanceBots_Encoded_Music.jpg" width="692" height="367" srcset="https://robohub.org/wp-content/uploads/2013/10/DanceBots_Encoded_Music.jpg 692w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Encoded_Music-300x159.jpg 300w, https://robohub.org/wp-content/uploads/2013/10/DanceBots_Encoded_Music-500x265.jpg 500w" sizes="(max-width: 692px) 100vw, 692px" />
<div style="clear: both;"></div>
<div class="minitext aligncenter">The left channel of the newly encoded MP3 file is just your regular music, which is played through the DanceBot&#8217;s speaker. The right channel is replaced with digitally-encoded dance moves. These are sent to a small computer, which interprets them as motor and light commands that instruct your DanceBot how to rock around the clock!</div>
<h2>The electronic roadmap</h2>
<p>A schematic is a drawing that shows us how electronic components connect together and where they are placed on the printed circuit board (PCB, the picture below). If you, like most people, don&#8217;t have the ability to print a circuit board, <em>don&#8217;t worry</em>, prototyping boards will work just fine!</p>
<img decoding="async" class="aligncenter size-medium wp-image-21040" style="float: none; margin: auto;" alt="DanceBot_PCB" src="http://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-300x300.png" width="300" height="300" srcset="https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-300x300.png 300w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-290x290.png 290w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-100x100.png 100w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-120x120.png 120w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-32x32.png 32w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-64x64.png 64w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-96x96.png 96w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB-128x128.png 128w, https://robohub.org/wp-content/uploads/2013/10/DanceBot_PCB.png 653w" sizes="(max-width: 300px) 100vw, 300px" />
<div style="clear: both;"></div>
<div class="minitext aligncenter" style="float: none; margin: auto; text-align: center; width: 50%; min-width: 250px;">For the DanceBot&#8217;s workshop (taking place yearly in the Swiss town of Fiesch), we have circuit boards printed for the students. But don&#8217;t worry, prototyping boards will work just fine!</div>
<p>Before we start assembling the electronics, it&#8217;s important to know how to read the DanceBot&#8217;s schematic. You can download the schematics for this project <a href="http://robohub.org/_uploads/DanceBot_electrical_schematic.pdf" data-wpel-link="internal">here</a>. Below you will find a list of common elements, which you can identify on the schematic and on the PCB.</p>
<table style="width: 100%;">
<thead>
<tr>
<th><strong>Component Type</strong></th>
<th><strong>Measurement Unit</strong></th>
<th><strong>Symbol</strong></th>
<th><strong>Picture</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Resistor</td>
<td>Ohm (Ω)</td>
<td><img decoding="async" class="alignleft size-medium wp-image-21062" alt="symbol_resistor" src="http://robohub.org/wp-content/uploads/2013/10/symbol_resistor.png" width="39" height="145" /></td>
<td><img decoding="async" class="alignleft size-medium wp-image-21057" alt="part_resistor" src="http://robohub.org/wp-content/uploads/2013/10/part_resistor-33x300.png" width="18 height=" /></td>
</tr>
<tr>
<td>Capacitor (polarized)</td>
<td>Farad (F)</td>
<td><img decoding="async" class="alignleft size-medium wp-image-21058" alt="symbol_capacitor_polarized" src="http://robohub.org/wp-content/uploads/2013/10/symbol_capacitor_polarized.png" width="83" height="145" /></td>
<td><img decoding="async" class="alignleft size-medium wp-image-21051" alt="part_capacitor_polarized" src="http://robohub.org/wp-content/uploads/2013/10/part_capacitor_polarized.png" width="35" height="145" /></td>
</tr>
<tr>
<td>Capacitor (not polarized)</td>
<td>Farad (F)</td>
<td><img decoding="async" class="alignleft size-medium wp-image-21059" alt="symbol_capacitor" src="http://robohub.org/wp-content/uploads/2013/10/symbol_capacitor.png" width="70" height="145" /></td>
<td><img decoding="async" class="alignleft size-medium wp-image-21052" alt="part_capacitor" src="http://robohub.org/wp-content/uploads/2013/10/part_capacitor.png" width="43" height="145" /></td>
</tr>
<tr>
<td>Light Emitting Diode (LED)</td>
<td>&#8211;</td>
<td><img decoding="async" class="alignleft size-medium wp-image-21061" alt="symbol_LED" src="http://robohub.org/wp-content/uploads/2013/10/symbol_LED.png" width="83" height="145" /></td>
<td><img decoding="async" class="alignleft size-medium wp-image-21053" alt="part_LED" src="http://robohub.org/wp-content/uploads/2013/10/part_LED-73x300.png" width="30" height="120" /></td>
</tr>
</tbody>
</table>
<p>Now take a look at the schematic. Notice that beside each symbol in the schematic is a name (black) and a value (blue). The Name helps to identify the location of a part on the PCB (the picture above), while the value identifies the value of the part, as described in the table above.</p>
<img decoding="async" class="aligncenter size-full wp-image-21060" style="float: none; margin: auto;" alt="symbol_generic" src="http://robohub.org/wp-content/uploads/2013/10/symbol_generic.png" width="192" height="121" />
<div style="clear: both;"></div>
<div class="minitext aligncenter" style="float: none; margin: auto; text-align: center; width: 50%; min-width: 250px;">Each component on an electrical schematic typically has a name (black) and a value (blue). Here, the name is C1 and its value is 100 nano-farads (nF).</div>
<p>In addition to name and value, some parts have a <em>polarity</em>. Be careful! This means you need to put them in the right way, otherwise things won’t work and could get damaged! Diodes have a polarity, and in this project some capacitors have a polarity too. In the next tutorial, where you will assemble the DanceBot&#8217;s electronics, we will warn you of any components with a polarity.</p>
<h2>That&#8217;s it for now</h2>
<p>In the next two tutorials, we will put together the DanceBot&#8217;s electronics, and then build its body and program some funky moves. If you would like to follow along in future tutorials, you&#8217;ll need to organize a few things. You&#8217;ll need to:</p>
<ul>
<li><span style="color: #333333; font-style: normal; line-height: 24px;"><a href="http://robohub.org/_uploads/DanceBot_kit_components.xlsx" data-wpel-link="internal">Download the components list</a> and </span>buy the (few) components for the MP3 DanceBot Kit</li>
<li>Make the <a href="http://robohub.org/_uploads/DanceBot_base_schematic.pdf" data-wpel-link="internal">mechanical base template</a></li>
<li>Organise a soldering iron, solder, a hot glue gun, a multimeter and some side-cutters</li>
</ul>
<p>If you don&#8217;t know where to start with these steps, a friend with electronics experience will definitely be able to help!</p>
<p>Once you have organized the above, take some time to <a href="http://youtu.be/f95i88OSWB4" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">learn how to solder</a> and <a href="https://learn.sparkfun.com/tutorials/how-to-use-a-multimeter/continuity" target="_blank" data-wpel-link="external" rel="follow external noopener noreferrer">learn how to use a multimeter to check connections</a>.</p>
<p>http://www.youtube.com/watch?v=jLt_xbyYq8Y</p>
<h2>Stay tuned for the second tutorial!</h2>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My pathway to robotics</title>
		<link>https://robohub.org/my-pathway-to-robotics/</link>
		
		<dc:creator><![CDATA[Jaidyn Edwards]]></dc:creator>
		<pubDate>Wed, 25 Sep 2013 12:56:11 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[views]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[Robohub focus on Robotics Education]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=19742</guid>

					<description><![CDATA[My name is Jaidyn Edwards. I am eighteen years old and live in South Australia. For me, being interested in robotics was part of an evolutionary process built upon a few core interests I had as a child. My interest in mechanical things came about from the age of five. I distinctly remember carrying around [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>My name is Jaidyn Edwards. I am eighteen years old and live in South Australia. For me, being interested in robotics was part of an evolutionary process built upon a few core interests I had as a child.</p>
<p>My interest in mechanical things came about from the age of five. I distinctly remember carrying around a little sketchbook with a pencil everywhere I went. Whenever I had an idea for something, I would draw a picture in a page of the book, maybe writing a word or two on what it was.<span id="more-19742"></span> Most of the time these ideas were Rube Goldberg machines designed to do mundane tasks like watering plants or making hot drinks. As I got older and played around more with LEGO Technic, the complexity of these machines and the information I’d write about them increased. By the age of eight I was starting to become more interested in electronics. I loved designing mechanical machines, and with electronics I could make the machines I was designing much more complicated. I began to pull apart my toys due to an insatiable curiosity to see how they worked. My knowledge, of course, was very basic &#8211; the only electronic parts I knew of were the ones with a visual function, such as a DC motor or an LED. Even the sketchbooks were getting an electronic overhaul; I remember a few of them had the LCD clock faces on the front cover that I pulled out of my wrist watches.</p>
<div class="sprfocus4"><a class="sprfocusl" href="/robohub-focus-on-robotics-education/" data-wpel-link="internal"> </a></div>
<p>By the age of ten, the designs I was drawing in my sketchbook were more product designs. I designed phones, watches, cars, computers and even game consoles. The designs had all the key components diagrammed and labelled with labels like ‘CD reader’ and ‘Big board’ (Motherboard). By this stage the designing process became a key interest as I spent more time trying to make the designs look good so that I could show others my work.</p>
<p>I think the step between machines and product designs to robots was due to two key things that were happening during that time. The Star Wars episodes 1-3 were released during my early childhood and, when I was old enough, we hired the DVDs. I was instantly hooked and loved the idea of C3PO. The fact that Anakin made C3PO in order to help his mother specifically seemed to target me, it was like a sign that I needed to do the same.</p>
<p>The other reason I became interested in robotics was actually to do with my cousin. Every Thursday night I would go to his house and play computer games with him. One night I went there and he had this really cool game called Robot Arena 2, in which you design battle bots. The game let you customize everything from the body shape to the internal components and the weapons you used. I spent hours playing this game and absolutely loved it.</p>
<p>I borrowed all the books in my school library that had anything to do with robots (there weren’t many) and started to design robots.</p>
<p>At the age of fourteen my parents bought me the Lego Mindstorms NXT. The NXT was a Lego kit that let you build and program your own robot. I played with it for around two years and had great fun with it, but soon my hobby was going to take a turn for the worse.</p>
<p>I was in high school now and things were getting tough. I was starting to get really stressed at school and began to play video games as a release. Video games quickly took over my life. I would get home from school at 4PM and jump onto my computer to play. I would only get off for tea around 7PM and then get straight back on until I had to go to bed. It was a poisonous cycle and I regret those years of my life as I felt like I achieved nothing. My video game addiction meant I didn’t do any homework and spent no time revising what we covered in class. My grades began to slip and my gaming habit only became worse.</p>
<p>The cycle was only broken when it came to crunch time, Year 12, the final year of high school. I realised what I had gotten myself into and was determined to make it stop. I put my head down and worked like I never had before. My grades picked up dramatically in all subjects but Math. I studied every night and even finished assignments early. Sadly it was too late for Math, I was never good at it when I was young and the period of not doing homework absolutely destroyed any understanding I had on the subject.</p>
<p>During the mid-year break I wanted a new hobby, a hobby that would not only be something challenging like computer games, but also something that would actually benefit me. I remembered how much fun I had designing and making robots and decided it was time to go back to that.</p>
<p>I went online to research other ways I could make robots other than using Lego, that was when I heard of this thing called an Arduino. I didn’t really understand what it was but I bought one called an Arduino Uno. When it arrived in the post I looked up tutorials to see how I could get it to do things.</p>
<p>July 18 2012 I uploaded my <a href="http://www.youtube.com/watch?v=lEI5t9RkKFM" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">first video</a> to YouTube on Arduino. It wasn’t my first creation, but it was the first one that I had recorded. I recorded it on my phone and just uploaded it straight to YouTube. I had uploaded previous videos before on YouTube and thought it would be cool to show off what I had made.</p>
<p>From that point on I recorded all of my creations and uploaded them to YouTube, each time writing a little about them on my blog.</p>
<p>First I covered all the basics, such as making sounds, lighting LEDs in patterns and detecting light changes. When I had used up all the components that came in my starter kit I researched ways to make things move with the Arduino. I found these things called servos and read they were easy to use so I went on Ebay and bought a few of them cheap from Hong Kong. Once I had worked out how to use them I made my first <a href="http://www.youtube.com/watch?v=4eEyYw5Oyw4" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">little bot</a>. It was nothing complex and didn’t even have any autonomous capabilities. The robot simply moved the servos to certain positions to make the robot hop like a frog. Money was scarce so I made things out of whatever I could. The body was made of cardboard and the legs were the servo arms with heat shrink over the top to add grip.</p>
<p>I had experience with programming before and I was pretty good at computer software, so once I understood how I could make robots with the Arduino, I began to make them smarter and more complicated.</p>
<p>I became interested in program in particular called GlovePIE. GlovePIE is a program that allows you to program gamepads to act as a keyboard and mouse. I wrote a code that allowed me to have full control of my computer by simply talking, I called it <a href="http://www.youtube.com/watch?v=i5S1H1nogpI" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">JARVIS</a>.</p>
<p>After programming JARVIS I realised that I could use voice recognition to control the Arduino. To test this theory I made a <a href="http://www.youtube.com/watch?v=jA37zKD9dWM" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">humanoid robot</a> that was able to express emotions and communicate.</p>
<p>I also learned how to use infrared commands and turned my Arduino into a <a href="http://www.youtube.com/watch?v=NaQ5spfkeJA" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">voice controlled TV remote</a>.</p>
<p>It had only been two months but I absolutely loved making things with Arduino and couldn’t stop. Every time I wanted to learn something new I researched for hours on how to do it and watched so many YouTube videos I used up our internet allowance. I went from controlling a <a href="http://www.youtube.com/watch?v=NI3ynFfZQQc" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">remote control car</a> with my iPhone, to making a <a href="http://www.youtube.com/watch?v=1cEp7duDbNU" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">webcam</a> that tracked my every movement.</p>
<p>My creations were becoming more and more complicated and the views my videos were getting was increasing. I was getting asked so many questions a day I decided I would start doing tutorials. I was getting more comfortable with YouTube as the response to my creations was positive. I kept making tutorials covering all the basic things you needed to make robots with Arduino.</p>
<p>My robots were starting to get very complicated and had various autonomous capabilities. My friend from school had a big box full of old robot kit parts that he had collected as part of a magazine series, he knew I was interested in robotics so he kindly gave me all the parts. I salvaged everything and turned the brain of the <a href="http://www.youtube.com/watch?v=v5Jn7zMgJCk" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">bot</a> into an Arduino.</p>
<p>I began to understand more about the electronics inside robots and my knack for software proved invaluable in my first <a href="http://www.youtube.com/watch?v=A97rHRDbwVM" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">big robot project</a>.</p>
<p>I had five tutorials released by this stage and they were becoming very popular, with thousands of views. My old physics teacher, who I am good friends with, suggested I come into school and teach the students about robotics. I loved the idea and since then I have been volunteering every Friday during their lunchtime to teach the students about robotics and programming.</p>
<p>I kept making robots and developing new skills. My videos were getting a lot of views now and I had just over five hundred subscribers. I was now recording everything I did, whether it was about robots, making things to help with videos or just me going out to conventions.</p>
<p>I thought it was time now to start making videos focused purely on making robots. I made several videos on the matter and three Instructables on three different bots, <a href="http://www.instructables.com/id/Ben-A-Light-Following-Breadboard-Arduino-Robot/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Ben</a>, <a href="http://www.instructables.com/id/James-Your-first-Arduino-Robot/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">James</a> and <a href="http://www.instructables.com/id/Yogy-The-Arduino-Powered-Robot-Made-For-Kids/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Yogy</a>. I realised now that people were really starting to like my creations as my bots had started to win me prizes.</p>
<div id="attachment_19746" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.instructables.com/id/Yogy-The-Arduino-Powered-Robot-Made-For-Kids/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" aria-describedby="caption-attachment-19746" class="size-medium wp-image-19746" alt="yogy-robot-jaidyn-edwards" src="http://robohub.org/wp-content/uploads/2013/09/yogy-robot-jaidyn-edwards-300x167.jpg" width="300" height="167" srcset="https://robohub.org/wp-content/uploads/2013/09/yogy-robot-jaidyn-edwards-300x167.jpg 300w, https://robohub.org/wp-content/uploads/2013/09/yogy-robot-jaidyn-edwards.jpg 493w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-19746" class="wp-caption-text">Yogy the yoghurt-tub robot!</p></div>
<p style="text-align: center;">After spending a semester at the University of South Australia, studying a bachelor of Mechatronic Engineering, I decided to take a one year deferment. I choose to do this for several reasons. The first major reason was the job prospects. We’d often have people from the field come into lectures and talk with us about what they do. The one thing that I hated about what they all said was that none of them were hands on, they all sat behind a desk and worked for the ‘big man’. As I spent more time volunteering at the school I realized that perhaps teaching is the job for me. I will always love making robots, but sometimes I feel like sitting behind the desk just isn’t for me. Teaching seems to bring my love for robots and the enjoyment I get out of teaching together.</p>
<p>I now have over one thousand subscribers on YouTube and am starting to make of money off of it. Recently, a publishing agent contacted me asking whether I would be interested in producing a video course for them on the subject of ‘Making Arduino Powered Robots’. I agreed to their offer and am working with them now to produce the course.­</p>
<p>In the next few weeks I will make the transition from not knowing what to do with my life, to turning my forever interest in robotics into a job. I am going to be an author and also be helping a robotics kit creator in writing a teaching curriculum and helping with instructional videos for his kits. I feel like this is the start of a lifetime journey and I can’t wait to see where robotics takes me.</p>
<p>I don’t know where I am going, but I feel like I am surfing the wave of opportunities. I hope one day to be producing my own kits or perhaps working with the likes of MAKE promoting robotics for kids.</p>
<p>I would also like to mention one last thing. Without the people on <a href="http://LetsMakeRobots.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">LetsMakeRobots.com</a> I probably wouldn’t be where I am now. They are the people who have stood behind me, giving me support and help when I needed it, and have been my slingshot into having a robotics-based career. If you are interested in making your first robot, or have been making robots for a while, go to their site and join. LetsMakeRobots has a great community for both beginners and veterans alike, they have a step by step instructional on how to make your first bot and you can even show off your robotics projects.</p>
<p>I hope you can draw similarities between my story and yours. Remember, stories are ongoing and the more effort you put in, the better your story will be.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Making a WALL-E robot</title>
		<link>https://robohub.org/making-a-wall-e-robot/</link>
		
		<dc:creator><![CDATA[John Payne]]></dc:creator>
		<pubDate>Wed, 07 Aug 2013 21:58:29 +0000</pubDate>
				<category><![CDATA[education]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[entertainment]]></category>
		<category><![CDATA[video]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=18013</guid>

					<description><![CDATA[We take you now to sunny, southern California, where a small group of enthusiasts has constructed a very realistic, Arduino-based replica of Pixar&#8217;s WALL-E, entirely from custom-fabricated parts. The beloved Wall-E robot was just computer generated graphics in the Pixar movie, but fans have spent years trying to bring him to life. We visit Mike [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class=" "><iframe title="Making a Real Life-Size Wall-E Robot" width="500" height="281" src="https://www.youtube-nocookie.com/embed/7oVSaUWeKt0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p>We take you now to sunny, southern California, where a small group of enthusiasts has constructed a very realistic, Arduino-based replica of Pixar&#8217;s WALL-E, entirely from custom-fabricated parts.</p>
<blockquote><p>The beloved Wall-E robot was just computer generated graphics in the Pixar movie, but fans have spent years trying to bring him to life. We visit Mike McMaster&#8217;s workshop to see his incredible life-size Wall-E, a remote controlled robot that lives among an R2-D2 droid and other pets on Mike&#8217;s orange farm.</p></blockquote>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Campus Party Europe comes to the O2 in London September 2-7</title>
		<link>https://robohub.org/campus-party-europe-comes-to-the-o2-in-london-september-2-7/</link>
		
		<dc:creator><![CDATA[Robohub Editors]]></dc:creator>
		<pubDate>Fri, 12 Jul 2013 18:00:09 +0000</pubDate>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[events]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=16566</guid>

					<description><![CDATA[Up to 10,000 young geeks from across Europe will camp out in tents and sleeping bags for five days of intense 24/7 hacking, networking and elbow-rubbing with experts from some of the world&#8217;s most influential science and tech communities. The main goals of this hands-on event are to debate the biggest issues in digital technologies, and [&#8230;]]]></description>
										<content:encoded><![CDATA[<img decoding="async" width="715" height="467" class="aligncenter size-full wp-image-16574" alt="Mark_Surman_Campus_Party_Brazil_2013_Cristiano_SantAnna" src="http://robohub.org/wp-content/uploads/2013/07/Mark_Surman_Campus_Party_Brazil_2013_Cristiano_SantAnna2.jpg" srcset="https://robohub.org/wp-content/uploads/2013/07/Mark_Surman_Campus_Party_Brazil_2013_Cristiano_SantAnna2.jpg 715w, https://robohub.org/wp-content/uploads/2013/07/Mark_Surman_Campus_Party_Brazil_2013_Cristiano_SantAnna2-300x195.jpg 300w, https://robohub.org/wp-content/uploads/2013/07/Mark_Surman_Campus_Party_Brazil_2013_Cristiano_SantAnna2-459x300.jpg 459w" sizes="(max-width: 715px) 100vw, 715px" />
<div style="clear: both;"></div>
<p>Up to 10,000 young geeks from across Europe will camp out in tents and sleeping bags for five days of intense 24/7 hacking, networking and elbow-rubbing with experts from some of the world&#8217;s most influential science and tech communities. The main goals of this hands-on event are to debate the biggest issues in digital technologies, and to inspire a new generation of European techpreneurs. <a href="http://www.campus-party.eu/2013/index-cpeu.html" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Campus Party</a> runs September 2 -7 at the O2 in London.</p>
<p><span id="more-16566"></span></p>
<p>A massive digital skills marketplace will sit at the heart of the festival, surrounded by dedicated stages for robotics, start-ups, sci-tech, Big Data, social networking, and gaming. Lectures, workshops, competitions and hackathons take place simultaneously.</p>
<p>Two-person tents are set up in a secure area just a few minutes walk away from the tech stages, so that &#8220;Campuseros&#8221; who want a 24/7 experience can hack to their heart&#8217;s content.</p>
<div class="keep-aspect"><iframe title="CPBR4 - BBC in Campus Party" width="500" height="281" src="https://www.youtube-nocookie.com/embed/Z56ux4bySTM?start=143&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<div class="minitext">BBC News coverage of the 2012 Campus Party in Sao Paolo.</div>
<p>Ronan Dunne, CEO of Telefonica (the main sponsor of this year&#8217;s event) says: “Since 1997 tech fans across Europe and Latin America have flocked to Campus Party in the thousands to innovate, learn and engage with some of the biggest names in technology. This year the marketplace will feature a huge range of free support services, including advice on how to get your foot on the career ladder or how a business can succeed on Facebook. The event will help people hone and develop their digital skills whilst giving businesses of all sizes the opportunity to find the talent they need to grow.”</p>
<p>The festival will feature some of the world’s most inspirational science and technology communicators. Confirmed speakers include:</p>
<ul>
<li> <a href="http://www.media.mit.edu/people/sandy" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Alex &#8216;Sandy&#8217; Pentland</a>, foremost authority on organizational engineering, mobile information systems, and computational social science, and founder and director of the Human Dynamics group and the Media Lab Entrepreneurship Program at MIT.</li>
<li> <a href="http://en.wikipedia.org/wiki/Jon_Hall_(programmer)" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Jon &#8220;maddog&#8221; Hall</a>, pioneer in the world of commercial computing and a globally recognised authority on free and open source software, and 2006 winner of the UK Linux and Open Source Lifetime Recognition Award for his services to the open source community. His latest ambition is <a href="http://www.projectcaua.com.br/" rel="nofollow external noopener noreferrer" data-wpel-link="external" target="_blank">Project Cauã</a>.</li>
<li><a href="http://en.wikipedia.org/wiki/Nolan_Bushnell" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Nolan Bushnell</a>, founder of Atari Inc. and father of the modern video game industry. Bushnell created the world&#8217;s first technology incubator, the world&#8217;s first touchscreen menu ordering and entertainment system, the world&#8217;s first digital navigation system and the world&#8217;s first online ordering system.</li>
</ul>
<p>Find out more information or pre-register at <a href="http://www.campus-party.eu/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">http://www.campus-party.eu/</a>. Members of the Robohub community receive a 20% discount off Campus Party tickets. Businesses and educational organisations keen to be at the Digital Skills Marketplace can email <a href="mailto:campusparty@telefonica.com">campusparty@telefonica.com</a> for more information.</p>
<a href="http://www.campus-party.eu/2013/discount.html?cod=ROB" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer"><img decoding="async" style="width: 728px; height: 90px; border-radius: 8px;" alt="click" src="http://www.campus-party.eu/2013/tl_files/images/bannerImages/bCom.png" align="none" /></a>
<div style="clear: both;"></div>
<p>&nbsp;</p>
<p><em>[Photo credit: Christiano Sant&#8217;Anna]</em></p>
]]></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>VLAB: Drones – The commercial era takes off, but breaking the law is going to blow-up in our faces</title>
		<link>https://robohub.org/vlab-drones-the-commercial-era-takes-off-but-breaking-the-law-is-going-to-blow-up-in-our-faces/</link>
		
		<dc:creator><![CDATA[Robert Morris]]></dc:creator>
		<pubDate>Tue, 26 Mar 2013 06:07:12 +0000</pubDate>
				<category><![CDATA[opinions]]></category>
		<category><![CDATA[3D Robotics]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[Chris Anderson]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[FAA]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[military]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[social robotics]]></category>
		<category><![CDATA[Stanford]]></category>
		<category><![CDATA[UAS]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robocosmist.com/?p=406</guid>

					<description><![CDATA[Last Tuesday, I had the pleasure of attending VLAB: Drones &#8211; The Commercial Era Takes Off at Stanford GSB.   The event was truly fantastic and the panel was amazing.  The moderator was Chris Anderson, former editor at Wired and CEO of 3D rob...]]></description>
										<content:encoded><![CDATA[<p>Last Tuesday I had the pleasure of attending <a href="http://www.vlab.org/article.html?aid=463" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">VLAB: Drones – The Commercial Era Takes Off</a> at Stanford GSB. The event was truly fantastic and the panel was amazing. The moderator was <a href="http://about.me/andersonchris" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Chris Anderson</a>, former editor at Wired and CEO of 3D robotics. I’m really struck by how much he has become the face of the commercial drone industry. <span id="more-11421"></span>From his appearances on NPR and print media, he’s probably the most recognized drone advocate, and he makes some very powerful points. Fuelled by Moore’s Law and the cellphone industry supply chain,the drone/robotic era is coming and, though we’ve got to prepare for it, it doesn’t have to be scary.</p>
<p><img decoding="async" class="wp-image-409 alignleft" title="VLAB Drones Panel" alt="VLAB Drones Panel at Stanford GSB March 19th, 2013" src="http://robocosmist.files.wordpress.com/2013/03/vlab-drones-cropped1.jpg?w=420&amp;h=260" width="336" height="208" />In particular, Anderson promoted one idea that deserves the attention of the drone industry: that by operating in a legal &#8220;grey area&#8221; (read: deliberately violating regulations that are perceived as unreasonable and unenforceable) drone enthusiasts will force regulatory movement, and this is a good thing. Anderson gave two examples of circumstances that challenge current regulations: Lego Mindstorms being classified by regulators as a cruise missile guidance system (and hence violating export controls), and flying drones in contravention to the FAA regulations governing the use of unmanned aircraft.</p>
<p>Technologists in general (and Silicon Valley in particular) take a dim view of regulations promulgated under the old order (e.g. <a style="font-style: normal; line-height: 24px;" href="http://techcrunch.com/2013/03/17/uber-lyft-sidecar-and-the-so-called-safety-problem/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Lyft, Uber</a>, <a style="font-style: normal; line-height: 24px;" href="http://techcrunch.com/2012/11/09/airbnb-research-data-dump/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">AirBnB</a>), and it&#8217;s true that some aspects of the <a href="http://www.faa.gov/about/initiatives/uas/reg/media/frnotice_uas.pdf" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">FAA regulations</a> are out-of-date and no longer reasonable. But while I’m not completely outraged when technologists upend the status quo to make something new (and improved), this attitude works better in industries that don&#8217;t involve fast-flying heavy objects.</p>
<p>Let&#8217;s remember that the FAA’s primary goal is to keep people from getting killed by aircraft. When it comes to aircraft regulation – manned or unmanned – <a href="http://en.wikipedia.org/wiki/Colgan_Air_Flight_3407" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">people on the ground</a> are the main beneficiaries. We are not talking about regulating a relatively low-risk activity (like renting your room out with AirBnB); we are talking about regulating heavy objects hurtling over the heads of people who haven’t consented to be part of the experiment.</p>
<div class="calloutr">If we follow the path of breaking all the rules, someone is going to accidentally kill a sympathetic bystander. Beyond the personal tragedy this will create, such an accident will set back our industry and the benefits we can provide to society by a decade.</div>
<p>Our society rightly asks the government to ensure that activities that impose risk on others — especially those who did not consent — be minimized. We need to update our regulations, but aircraft operators need to respect the letter and spirit of the law as it stands.  What standards do we have if not the law? If we follow the path of breaking all the rules, someone is going to accidentally kill a sympathetic bystander. Beyond the personal tragedy this will create, such an accident will set back our industry and the benefits we can provide to society by a decade.</p>
<p>In Afghanistan, one of my planes almost smacked into a helicopter, but it was the helicopter – not the drone –  that had come, without clearance or radio calls, into an active artillery firing ROZ (restricted operating zone: this is an airspace control measure that makes sure that aircraft don’t run into artillery fire).  Similarly, the <a href="http://www.flightglobal.com/news/articles/auvsi-rq-7-likely-not-to-blame-for-c-130-collision-360993/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">first full-sized drone and manned aircraft collision</a> involved a C-130 violating airspace control measures around an airfield.</p>
<p>Pilots are not infallible and often break the rules. The best drone operators have a different safety culture: one where there is proper approval for everything, because every move will be recorded and second guessed. Military drone safety culture is a great example of this approach. I hope this culture will permeate the civilian unmanned aircraft community as well.</p>
<div class="calloutl">When we, as a civilian unmanned aircraft industry, can be counted on as strong safety partner, and when people in general and commercial aviation are learning safety lessons from us, there will be no more foot dragging. We will get our airspace and the drone revolution will finally be here.</div>
<p>Although breaking the rules might move us toward our unmanned enabled future a little bit faster, this is an incredibly dangerous path for our industry and our bystanders.  The closing thought of VLAB Drones was that unmanned aircraft will eventually make the airspace safer for all users.  The panel wondered if this was hyperbole, but it is inevitable when drones have a strong safety culture. Conversely, as long as we are the irresponsible jerks of the air, safety conscious regulators like the FAA will be unsupportive of us flying.  When we, as a civilian unmanned aircraft industry, can be counted on as strong safety partner, and when people in general and commercial aviation are learning safety lessons from us, there will be no more foot dragging. We will get our airspace and the drone revolution will finally be here.</p>
<p>In the meantime: seriously, don’t do anything that could kill anyone, please. Especially if it is illegal. You will ruin it for the rest of us.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chris Anderson, Marc Raibert and Steven Cousins at Engadget Expand Event</title>
		<link>https://robohub.org/chris-anderson-marc-raibert-and-steven-cousins-at-engadget-expand-event/</link>
		
		<dc:creator><![CDATA[Frank Tobe]]></dc:creator>
		<pubDate>Tue, 19 Mar 2013 20:10:00 +0000</pubDate>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[views]]></category>
		<category><![CDATA[Chris Anderson]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[DIY Drones]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<category><![CDATA[Willow Garage]]></category>
		<guid isPermaLink="false">http://robohub.org/?guid=e0c6462a36273403142c38760f4a0eb0</guid>

					<description><![CDATA["Moore's Law has never moved faster than is moving inside the phone you've already got in your pocket. The pace of development and the price performance curve is moving faster in smartphones than it's ever moved in history and we're taking advantage by...]]></description>
										<content:encoded><![CDATA[<img decoding="async" style="border: 0px;" alt="" src="http://2.bp.blogspot.com/-73QLL9rt8B4/UUi6JaGvu9I/AAAAAAAACy4/lLR2ysSLizc/s400/Chris+Anderson+slide.png" width="400" height="300" border="0" />
<div style="clear: both;"></div>
<p>&#8220;Moore&#8217;s Law has never moved faster than is moving inside the phone you&#8217;ve already got in your pocket. The pace of development and the price performance curve is moving faster in smartphones than it&#8217;s ever moved in history and we&#8217;re taking advantage by drafting off this momentum and by employing military-grade technologies at toy prices,&#8221; said Chris Anderson at last weekend&#8217;s Engadget Expand event at Fort Mason, San Francisco.<span id="more-11171"></span></p>
<p>The military has deployed 7,500 aerial drones; Chris Anderson&#8217;s company, DIY Drones, has got 40,000. Every sort of copter and plane, as shown on the diagram below, is included in the universal autopilot chipset that DIY Drones sells (for $129). And this chip also includes features like geofencing, follow me, and fly by wire.</p>
<div style="clear: both;"></div>
<img decoding="async" style="border: 0px;" alt="" src="http://1.bp.blogspot.com/-4PdAoFZZlBY/UUi8yQDdtHI/AAAAAAAACzA/6qF1ksSIXCQ/s400/chris+anderson+slide+2.png" width="400" height="317" border="0" />
<div style="clear: both;"></div>
<p>Anderson&#8217;s fast-paced presentation is well worth watching particularly when he discusses how drones can be used for precision agriculture right now, today:</p>
<p><iframe id="viddler-22a1fd9a" src="http://www.viddler.com/embed/22a1fd9a/?f=1&amp;offset=0&amp;autoplay=0&amp;secret=48502552&amp;disablebranding=0" height="349" width="545" frameborder="0"></iframe></p>
<p>Chris was just part of a really interesting 3-person panel where the other two presenters were Marc Raibert from Boston Dynamics and Steven Cousins from Willow Garage. Marc Raibert is CEO of Boston Dynamics (of Big Dog and Cheeta fame) and described how and why Boston Dynamics builds robots designed to work in rough terrain. He emphasized what Chris said earlier, that military grade technology was moving to the robotics industry at toy prices subsidized by DARPA and smartphone buyers.</p>
<p><iframe id="viddler-9545beea" src="http://www.viddler.com/embed/9545beea/?f=1&amp;offset=0&amp;autoplay=0&amp;secret=68225679&amp;disablebranding=0" height="349" width="545" frameborder="0"></iframe></p>
<p>Amongst other interesting things Cousins discussed, he also answered the question about what is going to happen at Willow Garage now that the funding has stopped.</p>
<p><iframe id="viddler-a5a151fb" src="http://www.viddler.com/embed/a5a151fb/?f=1&amp;offset=0&amp;autoplay=0&amp;secret=72459765&amp;disablebranding=0" height="349" width="545" frameborder="0"></iframe></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MotherboardTV documentary on drones</title>
		<link>https://robohub.org/motherboardtv-documentary-on-drones/</link>
		
		<dc:creator><![CDATA[John Payne]]></dc:creator>
		<pubDate>Sat, 09 Feb 2013 18:35:53 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[ethics]]></category>
		<category><![CDATA[military]]></category>
		<category><![CDATA[UAVs & drones]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=8448</guid>

					<description><![CDATA[This video, by MotherboardTV, was posted on YouTube in early December, but, at just over 50,000 views, it hasn&#8217;t yet reached the audience it deserves. Not knowing much about drones to begin with, the MotherboardTV team started out by talking with P.W. Singer, author of &#8220;Wired for War&#8221;. From there, they flew to Amman, Jordan, [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class=" "><iframe title="Drone On: the Future of UAV Over the US" width="500" height="281" src="https://www.youtube-nocookie.com/embed/kwkxx84wXNo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p></p>
<p><a href="http://youtu.be/kwkxx84wXNo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">This video</a>, by <a href&quot;http://motherboard.vice.com/en_us&quot;="" data-wpel-link="internal">MotherboardTV</a>, was posted on YouTube in early December, but, at just over 50,000 views, it hasn&#8217;t yet reached the audience it deserves.</p>
<p>Not knowing much about drones to begin with, the MotherboardTV team started out by talking with <a href="http://www.pwsinger.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">P.W. Singer</a>, author of &#8220;Wired for War&#8221;.  From there, they flew to Amman, Jordan, to attend a military trade show, where they met Chris Barter, <a href="http://www.dtwc.com/datron-scout-provides-real-time-video-and-photography-assist-recovery-efforts" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Scout Program Manager at Datron</a>.  Accepting his invitation to vists the Datron campus in San Diego, they got an opportunity to fly the Scout for themselves.  (The Scout is produced by Canadian firm <a href="http://www.aeryon.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">Aeryon Labs</a> and marketed by Datron.)</p>
<p>While in Southern California, they also stopped by <a href="http://store.diydrones.com" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">3D Robotics</a> for a chat with Chris Anderson and a couple of their engineers, filling out the picture with the DIY perspective.</p>
<p>All in all, it&#8217;s very well done.  You may find yourself subscribing to <a href="http://www.youtube.com/user/MotherboardTV" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">MotherboardTV&#8217;s YouTube channel</a>.</p>
<p><a href="http://youtu.be/kwkxx84wXNo" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">View on YouTube</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SparkFun&#8217;s headlong, patent-free approach to product design &#124; Wired Design</title>
		<link>https://robohub.org/sparkfuns-headlong-patent-free-approach-to-product-design-wired-design/</link>
		
		<dc:creator><![CDATA[John Payne]]></dc:creator>
		<pubDate>Wed, 23 Jan 2013 06:49:37 +0000</pubDate>
				<category><![CDATA[news]]></category>
		<category><![CDATA[DIY]]></category>
		<guid isPermaLink="false">http://robohub.org/?p=7890</guid>

					<description><![CDATA[“Electronics supplier SparkFun designs dozens of products a year and they haven&#8217;t patented a single one. It&#8217;s worked out pretty well so far.” See full article on wired.com]]></description>
										<content:encoded><![CDATA[<a href="http://robohub.org/sparkfuns-headlong-patent-free-approach-to-product-design-wired-design/sparkfun10thanniversary/" rel="attachment wp-att-7893" data-wpel-link="internal"><img decoding="async" src="http://robohub.org/wp-content/uploads/2013/01/SparkFun10thAnniversary-300x200.jpg" alt="SparkFun10thAnniversary" width="300" height="200" class="alignnone size-medium wp-image-7893" srcset="https://robohub.org/wp-content/uploads/2013/01/SparkFun10thAnniversary-300x200.jpg 300w, https://robohub.org/wp-content/uploads/2013/01/SparkFun10thAnniversary-449x300.jpg 449w, https://robohub.org/wp-content/uploads/2013/01/SparkFun10thAnniversary.jpg 660w" sizes="(max-width: 300px) 100vw, 300px" /></a>
<p>“Electronics supplier SparkFun designs dozens of products a year and they haven&#8217;t patented a single one. It&#8217;s worked out pretty well so far.”</p>
<p>See <a href="http://www.wired.com/design/2013/01/sparkfun-10-years/" data-wpel-link="external" target="_blank" rel="follow external noopener noreferrer">full article on wired.com</p>
<p></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>
	</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-06 23:56:27 by W3 Total Cache
-->