SlideShare a Scribd company logo
Hacking Robots for Fun and Profit

                               presented by Chad Udell
                            at Flash and the City, 2010
Hacking Robots for Fun and Profit

 • Flash is eminently hackable and ideal for building UIs
    for experiences that integrate with hardware
 • Tons of devices are coming with web connections

 • Hardware is getting cheaper and easier to get

 • Hobbyist techniques can be adapted for real world
A History of Hacking Flash with Hardware
About the Adler Planetarium Exhibit Project

 • Planet Explorers: 13 Experiences

 • X-Rovers are one of 7 interactive pieces
Planet Explorers: X-Rovers

 • What is it?

 • How does it work?

 • What is the experience?

 • Demos

 • Code Samples
What is it?

 • Emulating a Mars Rover
    like experience
 • Has to have a “mission”

 • Has to be easy to use
Definition of the Experience

 • Origins (KUD)

   ‣ Remote Exploration is
      the Concept
 • Key Points

   ‣ No Crying Children

   ‣ Some Learning

   ‣ Ages 3-8
First Thoughts

 • Custom R/C

 • T1

 • Imperial Droid
Basic Limitations

 • Skillset - We aren’t robotics engineers or electricians

 • Budget - Every client is conscious of this - duh

 • Scope - Need to integrate a timer, controls, basic
    computer vision, long term maintenance solution
 • Quality - Uptime is crucial. “Out of Order” is not an
    option
Choosing a Robot

 • Essentially we need a connected webcam

 • Needs to be cheap

 • Needs to be hackable




                   Enter, Rovio.
A Diagram of the system
2 Stations, each containing:


                               !"#$%&'()*+,-./+*0)




     UPS (APC BR1200)
                                                                                             APC AV C2




                                                           Happ Kiosk Amp
                                                            and Speakers


                                                     1"234&+56(!11(.7
                                                                                            Rovio Charger

           Happ
          Controls




                                  Server (Red 5)

                                                            Netgear Wireless Access Point
                                                                       WG-102
                                     Switch

                                                                                               Rovio
Rovio to the Rescue

 • Skillset - Essentially like building a mashup
    (documented API, built in webserver)
 • Budget - They are inexpensive and readily available
    (important for uptime)
 • Scope - many of the requirements are handled in
    some built in fashion already (wayfinding, charging).
 • Quality - We have a company backing it
Flash to the Rescue

 • Skillset - We like it.

 • Budget - No extra expensive hardware to be
    designed, no expensive proprietary SDKs.
 • Scope - Still some questions here. Going to have to
    manage the client’s expectations.
 • Quality - Debugging and remote config is easy
Controlling the Rovio

 • Rovio responds via HTTP (CGI script)

 • Use of key listeners to trigger API calls.
    /rev.cgi?Cmd=nav&action=value&drive=d_value&speed=s_value Input
    Parameter

    value = 18 d_value = 0 (Stop)
    1 (Forward)
    2 (Backward)
    3 (Straight left)
    4 (Straight right)
    5 (Rotate left by speed)
    6 (Rotate right by speed)
    7 (Diagonal forward left)
    8 (Diagonal forward right)
    9 (Diagonal backward left)
    10 (Diagonal backward right)
    11 (Head up)
    12 (Head down)
    13 (Head middle)
    14 (Reserved)
    15 (Reserved)
    16 (Reserved)
    17 (Rotate left by 20 degree angle increments)
    18 (Rotate right by 20 degree angle increments)
    s_value = 1 (fastest) – 10 (slowest)
Controlling the Rovio




          Demo 1: Sending
         Commands to Rovio
Getting the Video

 • Rovio sends via MJPEG via HTTP (CGI script)

 • Set a loader’s source to the URL

    Camera Control – GetData.cgi

    Description
    The basic command for acquiring MJPEGGrammar
    /ChangeResolution.cgi?ResType=value[&RedirectUrl=sUrl] Input Parameter
    None
    Privilege
    None
    Return Value
    An instance captured motion image.



 • Results were marginal (12-15 fps)
Getting the Video




      Demo 2: MJPeg stream
                in a Loader
Deeper Research on Video/Image Processing
   Simple color detection -

  •     http://www.interactionfigure.nl/2009/colour-tracking-with-the-webcam-in-flash/


Color detection in Processing

  •    http://jamesalliban.wordpress.com/2008/11/16/colour-detection-in-processing/


Haar training for object detection

  •    http://note.sonots.com/SciSoftware/haartraining.html


