Mobile-SDK-Android icon indicating copy to clipboard operation
Mobile-SDK-Android copied to clipboard

Inconsistent waypoint mission progress

Open fernando-s97 opened this issue 4 years ago • 4 comments

Hi!

Problem

At the exact moment the mission starts, my WaypointMissionProgress notifies the target waypoint as being 0 and that it has already arrived at it, even if the drone hasn't even taken off. This makes my app behave in unexpected ways. The last waypoint gets notified three times also.

Is this an expected or known behavior? How could I fix it?

Environment

Android 11 SDK 4.15 Phantom 4 Pro V2 with latest firmware and flysafe database (DJI Go 4 didn't warn about any available updates)

Mission

{
   "autoFlightSpeed":12.5,
   "finishedAction":"GO_HOME",
   "flightPathMode":"CURVED",
   "gotoFirstWaypointMode":"SAFELY",
   "headingMode":"AUTO",
   "maxFlightSpeed":15.0,
   "missionID":3,
   "pointOfInterest":null,
   "repeatTimes":1,
   "waypointCount":10,
   "waypointList":[
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":30.0,
         "coordinate":{
            "latitude":-23.160064680262902,
            "longitude":-45.793138167755586,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":148,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"COUNTER_CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":148
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":30.63971,
         "coordinate":{
            "latitude":-23.16035352517325,
            "longitude":-45.79294537267839,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":59,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"COUNTER_CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":59
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":30.344177,
         "coordinate":{
            "latitude":-23.16028490142418,
            "longitude":-45.79281902897924,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":-31,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":329
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":29.966614,
         "coordinate":{
            "latitude":-23.15991783895118,
            "longitude":-45.793064031946955,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":24,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":24
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":29.104614,
         "coordinate":{
            "latitude":-23.159770997639463,
            "longitude":-45.79298989630087,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":148,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"COUNTER_CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":148
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":29.96222,
         "coordinate":{
            "latitude":-23.16021627767511,
            "longitude":-45.79269268540955,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":59,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"COUNTER_CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":59
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":29.96521,
         "coordinate":{
            "latitude":-23.160147653926042,
            "longitude":-45.79256634196932,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":-31,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":329
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":28.554016,
         "coordinate":{
            "latitude":-23.15962415632774,
            "longitude":-45.79291576081732,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":24,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":24
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":28.408203,
         "coordinate":{
            "latitude":-23.159477315016023,
            "longitude":-45.79284162549635,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":148,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"COUNTER_CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":148
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":29.958801,
         "coordinate":{
            "latitude":-23.160079030176973,
            "longitude":-45.79243999865855,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":17,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[

         ],
         "headingInner":17
      }
   ],
   "exitMissionOnRCSignalLostEnabled":false,
   "gimbalElevationOptimizeEnabled":false,
   "gimbalPitchRotationEnabled":false
}

Code

DJISDKManager.getInstance().getMissionControl().getWaypointMissionOperator()
    .addListener(new WaypointMissionOperatorListener() {
        @Override
        public void onDownloadUpdate(@NonNull final WaypointMissionDownloadEvent __) {
        }

        @Override
        public void onUploadUpdate(@NonNull final WaypointMissionUploadEvent __) {
        }

        @Override
        public void onExecutionUpdate(@NonNull final WaypointMissionExecutionEvent event) {
            final NcbWaypointExecutionProgress ncbProgress = NcbWaypointExecutionProgress
                .fromDji(event.getProgress());
            Logger.d(ncbProgress == null ? null : ncbProgress.toString());
        }

        @Override
        public void onExecutionStart() {
        }

        @Override
        public void onExecutionFinish(@Nullable final DJIError djiError) {
        }
    });

Log of some executions

  • First

2021-08-25 15:53:28.316 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 15:53:59.517 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 15:53:59.709 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=false) 2021-08-25 15:54:06.725 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=true) 2021-08-25 15:54:07.115 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=false) 2021-08-25 15:54:11.124 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=true) 2021-08-25 15:54:11.615 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=false) 2021-08-25 15:54:19.205 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=true) 2021-08-25 15:54:19.506 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=false) 2021-08-25 15:54:24.007 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=true) 2021-08-25 15:54:24.516 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=false) 2021-08-25 15:54:33.027 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=true) 2021-08-25 15:54:33.414 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=false) 2021-08-25 15:54:37.414 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=true) 2021-08-25 15:54:37.925 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=false) 2021-08-25 15:54:47.216 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=true) 2021-08-25 15:54:47.627 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=false) 2021-08-25 15:54:52.127 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=true) 2021-08-25 15:54:52.525 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false) 2021-08-25 15:55:02.801 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=true) 2021-08-25 15:55:02.914 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false)

  • Second

