2017-03-04 3 views
1

Je travaille sur le développement d'une application en utilisant Android Studio qui pilote le drone DJI Phantom 3 dans un certain modèle, prendre des photos à certains points de manière. J'ai téléchargé l'exemple de code DJI sur Android Studio, entré une clé d'application sur le fichier Android Manifest.xml, et modifié le code "CustomMissionView" dans le répertoire "MissionManager" afin de programmer le drone à voler dans un modèle spécifié. Cependant, lorsque je lance ce projet sur le simulateur DJI, il y a un délai entre chacune des "étapes" de la mission personnalisée, parfois le drone est inactif et reste quelques secondes sans rien faire. Je veux savoir s'il y a moyen de minimiser le délai entre les étapes de la mission personnalisée sans régler la vitesse de vol. Je soupçonne que cela a quelque chose à voir avec le DJICommonCallbacks.DJICompletionCallback(), mais je ne suis pas sûr. Je suis un novice pour Android Studio, donc tout conseil serait utile.DJI Phantom 3 Application Mission personnalisée, Délai entre les étapes de la mission:

Voici une partie du code dans la méthode DJI protégée Mission dans le fichier Java « de CustomMissionView »

LinkedList<DJIMissionStep> steps = new LinkedList<DJIMissionStep>(); 


    //Step 1: takeoff from the ground 
    steps.add(new DJITakeoffStep(new DJICommonCallbacks.DJICompletionCallback() { 

     public void onResult(DJIError error) { 
      Utils.setResultToToast(mContext, "Takeoff step: " + (error == null ? "Success" : error.getDescription())); 
     } 
    })); 

    //Step 2: reset the gimbal to desired angle 
    steps.add(new DJIGimbalAttitudeStep(
      DJIGimbalRotateAngleMode.AbsoluteAngle, 
      new DJIGimbalAngleRotation(true, -30f, DJIGimbalRotateDirection.Clockwise), 
      null, 
      null, 
      new DJICommonCallbacks.DJICompletionCallback() { 

       public void onResult(DJIError error) { 
        Utils.setResultToToast(mContext, "Set gimbal attitude step: " + (error == null ? "Success" : error.getDescription())); 

       } 
      })); 

    //Step 3: Go 3 meters from home point 
    steps.add(new DJIGoToStep(mHomeLatitude, mHomeLongitude, 3, new DJICommonCallbacks.DJICompletionCallback() { 


     public void onResult(DJIError error) { 
      Utils.setResultToToast(mContext, "Goto step: " + (error == null ? "Success" : error.getDescription())); 
     } 
    })); 

Répondre

0

La pause entre chaque étape est due à la façon dont DJI a mis en place la mission personnalisée. Lorsque vous préparez une mission personnalisée, elle n'envoie aucune information de mission à l'avion lui-même. Il construit la mission personnalisée sur l'appareil qui exécute l'application. Pendant l'exécution de la mission, une étape est envoyée à l'avion. Lorsque cette étape s'est terminée avec succès, l'étape suivante est envoyée à l'aéronef. Cela provoque la pause entre chaque étape. Si le signal de la télécommande à l'aéronef devient faible, la mission peut échouer à l'expiration du délai.

Les missions de point de cheminement n'ont pas cette pause parce que toute la mission est chargée dans l'avion lors de sa préparation.