Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Liz Quilty: Hacking the OWI robotic arm bot

Liz Quilty: Hacking the OWI robotic arm bot

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Liz Quilty:
Hacking the OWI robotic arm bot
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
@ Kiwi PyCon 2013 - Saturday, 07 Sep 2013 - Track 1

**Audience level**



Demonstrating the OWI robotic arm running automated with a Raspberry Pi and some python code.


After buying my son an OWI robotic arm,we decided to see if we could do more with it than use the remote controller. We quickly found you can buy a USB interface, however it only came with windows drivers. After some googling we found we could control this with python scripts which led to even more fun!




New Zealand Python User Group

September 07, 2013

More Decks by New Zealand Python User Group

Other Decks in Programming


  1. Hacking the OWI/Maplin Robotic Arm By Liz Quilty

  2. Confession I don’t really know python. My way is possibly

    not the best I just like making things, and having fun :)
  3. Items Required 1 OWI/Maplin Robotic Arm kit

  4. Items Required 1 USB kit for the arm

  5. Items Required 1 Raspberry Pi + power/network etc

  6. Items Required A sick/bored child to assemble robotic arm

  7. Setup Your Raspberry Pi Partition and install raspbian http://elinux.org/RPi_Easy_SD_Card_Setup Unpack

    this to the SD card as instructed Set up networking and connect via SSH
  8. Adding Dev rules Create the file /etc/udev/rules.d/85-robotarm.rules with the contents

    SUBSYSTEM=="usb", ATTRS{idVendor}=="1267", ATTRS{idProduct}=="0000", ACTION=="add", GROUP="plugdev", MODE="0666" This allows non root users to access it. For CGI add apache user to plugdev group usermod -aG plugdev www-data usermod -aG audio www-data
  9. pyUSB Install the custom pyUSB pyusb http://sourceforge.net/projects/pyusb # wget "http://downloads.sourceforge.net/project/pyusb/PyUSB%201.0/1.0.0-

    alpha-3/pyusb-1.0.0a3.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects% 2Fpyusb%2F&ts=1377736820&use_mirror=hivelocity" # unzip pyusb-1.0.0a3.zip # cd pyusb # python setup.py build # python setup.py install
  10. Command Line Quick and easy https://github.com/lizquilty/roboticarm/ Better for more complex

    stuff https://github.com/peterlavelle/maplinarm
  11. Setting up the functions #ROBOT ARM CONTROL PROGRAM #import the

    USB and Time librarys into Python import usb.core, usb.util, time #Allocate the name 'RoboArm' to the USB device RoboArm = usb.core.find(idVendor=0x1267, idProduct=0x000) #Check if the arm is detected and warn if not if RoboArm is None: raise ValueError("Arm not found") #Create a variable for duration Duration=1 #Define a procedure to execute each movement def MoveArm(Duration, ArmCmd): #Start the movement RoboArm.ctrl_transfer(0x40,6,0x100,0,ArmCmd,1000) #Stop the movement after waiting a specified duration time.sleep(Duration) ArmCmd=[0,0,0] RoboArm.ctrl_transfer(0x40,6,0x100,0,ArmCmd,1000)
  12. Moving MoveArm(1,[0,1,0]) #Rotate base anti-clockwise MoveArm(1,[0,2,0]) #Rotate base clockwise MoveArm(1,[64,0,0])

    #Shoulder up MoveArm(1,[128,0,0]) #Shoulder down MoveArm(1,[16,0,0]) #Elbow up MoveArm(1,[32,0,0]) #Elbow down MoveArm(1,[4,0,0]) #Wrist up MoveArm(1,[8,0,0]) # Wrist down MoveArm(1,[2,0,0]) #Grip open MoveArm(1,[1,0,0]) #Grip close MoveArm(1,[0,0,1]) #Light on MoveArm(1,[0,0,0]) #Light off
  13. Demo Hello World + Waving PIR sensor connected to +

    - and pin GPIO pin 18 Sensor detects movement, greets and waves, then waits
  14. Test and use Test the arm as root Pick up

    things, write some code, automate ! Use cron for time based sensors (motion) http://learn.adafruit.com/adafruits-raspberry-pi-lesson-12- sensing-movement/hardware http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-gpio Speech - festival Voice control
  15. Web Based Install apache & configure with CGI https://github.com/lizquilty/roboticarm/

  16. Simple UI

  17. Demo • Connect to the Wireless Access point RoboticArm •

    Browse to Try not to overload it :)
  18. Speech Python http://cmusphinx.sourceforge.net/ Google http://blog.oscarliang.net/raspberry-pi-voice- recognition-works-like-siri/

  19. References My GitHub https://github.com/lizquilty/roboticarm/ CLI scripts https://github.com/peterlavelle/maplinarm PyUSB http://sourceforge.net/projects/pyusb 99

    little bugs in the code 99 little bugs in the code Take one down, patch it around 117 little bugs in the code