Hand spåra mekanisk Arm - Pyduino + språng Motion (8 / 11 steg)

Steg 8: Länka språng motion Controller till en servomotor


Nu när du har förhoppningsvis enheten hoppa rörelse upp och kör vi ska skapa vår första program stream data från enheten och sedan ska vi koppla det till våra servomotor med pyduino biblioteket. Helst vi kör ett skript måste vi ha tjänsten leapd. Att veta att den här tjänsten körs bör du kunna se 3 upplysta lysdioder på enheten språng. (Se vidare bilden i föregående steg)

Vårt första steg skript kommer att bestå av flera viktiga komponenter. Det finns en kontrollerklass som ansluts till enhetens språng och en lyssnaren klass som kommer att få data från spårningsprogramvara. För en grundlig tutorial på hur man ställer in en enkel språng script kolla in: https://developer.leapmotion.com/documentation/pyt...

Jag ska ge en kort översikt över vad bit av koden nedan gör och hur det fungerar. I den huvudsakliga delen av koden vi initiera en instans av våra lyssnare och controller klasser efteråt vi lägga till anpassade lyssnaren till vår controller. Den viktigaste delen av skriptet är vad sker inom lyssnaren. Lyssnaren är en klass som kommer att få uppgifter från språng enheten och bedöma vad till gör med den information som direktuppspelas. Lyssnaren har möjlighet att få 60 bilder per sekund från enheten men det är lite för mycket information för vad vi vill. Du är säkert Välkommen att prova och använda 60 bilder per sekund till kontroll din Arduino emellertid hålla i minnet det tar en liten tid att skicka ett meddelande till Arduino enheten och få den svara. För att åtgärda problemet vi kommer endast att fungera med 10 ramar en sekund i stället för 60. Lyssnaren har några grundläggande funktioner: Å initiera på Connect, på koppla från, på avfarten, på ram. De är alla ganska självförklarande namn men kan gå igenom dem en efter en och förklara hur vi ska använda dem för att styra våra servo.

Initiera - vill här vi förklara våra Arduino och upprätta en seriell anslutning till det

På Connect - kan vi aktivera några gester för registeransvarige, utan att behöva göra något med Arduino här

Vid frånkoppling - ingenting verkligen här.

På Exit - ska vi återställa servo position och stäng anslutningen till vår Arduino enhet

På ram - är det första du ska göra får tid eftersom vi bara vill få en ram varje 10ms eller så. När vi fått ramen från registeransvarige berättar det vilken hand är i ramen och vad dess position. Från detta kan vi utvinna finger och gemensamma ståndpunkter. Vi ska använda vår hand normaliserade position i rutan interaktion och multiplicera det med spänna på vår motor. Till exempel om vår hand är hela vägen till vänster, normaliserade position 0 och vinkeln på våra servo kommer alltså 0 också. För mer insikt kan du läsa på rutan interaktion i Leap API-dokumentationen: https://developer.leapmotion.com/documentation/pyt... En annan användbar länk att titta på är en för ramen eftersom ramen lagrar all vår information om hand och positioner av allt. Att se vilken information som är tillgänglig inom vår ram kolla denna länken: https://developer.leapmotion.com/documentation/pyt...

Vi kommer att använda samma Arduino krets som vi skapade tidigare. Om du råkade ändra servo pin till något annat än 2 kommer att du behöva ändra koden nedan (linje 17). Om du inte kan få den Arduino del arbetar se till att har du seriell anslutning på rätt port (linje 23). Linjerna 78,82 är vad kontrollera servomotor. När du kör koden ta tid att flytta handen runt och se vad blir utgång. Positionen för din hand kommer ut i form av normaliserade position i rutan interaktion. Innan du kör den här koden se till att din leapd tjänst körs och att din Arduino är ansluten till datorn.

my_first_leap.py

# Enkel språng motion program för att spåra positionen för din hand och flytta en servo
# importera bibliotek där LeapMotionSDK är
importera sys
sys.Path.INSERT (0, "LeapLib /")
importera Leap, tråd, tid
från steg importera CircleGesture, KeyTapGesture, ScreenTapGesture, SwipeGesture
från pyduino import *
klass SampleListener(Leap.Listener):

oldtime = time.time()
NEWTIME = time.time()
# FIXME servo är inte ansluten till stift 2
SERVO_PIN = # 2 Azimuthal Servo motor pin
AZIMUTHAL_LIMIT = 180 # vi vill att vår motor att gå mellan 0 och 180
def on_init(self, controller):
# om din arduino kördes på en seriell port annat än ' / dev/ttyACM0 / "
# förklara: en = Arduino(serial_port='/dev/ttyXXXX')
Self.a = Arduino()