Modified facial detection

  •     http://www.quasimondo.com/archives/000687.php
Technology Evaluations

 • Shopping = Fun




 • Reading Electrical Engineer Documents = Not so Fun

 • Wiring Boards = Fun for some

 • Building PoCs = Super fun!
Prototype

 • Software Proof of Concept

 • Hardware Hacking and Integration
Happ Config 1
Happ Config 2
Prototype




     Demo 3: Happ Controls
Alpha

 • Video was ok, but needed some juice.

 • Computer vision was deemed better than AR or
   object detection
 • Play control overall was very pleasing

 • Testing, Testing, Testing
Play Testing Video
Enter Red 5/Xuggle

 • Transcode the Video to H264       (SteamStream)

 • Replace the MJPEG loader with a Netstream object

 • Better results. Lower latency.

 • Approaching 24-30fps

 • There is a bit of a hiccup with the initialization of the
    stream.
Enter Red 5/Xuggle




      Demo 4: Red5/Xuggle
Processing the video

 • Considered AR

   • Too Inflexible - Markers weren’t attractive

 • Considered Object Detection (Haar Cascades/
    OpenCV)
   • A tad slow-ish

 • Attempted using simple ColorBoundsRect
Terminator Vision
Finding the Targets




    Demo 5: Computer Vision
What does that get you? (The Good)
What does that get you? (The Bad)
How about Creating a Unique Target?

• Eliminate False Positives (was better, but not perfect)

• Ensure Speedy Detection (was a little slower)




    Not Unique                  A Lot More Unique
Processing the video

 • Settled on Color Detection via Thresholding

 • Tomek’s Blob Detection

   • http://play.blog2t.net/fast-blob-detection

 • Soulwire’s Color Averaging

   • http://blog.soulwire.co.uk/code/actionscript-3/
      extract-average-colours-from-bitmapdata
Fixing the Video




            Demo 5: Revised
            Computer Vision
In Action
In Action
In Action
In Action
In Action
In Action
Buttoning it up

 • Charging handoff

 • Locking the kiosks down

 • C++ Socket Server for the Lights

 • Startup, shutdown

 • Training for the switchover
Lessons Learned

 • SWF to EXE is not needed anymore. AIR 2!

 • Test early! Test Often! Test Under lots of Conditions!

 • Static Electricity Sucks (installation is crazy)

 • Your Kiosk Can Never Be Too Stable (Bullet Proof
    Your Kiosks)
 • Logging, Logging, Logging

 • Buy Lots of Extras
Other stuff to hack!

 • Security/WiFi Cameras - http://www.axis.com

 • Tons of X10 Stuff - http://www.smarthome.com

 • Other Robots - http://www.spykeeworld.com/

 • Rocket Launcher - http://www.thinkgeek.com/
    geektoys/warfare/8bc4/?cpg=cj
 • Ultimarc Controls - http://www.ultimarc.com/
More info, code samples, etc.

 • http://electricpineapple.net/ - Erik Peterson’s blog

 • http://ionagroup.com/labs - Iona’s Blog

 • http://visualrinse.com - My Blog




                  Questions?
Thank you
• Find Us on:




                                               THE IONA GROUP
                    620 West Jackson Street • Morton, Illinois 61550
                P: 309.263.4662 • F: 309.263.8262 • 888.644.IONA
                                              www.ionagroup.com

More Related Content

What's hot

DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
savageautomate
 
OpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons LearnedOpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons Learned
Yury Gorbachev
 
Ubiquitous Content Symposium 2009
Ubiquitous Content Symposium 2009Ubiquitous Content Symposium 2009
Ubiquitous Content Symposium 2009
Shigeru Kobayashi
 
Java withrealworldtechnology
Java withrealworldtechnologyJava withrealworldtechnology
Java withrealworldtechnology
Anju Kanjirathingal
 
!Zpx Overview New
!Zpx Overview New!Zpx Overview New
!Zpx Overview Newcynthiabro
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Times
andrewmurraympc
 
Velocity london 2012 bbc olympics
Velocity london 2012 bbc olympicsVelocity london 2012 bbc olympics
Velocity london 2012 bbc olympics
Andrew Brockhurst
 
Autonomous Drone Development with Java and IoT
Autonomous Drone Development with Java and IoTAutonomous Drone Development with Java and IoT
Autonomous Drone Development with Java and IoT
javafxpert
 

What's hot (8)

DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
DEVOXX Let's Get Physical: I/O Programming with Java on the Raspberry Pi usin...
 
OpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons LearnedOpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons Learned
 
Ubiquitous Content Symposium 2009
Ubiquitous Content Symposium 2009Ubiquitous Content Symposium 2009
Ubiquitous Content Symposium 2009
 
Java withrealworldtechnology
Java withrealworldtechnologyJava withrealworldtechnology
Java withrealworldtechnology
 
!Zpx Overview New
!Zpx Overview New!Zpx Overview New
!Zpx Overview New
 
ELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot TimesELC-E 2010: The Right Approach to Minimal Boot Times
ELC-E 2010: The Right Approach to Minimal Boot Times
 
Velocity london 2012 bbc olympics
Velocity london 2012 bbc olympicsVelocity london 2012 bbc olympics
Velocity london 2012 bbc olympics
 
Autonomous Drone Development with Java and IoT
Autonomous Drone Development with Java and IoTAutonomous Drone Development with Java and IoT
Autonomous Drone Development with Java and IoT
 

Viewers also liked

Network with node
Network with nodeNetwork with node
Network with node
Philipp Fehre
 
Programmable Network Node: Applications
Programmable Network Node: ApplicationsProgrammable Network Node: Applications
Programmable Network Node: Applications
Tal Lavian Ph.D.
 
Hacking Robotics(English Version)
Hacking Robotics(English Version)Hacking Robotics(English Version)
Hacking Robotics(English Version)Kensei Demura
 
ROS distributed architecture
ROS  distributed architectureROS  distributed architecture
ROS distributed architecture
Pablo Iñigo Blasco
 
Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)
Piyush Chand
 
Roomba
RoombaRoomba
Roomba
Manav Gupta
 

Viewers also liked (6)

Network with node
Network with nodeNetwork with node
Network with node
 
Programmable Network Node: Applications
Programmable Network Node: ApplicationsProgrammable Network Node: Applications
Programmable Network Node: Applications
 
Hacking Robotics(English Version)
Hacking Robotics(English Version)Hacking Robotics(English Version)
Hacking Robotics(English Version)
 
ROS distributed architecture
ROS  distributed architectureROS  distributed architecture
ROS distributed architecture
 
Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)
 
Roomba
RoombaRoomba
Roomba
 

Similar to Hacking Robots for Fun and Profit

Hacklu2011 tricaud
Hacklu2011 tricaudHacklu2011 tricaud
Hacklu2011 tricaud
stricaud
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
datafundamentals
 
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon YangPractical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
Lyon Yang
 
Functional verification techniques EW16 session
Functional verification techniques  EW16 sessionFunctional verification techniques  EW16 session
Functional verification techniques EW16 session
Sameh El-Ashry
 
WTF is Twisted?
WTF is Twisted?WTF is Twisted?
WTF is Twisted?
hawkowl
 
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureIEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
Sebastien Kuntz
 
Neotys PAC 2018 - Jonathon Wright
Neotys PAC 2018 - Jonathon WrightNeotys PAC 2018 - Jonathon Wright
Neotys PAC 2018 - Jonathon Wright
Neotys_Partner
 
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)OpenBlend society
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry Pie
ESUG
 
When DevOps and Networking Intersect by Brent Salisbury of socketplane.io
When DevOps and Networking Intersect by Brent Salisbury of socketplane.ioWhen DevOps and Networking Intersect by Brent Salisbury of socketplane.io
When DevOps and Networking Intersect by Brent Salisbury of socketplane.io
DevOps4Networks
 
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
台灣資料科學年會
 
Capacity Planning for fun & profit
Capacity Planning for fun & profitCapacity Planning for fun & profit
Capacity Planning for fun & profit
Rodrigo Campos
 
Python performance profiling
Python performance profilingPython performance profiling
Python performance profiling
Jon Haddad
 
Patterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image LifecyclePatterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image Lifecycle
yoavl
 
Arduino Workshop @ MSA University
Arduino Workshop @ MSA UniversityArduino Workshop @ MSA University
Arduino Workshop @ MSA University
Ahmed Magdy Farid
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
Dashlane
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
ConSol Consulting & Solutions Software GmbH
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
ConSol Consulting & Solutions Software GmbH
 
The Java Carputer
The Java CarputerThe Java Carputer
The Java Carputer
Simon Ritter
 
IoT Aquarium 2
IoT Aquarium 2IoT Aquarium 2
IoT Aquarium 2
Benjamin Chodroff
 

Similar to Hacking Robots for Fun and Profit (20)

