androidflutterdji-sdk

DJI MSDK Waypoint mission not following the waypoints


Problem

When starting a new Waypoint Mission, the drone takes off up to 2 meters, and keeps hovering in that position. Also, when this happen, I'm only able to take the drone drone higher, or lower (up to those 2 meters).

Expected behaviour

When starting a new Waypoint Mission, the drone completes its path as specified by the mission.

Environment

Tested hypotesis

More info

My app logs and DJI logs shows no error, exception or anything alike.

If necessary, I can provide the flight records.

The WaypointMission object

{
   "autoFlightSpeed":0.0,
   "finishedAction":"GO_HOME",
   "flightPathMode":"CURVED",
   "gotoFirstWaypointMode":"SAFELY",
   "headingMode":"AUTO",
   "maxFlightSpeed":15.0,
   "missionID":8,
   "pointOfInterest":null,
   "repeatTimes":1,
   "waypointCount":8,
   "waypointList":[
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":30.0,
         "coordinate":{
            "latitude":-23.16001469396617,
            "longitude":-45.79311885279432,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":26.325867,
         "coordinate":{
            "latitude":-23.159431407395395,
            "longitude":-45.79282463259898,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":27.596802,
         "coordinate":{
            "latitude":-23.1596132304213,
            "longitude":-45.79270070336531,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":31.782654,
         "coordinate":{
            "latitude":-23.160196385773006,
            "longitude":-45.792994857230866,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":33.06659,
         "coordinate":{
            "latitude":-23.160295942933544,
            "longitude":-45.79282943102868,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":28.96344,
         "coordinate":{
            "latitude":-23.15979505344721,
            "longitude":-45.79257677379519,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":30.748169,
         "coordinate":{
            "latitude":-23.159976876473113,
            "longitude":-45.79245284388858,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      },
      {
         "actionRepeatTimes":1,
         "actionTimeoutInSeconds":999,
         "altitude":32.18518,
         "coordinate":{
            "latitude":-23.160136265174536,
            "longitude":-45.792533242035404,
            "valid":true
         },
         "cornerRadiusInMeters":0.2,
         "gimbalPitch":0.0,
         "heading":0,
         "isUseCustomDirection":false,
         "shootPhotoDistanceInterval":0.0,
         "shootPhotoTimeInterval":0.0,
         "speed":12.5,
         "turnMode":"CLOCKWISE",
         "waypointActions":[
            
         ],
         "headingInner":0
      }
   ],
   "exitMissionOnRCSignalLostEnabled":false,
   "gimbalElevationOptimizeEnabled":false,
   "gimbalPitchRotationEnabled":false
}

UPDATE 1

I've just done the following test:

  1. Started the flight in my app
  2. Opened the GO4

From there, I could see all my waypoints properly loaded, but speed was set to 0. Once I pulled the slider to increase the speed, the aircraft started moving and following the waypoints as expected, but I have no clue on why this is happening.


Solution

  • As seen in the WaypointMission object, the autoFlightSpeed is set to 0. I've fixed this issue by changing the autoFlightSpeed from 0 to the speed defined in the first waypoint, and now everything works as expected.

    According to the docs, when the autoFlightSpeed is set to 0, the "Actual speed is controlled only by the remote controller joystick", which is weird, because it was the same code I had one month ago, and I could fly without touching the joystick. This explains why the only thing I thought I could do was "to take the drone drone higher, or lower". Probably if I'd keep pushing the left joystick forward, the aircraft would have completed its path. The only question remaining is: why my one month old code used to work without touching the joysticks.