# sömn så gott om tid för datorn att göra seriell anslutning
Time.Sleep(3)

skriva ut "Initialized"
def on_connect(self, controller):
skriva ut "Ansluten"
# Aktivera gester
Controller.enable_gesture(LEAP.Gesture.TYPE_CIRCLE);
Controller.enable_gesture(LEAP.Gesture.TYPE_KEY_TAP);
Controller.enable_gesture(LEAP.Gesture.TYPE_SCREEN_TAP);
Controller.enable_gesture(LEAP.Gesture.TYPE_SWIPE);
def on_disconnect(self, controller):
# Observera: skickas inte när du kör i ett felsökningsprogram.
skriva ut "Frånkopplad"
def on_exit(self, controller):

# Återställa servo position när du slutar programmet
Self.a.servo_write (själv. SERVO_PIN, 90)
Self.a.Close()
skriva ut "Exited"
def on_frame(self, controller):
# Vi vill bara få ställning som handen varje så ofta
Self.NEWTIME = time.time()
om self.newtime-self.oldtime > 0,1: # om skillnaden mellan gånger 10ms
# Få senaste ramen och rapportera lite grundläggande information
ram = controller.frame()
interaction_box = frame.interaction_box

# Skriv ut lite statistik
skriva ut "ram-id: %d, tidsstämpel: %d, händer: %d, fingrar: %d, verktyg: %d, gester: %d" () %
Frame.ID, frame.timestamp, len(frame.hands), len(frame.fingers), len(frame.tools), len(frame.gestures()))
# Få händer
för hand i frame.hands:
handType = "Vänster hand" om hand.is_left annat "högra hand"
normalized_point = interaction_box.normalize_point(hand.palm_position,True)

skriva ut "%s, id %d, x-position: %s" % (handType, hand.id, normalized_point.x)
skriva ut "%s, id %d, y-position: %s" % (handType, hand.id, normalized_point.y)
skriva ut "%s, id %d, z-position: %s" % (handType, hand.id, normalized_point.z)
# FIXME beroende på läggning av servomotor
# Om motorn är upprätt, hoppa enheten registrerar en 0 graders vinkel om hand är hela vägen till vänster
XPOS_servo = abs(AZIMUTHAL_LIMIT-normalized_point.x*AZIMUTHAL_LIMIT)
skriva ut "Servo vinkel = %d" %(int(XPOS_servo))

# Skriv värdet till servo på arduino
Self.a.servo_write (själv. SERVO_PIN,int(XPOS_servo)) # slå LED på
# uppdatering den gamla tiden
Self.oldtime = self.newtime
annat:
passera # hålla framåt i tiden tills 10 millisekund nås
def main ():
# Skapa en prov lyssnaren och controller
lyssnaren = SampleListener()
Controller = Leap.Controller()
# Har prov lyssnaren ta emot händelser från registeransvarige
Controller.add_listener(Listener)
# Hålla processen igång tills retur trycks
skriva ut "Tryck på Enter för att avsluta..."
försök:
sys.stdin.readline()
Förutom KeyboardInterrupt:
passera
Slutligen:
# Ta bort provet lyssnaren när du är klar
Controller.remove_listener(Listener)
om __name__ == "__main__":
Main)

Se Steg
Relaterade Ämnen

Robotic Hand kontrolleras av gest med Arduino + språng Motion

Hej alla,Som utlovat har jag gjort en fullständig steg för steg instruktion för mitt universitet sista projekt!Först och främst: ledsen för min dålig engelsk! Om något är oklart, lämna gärna en kommentar.Hand styrs av Leap Motion + Arduino Uno (Stand...

Mekanisk Arm

Jag har köpt en mekanisk arm innan några dagar. Dess bilden ser lite gulligt. Det finns två färger för konsumenterna att välja, svart och vitt. Jag valde svart en.Det finns fyra servon för den. Första är att kontrollera dess mekaniska räcker för att...

4 DOF mekanisk arm bygga instruktion

I detta instructables Im knuffande några bilder av bygga till en mekanisk arm 4 DOF.Steg 1: Alla steg Jag hoppas dessa bilder hjälpte montera din 4 DOF mekanisk arm.Om du har några frågor bara fråga mig i kommentarerna. Tack för att titta på! :)...

Elastisk-muskulös mekanisk arm med 3 muskel-par, 3 laserskurna leder och 18 lager

detta instructable är en mekanisk arm som aktiveras av antagonistiska elastisk muskel par. Det är avsett för att utforska hur levande ting lär dig att flytta. Till skillnad från konventionella stela robotar, levande ting lär dig att kontrollera en fl...

Blir Tony Stark: Mobil virtuell verklighet Setup med språng Motion