Hacklu2011 tricaud
Hacklu2011 tricaudHacklu2011 tricaud
Hacklu2011 tricaud
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
 
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon YangPractical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
Practical IoT Exploitation (DEFCON23 IoTVillage) - Lyon Yang
 
Functional verification techniques EW16 session
Functional verification techniques  EW16 sessionFunctional verification techniques  EW16 session
Functional verification techniques EW16 session
 
WTF is Twisted?
WTF is Twisted?WTF is Twisted?
WTF is Twisted?
 
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureIEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
 
Neotys PAC 2018 - Jonathon Wright
Neotys PAC 2018 - Jonathon WrightNeotys PAC 2018 - Jonathon Wright
Neotys PAC 2018 - Jonathon Wright
 
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
Byteman and The Jokre, Sanne Grinovero (JBoss by RedHat)
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry Pie
 
When DevOps and Networking Intersect by Brent Salisbury of socketplane.io
When DevOps and Networking Intersect by Brent Salisbury of socketplane.ioWhen DevOps and Networking Intersect by Brent Salisbury of socketplane.io
When DevOps and Networking Intersect by Brent Salisbury of socketplane.io
 
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
雲端影音與物聯網平台的軟體工程挑戰:以 Skywatch 為例-陳維超
 
Capacity Planning for fun & profit
Capacity Planning for fun & profitCapacity Planning for fun & profit
Capacity Planning for fun & profit
 
Python performance profiling
Python performance profilingPython performance profiling
Python performance profiling
 
Patterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image LifecyclePatterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image Lifecycle
 
Arduino Workshop @ MSA University
Arduino Workshop @ MSA UniversityArduino Workshop @ MSA University
Arduino Workshop @ MSA University
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
The Java Carputer
The Java CarputerThe Java Carputer
The Java Carputer
 
IoT Aquarium 2
IoT Aquarium 2IoT Aquarium 2
IoT Aquarium 2
 

More from Chad Udell

DevLearn 2018 - Designing AR Experiences for Performance Support
DevLearn 2018 -  Designing AR Experiences for Performance SupportDevLearn 2018 -  Designing AR Experiences for Performance Support
DevLearn 2018 - Designing AR Experiences for Performance Support
Chad Udell
 
ATD - Western Michigan September Meeting
ATD - Western Michigan September MeetingATD - Western Michigan September Meeting
ATD - Western Michigan September Meeting
Chad Udell
 
Atd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile LearningAtd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile Learning
Chad Udell
 
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 ResultsLeveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Chad Udell
 
Mlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll ResultsMlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll Results
Chad Udell
 
Tappestry Demo
Tappestry DemoTappestry Demo
Tappestry Demo
Chad Udell
 
Prototyping
PrototypingPrototyping
Prototyping
Chad Udell
 
Whats Next for Mobile Learning
Whats Next for Mobile LearningWhats Next for Mobile Learning
Whats Next for Mobile LearningChad Udell
 
There Is No Easy Button
There Is No Easy ButtonThere Is No Easy Button
There Is No Easy Button
Chad Udell
 
Learning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning AnalyticsLearning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning Analytics
Chad Udell
 
The Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnConThe Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnCon
Chad Udell
 
Design concepts for Mobile Learnng
Design concepts for Mobile LearnngDesign concepts for Mobile Learnng
Design concepts for Mobile Learnng
Chad Udell
 
ASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thChad Udell
 
Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Chad Udell
 
How to Convert Your eLearning to Mobile
How to Convert Your eLearning to MobileHow to Convert Your eLearning to Mobile
How to Convert Your eLearning to Mobile
Chad Udell
 
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Chad Udell
 
Comparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSesComparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSes
Chad Udell
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
Chad Udell
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
Chad Udell
 
History of Generative and Computer Art
History of Generative and Computer ArtHistory of Generative and Computer Art
History of Generative and Computer Art
Chad Udell
 

More from Chad Udell (20)

DevLearn 2018 - Designing AR Experiences for Performance Support
DevLearn 2018 -  Designing AR Experiences for Performance SupportDevLearn 2018 -  Designing AR Experiences for Performance Support
DevLearn 2018 - Designing AR Experiences for Performance Support
 
ATD - Western Michigan September Meeting
ATD - Western Michigan September MeetingATD - Western Michigan September Meeting
ATD - Western Michigan September Meeting
 
Atd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile LearningAtd 2015 - Mastering Mobile Learning
Atd 2015 - Mastering Mobile Learning
 
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 ResultsLeveraging Devices to Create Amazing Mobile Learning - TK2014 Results
Leveraging Devices to Create Amazing Mobile Learning - TK2014 Results
 
Mlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll ResultsMlearning Unraveled - With Poll Results
Mlearning Unraveled - With Poll Results
 
Tappestry Demo
Tappestry DemoTappestry Demo
Tappestry Demo
 
Prototyping
PrototypingPrototyping
Prototyping
 
Whats Next for Mobile Learning
Whats Next for Mobile LearningWhats Next for Mobile Learning
Whats Next for Mobile Learning
 
There Is No Easy Button
There Is No Easy ButtonThere Is No Easy Button
There Is No Easy Button
 
Learning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning AnalyticsLearning Tracking Out of the LMS and Embracing Learning Analytics
Learning Tracking Out of the LMS and Embracing Learning Analytics
 
The Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnConThe Leadership Challenge - mLearnCon
The Leadership Challenge - mLearnCon
 
Design concepts for Mobile Learnng
Design concepts for Mobile LearnngDesign concepts for Mobile Learnng
Design concepts for Mobile Learnng
 
ASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28thASTD St. Louis Presentation - July 28th
ASTD St. Louis Presentation - July 28th
 
Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?Is Mobile For Me? What Skills Do I Need?
Is Mobile For Me? What Skills Do I Need?
 
How to Convert Your eLearning to Mobile
How to Convert Your eLearning to MobileHow to Convert Your eLearning to Mobile
How to Convert Your eLearning to Mobile
 
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
Max 2010- Building Mobile Learning with Your Existing eLearning Toolkit - Ado...
 
Comparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSesComparing the Four Main Mobile OSes
Comparing the Four Main Mobile OSes
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
 
History of Generative and Computer Art
History of Generative and Computer ArtHistory of Generative and Computer Art
History of Generative and Computer Art
 

