Hand bijhouden van mechanische Arm - Pyduino + sprong Motion (8 / 11 stap)

Stap 8: De sprong motion Controller te koppelen aan een servomotor

Nu hopelijk hebt u uw apparaat sprong beweging omhoog en lopen die we gaan maken onze eerste program stream gegevens van het apparaat en dan we gonna koppelen tot onze servomotor met de pyduino-bibliotheek. Elke keer wanneer we uitvoert een script moeten we de leapd-service wordt uitgevoerd. Om te weten dat deze service draait dat u moet zitten kundig voor zien de 3 verlichte LEDs op uw apparaat sprong. (Zie ON afbeelding in de vorige stap)

Onze eerste sprong script zal worden samengesteld uit verschillende belangrijke onderdelen. Er is een controller die verbindt naar het apparaat sprong en een luisteraar klasse die de gegevens van de opsporingssoftware van zal krijgen. Voor een grondige tutorial over hoe u een eenvoudige sprong script check out: https://developer.leapmotion.com/documentation/pyt...

Ik geef een beknopt overzicht van wat het stukje code hieronder doet en hoe het werkt. In het grootste deel van de code initialiseren we een exemplaar van onze luisteraar en controller klassen daarna voegen we de aangepaste luisteraar aan onze controller. Het belangrijkste deel van het script is wat er gebeurt binnen de luisteraar. De luisteraar is een klasse die zal verkrijgen van gegevens van het apparaat van de sprong en beoordelen wat te doen met de informatie gestreamd. De luisteraar heeft de mogelijkheid om het verkrijgen van 60 frames per seconde van het apparaat, maar dat is een beetje teveel informatie voor wat we willen. Je bent zeker welkom om te proberen en gebruik de 60 frames per seconde te controleren uw Arduino maar houd in gedachten het duurt een kleine hoeveelheid tijd te reageren en stuur een bericht naar de Arduino-apparaat. Om op te lossen dit probleem gaan we alleen werken met 10 frames een tweede in plaats van 60. De luisteraar heeft een paar basisfuncties: op initialiseren, op verbinding maken op verbinding verbreken, op afsluiten, op Frame. Ze zijn allemaal vrij duidelijk uit de namen maar laat ze één voor één doorlopen en uitleggen hoe we gaan om ze te gebruiken om te controleren onze servo.

Op Initialize - willen hier we verklaren onze Arduino en seriële verbinding maken met het

Op Connect - kunnen We enkele gebaren voor de controller, hoeft te doen met de Arduino hier

Op verbinding verbreken - niets echt hier.

Op Exit - willen We de servo positie herstellen en sluit de verbinding met onze apparaat Arduino

Op Frame - is het eerste ding om te doen de tijd krijgen, want wij willen alleen krijgen een frame elke 10ms of zo. Zodra we het frame van de controller verkrijgen zal het ons vertellen welke kant is in het frame en wat haar standpunt is. Hieruit kunnen we vinger en gezamenlijke standpunten zo goed uitpakken. We gaan het gebruik van de genormaliseerde positie van onze hand in het vak van de interactie en vermenigvuldig dat met het bereik van onze motor. Bijvoorbeeld als onze hand helemaal links was, de genormaliseerde positie 0 zal zijn en dus de hoek op onze servo 0 zo goed zal zijn. Voor meer inzicht u kunt lezen over het vak van de interactie in de sprong API documentatie: https://developer.leapmotion.com/documentation/pyt... Een andere nuttige link om naar te kijken is enerzijds voor het frame omdat het frame al onze informatie over de hand en de standpunten van alles slaat. Om te zien welke informatie is toegankelijk in onze frame Bekijk deze link: https://developer.leapmotion.com/documentation/pyt...

We zijn gaan gebruiken hetzelfde Arduino circuit dat we eerder hebt gemaakt. Als u is er gebeurd met de servo-pin wijzigen in iets anders dan 2 moet u de code hieronder (lijn 17) te wijzigen. Bent u niet in staat om het deel van de Arduino werken ervoor hebt u de seriële aansluiting op de juiste poort (regel 23). Lijnen 78,82 zijn wat de servomotor control. Tijdens het uitvoeren van de code Neem de tijd om uw hand bewegen en zien wat de uitvoer krijgt. De positie van uw hand zal worden output in termen van de genormaliseerde positie in het vak van de interactie. Zorg ervoor dat uw leapd-service wordt uitgevoerd en dat je Arduino is aangesloten op uw computer voordat u deze code uitvoert.