Hur många av er har velat använda händerna och leta naturligt utan att använda din mus, tangentbord och skärm? Tja, idag kommer jag visa dig hur du använder en telefon, hoppa rörelse, och Virtuell verklighet glasögon för att skapa din egen värld.Varf...

Posable Steampunk Mekaniska Arm belysning enhet

Projektet började som ett försök att göra en steampunk-inspirerade (kanske mer cyber-punk?) mekanisk hand och arm med huvudsakligen mässing och koppar från metallskrot återvinningsanläggningar. Längs vägen jag beslutat att göra det mer funktionell so...

Kalibrera språng Motion

Kalibrera du hoppa rörelse är svårt! Men du vill kontrollera att du verkligen behöver. Vanligtvis kan du bara använda det mer och det kommer bli bättre. Vissa program som använder det är verkligen svårt att använda det med.Innan vi börjar:Anslut din...

Mekanisk Hand mekanism med Strawbees

Efter böljande ganska kul med Strawbees, insåg jag dess tid att lägga en instructable. För er som inte vet vad Strawbees är det är en kick-start finansierade företag, företaget grundades en Strawbee av misstag som är en slags plast med ben som rymmer...

Externa HDD hölje med hemliga mekaniska lås

Steampunk stil extern HDD fall eller extern HDD fackets mysteriet med usb tillgång låsa skyddas av magi. Här finns många alternativ att välja mellan!Tillverkade för hand, inspirerad av mekaniska tänkande, monteras med omsorg:-1mm mässing, handgjorda....

IoT Photon + språng rörligt Robot

För ett tag sedan byggde jag en PICAXE-baserade beröringsfri Sensor kontrollerade Robot som använde en hand rörelse-tracking hoppa rörelse sensoren till enheten. Tyvärr, den roboten för att anslutas till en dator att fungera, som begränsade dess anvä...

General Grievous kostym med rörliga mekaniska Extra ställa av vapen

här är en General Grievous kostym jag byggde med min son för Halloween ' 08.Den grundläggande konstruktionen är en svart tröja från en gammal billig affären halloween kostym och skum sammansättningar fästes med kardborrband. Det finns en PVC "ryggsäc...

Rey (Star Wars: The Force vaknar) gratis serietidning dag 2016

Hälsningar en gång Instructable-keteers!Som vanligt, jag är sömnbrist och över koffeinhaltiga igen när jag sitter ner för att skriva upp en annan kostym äventyr.I början var det en komisk butikJag vet jag har tidigare nämnt att jag har en vän (s) som...

Imperator Furiosa kostym

beslutat att göra det en mycket Mad Max: Fury Road Halloween och gjorde mitt bästa Furiosa. Jag gjorde också upp min S.O. som en Nux kriget pojken som jag ska dyka in i en annan utgåva.För alla hårdvara bitar använde jag massor av snaps och boken skr...

ROBOTARM Arduino kontrollerade

En robotarm ansvarar för mycket komplicerade processer som krävs för en rigorös och komplex programmering; jag är en elektronisk teknolog och jag har alltid fångat min uppmärksamhet dessa projekt så jag bestämde mig för "Jag vill bygga en robotarm.&q...

Elektromagnet superhjälte handske

för en klass tilldelning, jag behövde göra något tyg-baserade som tog en Arduino, några programmering, och minst två ingångar och utgångar. Efter skissa några olika idéer, jag slog på den här: en elektromagnetisk handske för MagnetoGirl. Det sprang t...

Hur man styr en Arduino styrda robotarm av Dobot teamet

Vi säger alltid, Dobot är en hög precision, flera control desktop robotarm. I senaste instructables, har vi visat dig hög precision och funktionen desktop genom att bygga en laser cut och lödning Dobot arm. Detta instructable, vi kommer att försöka v...

Hur man bygger en själv navigera roboten

detta är en detaljerad handledning om hur att förverkliga en robot från början, och ge den möjlighet att navigera självständigt i en okänd miljö.Alla inblandade med robotics typiska argument kommer att omfattas: mekanik , elektronik och programmering...

Robotarm kontrolleras av Intel Edison

Hej min vän!Här ska jag visa dig hur jag gjorde en robotarm kontrolleras av Intel Edison och under befäl av Leap rörelse.3D-modellen används i detta projekt är en mycket bra open source projekt finns här: http://inmoov.frSteg 1: Bygga armen Först och...

Fjärrstyrda robotarm

Detta är en guide för att göra en fjärrstyrda robot arm (6DOF) eller bara för att kontrollera några servon på något.En vanlig IR-TV remote kan du styra servon på en mekanisk robotarm. Det finns 17 knappar på fjärrkontrollen jag använt men jag bara an...