Étape 4: Java Source Code
Si vous n’êtes pas intéressé par le code java, vous pouvez sauter cette étape ; Toutefois, vous devrez au moins mettre votre personnel PubNub clés dans le code pour qu’il fonctionne ! Le code source peut être visionnée sur GitHub.
Les importations suivantes sont requises. Si elles aboutissent à des erreurs, vous n’avez probablement pas les bibliothèques SDK installés correctement.
import java.io.IOException; import java.lang.Math; import com.leapmotion.leap.*; import com.pubnub.api.*; import org.json.*;
Il est crucial que vous faites votre projet implémenter praticable afin que nous pouvons avoir toute l’activité de saut à exploiter dans son propre thread. Nous commençons par la mise en place du projet principal, une implémentation de l’interface Runnable et l’initialisation des variables globales, que nous allons utiliser plus tard. Les principales choses à prendre note de la variable globale « CHANNEL », mais aussi une paire de clés déclarée dans 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 ... } }
Ces chaînes sont les seules valeurs que vous aurez à modifier. Le nom du canal peut rester la valeur par défaut « leap2pi » ou peut être une autre valeur alphanumérique. Tout en utilisant PubNub pour communication parle sur un canal, si vous souhaitez utiliser un nom unique pour éviter la diaphonie entre différents projets ! La publication et abonnement clés sont des identificateurs personnels uniques qui vous est donnés par PubNub lorsque vous vous inscrivez pour un compte. Assurer leur sécurité. Les garder privé. Ces clés empêchent d’autres personnes de parler sur votre site (s). Prendre note, qu’il pourrait y avoir quelques endroits dans le code qui utilisent spécifiquement la chaîne « leap2pi » au lieu de la constante "CHANNEL", et toutes ces instances doivent être modifiés.
Le Leap Motion capture environ 300 images chaque seconde. Dans chaque cadre, nous avons accès à des tonnes d’informations sur nos mains, tels que le nombre de doigts étendus, tangage, lacet et gestes de la main. Les valeurs retournées par le saut pour le tangage et lacet (poignet pan et tilt) sont en radians, qui ne nous aide pas trop. Nous voulons convertir ces valeurs dans un format accepté par le pilote PWM dans la boîte. Nous avons tout d’abord convertir des radians en degrés, puis de degrés par rapport à une valeur PWM servo acceptable entre 150 et 600. Cette gamme correspond à la plage de travail typique d’un servo (500-2000 aux États-Unis), représentée par le pilote de servo de 12 bits.
L’équation de base est 2500us / (2 ^ 13 -1) * (largeur d’impulsion Servo Min/Max), donc [500, 2000] nous correspond à [150, 600]... à peu près... Dans le code, ces conversions sont traitées par les méthodes suivantes.
public static int radiansToAdjustedDegrees(int radians){} public static double pitchDegreeToPWM(double degree){} public static double yawDegreeToPWM(double degree){} public static int normalizeDegree(int value){}
Aussi, s’il vous plaît excuser les servo incorrect et la terminologie PWM dans le code... pas tout le monde qui ont travaillé sur ce projet était un expert en ces matières !
La meilleure façon de s’assurer que votre code fonctionne est de charger la Console de débogage PubNub. De là, vous pouvez entrer le nom de votre chaîne ainsi que votre publication et s’abonner à touches. Appuyez sur "S’abonner" et vos données publiées devraient apparaître dans la boîte de messages lorsque vous déplacez vos mains sur le contrôleur de mouvement de saut avec le code Java qui s’exécute.