Hacking the owi robotic arm presentation liz quilty
-
Upload
liz-quilty -
Category
Technology
-
view
8.084 -
download
3
description
Transcript of Hacking the owi robotic arm presentation liz quilty
Hacking the OWI/Maplin Robotic Arm
By Liz Quilty
Confession
I don’t really know python.
My way is possibly not the best
I just like making things, and having fun :)
Items Required
1 OWI/Maplin Robotic Arm kit
Items Required
1 USB kit for the arm
Items Required
1 Raspberry Pi + power/network etc
Items RequiredA sick/bored child to assemble robotic arm
Setup Your Raspberry Pi
Partition and install raspbianhttp://elinux.org/RPi_Easy_SD_Card_Setup
Unpack this to the SD card as instructed
Set up networking and connect via SSH
Adding Dev rules
Create the file /etc/udev/rules.d/85-robotarm.rules with the contentsSUBSYSTEM=="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 groupusermod -aG plugdev www-datausermod -aG audio www-data
pyUSB
Install the custom pyUSBpyusb 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
Command Line
Quick and easyhttps://github.com/lizquilty/roboticarm/
Better for more complex stuffhttps://github.com/peterlavelle/maplinarm
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)
MovingMoveArm(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
Demo Hello World + Waving
PIR sensor connected to + - and pin GPIO pin 18Sensor detects movement, greets and waves, then waits
Test and use
Test the arm as rootPick up things, write some code, automate !Use cron for time basedsensors (motion) http://learn.adafruit.com/adafruits-raspberry-pi-lesson-12-sensing-movement/hardwarehttp://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-gpio
Speech - festivalVoice control
Web Based
Install apache & configure with CGI
https://github.com/lizquilty/roboticarm/
Simple UI
Demo
● Connect to the Wireless Access point RoboticArm● Browse to http://10.0.0.2
Try not to overload it :)
Speech
Python http://cmusphinx.sourceforge.net/
Googlehttp://blog.oscarliang.net/raspberry-pi-voice-recognition-works-like-siri/
References
My GitHub https://github.com/lizquilty/roboticarm/CLI scripts https://github.com/peterlavelle/maplinarmPyUSB http://sourceforge.net/projects/pyusb
99 little bugs in the code99 little bugs in the codeTake one down, patch it around117 little bugs in the code