my_first_leap.py

 # Simple Leap motion program to track the position of your hand and move one servo# import the libraries where the LeapMotionSDK is import sys sys.path.insert(0, "LeapLib/")import Leap, thread, time from Leap import CircleGesture, KeyTapGesture, ScreenTapGesture, SwipeGesture from pyduino import *class SampleListener(Leap.Listener): oldtime = time.time() newtime = time.time() # FIXME if servo is not attached to pin 2 SERVO_PIN = 2 # Azimuthal Servo motor pin AZIMUTHAL_LIMIT = 180 # we want our motor to go between 0 and 180 def on_init(self, controller): # if your arduino was running on a serial port other than '/dev/ttyACM0/' # declare: a = Arduino(serial_port='/dev/ttyXXXX') self.a = Arduino() # sleep to ensure ample time for computer to make serial connection time.sleep(3) print "Initialized" def on_connect(self, controller): print "Connected" # Enable gestures 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): # Note: not dispatched when running in a debugger. print "Disconnected" def on_exit(self, controller): # Reset servo position when you stop program self.a.servo_write(self.SERVO_PIN,90) self.a.close() print "Exited" def on_frame(self, controller): # we only want to get the position of the hand every so often self.newtime = time.time() if self.newtime-self.oldtime > 0.1: # if difference between times is 10ms # Get the most recent frame and report some basic information frame = controller.frame() interaction_box = frame.interaction_box # print some statistics print "Frame id: %d, timestamp: %d, hands: %d, fingers: %d, tools: %d, gestures: %d" % ( frame.id, frame.timestamp, len(frame.hands), len(frame.fingers), len(frame.tools), len(frame.gestures())) # Get hands for hand in frame.hands: handType = "Left hand" if hand.is_left else "Right hand" normalized_point = interaction_box.normalize_point(hand.palm_position,True) print " %s, id %d, x-position: %s" % (handType, hand.id, normalized_point.x ) print " %s, id %d, y-position: %s" % (handType, hand.id, normalized_point.y ) print " %s, id %d, z-position: %s" % (handType, hand.id, normalized_point.z ) # FIXME depending on orientation of servo motor # if motor is upright, Leap Device will register a 0 degree angle if hand is all the way to the left XPOS_servo = abs(AZIMUTHAL_LIMIT-normalized_point.x*AZIMUTHAL_LIMIT) print " Servo Angle = %d " %(int(XPOS_servo)) # write the value to servo on arduino self.a.servo_write(self.SERVO_PIN,int(XPOS_servo)) # turn LED on # update the old time self.oldtime = self.newtime else: pass # keep advancing in time until 10 millisecond is reacheddef main(): # Create a sample listener and controller listener = SampleListener() controller = Leap.Controller() # Have the sample listener receive events from the controller controller.add_listener(listener) # Keep this process running until Enter is pressed print "Press Enter to quit..." try: sys.stdin.readline() except KeyboardInterrupt: pass finally: # Remove the sample listener when done controller.remove_listener(listener)if __name__ == "__main__": main() 

Gerelateerde Artikelen

Beheersing van Arduino auto via sprong Motion

Beheersing van Arduino auto via sprong Motion

Laatste tijd, heb ik een Arduino-auto, die wordt beheerd via het Web. Dit keer, ik heb dezelfde auto gebruikt maar het wordt bestuurd via Motion sprong.Stap 1: Wat is sprong beweging.U kunt controleren wat "Leap Motion" is door de officiële webs
Robotic Hand gecontroleerd door gebaar met Arduino + sprong Motion

Robotic Hand gecontroleerd door gebaar met Arduino + sprong Motion

Belangrijk: Zoals beloofd ik m maken een volledige stap voor stap instructies: Klik hierHallo iedereen, dit is gewoon een video over mijn laatste project van de Universiteit!De hand wordt gecontroleerd door sprong Motion Arduino Uno (standaard Firmat
Mechanische Arm

Mechanische Arm

Ik heb een mechanische arm gekocht voor enkele dagen. Haar foto ziet er een beetje leuk. Er zijn twee kleuren voor de consument om te kiezen, zwart en wit. Ik koos voor zwarte.Er zijn vier servo's daarvoor. Eerst is een het bepalen van de mechanische
LeapTek: Sprong Motion Interface met een boord van MediaTek LinkIt!

LeapTek: Sprong Motion Interface met een boord van MediaTek LinkIt!

Hallo iedereen,Ik ben Geeve George een 15-jarige Maker/elektronica Hobbyist.I liefde computervisie, Androïde ontwikkeling en algoritme Design.I ben momenteel in 11de rang Student informatica op Little Rock Indian School. :) Meer informatie vinden ove
Sprong Motion gecontroleerd externe zoeken en verwijdering Robot