Hacking Robots for Fun and Profit

  • 1. Hacking Robots for Fun and Profit presented by Chad Udell at Flash and the City, 2010
  • 2. Hacking Robots for Fun and Profit • Flash is eminently hackable and ideal for building UIs for experiences that integrate with hardware • Tons of devices are coming with web connections • Hardware is getting cheaper and easier to get • Hobbyist techniques can be adapted for real world
  • 3. A History of Hacking Flash with Hardware
  • 4. About the Adler Planetarium Exhibit Project • Planet Explorers: 13 Experiences • X-Rovers are one of 7 interactive pieces
  • 5. Planet Explorers: X-Rovers • What is it? • How does it work? • What is the experience? • Demos • Code Samples
  • 6. What is it? • Emulating a Mars Rover like experience • Has to have a “mission” • Has to be easy to use
  • 7. Definition of the Experience • Origins (KUD) ‣ Remote Exploration is the Concept • Key Points ‣ No Crying Children ‣ Some Learning ‣ Ages 3-8
  • 8. First Thoughts • Custom R/C • T1 • Imperial Droid
  • 9. Basic Limitations • Skillset - We aren’t robotics engineers or electricians • Budget - Every client is conscious of this - duh • Scope - Need to integrate a timer, controls, basic computer vision, long term maintenance solution • Quality - Uptime is crucial. “Out of Order” is not an option
  • 10. Choosing a Robot • Essentially we need a connected webcam • Needs to be cheap • Needs to be hackable Enter, Rovio.
  • 11. A Diagram of the system 2 Stations, each containing: !"#$%&'()*+,-./+*0) UPS (APC BR1200) APC AV C2 Happ Kiosk Amp and Speakers 1"234&+56(!11(.7 Rovio Charger Happ Controls Server (Red 5) Netgear Wireless Access Point WG-102 Switch Rovio
  • 12. Rovio to the Rescue • Skillset - Essentially like building a mashup (documented API, built in webserver) • Budget - They are inexpensive and readily available (important for uptime) • Scope - many of the requirements are handled in some built in fashion already (wayfinding, charging). • Quality - We have a company backing it
  • 13. Flash to the Rescue • Skillset - We like it. • Budget - No extra expensive hardware to be designed, no expensive proprietary SDKs. • Scope - Still some questions here. Going to have to manage the client’s expectations. • Quality - Debugging and remote config is easy
  • 14. Controlling the Rovio • Rovio responds via HTTP (CGI script) • Use of key listeners to trigger API calls. /rev.cgi?Cmd=nav&action=value&drive=d_value&speed=s_value Input Parameter value = 18 d_value = 0 (Stop) 1 (Forward) 2 (Backward) 3 (Straight left) 4 (Straight right) 5 (Rotate left by speed) 6 (Rotate right by speed) 7 (Diagonal forward left) 8 (Diagonal forward right) 9 (Diagonal backward left) 10 (Diagonal backward right) 11 (Head up) 12 (Head down) 13 (Head middle) 14 (Reserved) 15 (Reserved) 16 (Reserved) 17 (Rotate left by 20 degree angle increments) 18 (Rotate right by 20 degree angle increments) s_value = 1 (fastest) – 10 (slowest)
  • 15. Controlling the Rovio Demo 1: Sending Commands to Rovio
  • 16. Getting the Video • Rovio sends via MJPEG via HTTP (CGI script) • Set a loader’s source to the URL Camera Control – GetData.cgi Description The basic command for acquiring MJPEGGrammar /ChangeResolution.cgi?ResType=value[&RedirectUrl=sUrl] Input Parameter None Privilege None Return Value An instance captured motion image. • Results were marginal (12-15 fps)
  • 17. Getting the Video Demo 2: MJPeg stream in a Loader
  • 18. Deeper Research on Video/Image Processing Simple color detection - • http://www.interactionfigure.nl/2009/colour-tracking-with-the-webcam-in-flash/ Color detection in Processing • http://jamesalliban.wordpress.com/2008/11/16/colour-detection-in-processing/ Haar training for object detection • http://note.sonots.com/SciSoftware/haartraining.html Modified facial detection • http://www.quasimondo.com/archives/000687.php
  • 19. Technology Evaluations • Shopping = Fun • Reading Electrical Engineer Documents = Not so Fun • Wiring Boards = Fun for some • Building PoCs = Super fun!
  • 20. Prototype • Software Proof of Concept • Hardware Hacking and Integration
  • 23. Prototype Demo 3: Happ Controls
  • 24. Alpha • Video was ok, but needed some juice. • Computer vision was deemed better than AR or object detection • Play control overall was very pleasing • Testing, Testing, Testing
  • 26. Enter Red 5/Xuggle • Transcode the Video to H264 (SteamStream) • Replace the MJPEG loader with a Netstream object • Better results. Lower latency. • Approaching 24-30fps • There is a bit of a hiccup with the initialization of the stream.
  • 27. Enter Red 5/Xuggle Demo 4: Red5/Xuggle
  • 28. Processing the video • Considered AR • Too Inflexible - Markers weren’t attractive • Considered Object Detection (Haar Cascades/ OpenCV) • A tad slow-ish • Attempted using simple ColorBoundsRect
  • 30. Finding the Targets Demo 5: Computer Vision
  • 31. What does that get you? (The Good)
  • 32. What does that get you? (The Bad)
  • 33. How about Creating a Unique Target? • Eliminate False Positives (was better, but not perfect) • Ensure Speedy Detection (was a little slower) Not Unique A Lot More Unique
  • 34. Processing the video • Settled on Color Detection via Thresholding • Tomek’s Blob Detection • http://play.blog2t.net/fast-blob-detection • Soulwire’s Color Averaging • http://blog.soulwire.co.uk/code/actionscript-3/ extract-average-colours-from-bitmapdata
  • 35. Fixing the Video Demo 5: Revised Computer Vision
  • 42. Buttoning it up • Charging handoff • Locking the kiosks down • C++ Socket Server for the Lights • Startup, shutdown • Training for the switchover
  • 43. Lessons Learned • SWF to EXE is not needed anymore. AIR 2! • Test early! Test Often! Test Under lots of Conditions! • Static Electricity Sucks (installation is crazy) • Your Kiosk Can Never Be Too Stable (Bullet Proof Your Kiosks) • Logging, Logging, Logging • Buy Lots of Extras
  • 44. Other stuff to hack! • Security/WiFi Cameras - http://www.axis.com • Tons of X10 Stuff - http://www.smarthome.com • Other Robots - http://www.spykeeworld.com/ • Rocket Launcher - http://www.thinkgeek.com/ geektoys/warfare/8bc4/?cpg=cj • Ultimarc Controls - http://www.ultimarc.com/
  • 45. More info, code samples, etc. • http://electricpineapple.net/ - Erik Peterson’s blog • http://ionagroup.com/labs - Iona’s Blog • http://visualrinse.com - My Blog Questions?
  • 46. Thank you • Find Us on: THE IONA GROUP 620 West Jackson Street • Morton, Illinois 61550 P: 309.263.4662 • F: 309.263.8262 • 888.644.IONA www.ionagroup.com