<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ robotics - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ robotics - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 02 Jun 2026 21:43:16 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/robotics/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ From freeCodeCamp to CTO with Robotics Engineer Peggy Wang [Podcast #159] ]]>
                </title>
                <description>
                    <![CDATA[ On this week's episode of the podcast, I interview Peggy Wang. She used freeCodeCamp to learn coding. She then worked in Big Tech as a robotics engineer. And now she's cofounder and CTO of Ego AI, a Y-Combinator-backed startup that builds human-like ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/from-freecodecamp-to-cto-with-robotics-engineer-peggy-wang-podcast-159/</link>
                <guid isPermaLink="false">67a689db1b3d34453f8da64a</guid>
                
                    <category>
                        <![CDATA[ podcast ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Software Engineering ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Fri, 07 Feb 2025 22:31:55 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1738967132406/6ab8c7bb-397a-42b3-bb91-ff9c4842ead0.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>On this week's episode of the podcast, I interview Peggy Wang. She used freeCodeCamp to learn coding. She then worked in Big Tech as a robotics engineer. And now she's cofounder and CTO of Ego AI, a Y-Combinator-backed startup that builds human-like agents for video games.</p>
<p>We talk about:</p>
<ul>
<li><p>How she grew up a first generation American and public school kid in Milwaukee</p>
</li>
<li><p>How her love of robotics helped her get into Stanford</p>
</li>
<li><p>How freeCodeCamp served as a key resource to build her developer chops</p>
</li>
<li><p>The near future of humanoid robots, self-driving cars, and human-like AI agents in games</p>
</li>
</ul>
<p>Support for this podcast comes from a grant from Wix Studio. Wix Studio provides developers tools to rapidly build websites with everything out-of-the-box, then extend, replace, and break boundaries with code. Learn more at <a target="_blank" href="https://wixstudio.com">https://wixstudio.com</a>.</p>
<p>Support also comes from the 11,043 kind folks who support freeCodeCamp through a monthly donation. Join these kind folks and help our mission by going to <a target="_blank" href="https://www.freecodecamp.org/donate">https://www.freecodecamp.org/donate</a></p>
<p>You can watch the interview on YouTube.</p>
<p>Or you can listen to the podcast in Apple Podcasts, Spotify, or your favorite podcast app. Be sure to follow the freeCodeCamp Podcast there so you'll get new episodes each Friday.</p>
<p>Links we talk about during our conversation:</p>
<ul>
<li><p>Peggy's GameDev company, Ego AI: <a target="_blank" href="https://www.egoai.com/">https://www.egoai.com/</a></p>
</li>
<li><p>Quincy's interview with hardware engineer Bruno Haid that he mentions toward the end of this episode: <a target="_blank" href="https://www.freecodecamp.org/news/podcast-hardware-engineering-bruno-haid/">https://www.freecodecamp.org/news/podcast-hardware-engineering-bruno-haid/</a></p>
</li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Robotic Influencers of our Future: Experimenting With a Minecraft-playing, Twitch-streaming Robot ]]>
                </title>
                <description>
                    <![CDATA[ By Minja Axelsson In this article, I'll discuss how we reached young audiences by combining robotics with e-sports. What on Earth? Ever heard of anything like it before? Me neither. The robot was created as part of Futurice’s project with Yle, the na... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-robotic-influencers-of-our-future-a-minecraft-playing-twitch-streaming-robot/</link>
                <guid isPermaLink="false">66d460423a8352b6c5a2aaae</guid>
                
                    <category>
                        <![CDATA[ gaming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ minecraft ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                    <category>
                        <![CDATA[ streaming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Twitch ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 01 Oct 2019 21:26:15 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/10/twitchrobot.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Minja Axelsson</p>
<p>In this article, I'll discuss how we reached young audiences by combining robotics with e-sports.</p>
<h2 id="heading-what-on-earth">What on Earth?</h2>
<p>Ever heard of anything like it before? Me neither. The robot was created as part of <a target="_blank" href="https://www.futurice.com/">Futurice</a>’s project with <a target="_blank" href="https://yle.fi/">Yle</a>, the national broadcast company of Finland. </p>
<p>Yle produces content for TV, radio, and the web. It has a broad reach of older audiences, but has had trouble reaching younger ones. The goal of this project was to use new technology to reach young audiences — specifically teenagers.</p>
<p>Yle’s content has traditionally been non-participatory: the performers perform, and the audience watches. However, younger audiences generally view content that is more participatory, such as YouTube videos or streams. </p>
<p>We wanted to create participatory content — the performer should interact with their audience. Yle’s journalists specialized in teenage audiences pointed out that gaming and e-sports are popular content. We realized that gaming was the perfect context for this: the audience could play together with the performer. We wanted to explore what an entertainer, or even influencer of the future could look like. So why not create a streaming robot gamer?</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_QW08nV9GgKS589PJ.png" alt="Image" width="600" height="400" loading="lazy">
<em>Yle’s journalists and Futurice’s roboticists coming up with the idea of a robot gamer</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_XdFOgvs4DhZVaHnW.png" alt="Image" width="600" height="400" loading="lazy">
<em>First drafts</em></p>
<h2 id="heading-what-was-this-robot-like">What Was This Robot Like?</h2>
<p>We chose two games for the robot to play: Flappy Bird and Minecraft.</p>
<p>Flappy Bird was a cult game that had a brief period of extreme popularity in 2014. We chose Flappy Bird because the mechanisms of the game are simple, and allowed for the game to be played with machine learning. We wanted to try a <a target="_blank" href="https://xviniette.github.io/FlappyLearning/">neuroevolution algorithm</a>, which evolved new birds into the game based on which birds did best in the previous generation. This way we could see how the audience reacted when a computer was playing the game.</p>
<p>We chose Minecraft for its communal features, which allow interaction between players. Players can co-operate or fight each other, trade with each other, and chat with each other. They can “grief” each other — i.e. be a nuisance. Players can also mine materials, and turn them into items, or even build cities. They can store precious things, farm the land, herd animals, and fight monsters. </p>
<p>Minecraft also has a material called redstone, which players can use to build logic. Effectively, players can build an entire computer inside of Minecraft. Poetic, eh?</p>
<p>For playing Minecraft, we decided that a human should control the robot. The game is complicated, and having authentic interactions with other players would require a human on the other end.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_zNxCX_zKJ3ikRM-y.png" alt="Image" width="600" height="400" loading="lazy">
<em>Flappy Bird and the robot</em></p>
<p>Our team of Yle’s journalists and Futurice roboticists defined some clear advantages for using a robot in this context:</p>
<ul>
<li>A robot is tireless — it can play forever, and provide content 24/7. It’s an ideal streamer.</li>
<li>A robot can be gender neutral. Gamers and gaming audiences are typically male, but a gender neutral robot could potentially attract more diverse audiences.</li>
<li>A robot can reflect gamers’ behaviour, stirring emotions. Gaming culture is often aggressive. The robot could be aggressive in turn, making gamers reflect on their own behaviour.</li>
<li>A robot can interact within the game and chat simultaneously. Humans are limited to one output, a robot can have several.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/1_-eTZqndK5kdFckQ5-lXpMg.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Testing our streaming equipment and having problems with interference from the robot’s face screen.</em></p>
<p>We decided on a six hour gaming session, alternating between Minecraft and Flappy Bird. To nail down the user experience for the session, we defined guidelines for our design of the robot:</p>
<ul>
<li>Experimental user experience — the user should be able to explore within the interaction with the robot.</li>
<li>Streamers are usually strong characters. The robot is a character with a strong personality.</li>
<li>The robot can cause “WTF?” reactions in players. We wanted the experience to be memorable, rather than bland.</li>
<li>The culture and space of online gaming is unique, and should be designed for.</li>
</ul>
<p>Based on these guidelines, we created the character IQ_201. IQ_201 is based on aggressive online gamers that are convinced of their own superior intelligence (see <a target="_blank" href="https://knowyourmeme.com/memes/200-iq">this meme about having an IQ over 200</a>). The robot would be rude and reactive, meant to get a reaction out of adolescents interacting with it.</p>
<p>Before implementation, the team also wanted to take into account some ethical considerations:</p>
<ul>
<li>Transparency about how the robot is operated is needed. If this robot was going to be put into production, users should be able to find information on how it works.</li>
<li>The robot should treat all the players the same. This was also part of the decision to make the robot appear gender neutral. And due to the sometimes angry, hateful, even racist or sexist culture of gaming, we needed to design the robot’s personality carefully. It could be out-there, even rude, but never hateful. We didn’t want any heated gaming moments.</li>
<li>The robot should be rude, but not too over-the-top.</li>
<li>The chat needed to be moderated. As stated, gaming culture can be toxic. We wanted to keep a careful eye on both the Minecraft and Twitch chats, to ensure no shenanigans would go on.</li>
</ul>
<p>To fulfill all these requirements, we selected the <a target="_blank" href="https://www.furhatrobotics.com/">Furhat robot</a>. The Furhat robot had a relatively easy-to-use teleoperation interface, which allowed for the user to input text to be turned into the robot’s speech, as well as perform gestures at the click of a button.</p>
<h2 id="heading-flowers-and-violence">Flowers and Violence</h2>
<p>We had a 6 hour stream, starting at 2pm and ending at 8pm. We alternated between games: 2-3pm was Flappy Bird, 3-5pm Minecraft, 5-6pm Flappy Bird, then 6-8pm Minecraft again. This schedule allowed the robot operators playing Minecraft to have a much-needed break in the middle.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/twitchrobot-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Our robot</em></p>
<p>In the beginning, a few people joined. Gradually, we gained more and more people. We reached our peak at 4:20 — 49 simultaneous viewers on Twitch. Overall, we had 431 unique viewers. In Minecraft, there were around 30 active players. Considering how minimal our advertising was (one forum post and a few tweets), we were pleasantly surprised by the turnout.</p>
<p>The Minecraft sessions were directed by two robot operators (myself and another Minja). The other Minja played Minecraft, and I operated the robot’s voice and gestures. A third person was answering messages on chat.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/8kKPoYx7rMs" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>Minecraft was overwhelming. The robot’s provocative character provoked teenagers into repeatedly killing it. After fleeing to the mountains to be with the llamas a couple of times and being killed yet again, we modified the robot’s behaviour to be more friendly. We wanted to create more constructive interactions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_pMMw-X8ZYwIOH_cU.png" alt="Image" width="600" height="400" loading="lazy">
<em>Two Minjas as robot operators</em></p>
<p>Toward the end of the second Minecraft stream, teenagers were cooperating with the robot. They protected it from the few aggressive players that were left, and gave it gifts such as flowers. Some even complimented the robot directly, to make it happy. The players started following the robot, agreeing to cooperate when it initiated building a lighthouse. They also built a house, and captured and named a llama: IQ_201 Junior.</p>
<p>There were two clear factions in the game: some were intent to kill the robot throughout the entire game, and some protected it throughout. Some became more comfortable with the robot as the stream went on, switching sides. Either way, the robot aroused strong emotions. Teenagers sought out genuine interaction with it. No-one ignored the robot, or was bored.</p>
<p>Discussions about how the robot worked were had throughout the stream. No-one asked the robot itself though, maybe out of respect or fear of annoying it. Discussions focused on whether the robot was “real”, i.e. whether it was truly automatic, or a human was operating it. Was it typing with actual physical hands? Or had it “hacked into” the game and was playing via code?</p>
<h2 id="heading-i-will-miss-you-robot">“I Will Miss You Robot!”</h2>
<p>16 people responded to our survey afterward. 80% of players were under 18, most were 13 to 15-year-olds. 80% of players interacted with the robot. This was extremely positive, we succeeded in making a robot that was compelling to users. 75% of players rated the robot as 3 or above, out of 5.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_7k1TlGnl986zyBKQ.png" alt="Image" width="600" height="400" loading="lazy">
<em>Viewers over time</em></p>
<p>We collected comments from the players from the survey, as well as the Minecraft game chat. They are translated from Finnish, and reflect some of the thoughts our players had on the robot.</p>
<h4 id="heading-the-critical-first">The critical first:</h4>
<p><strong>“It was pretty fun and cool. But it somehow felt like a set-up.” [Referring to the robot possibly having a human operator]</strong></p>
<p>A lot of players were wondering how the robot actually worked. This comment brings us back to the ethical consideration we talked about earlier: transparency about how the robot was operated. </p>
<p>Though we intended to be transparent at first, we decided to not inform users of the robot’s teleoperated nature for this first pilot. We made this choice because we wanted to keep the “suspension of disbelief” of the user active, meaning that we wanted the participants to play along with the fact they were talking to a “real robot” (an autonomous robot) (Duffy &amp; Zawieska, 2012). </p>
<p>The negative response we received regarding the unclarity on the robot’s functioning made it clear to us that if this pilot were extended, it is highly important to be more transparent. It is possible to hold suspension of disbelief and be honest of the robot’s operation simultaneously (we do all know that television shows are not reality, after all).</p>
<p><strong>“The robot was a bit simple in certain things, and sometimes talked meanly to people, and was condescending. This was a bit anxiety inducing… Was this intentional?”</strong></p>
<p>Some players felt that the robot’s rude behaviour crossed the boundary into condescending. They wished that the robot would be more considerate in the future. This indicates that even a robot can hurt feelings. In future versions, making IQ_201 more empathic, and less focused on the superiority of robots over humans, could have positive results.</p>
<p><strong>“The robot looked a bit blue in the face, and its voice was a bit weird.”</strong></p>
<p>Two teenagers did not enjoy the robot’s appearance and voice. One remarked especially about its blue face, asking why we did not make it “normal colored”. </p>
<p>This may have been due to the robot falling into the “uncanny valley” for these players. Uncanny valley is a theory developed by robotics researcher Masahiro Mori (Mori et al., 2012). His theory posits that as the appearance of a robot approaches human-likeness, there is a dip when the appearance gets very close. Zombies and corpses fall into this valley. </p>
<p>To get rid of this effect with our robot, it could be wise to alter the robot’s appearance and voice in future solutions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/10/0_g5B15D6hFSmG0bbi.png" alt="Image" width="600" height="400" loading="lazy">
<em>The Uncanny Valley by Masahiro Mori. Wikimedia commons.</em></p>
<h4 id="heading-and-then-the-positive">And then the positive:</h4>
<p><strong>“It was really interesting gaming with the robot. :) Hopefully in the future we can have this type of event again. :)”</strong></p>
<p>The majority of the teenagers enjoyed playing with the robot, and watching the stream. Their feedback complimented the robot’s sense of humour, and its playing skills. A continuation of the pilot would surely find an interested audience.</p>
<p><strong>[to the robot] “Some people have trouble with new things. In this case, these players are having trouble with a robot, since you’re new.”</strong></p>
<p>This player consoled the robot in-game, as other players were giving it a hard time by continuously killing it. This comment was moving: the player felt bad for the robot, and thought the robot might feel bad as well, attempting to change that. This is a clear empathic response toward the robot.</p>
<p><strong>[to the robot] “I will miss you robot!”</strong></p>
<p>A few players gave the robot heartfelt goodbyes when it left Minecraft. These players found the robot approachable, and even formed an emotional bond with it. This means we succeeded in creating a compelling character, even during what was only a 6 hour stream. </p>
<p>For future builds of the robot, the players should be informed how the robot operates. This could help them calibrate an appropriate level of emotional bond to the robot.</p>
<h2 id="heading-are-robotic-influencers-our-future">Are Robotic Influencers Our Future?</h2>
<p>Players took an active interest in the robot. They approached it, interacted with it, and formed opinions on it. The robot also provoked emotional reactions — both positive and negative. Some participants really loved the robot and wished for more interaction in the future, and some were heavily critical. </p>
<p>This indicates that robot influencers have the capacity to affect our emotions — whether this capacity will ever reach the level of human entertainers, I do not know. Whether that is desirable, I also do not know.</p>
<p>What positively surprised me was that the young user base of the robot were media literate: they critically examined the robot’s mode of operation. The players had a good idea of what is possible with AI today, and what is not. They were not easily duped.</p>
<p>This makes me hopeful for our future, whether it contains robotic entertainers or not. When viewers remain critical, they can understand that robots are machines with no actual emotional capacity, even if viewers do choose to suspend disbelief. </p>
<p>Interacting with the robot can be though of as a form of <a target="_blank" href="https://en.wikipedia.org/wiki/Parasocial_interaction">parasocial interaction</a> for the viewer — where the viewer may feel that their relationship with the robot is close — even though it is not truly reciprocal. This in itself is not necessarily harmful, as long as we are honest about what the relationship truly is. We should understand that robots are putting on a performance to elicit emotions in us — like human entertainers do</p>
<p><a target="_blank" href="https://areena.yle.fi/1-50168989?source=post_page-----702735f678a8----------------------"><strong>A video about the project.</strong></a></p>
<p>First published on <a target="_blank" href="https://towardsdatascience.com/the-robotic-influencers-of-our-future-a-minecraft-playing-twitch-streaming-robot-702735f678a8">Towards Data Science.</a></p>
<hr>
<p><em>Duffy, B. R., &amp; Zawieska, K. (2012, September). Suspension of disbelief in social robotics. In 2012 IEEE RO-MAN: The 21st IEEE International Symposium on Robot and Human Interactive Communication (pp. 484–489). IEEE.</em></p>
<p><em>Mori, M., MacDorman, K. F., &amp; Kageki, N. (2012). The uncanny valley: The original essay by Masahiro Mori. IEEE Spectrum, 98–100.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ I helped build a robot that teaches sign language to children with Autism. This is what I learned. ]]>
                </title>
                <description>
                    <![CDATA[ By Minja Axelsson In Spring 2018, I conducted a pilot study of a robot teaching sign language to children with autism. This blog post reflects on the results of the study, and our team’s process of designing the robot.  Robotics, Sign Language, and C... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/could-robots-teach-sign-language-to-children-with-autism/</link>
                <guid isPermaLink="false">66d46040e39d8b5612bc0dc2</guid>
                
                    <category>
                        <![CDATA[ Autism ]]>
                    </category>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ educational technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 16 Aug 2019 15:16:40 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/08/back-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Minja Axelsson</p>
<p>In Spring 2018, I conducted a pilot study of a robot teaching sign language to children with autism. This blog post reflects on the results of the study, and our team’s process of designing the robot. </p>
<h3 id="heading-robotics-sign-language-and-children-with-autism">Robotics, Sign Language, and Children with Autism</h3>
<p>To start with, let’s answer the first big question: <strong>Why use a robot in autism therapy?</strong> <a target="_blank" href="http://ekirjasto.kirjastot.fi/ekirjat/autismin-kirjo-ja-kuntoutus">People with autism have an attention preference to objects over people</a>, and <a target="_blank" href="https://www.researchgate.net/profile/Janek_Dubowski/publication/228364332_Does_appearance_matter_in_the_interaction_of_children_with_autism_with_a_humanoid_robot_Interact_Stud/links/54b7a0970cf2bd04be33b122/Does-appearance-matter-in-the-interaction-of-children-with-autism-with-a-humanoid-robot-Interact-Stud.pdf">children with autism have shown more interest toward therapy when it involves technological or robotic components</a>. Additionally, a <a target="_blank" href="https://ri.cmu.edu/pub_files/2009/1/fulltext.pdf">robot’s operation can be strictly controlled, which can make therapy less overwhelming for autistic people</a>.</p>
<p>Then, the second big question: <strong>Why teach sign language to children with autism?</strong> People with Autism Spectrum Disorder (ASD) experience problems with communication: <a target="_blank" href="https://books.google.fi/books?hl=en&amp;lr=&amp;id=0Smd-xouZjYC&amp;oi=fnd&amp;pg=PA3&amp;dq=Bogdashina,+O.+(2004).+Communication+issues+in+autism+and+Asperger+syndrome:+Do+we+speak+the+same+language%3F.+Jessica+Kingsley+Publishers&amp;ots=FBSfAPlA_z&amp;sig=uyC0Dms-31cQRue-wilVK5SUQ-w&amp;redir_esc=y#v=onepage&amp;q=Bogdashina%2C%20O.%20(2004).%20Communication%20issues%20in%20autism%20and%20Asperger%20syndrome%3A%20Do%20we%20speak%20the%20same%20language%3F.%20Jessica%20Kingsley%20Publishers&amp;f=false">40–50% of people with ASD are functionally mute in adulthood</a>. To mitigate this, they use Augmentative and Alternative Communication (AAC) methods. <a target="_blank" href="https://www.worldcat.org/title/introduction-to-augmentative-and-alternative-communication-sign-teaching-and-the-use-of-communication-aids-for-children-adolescents-and-adults-with-developmental-disorders/oclc/44603909">Assistive sign language — a simplified form of sign language — is the most common form of AAC</a>. Other common AAC forms are symbolic pictures and photographs.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/symbolic.png" alt="Image" width="600" height="400" loading="lazy">
<em>An example of a symbolic picture communication system used by children with autism: “We do assignments.”</em></p>
<p>The idea to combine these two domains — robotics for children with ASD, and sign language for children with ASD — originally came from <a target="_blank" href="https://www.satasairaala.fi/">Satakunta health care district</a>. Satakunta is a small region in South-Western Finland, with a population of 225 000 people. The quality manager at the district had read about <a target="_blank" href="https://link.springer.com/article/10.1007/s12369-015-0307-x">a robot being used to teach sign language to neurotypical children</a>, and wanted to investigate the same method with autistic children.</p>
<p>Satakunta found out that the company I work for (<a target="_blank" href="https://www.futurice.com/">Futurice</a>) had built a humanoid robot. They reached out, and we assembled a cross-disciplinary team that would re-design and modify Futurice’s humanoid robot to fit this purpose. Our team had three roboticists from Futurice, and three experts of autism treatment from Satakunta: a neuropsychologist, a speech therapist, and the quality manager.</p>
<h3 id="heading-how-should-we-design-the-robot">How Should We Design the Robot?</h3>
<p>The humanoid robot Futurice had built was an InMoov robot. The <a target="_blank" href="http://inmoov.fr/">InMoov is designed by French sculptor Gaël Langevin</a>. He has made the schematics and software of the robot open source and available to anyone online. </p>
<p>Using these, Futurice built its own InMoov. Satakunta wanted to use the InMoov due to its nimble hands that enable it to sign. Its human-like appearance was also an advantage: one of Satakunta’s neuropsychologists thought that a human-resembling robot would be best for this solution.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/inmoov.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>The original form of the open source humanoid robot InMoov, designed by Gaël Langevin. Image Wikimedia Commons.</em></p>
<p>However, the InMoov was not ready as it was. To make the robot be suitable for children with autism, we needed to modify its form, behaviour, interactions and environment. </p>
<p>My job was to design these four dimensions of the robot. I also needed to design the human-robot interaction study where children would meet and sign with the robot. Luckily, the open source nature of the robot’s software and hardware would make it relatively easy to make the necessary modifications.</p>
<p>We wanted to take the characteristics of ASD into account while designing the robot. ASD is characterized by problems with communication and language, problems with social behaviour, inflexibility of routines, and problems forming a holistic perception of surroundings. However, autism is a spectrum, so these characteristics present differently in different people. Due to different presentations, we knew we couldn’t design a robot that would benefit everyone. Nevertheless, we wanted to find the best solution that would serve the most children with ASD.</p>
<p>During the project, the team created five design guidelines for the robot, which would tailor its design for autistic children. For example, the concern that a child might get distracted during the experiment was brought up by the autism specialists. The team agreed that to avoid confusing the child, the robot’s behaviour should be consistent and structured. This was defined as the guideline: “consistent, structured, simple behaviour”. To follow the guideline, the speech therapist and I created strict script of the robot’s and child’s interaction. All five guidelines were formulated in a similar manner in co-design discussions.</p>
<h4 id="heading-design-guidelines-for-a-robot-to-be-used-with-autistic-children">Design guidelines for a robot to be used with autistic children:</h4>
<ol>
<li>Simple form</li>
<li>Consistent, structured, simple behaviour</li>
<li>Positive, supportive, rewarding experience and environment</li>
<li>Modular complexity</li>
<li>Modularity specific to child’s preferences</li>
</ol>
<p>The design guidelines helped the team maintain a logical and uniform design for the robot, and formed a baseline for all decisions made during the design process.</p>
<h3 id="heading-embedded-ethics">Embedded Ethics</h3>
<p>While the team was discussing the design of the robot and the experiments, several ethical considerations were raised. These ethical considerations were embedded into the finalized robot.</p>
<p><strong>Physical safety</strong> — Users can be potentially pinched or crushed by a robot. To mitigate this concern, we decided to stop the children from touching the robot during interactions. To accomplish this, we decided to have the speech therapist in the room with the child to stop them from approaching the robot, if need be.</p>
<p><strong>Data security</strong> — It is paramount that the user’s data stay secure, especially in health care applications. Here, we decided to keep all data of the children attending the study encrypted. We also did not record any unnecessary data.</p>
<p><strong>Appropriate behaviour enforcement</strong> — People can learn bad manners from robots. For example, <a target="_blank" href="https://thriveglobal.com/stories/artificial-intelligence-alexa-impact-children-expert-opinion-tips/">children have forgotten to use polite language such as “please” and “thank you” after interacting with the voice agent Alexa</a>. Alexa does not explicitly ask for polite language, causing people to behave badly toward it. In this case, we didn’t want children to learn to treat the robot badly, and potentially generalize that bad behaviour to people. We decided that the therapist would intervene in all bad behaviour toward the robot.</p>
<p><strong>Equality across users</strong> — Artificial intelligence algorithms have been shown to be racist or sexist in the past (e.g. <a target="_blank" href="https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing">COMPAS, a recidivism rate prediction algorithm used in USA, was biased toward African-Americans</a>). If a robot uses algorithms to function, designers of the algorithm need to be careful. Another thing to consider is the robot’s form. Robot designs have been shown to reinforce gender stereotypes, with “genius” robots often labeled as male, and “service” robots as female. In our case, we wanted to design a robot that was gender neutral, so that each child participating in the study could feel welcome. To do this, the robot was given no gender signifiers.</p>
<p><strong>Transparency</strong> — If the user understands how the robot operates and makes decisions, they can calibrate their trust level in it. In our case, we decided to inform the children and their companions of the robot’s teleoperated nature at the end of the study. This way they could avoid forming false assumptions about the state of robotics today, and how it can be applied to autism therapy.</p>
<p><strong>Emotional consideration</strong> — Research has shown that humans treat robots as is they were alive, even when they clearly aren’t. People form emotional bonds with robots. This should be taken into account in the design: how strong a bond is desirable for this use case? In this case, we didn’t want the child or their companions to think that the robot was replacing the bond between the child and the therapist. To ensure this, the speech therapist would stay in the room with the child the entire time.</p>
<h3 id="heading-a-balancing-act">A Balancing Act</h3>
<p>Building complex technology (robotics) for a complex domain (autism therapy) is difficult. The problem space was unintuitive to both sides of the team: the autism specialists weren’t familiar with technical limitations, and the roboticists had no knowledge of the user group. </p>
<p>Designing was a balancing act: a seemingly small tweak in the design could result in a high amount of technical work. And vice versa, some changes that were significant design-wise could be easy to implement technically. </p>
<p>This is where I spent most of my time — harmonizing the team’s different viewpoints into a good design that would be realistic to execute in our time frame of 6 months. Together we made a series of decisions balancing user experience and technical complexity.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/robo.png" alt="Image" width="600" height="400" loading="lazy">
<em>The final InMoov with modifications: new Ada hands, lights attached to its right hand, and a screen on its chest.</em></p>
<p>When designing a social robot, there are a lot of moving parts (both literally and figuratively). The robot’s features all affect each other. The robot’s operation context affects how it behaves, which affects how it interacts with the user, which affects what its form is like. Prying these design considerations apart and crystallizing them into distinct and implementable technical tasks was challenging.</p>
<p>Modifying the robot from its original form took 4.5 months (the original build had been assembled in 9 months). All our modifications followed the design guidelines: for example, we changed the robot’s human-like voice to robotic, to give it a “simple form” (guideline 1).</p>
<p>To make the InMoov a better sign language teacher, we made a few big adjustments. We gave it new <a target="_blank" href="https://openbionicslabs.com/obtutorials/ada-v1-assembly">Ada hands, designed by Open Bionics</a>, and built by <a target="_blank" href="https://www.metropolia.fi/en/">Metropolia University of Applied Sciences</a>. We also embedded a screen into its chest, and lights onto its arms. The screen was added to provide another mode of communication (photographs are often used in AAC), and lights were added to capture the child’s attention.</p>
<h3 id="heading-10-children-and-a-robot">10 Children and a Robot</h3>
<p>10 children took part in the experiments. Some came with their parents, some came with other support people. Two roboticists (me included) were in the room adjacent to the experiment room, operating the robot and observing the experiment through a camera feed. A third roboticist was present to solve any problems that might emerge. The speech therapist was in the experiment room with each child, facilitating the interaction between the child and the robot, and intervening when needed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/signs.png" alt="Image" width="600" height="400" loading="lazy">
<em>The 9 words the robot signed, and the corresponding images on its screen.</em></p>
<p>The robot performed 9 signs. With ⅓ of the signs, it also flashed the lights on its arm. With another ⅓ of the signs, it displayed an image corresponding to the sign on its screen. These 3 different design conditions were examined to see which was most effective.</p>
<p>I was surprised by how differently each child interacted with the robot. A few of the children signed with near-perfect accuracy throughout the entire experiment, imitating all the robot’s signs in a mere 6 minutes. Some took as long as 28 minutes, struggling with each sign. One particular child — who was not too keen on signing — could not stop laughing at the robot. The child kept attempting to either hug or lunge at the robot throughout the experiment, with the speech therapist and neuropsychologist lunging after him to stop him in time.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/front.png" alt="Image" width="600" height="400" loading="lazy">
<em>A child signs with the robot (picture with permission).</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/back.png" alt="Image" width="600" height="400" loading="lazy">
<em>The speech therapist signals to the robot operators that the child signed correctly (picture with permission).</em></p>
<h3 id="heading-children-imitated-and-paid-attention-to-the-robot">Children Imitated and Paid Attention to the Robot</h3>
<p>I measured the children’s signing accuracy and attention focus. Children and their companions also completed surveys where they gave their opinions on the robot.</p>
<h4 id="heading-what-we-learned">What we learned:</h4>
<p><strong>1. Children could imitate the robot, and paid attention to it</strong></p>
<p>7 out of 10 children successfully imitated the robot at least once. 70% of the time, they kept their gaze on the robot, indicating attention focus. 8 out of 8 companions who filled the survey also noted that the children had a connection with the robot.</p>
<p><strong>2. The image on the robot’s screen was good</strong></p>
<p>The robot displayed an image on its screen simultaneously to signing 1/3 of the time. Children’s companions found the images useful, and thought they could help the children learn.</p>
<p><strong>3. The robot was seen as good, but a bit scary</strong></p>
<p>Both children and their companions rated the children’s experiences with the robot as good. However, some children and their companions noted that the children felt the robot was scary. Factors that create scariness should be identified and reduced in future designs.</p>
<p><strong>4. Performance of the signs needs to be better</strong></p>
<p>Both the speech therapist and children’s companions noted that the robot did not sign all words well, which might affect the children’s understanding of them.</p>
<h4 id="heading-things-still-to-learn">Things still to learn:</h4>
<p><strong>1. Are children understanding the signs?</strong></p>
<p>For this experiment, I only measured whether children imitated the signs. Future experiments are needed to verify if children are understanding them.</p>
<p><strong>2. Who best benefits from the robot?</strong></p>
<p>Not all children responded similarly to the robot. It is unlikely that this type of robot-based sign language therapy is useful to all children with autism. Future experiments should examine who this therapy is suitable for. This varying benefit is supported by companions’ survey results: 6 out of 8 companions thought the robot could potentially be beneficial as a sign language tutor.</p>
<p><strong>3. How to input speech therapist’s commands?</strong></p>
<p>To use the robot in the future, the therapist needs to be able to independently control the robot. For future implementations, a remote control or UI for programming the robot’s behaviour and interactions may be useful.</p>
<p><strong>4. How will guidelines 4 and 5 affect the design?</strong></p>
<p>For this experiment, I used a static design of the robot. Only its interactions changed (using its screen and lights at different points). Future research is needed to examine the design guidelines “modularity of complexity” (guideline 4) and “modularity specific to children’s preferences” (guideline 5). These could help adapt the robot to different users.</p>
<h3 id="heading-the-future-of-robotic-sign-language-tutors">The Future of Robotic Sign Language Tutors</h3>
<p>People interacting closely with robots can induce criticism. The most prominent concern is that of robots replacing humans. In this case, the robot is not intended to replace human care — rather augment and support human care.</p>
<p>Therapy sessions are demanding for therapists. They need to plan and conduct the session, while dealing with a potentially uncooperative participant. In the future, technological tools could be used to reduce the cognitive load of the therapist. The robot perform the signs, while the therapist could focus on encouraging, tutoring and managing the child. With reduced cognitive load, sessions could be longer and thus more in-depth. </p>
<p>The same effect could potentially be achieved if the robot were situated in the child’s home: the child would get a consistent tool to practice signs with, and the robot would not be bored or frustrated by repetitive practice.</p>
<p>To my knowledge, this was the first instance of using a robot to teach sign language to children with autism. I hope this research is continued further. I hope our pilot can shed some light onto how to develop this application in the future.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/science.png" alt="Image" width="600" height="400" loading="lazy">
<em>Science — especially pilot studies — sometimes requires improvisation: lights from the robot’s back were reflected on a window behind it, which might have distracted the children. We fashioned a light-reflection-blocker for the robot’s back, out of a towel stolen from our hotel (we did pay for it).</em></p>
<hr>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/JKWnwpTl774" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>The entire study is available as:</p>
<p>Axelsson, M., Racca, M., Weir, D., Kyrki, V. (2019). A Participatory Design Process of a Robotic Tutor of Assistive Sign Language for Children with Autism. In <em>2019 28th IEEE International Symposium on Robot and Human Interactive Communication (RO-MAN)</em>. IEEE. <strong>Accepted.</strong></p>
<p>The study is based on my master’s thesis at Aalto University, <a target="_blank" href="https://aaltodoc.aalto.fi/handle/123456789/34183">available here</a>.</p>
<p>The project was funded by Prizztech’s Robocoast and ERDF-fund, and Futurice.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Teaching my robot to think: “My grasp sucks” ]]>
                </title>
                <description>
                    <![CDATA[ By Ugo Cupcic As the Chief Technical Architect of the Shadow Robot Company, I spend a lot of time thinking about grasping things with our robots. This story is a quick delve into the world of grasp robustness prediction using machine learning. First ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/teaching-my-robot-to-think-my-grasp-sucks-5e3d5a908745/</link>
                <guid isPermaLink="false">66c3604a56e6b06442afd87f</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Data Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Deep Learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Machine Learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 04 Sep 2017 20:12:33 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*14ZzW3BGzORaYeo_xHvFWA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ugo Cupcic</p>
<p>As the Chief Technical Architect of the <a target="_blank" href="https://www.shadowrobot.com/">Shadow Robot Company</a>, I spend a lot of time thinking about grasping things with <a target="_blank" href="https://www.shadowrobot.com/products/">our robots</a>. This story is a quick delve into the world of grasp robustness prediction using machine learning.</p>
<p>First of all, why focus on this? There are currently much more exciting projects using deep learning for robotics. For example, the work done by Ken Goldberg and his team at UC Berkeley on <a target="_blank" href="https://berkeleyautomation.github.io/dex-net/">DexNet</a> is very impressive. They manage to reliably grasp 99% of their test set using deep learning. But when we work on delivering a “Hand that Grasps” as a product, we have to focus on delivering smaller robust iterations first. Being able to predict whether a grasp is stable or not, dynamically, is an interesting topic for the industry. For example, if you can determine that a grasp has a high chance of failing before it actually does, you can save a lot of time by re-grasping.</p>
<p>The goal isn’t to give you the best solution for grasp quality using machine learning, but rather to give a gentle introduction to using machine learning in robotics for a directly useful purpose which is hard to solve <a target="_blank" href="https://medium.com/@ugocupcic/how-to-tell-if-my-robots-grasp-is-stable-7811fa3d16b8">with existing standard algorithms</a>.</p>
<p>If you want to skip the explanations and get your hands dirty with the open source dataset and code, <a target="_blank" href="https://www.kaggle.com/ugocupcic/grasping-dataset">head on over to Kaggle</a>.</p>
<h3 id="heading-gathering-the-dataset">Gathering the dataset</h3>
<p>Using the <a target="_blank" href="https://medium.freecodecamp.org/an-open-sandbox-for-robot-grasping-cee467a3fabb">Smart Grasping Sandbox</a>, we gathered a large dataset for our purpose. Since our goal is to classify whether a grasp is stable or not, we need to gather a dataset containing both stable and unstable grasps. We also needed to quantify the stability of a grasp automatically in order to annotate our data easily — instead of annotating it manually.</p>
<p>Which data should we record? We get plenty of data from the simulation. To simplify things, we’ll be looking at the state of the joints only. This state contains — for each joint — the position, the torque and the velocity. Since we want a grasp quality that’s object-agnostic, we won’t be using the joint position: the shape of the hand is purely object specific. So we’ll be recording each joint velocity and torque.</p>
<p>Our dataset will look like this:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*C5BDb5q3GBZ20G3DPHMVzw.png" alt="Image" width="800" height="122" loading="lazy">
<em>Dataset overview</em></p>
<h4 id="heading-an-objective-grasp-stability-measurement">An objective grasp stability measurement</h4>
<p>In simulation, there’s an easy way to check whether a grasp is stable or not. Once the object is grasped — if the grasp is stable — then the object shouldn’t move in the hand. This means that the distance between the object and the palm shouldn’t change when shaking the object. Lucky for us, this measure is very easy to get in simulation!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*RWxTUMlwHQyTVIZ9g1Sx2g.jpeg" alt="Image" width="705" height="514" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*l9qyPBafqs6h5-n2aHkDyg.gif" alt="Image" width="400" height="263" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*UWO-hJVxzJF8lBL0YwVKnA.jpeg" alt="Image" width="673" height="476" loading="lazy">
<em>1. first grasp 2. then shake, whilst 3. measuring the distance between the palm and the object</em></p>
<h4 id="heading-lets-record-some-data">Let’s record some data</h4>
<p>Now that we know what we’re doing, we’ll be using the Sandbox to record a large dataset. You can have a look at the code I use to do this <a target="_blank" href="https://github.com/shadow-robot/smart_grasping_sandbox/blob/master/smart_grasping_sandbox/nodes/grasp_quality.py">over here</a>. Since the Sandbox is running on Docker, it’s very easy to spawn multiple instances in parallel on a server and let them run in parallel for a while.</p>
<p>Since I don’t trust simulations to run for too long — call it a strong belief based on personal experience, same as the demo effect — I also only run 100 grasp iterations before restarting the Docker container with a pristine environment.</p>
<p>In order to get a relevant dataset, I randomise the grasp pose around a good grasp — which I found empirically: we want enough bad grasps in there. I’m also using different approach distances. This gives me — roughly — a 50/50 ratio of stable and unstable grasps — with plenty of grasps in between.</p>
<p>For your convenience, I’ve made this dataset public and you can find it on <a target="_blank" href="https://www.kaggle.com/ugocupcic/grasping-dataset">Kaggle</a>.</p>
<h3 id="heading-lets-learn">Let’s learn!</h3>
<p>Now that we have gathered a good enough learning set, we want to teach a Neural Net in order to predict whether a grasp is stable or not, based on the current joint state.</p>
<h4 id="heading-whats-a-neural-net">What’s a Neural Net?</h4>
<p>With all the current hype around Deep Learning, it’s easy to imagine a computer with a brain learning new things auto-magically. Let’s demystify the Neural Net quickly.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*Ou2uG2WHO0adhX6GORTwQQ.jpeg" alt="Image" width="800" height="600" loading="lazy"></p>
<p>As shown above, a Neural Net takes as an input a vector — in our case the torque and velocity for each fingers. Then this vector is transformed a few times — as many times as there are layers — and a final vector is the output of the Neural Net: the classification of the data that was given. In our case the output we want is whether the grasp is robust or not — so it’s a vector of size 1.</p>
<p>During the learning process, we will feed the network values we’ve gathered in the dataset. Since we know whether those joint values are for stable or unstable grasps — our dataset is annotated — the training process adjusts the parameters of the different transitions between the layers.</p>
<p>The art of machine learning consists of choosing the network topography — how many layers and neurones, plus which transition functions to use in our network — as well as gathering a good dataset. If we have all this, then we can train a network that will generalise well to cases that haven’t been seen during the training.</p>
<h4 id="heading-training-the-network">Training the network</h4>
<p>The goal of this exercise isn’t to create the perfect grasp quality prediction algorithm, but rather to simply show how it’s possible to use the smart grasping sandbox for machine learning. I chose a very simple topology for the network: I’m using one single hidden layer between the input and output layer. For more details, refer to the <a target="_blank" href="https://www.kaggle.com/ugocupcic/grasp-quality-prediction">iPython notebook</a>.</p>
<p>For simplicity’s sake, I’m using the excellent <a target="_blank" href="https://keras.io/">Keras library</a>. If you can’t wait and want to see the actual code, go to <a target="_blank" href="https://www.kaggle.com/ugocupcic/grasping-dataset">Kaggle</a>. Otherwise, read on!</p>
<p>After loading the dataset in memory, I split it between the training set and the test set. Validation will be run on part of the training set, and I’ll use the test set to see whether it generalizes well.</p>
<p>Since my network is small, training is relatively fast, even on my laptop. When I train deeper networks, I spawn the docker image on a beefy machine in the cloud, using NVidia’s GPUs to speed up training.</p>
<p>After training my network, I get an accuracy of 78.87%.</p>
<h3 id="heading-testing-my-trained-network-on-live-data">Testing my trained network on live data</h3>
<p>Now that we trained our Neural Net we can use it to predict the grasp quality in real time on the simulation. As you can see in the video below the prediction is working nicely most of the time.</p>
<p>As you can see in this video, the live prediction of the grasp — the blue plot on the left — is higher than 0.5 when grasping the ball the first time. This results in a very stable grasp. On the contrary, during the second grasp, the metrics stays under 0.2, rightfully predicting that the grasp will fail.</p>
<h3 id="heading-final-words">Final words</h3>
<p>I hope this story piqued your interest. If you want to try to train your own algorithm on this dataset, the easiest thing to do is to <a target="_blank" href="https://www.kaggle.com/ugocupcic/grasping-dataset">go to Kaggle.com</a> where it’s already set up for you.</p>
<p>Obviously, there’s much more that should be done to deploy this method in production. The first thing to tackle is to have a better simulation in order to pick up a wide variety of objects. I’ll also be looking at having a live objective grasp quality — the one that’s used to annotate our dataset — in order to be able to use time-series prediction instead of one shot prediction. And the final challenge will be transferring that learning to the real robot.</p>
<p>There are so many interesting topics to explore machine learning with in robotics: grasp quality, slippage detection, amongst others.</p>
<p>I hope that you can’t wait to test your ideas on the sandbox. If you do, <a target="_blank" href="http://twitter.com/ugocupcic">let me know on Twitter</a>!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ We built an open sandbox for training robotic hands to grasp things ]]>
                </title>
                <description>
                    <![CDATA[ By Ugo Cupcic Getting started with robotics is probably a lot easier than you think. Here’s a simulation sandbox that’s cross-platform and provides a simple high level API. It should help you get started experimenting with robot grasping tasks. As th... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/an-open-sandbox-for-robot-grasping-cee467a3fabb/</link>
                <guid isPermaLink="false">66c3447942d4db64acf4cbd8</guid>
                
                    <category>
                        <![CDATA[ Docker ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Machine Learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 29 Mar 2017 04:34:23 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*z4z_pGa-kSvjO-kgvwOetA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ugo Cupcic</p>
<p>Getting started with robotics is probably a lot easier than you think. Here’s a simulation sandbox that’s cross-platform and provides a simple high level API. It should help you get started experimenting with robot grasping tasks.</p>
<p>As the Chief Technical Architect at the <a target="_blank" href="http://www.shadowrobot.com/">Shadow Robot Company</a>, I spend a lot of time playing with different algorithms to see how they’d fit our robots. Controlling a complex robot to make it behave the way you’d want in a complex environment is… complex!</p>
<p>An important part of our roadmap relies on <strong>machine learning</strong>. I don’t want to have to specify every aspect of a problem — I’d rather the system learn the best way to approach a given problem itself.</p>
<p>Setting up the environment to easily try different machine learning algorithms — for example for refining grasps — is not trivial. Here were my requirements:</p>
<ul>
<li><strong>a</strong> <strong>good simulation</strong> scene to get started: a robot, a 3d sensor, some objects to interact with, some furniture to plan around and use</li>
<li><strong>a</strong> <strong>variety of tools</strong> and libraries to get started quickly with playing with the robot: robotic framework (<a target="_blank" href="http://www.ros.org">ROS</a>), simulator (<a target="_blank" href="http://gazebosim.org/">Gazebo</a>), planning libraries (<a target="_blank" href="http://moveit.ros.org">MoveIt!</a>)</li>
<li><strong>a way to run it</strong> <strong>headless</strong> while being able to visualize the data</li>
<li><strong>easily</strong> <strong>deployable</strong>, well documented… all the usuals!</li>
</ul>
<p>If you don’t want to read through the specifics but just want to get your hands on the sandbox you can head over to the <a target="_blank" href="https://github.com/shadow-robot/smart_grasping_sandbox">github repository</a> which contains the instruction for a quick start. For using the sandbox in the cloud you can also visit the <a target="_blank" href="http://rds.theconstructsim.com/">ROS Development Studio</a> where it’s deployed.</p>
<h3 id="heading-the-simulation">The simulation</h3>
<p>The Smart Grasping Sandbox will be running on the <a target="_blank" href="http://www.ros.org">Robotic Operating System</a> — <strong>ROS</strong>. As a long time ROS user and contributor I’m very partial to using that framework. It’s the <em>de facto</em> open source framework designed for robotics. It takes the hassle of connecting the different components of a robotic system with a modular approach. This makes it possible to swap a given component easily. On top of that it’s driven by a thriving community, so you can always find the latest algorithm or driver.</p>
<p>In order to teach a robot, it’s a good idea to start with a simulator. Running the algorithms on the actual hardware is not only more expensive but often less convenient: it’s harder to reset the environment in real life than in simulation. It’s also often harder to characterize the impact of the robot on the scene: did the ball get picked up? Was the grasp stable? All of this information is available out of the box in a simulator.</p>
<p>The simulator we’ll use is <a target="_blank" href="http://gazebosim.org"><strong>Gazebo</strong></a>; this is a physics simulator for robotics and is also tightly integrated with the ROS framework. Plenty of robot models are available in the simulator, from arms and grippers to quadcopters! In the Smart Grasping Sandbox, the robot I’m providing is a <a target="_blank" href="https://www.universal-robots.com/products/ur10-robot/?ads_cmpid=38441226&amp;ads_adid=36523128894&amp;ads_matchtype=b&amp;ads_network=g&amp;ads_creative=166486296408&amp;utm_term=ur10&amp;ads_targetid=kwd-951605358&amp;utm_campaign=&amp;utm_source=adwords&amp;utm_medium=ppc&amp;ttv=2&amp;gclid=CNCC_p_c_dECFbcK0wodyCED_w">UR10 from Universal Robot</a> with Shadow’s <a target="_blank" href="https://www.shadowrobot.com/shadow-smart-grasping-system/">Smart Grasping System</a>. The scene only contains two useful objects for now: a cricket ball and a drill. This is just a starting point. The scene will evolve with time. The 3d Vision sensor in the simulation is a <a target="_blank" href="https://en.wikipedia.org/wiki/Kinect">Microsoft Kinect</a> as it’s often used in robotics (yes, the very same Kinect you used to play <em>Just Dance</em> on your Xbox).</p>
<h3 id="heading-docker-container">Docker container</h3>
<p>Setting up the different frameworks and libraries is not trivial and takes time. To simplify the deployment, I’m automatically building a <a target="_blank" href="https://www.docker.com/">Docker</a> image. If you’re not familiar with Docker, I won’t go into the specifics as it’s out of scope for this article, but let’s say it’s a super lightweight Virtual Machine like environment: you can spawn images very quickly while exploiting your computer’s full potential.</p>
<p>Deploying the image with Docker also makes it OS agnostic — ROS and Gazebo are more Linux friendly. It’s also a great way to test things on your laptop, then once you’re ready to start a longer experiment, simply spawn in in the cloud. Since I included a web interface to the simulator, you can even visualize what’s happening in simulation by connecting through your browser. To ease the development process, I included a <a target="_blank" href="http://jupyter.org/">Jupyter notebook</a> which you can access through your browser.</p>
<h3 id="heading-libraries-and-tools">Libraries and tools</h3>
<p>In order to speed up your development process, I’ve developed a simple high level library — boldly called the <em>SmartGrasper</em>. This library makes it possible to interact directly with the simulated sandbox sending commands such as pick the ball, open the hand, move above the ball… For the path planning, it relies on ROS’ planning library: <a target="_blank" href="http://moveit.ros.org">MoveIt!</a>, so that you can <a target="_blank" href="https://medium.com/@ugocupcic/how-to-make-your-robot-go-from-a-to-b-without-hitting-things-1063a8890947">safely move the robot from A to B without hitting things</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*TfmzfFUkM-krMzLyFfumnQ.png" alt="Image" width="800" height="364" loading="lazy">
<em>iPython notebook</em></p>
<p>The sandbox comes with an example iPython notebook that shows how to pick up the ball using the SmartGrasper library. You can use this example as a base to do your own development.</p>
<h3 id="heading-final-words">Final words</h3>
<p>So I spent some time preparing that sandbox and now that it’s ready, <a target="_blank" href="https://github.com/shadow-robot/smart_grasping_sandbox">I’m sharing it with you</a>! Head over to the <a target="_blank" href="https://github.com/shadow-robot/smart_grasping_sandbox">shadow-robot/smart-grasping-sandbox github repository</a> to get started. Feel free to play with it, <a target="_blank" href="https://github.com/shadow-robot/smart_grasping_sandbox/issues">submit issues</a>, pull requests...</p>
<p>There’s still a lot more to be done: adding <a target="_blank" href="http://www.openrave.org">OpenRave</a> for grasp planning, adding more complexity to the scene to be able to learn different actions, adding some vision algorithms for recognizing the different objects… But this is just the first release of the Smart Grasping Sandbox!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*98Bu_qcmt975ADGwoKQYJA.png" alt="Image" width="800" height="469" loading="lazy">
<em>The Smart Grasping Sandbox in the Construct</em></p>
<p>I’m also working with the amazing team at The Construct to make the Smart Grasping Sandbox available on the <a target="_blank" href="http://rds.theconstructsim.com">ROS Development Studio</a> for an even quicker way to test your ideas.</p>
<p><em>If you’re doing something cool with the Smart Grasping Sandbox, or have any questions, let’s connect on <a target="_blank" href="http://twitter.com/ugocupcic">Twitter</a>! If you enjoyed this article, how about liking and sharing it?</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*bYWLCSD5yxrMMlBV-nNaDA.gif" alt="Image" width="748" height="142" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What it’s like to be a Robot ]]>
                </title>
                <description>
                    <![CDATA[ By Ugo Cupcic Image credit: http://www.esa.int/images/DSC03062.JPG What it’s like to be a robot in 2017 What will a state-of-the-art robot be able to do in 2017? There are many different types of robots out there, from humanoid robots to industrial a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-its-like-to-be-a-robot-in-2017-dc41368894a0/</link>
                <guid isPermaLink="false">66c365c909a9333511bcdb4b</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 05 Jan 2017 07:00:38 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*1wfeIn-huOS_O8YkE2D2BA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ugo Cupcic</p>
<p><em>Image credit:</em> <a target="_blank" href="http://www.esa.int/images/DSC03062.JPG"><em>http://www.esa.int/images/DSC03062.JPG</em></a></p>
<p>What it’s like to be a robot in 2017</p>
<p>What will a state-of-the-art robot be able to do in 2017?</p>
<p>There are many different types of robots out there, from humanoid robots to industrial arms that can move with an amazing accuracy and speed.</p>
<p>Given my area of expertise, I’ll focus more on grasping and using objects. These are core human skills that robots need to acquire if you want them to be truly useful.</p>
<p>But why’s it so hard for a robot to replicate these skills?</p>
<p>Here are the capabilities robots need:</p>
<h4 id="heading-for-a-grasping-manipulating-robot">For a grasping / manipulating robot</h4>
<p>Hardware-wise, a grasping or manipulating robot needs an arm, a hand, and a 3d sensor. The arm usually has about 6 degrees of freedom (for reference, the human arm has 7). This makes it possible to get to any given point in a workspace.</p>
<p>On top of a good position control — being able to drive each joint towards its given target quickly and reliably — the arm and hand also need a reliable torque control. This means that you’re able to apply a given torque with a given joint.</p>
<p>An advanced hand will also have tactile sensing, which makes it possible to manipulate the objects.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*pZkMp3nu7Vy2AWrczT-Axw.png" alt="Image" width="480" height="375" loading="lazy"></p>
<p><a target="_blank" href="http://www.ros.org/news/assets_c/2015/06/pallet-thumb-480x375-1206.png"><em>A 3d scene</em></a> <em>acquired from a Kinect.</em></p>
<p>For a modern robot, understanding its environment is essential. You can’t grasp or use an object if you can’t see it.</p>
<p>The pipeline that’s used the most often for this task is the following:</p>
<ul>
<li><p>First, the vision pipeline will run a <strong>segmentation algorithm</strong> to isolate the different objects in the incoming scene, for example, a 3d point cloud.</p>
</li>
<li><p>Then it will run through some <strong>recognition steps</strong>. The goal is to identify the objects if possible, and align some known mesh of the object.</p>
</li>
</ul>
<p>The diagrams below are quite simple compared to the real use-case above. Recent advances in deep learning are <a target="_blank" href="https://devblogs.nvidia.com/parallelforall/image-segmentation-using-digits-5/">showing great promises</a> in this domain.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*aMZGwM0S39X80ClgQB-Knw.jpeg" alt="Image" width="800" height="450" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*t0dA_wNPVGTj-Q_bElvr8Q.jpeg" alt="Image" width="800" height="450" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*YqSI_SYz4xIeFcsEd7g8Gw.jpeg" alt="Image" width="800" height="450" loading="lazy"></p>
<p><em>Full scene / segmented results: each object is a different color / each object is recognised, the model is aligned in blue.</em></p>
<p>Now that the robot has a rough understanding of where things are in the scene, it needs to be able to navigate the environment, avoiding the obstacles. This is the field of <strong>motion planning</strong>. There are <a target="_blank" href="https://medium.com/@ugocupcic/how-to-make-your-robot-go-from-a-to-b-without-hitting-things-1063a8890947">plenty of</a> different <a target="_blank" href="https://medium.com/@ugocupcic/how-to-make-your-robot-go-from-a-to-b-without-hitting-things-9b86a758a3ae">algorithms</a> that deal with motion planning.</p>
<p>Now that the robot has a way of reaching the object you want it to grasp, you need to know how to close the hand around the object. There are different ways to address this issue, but two main approaches used most often are <strong>grasp planning</strong> and <strong>teaching by demonstration</strong>.</p>
<p>In the grasp planning approach, the algorithm uses some heuristics to compute different grasps and evaluate the grasps using a <a target="_blank" href="https://medium.com/@ugocupcic/how-to-tell-if-my-robots-grasp-is-stable-7811fa3d16b8">grasp quality measurement</a>. In the teaching by demonstration approach, a human shows the robot how to do the action. The algorithm then takes care of extracting the information to make the action work reliably on the robot.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*mzLe2WPFYwYjyNtpmX2aiw.jpeg" alt="Image" width="300" height="300" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*D3tG6I1zahdxowE1MXOebw.jpeg" alt="Image" width="300" height="300" loading="lazy"></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*ppexSOcsGhqdCQ-C8KSGPA.jpeg" alt="Image" width="300" height="300" loading="lazy"></p>
<p><em>Teaching by demonstration — opening a bottle at</em> <a target="_blank" href="https://ni.www.techfak.uni-bielefeld.de/robotics/manual_action_representation"><em>Bielefled university</em></a><em>.</em></p>
<p>Finally, it’s possible to close the loop using the different sensors available in the robot to accomplish an action, such as stabilizing a grasp when detecting slippage, or moving a finger on an object without letting go of it. Running a tight <strong>control loop</strong>, then using its data to modify a robot’s next command is a one of the most challenging aspect of robotics.</p>
<h1 id="heading-how-can-we-move-forward">How can we move forward</h1>
<p>It will take a lot of work to develop all of these capabilities and get them to work in all environments. Each individual and each robotics department will have its own specific area of expertise. For example, my area of expertise is in grasping and manipulation, while other people focus more on humanoid robots, mobile platforms and vision.</p>
<p>We all face the same challenge, though: solving complex problems with unreliable data.</p>
<p>Advanced robots are still too often reserved for specialists. They’re hard to program, and you need a lot of knowledge to get them to accomplish new things. But often, what you want your robot to do can be described easily. This is a task that you could do yourself.</p>
<p>To solve this issue, more and more companies are turning to visual programming interfaces in robotics: <a target="_blank" href="https://www.youtube.com/watch?v=q2ihy_mVpY8">NAO’s Choregraphe</a>, <a target="_blank" href="http://wiki.ros.org/blockly">Robot Blockly</a> (used at Shadow and Erle Robotics), and <a target="_blank" href="https://www.franka.de/#chapter2">Franka’s Desk</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*j-MZPZWl4KzmLNBWitthrg.png" alt="Image" width="800" height="435" loading="lazy"></p>
<p><em>Shadow Robot’s Blockly interface.</em></p>
<p>But to be able to program advanced robots intuitively through these interfaces, you need advanced — and robust — capabilities.</p>
<p>I’m personally convinced that the way forward is to build more and more intelligence inside the tools themselves. This way, each capability can be implemented by experts.</p>
<p>This black-box approach makes it easier to combine different high-level capabilities, reusing the various state-of-the-art techniques developed by different experts. The boxes don’t need to be black, but the result should be that end users be able to just focus on that box’s functionality — its inputs and its outputs — instead of being distracted by how that functionality should be implemented.</p>
<p>As roboticists, if we want advanced robots to be useful to non-specialists, we need to simplify the interface. But in order do that, we first need to implement more and more advanced capabilities, then wrap them up inside the tools themselves.</p>
<p>If you enjoyed this article, how about liking and sharing it? Also, If you want to discuss robotics, let’s <a target="_blank" href="http://twitter.com/ugocupcic">connect on Twitter</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*bYWLCSD5yxrMMlBV-nNaDA.gif" alt="Image" width="748" height="142" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Best Gitter channels on: Hardware, IoT & Robotics ]]>
                </title>
                <description>
                    <![CDATA[ By Gitter If you’re into some high-tech tinkering, maker culture & creativity — we have something for you on Gitter as well. Check out those communities dedicated to hardware, Arduino, IoT, or even a software for drawing robots! Johnny-Five — Johnny... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-gitter-channels-on-hardware-iot-dd136c6af664/</link>
                <guid isPermaLink="false">66c345a19972b7c5c7624e1b</guid>
                
                    <category>
                        <![CDATA[ arduino ]]>
                    </category>
                
                    <category>
                        <![CDATA[ iot ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Makers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robotics ]]>
                    </category>
                
                    <category>
                        <![CDATA[ robots ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 12 May 2016 09:21:05 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*1mPYpxUgeRaF2R1MOpG2rA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Gitter</p>
<p>If you’re into some high-tech tinkering, maker culture &amp; creativity — we have something for you on <a target="_blank" href="http://gitter.im">Gitter</a> as well. Check out those communities dedicated to hardware, Arduino, IoT, or even a software for drawing robots!</p>
<ul>
<li><a target="_blank" href="https://gitter.im/rwaldron/johnny-five?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Johnny-Five</strong></a> <strong>—</strong> Johnny-Five is an Open Source, Firmata Protocol based, IoT and Robotics programming framework, developed at <a target="_blank" href="http://bocoup.com/">Bocoup</a>. Johnny-Five programs can be written for Arduino (all models), Electric Imp, Beagle Bone, Intel Galileo &amp; Edison, Linino One, Pinoccio, pcDuino3, Raspberry Pi, Particle/Spark Core &amp; Photon, Tessel 2, TI Launchpad and more!</li>
<li><a target="_blank" href="https://gitter.im/firmata/arduino?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Firmata/arduino</strong></a> <strong>—</strong> A protocol for communicating with microcontrollers from software on a host computer. The <a target="_blank" href="https://github.com/firmata/protocol">protocol</a> can be implemented in firmware on any microcontroller architecture as well as software on any host computer software package.</li>
<li><a target="_blank" href="https://gitter.im/platformio/platformio?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>platformio/platformio</strong></a> <strong>—</strong> An open source ecosystem for IoT development. Cross-platform code builder and library manager. Continuous and IDE integration. Arduino and MBED compatible. Ready for Cloud compiling.</li>
<li><a target="_blank" href="https://gitter.im/z3t0/Arduino-IRremote?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>IRremote Arduino Library</strong></a> <strong>—</strong> Infrared remote library for Arduino lets you send and receive infrared signals with multiple protocols.</li>
<li><a target="_blank" href="https://gitter.im/esp8266/Arduino?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>ESP8266/Arduino</strong></a><strong>—</strong> This project brings support for ESP8266 chip to the Arduino environment. It lets you write sketches using familiar Arduino functions and libraries, and run them directly on ESP8266, no external microcontroller required.</li>
<li><a target="_blank" href="https://gitter.im/FreeCodeCamp/Hardware?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Free Code Camp Hardware</strong></a> <strong>—</strong> Free Code Camp’s chat about<br>chat about computer hardware and Internet of Things.</li>
<li><a target="_blank" href="https://gitter.im/paparazzi/discuss?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Papparazzi</strong></a> <strong>—</strong> Paparazzi is an attempt to develop a free software Unmanned (Air) Vehicle System. As of today the system is being used successfuly by a number of hobbyists, universities and companies all over the world, on vehicle of various size (100g to 25Kg) and of various nature (fixed wing, rotorcrafts, boats and surface vehicles).</li>
<li><a target="_blank" href="https://gitter.im/PX4/Hardware?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>PX4 Hardware</strong></a> <strong>—</strong> PX4 Hardware designs. PX4 is an open hardware design, following the OSHW 1.1 definition licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license. Website at: <a target="_blank" href="http://pixhawk.org/">http://pixhawk.org</a></li>
<li><a target="_blank" href="https://gitter.im/ajfisher/node-pixel?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Node Pixel</strong></a> <strong>—</strong> Library for using addressable LEDs (such as NeoPixels/WS2812) with Firmata and JohnnyFive.</li>
<li><a target="_blank" href="https://gitter.im/evil-mad/robopaint?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=hardware"><strong>Robopaint</strong></a> — Software for drawing robots, and your <a target="_blank" href="http://watercolorbot.com/">friendly painting robot kit, the WaterColorBot</a>!</li>
</ul>
<p>Looking for something else? Check out our <a target="_blank" href="https://gitter.im/explore/tags/javascript,php,ruby">Explore</a> section or easily <a target="_blank" href="https://gitter.im/home#createroom">start your own channel here.</a></p>
<p>Did we miss an channel that you think should be featured? Drop us a line in the <a target="_blank" href="https://gitter.im/gitterHQ/gitter">Gitter HQ</a> and we will add it to the list.</p>
<p>Happy tinkering!</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