2021-08-25 15:56:14.626 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 15:56:45.843 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 15:56:46.024 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=false) 2021-08-25 15:56:52.924 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=true) 2021-08-25 15:56:53.425 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=false) 2021-08-25 15:56:57.429 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=true) 2021-08-25 15:56:57.826 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=false) 2021-08-25 15:57:05.428 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=true) 2021-08-25 15:57:05.813 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=false) 2021-08-25 15:57:10.314 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=true) 2021-08-25 15:57:10.817 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=false) 2021-08-25 15:57:19.313 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=true) 2021-08-25 15:57:19.725 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=false) 2021-08-25 15:57:23.751 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=true) 2021-08-25 15:57:24.116 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=false) 2021-08-25 15:57:33.516 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=true) 2021-08-25 15:57:33.826 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=false) 2021-08-25 15:57:38.216 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=true) 2021-08-25 15:57:38.715 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false) 2021-08-25 15:57:48.955 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=true) 2021-08-25 15:57:49.114 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false)

  • Third

2021-08-25 15:59:45.922 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 16:00:18.953 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=0, isWaypointReached=true) 2021-08-25 16:00:19.125 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=false) 2021-08-25 16:00:26.114 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=1, isWaypointReached=true) 2021-08-25 16:00:26.514 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=false) 2021-08-25 16:00:30.517 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=2, isWaypointReached=true) 2021-08-25 16:00:30.924 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=false) 2021-08-25 16:00:38.517 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=3, isWaypointReached=true) 2021-08-25 16:00:38.923 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=false) 2021-08-25 16:00:43.313 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=4, isWaypointReached=true) 2021-08-25 16:00:43.823 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=false) 2021-08-25 16:00:52.313 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=5, isWaypointReached=true) 2021-08-25 16:00:52.826 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=false) 2021-08-25 16:00:56.816 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=6, isWaypointReached=true) 2021-08-25 16:00:57.217 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=false) 2021-08-25 16:01:06.526 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=7, isWaypointReached=true) 2021-08-25 16:01:06.815 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=false) 2021-08-25 16:01:11.314 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=8, isWaypointReached=true) 2021-08-25 16:01:11.806 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false) 2021-08-25 16:01:22.001 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=true) 2021-08-25 16:01:22.124 D: │ NcbWaypointExecutionProgress(targetWaypointIndex=9, isWaypointReached=false)

fernando-s97 avatar Aug 26 '21 13:08 fernando-s97

Agent comment from DJI SDK in Zendesk ticket #52312:

尊敬的开发者,感谢您联系DJI 大疆创新 由于github不是我们主要的咨询渠道,您的问题可能跟进不及时。我们建议您通过填写表单( https://djisdksupport.zendesk.com/hc/zh-cn/requests/new )向我们反馈问题。或者您也可以在论坛发帖,与其它开发者交流。论坛链接:https://djisdksupport.zendesk.com/hc/zh-cn/community/topics

Dear developer, thank you for contacting DJI. Since github is not our main consultation channel, your questions may not be followed up in time. We recommend that you fill in the form (https://djisdksupport.zendesk.com/hc/en-us/requests/new) to report problems to us. Or you can post in the forum to communicate with other developers. Forum link: https://djisdksupport.zendesk.com/hc/zh-cn/community/topics

°°°

dji-dev avatar Aug 26 '21 13:08 dji-dev

Agent comment from sean.zhou in Zendesk ticket #52312:

Dear Client, Thank you for contacting DJI.

Can you provide the information returned by event.getProgress()? When aircraft does not arrived at point, the targetWaypointIndex should be 0 and isWaypointReached should be false and executeState is INITIALIZING. When aircraft arrived at point, the targetWaypointIndex should be 0 and isWaypointReached should be true and executeState is BEGIN_ACTION. You can determine the state of the aircraft based on these three attributes.

Hopefully our solution can help you.

Kindly Regards, DJI Developer Support

°°°

dji-dev avatar Aug 27 '21 09:08 dji-dev

Hey, I am facing the exact same issue.

Is there any fix to this?? Sometimes when I start a mission the I directly get "execution finish" I am using the waypoint V2 Listener -> I directly get a callback to: onExecutionFinish with getting any response from onExecutionStart

VineetTambe avatar Dec 21 '21 13:12 VineetTambe

@VineetTambe the solved some issues in the latest SDK (4.15.1 if I'm not wrong), but I'm using the waypoint mission v1, so I'm not sure if this will help you

fernando-s97 avatar Dec 21 '21 13:12 fernando-s97