Stap 4: Java-broncode
Als u niet geïnteresseerd in de java-code bent, kunt u deze stap; overslaan echter, moet u ten minste zetten van uw persoonlijke sleutels van de PubNub in de code voor het aan het werk! De broncode kan worden bekeken op GitHub.
De volgende invoer zijn vereist. Als deze in fouten resulteren, hebt waarschijnlijk niet u de SDK-bibliotheken correct geïnstalleerd.
import java.io.IOException; import java.lang.Math; import com.leapmotion.leap.*; import com.pubnub.api.*; import org.json.*;
Het is van cruciaal belang dat u uw project Runnable implementeren, zodat we kunnen beschikken over alle activiteiten van de sprong in zijn eigen besturingsthread opereren. We beginnen door de oprichting van het belangrijkste project, een implementatie van de jaagbare interface en initialiseren van globale variabelen die we later zullen gebruiken. De belangrijkste dingen om te nemen nota van zijn de globale variabele "kanaal", alsmede een paar sleutels verklaard in main.
public class LeapToServo implements Runnable{ public static final String CHANNEL = "leap2pi"; // ... A Bunch of Code ...public static void main(String[] args) { String pubKey = "Your_Publish_Key"; String subKey = "Your_Subscribe_Key"; // ... A bit more code ... } }
Deze tekenreeksen zijn de enige waarden die u zult moeten veranderen. De naam van het kanaal de standaard "leap2pi" kan blijven of kan bestaan uit sommige andere alpha-numerieke waarde. Alles met behulp van PubNub voor communicatie praat via een kanaal, dus u een unieke naam gebruikt wilt om te voorkomen dat cross talk tussen verschillende projecten! Het publiceren en abonneren sleutels zijn unieke persoonlijke id gegeven aan u door PubNub wanneer u zich voor een account registreert. Houd ze veilig. Houd ze privé. Deze toetsen voorkomen dat andere mensen praten op uw zender (s). Let op, er misschien wel een paar plaatsen in de code die specifiek de tekenreeks "leap2pi" in plaats van de constante "Kanaal gebruikt", en al deze situaties moet worden gewijzigd.
De sprong motie vangt ongeveer 300 frames per seconde. Binnen elk frame hebben we toegang tot ton van informatie over onze handen, zoals het aantal vingers uitgebreid, toonhoogte, yaw en hand gebaren. De waarden geretourneerd door de sprong voor pitch en yaw (pols pan en tilt) zijn in radialen, die helpt ons niet teveel. Wij willen deze waarden converteren naar een indeling die is aanvaard door het PWM-stuurprogramma in het vak. We eerst converteren van radialen naar graden, waarna een aanvaardbaar servo PWM waarde tussen 150 en 600 graden. Dit bereik komt overeen met de typische werkbereik van een servo (500-2000 VS), vertegenwoordigd door de 12 bits servo stuurprogramma.
De fundamentele vergelijking is 2500us / (2 ^ 13 -1) * (Servo Min/Max pulsbreedte), dus [500, 2000] ons toegewezen aan [150, 600]... ongeveer... In de code, worden deze omzettingen afgehandeld door de volgende methoden.
public static int radiansToAdjustedDegrees(int radians){} public static double pitchDegreeToPWM(double degree){} public static double yawDegreeToPWM(double degree){} public static int normalizeDegree(int value){}
Ook, gelieve excuus de onjuiste servo en PWM terminologie in de code... niet iedereen die aan dit project meegewerkt was een expert in deze onderwerpen!
De beste manier om ervoor te zorgen dat uw code werkt is voor het laden van de Foutopsporingsconsole PubNub. U kunt vanaf hier, voer de naam van je kanaal, evenals uw publiceren en abonneren toetsen. Hit "Subscribe", en uw gepubliceerde gegevens moeten verschijnen in het vak berichten terwijl u uw handen over de sprong Motion Controller beweegt met de Java-code die wordt uitgevoerd.