Sprong Motion gecontroleerd externe zoeken en verwijdering Robot

Als onderdeel van mijn inzending voor de sprong Motion #3D Jam was ik opgewekt om te bouwen van deze draadloze gebaar gecontroleerde zoeken/Rescue Robot gebaseerd op de Raspberry Pi. Dit project laat zien en biedt een minimalistisch voorbeeld van hoe
Het bijhouden van een lichtbron met een Actuator

Het bijhouden van een lichtbron met een Actuator

.. .of misschien het moet worden genoemd "Met behulp van een oude zonnecel van een volledig gecorrodeerde tuin licht als een lichtsensor". :)In dit instructable, ik bouwen op mijn vorige en Toon u hoe kun je een actuator vinden de grootste licht
Kalibreren sprong Motion

Kalibreren sprong Motion

Kalibreren van je sprong beweging is hard! U wilt echter ervoor te zorgen dat u echt wilt. Gewoonlijk u annuleerteken uitsluitend toepassing het meer en het zal beter krijgen. Sommige programma's die het gebruiken zijn gewoon echt moeilijk om te gebr
Hoe bijhouden van uw Robot met OpenCV

Hoe bijhouden van uw Robot met OpenCV

UPDATE: Laat maken Robots, mijn huis digitale hackerspace, werd gekocht door RobotShop. Ik wil niet ingaan, maar de nieuwe eigenaren verboden mezelf en de meeste van de ervaren leden. Dat gezegd, allermeest naar de verbinding er gebroken zal worden.
Tony Stark geworden: Mobiele Virtual Reality Setup met sprong Motion

Tony Stark geworden: Mobiele Virtual Reality Setup met sprong Motion

Hoeveel van jullie hebben wilde gebruik je handen en kijk rond natuurlijk zonder having voor toepassing uw muis, toetsenbord en scherm? Nou, vandaag zal ik u tonen hoe te gebruiken van een telefoon, sprong van beweging, en Virtual Reality bril als u
4 DOF mechanische arm build instructie

4 DOF mechanische arm build instructie

In deze instructables Im duwen van enkele foto's van het bouwen aan een 4 DOF mechanische arm.Stap 1: Alle stappen Ik hoop dat deze foto's hielp je 4 DOF mechanische arm monteren.Hebt u vragen gewoon vragen me in de commentaren. Bedankt voor het kijk
CatGenie: Herstellen (en het voorkomen van) een Arm rotatie Pin mislukking

CatGenie: Herstellen (en het voorkomen van) een Arm rotatie Pin mislukking

de pooper scooper of "GenieHand" op een CatGenie is verbonden met een gebogen metalen arm. Aan de andere kant van deze arm is een groot tandwiel dat draait uit te breiden en intrekken van de hand. Door een gat in de arm is een pen die wordt opge
Augmented Reality met behulp van Unity3D, Vuforia en sprong bewegingen – virtuele bloem in jouw handen nemen

Augmented Reality met behulp van Unity3D, Vuforia en sprong bewegingen – virtuele bloem in jouw handen nemen

Meer Augmented Reality u tutorials vindt hier:1.2.3.4.5.6.7.8.9.10.11.12.13.Stap 1: Download alles hieronder en volg de instructies in de videoDownloaden van de # Unity3D (download en installeer het, als u niet reeds hebt) (*.exe bestand)Unity3d is o
Bijhouden van torentje met PIC en C IR

Bijhouden van torentje met PIC en C IR

Dit is een goede leren-project dat is leuk om te bouwen - ik veel gelopen waardoor het. Ik denk dat dit vrij een beetje al gebeurd, maar ik vond niet dat een eenvoudige manier om dit te doen met foto's. Toen ik eindelijk het werkt, ik dacht dat ik zo
Simulatie van Robotic Arm Gripper

Simulatie van Robotic Arm Gripper

jaarlijks ik deelnemen aan een uitdaging genoemd de eerste wedstrijd van de robotica. Ik en mijn team moet komen met een robot-ontwerp dat moet voldoen aan bepaalde specificaties om te kunnen concurreren met succes. De meeste jaren, heeft mijn team b