Inconsistent waypoint mission progress
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)
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
°°°
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
°°°
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 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