DJI航路点任务执行-swift
因此,我为航路点任务编写了代码,代码似乎符合DJI-SDK航路点任务。任务甚至可以装载到无人机上。然而,没有比这更进一步的事情发生 我很确定我试图错误地执行任务,我知道我需要等待任务加载,但我不确定如何执行。我们将非常感谢您对解决方案的任何帮助 我将包括一些代码来显示我试图做什么DJI航路点任务执行-swift,swift,dji-sdk,Swift,Dji Sdk,因此,我为航路点任务编写了代码,代码似乎符合DJI-SDK航路点任务。任务甚至可以装载到无人机上。然而,没有比这更进一步的事情发生 我很确定我试图错误地执行任务,我知道我需要等待任务加载,但我不确定如何执行。我们将非常感谢您对解决方案的任何帮助 我将包括一些代码来显示我试图做什么 let location2 = CLLocationCoordinate2DMake(PointList[1].position.latitude, PointList[1].position.longitude)
let location2 = CLLocationCoordinate2DMake(PointList[1].position.latitude, PointList[1].position.longitude)
let waypoint2 = DJIWaypoint(coordinate: location2)
waypoint2.altitude = 20.0
waypoint2.heading = 0
waypoint2.actionRepeatTimes = 1
waypoint2.actionTimeoutInSeconds = 60
waypoint2.cornerRadiusInMeters = 5
waypoint2.turnMode = .clockwise
waypoint2.gimbalPitch = 0
waypoint2.speed = 0.5
mission.add(waypoint1)
mission.add(waypoint2)
if let error = DJISDKManager.missionControl()?.waypointMissionOperator().load(mission) {
print(error.localizedDescription)
}
DJISDKManager.missionControl()?.waypointMissionOperator().addListener(toUploadEvent: self, with: DispatchQueue.main){
error in
print("upload")
self.startMission((Any).self)
}
print("running mission", mission)
return DJIWaypointMission(mission: mission)
}
因此,这个问题似乎并不完全基于这里,但可能在我试图执行它的方法中。我会把它包括在下面
func missionStart (){ //begins the execution of a mission
if missionReady == true{
print("trying to run mission")
DJISDKManager.missionControl()?.waypointMissionOperator().load(mission)
if DJISDKManager.missionControl()?.waypointMissionOperator().loadedMission == mission {
DJISDKManager.missionControl()?.waypointMissionOperator().startMission()
}
}
}
最后,启动任务的按钮(尝试):
我很久没有使用航路点了。我查看了我的代码,似乎在开始任务之前必须检查state==READY\u to\u EXECUTE。 不过我可能错了
while (waypointMissionOperator.getCurrentState() != WaypointMissionState.READY_TO_EXECUTE && maxWaitLoop--!=0)
Common.sleep(50, "Waiting for WaypointMissionState.READY_TO_EXECUTE");
waypointMissionOperator.startMission(new CommonCallbacks.CompletionCallback() {
while (waypointMissionOperator.getCurrentState() != WaypointMissionState.READY_TO_EXECUTE && maxWaitLoop--!=0)
Common.sleep(50, "Waiting for WaypointMissionState.READY_TO_EXECUTE");
waypointMissionOperator.startMission(new CommonCallbacks.CompletionCallback() {