M300RTK航线任务拍照问题
已完成我设置了三个航点,每个航点都是到达航点后执行调整云台角度动作,然后延迟3秒拍照。但是实际测试时,到达航点后,调整了云台,但是调整完云台后直接向下一个航点飞行了,没有在原地等待三秒后拍照,而是在到达航点三秒后进行了拍照。
如果不设置等待时间的话,在飞机到达最后一个航点后,只会出发调整云台的动作,而不会进行拍照的动作。
下面是我设置动作的代码,是我哪里设置的有问题吗,因为是测试代码,所以使用的循环添加动作。
int actionId = 0;
for (int i = 0; i < 3; i++) {
float a = 0;
if (i == 0) {
a = -120f;
} else if (i == 1) {
a = 30f;
} else if (i == 2) {
a = -120;
} else if (i == 3) {
a = -50;
} else if (i == 4) {
a = 10;
} else if (i == 5) {
a = -156;
}
WaypointTrigger waypointAction4Trigger = new WaypointTrigger.Builder()
.setTriggerType(ActionTypes.ActionTriggerType.REACH_POINT)
.setReachPointParam(new WaypointReachPointTriggerParam.Builder()
.setStartIndex(i)
.setAutoTerminateCount(0)
.build())
.build();
WaypointActuator waypointAction4Actuator = new WaypointActuator.Builder()
.setActuatorType(ActionTypes.ActionActuatorType.GIMBAL)
.setActuatorIndex(0)
.setGimbalActuatorParam(new WaypointGimbalActuatorParam.Builder()
.operationType(ActionTypes.GimbalOperationType.ROTATE_GIMBAL)
.rotation(new Rotation.Builder()
.mode(RotationMode.ABSOLUTE_ANGLE)
.yaw(a)
.pitch(a)
.time(3)
.roll(0)
.build())
.build())
.build();
WaypointV2Action waypointAction4 = new WaypointV2Action.Builder()
.setActionID(++actionId)
.setTrigger(waypointAction4Trigger)
.setActuator(waypointAction4Actuator)
.build();
waypointV2ActionList.add(waypointAction4);
int id = waypointAction4.getActionID();
Log.i("qqqqqq上传任务", "添加航点任务5-2 actionId " + actionId);
WaypointTrigger waypointTrigger = new WaypointTrigger.Builder()
.setTriggerType(ActionTypes.ActionTriggerType.ASSOCIATE)
.setAssociateParam(new WaypointV2AssociateTriggerParam.Builder()
.setAssociateActionID(id)
.setWaitingTime(3)
.setAssociateType(ActionTypes.AssociatedTimingType.AFTER_FINISHED)
.build())
.build();
WaypointActuator.Builder waypointActuator = new WaypointActuator.Builder();
waypointActuator.setActuatorType(ActionTypes.ActionActuatorType.CAMERA);
WaypointCameraActuatorParam.Builder waypointCameraActuatorParam = new WaypointCameraActuatorParam.Builder();
waypointCameraActuatorParam.setCameraOperationType(ActionTypes.CameraOperationType.SHOOT_SINGLE_PHOTO);
waypointActuator.setCameraActuatorParam(waypointCameraActuatorParam.build());
WaypointV2Action.Builder waypointV2Action = new WaypointV2Action.Builder();
waypointV2Action.setActionID(++actionId).setTrigger(waypointTrigger).setActuator(waypointActuator.build()).build();
waypointV2ActionList.add(waypointV2Action.build());
-
尊敬的开发者, 您好,感谢您联系DJI 大疆创新。 这些航点动作并不会影响飞机的飞行,您是想要在航点处执行拍照后再飞行吧。这是需要增加悬停动作的,在到达航点时设置航点动作为悬停,在执行完所有动作后,增加继续飞行动作。 _WaypointActuator waypointAction4Actuator = new WaypointActuator.Builder()_ _.setActuatorType(ActionTypes.ActionActuatorType.AIRCRAFT_CONTROL)_ _.setAircraftControlActuatorParam(new WaypointAircraftControlParam.Builder()_ _.setAircraftControlType(ActionTypes.AircraftControlType.START_STOP_FLY)_ _.setFlyControlParam(new WaypointAircraftControlStartStopFlyParam.Builder()_ _.setStartFly(false) // 悬停_ _.build())_ _.build())_ _.build();_ _WaypointActuator waypointAction4Actuator = new WaypointActuator.Builder()_ _.setActuatorType(ActionTypes.ActionActuatorType.AIRCRAFT_CONTROL)_ _.setAircraftControlActuatorParam(new WaypointAircraftControlParam.Builder()_ _.setAircraftControlType(ActionTypes.AircraftControlType.START_STOP_FLY)_ _.setFlyControlParam(new WaypointAircraftControlStartStopFlyParam.Builder()_ _.setStartFly(true) // 继续飞行_ _.build())_ _.build())_ _.build();_ 希望我们的解决方案能够帮到您,感谢您的邮件,祝您生活愉快! Best Regards, DJI 大疆创新SDK技术支持
请先登录再写评论。
评论
1 条评论