WaypointGimbalActuatorParam invalid Param
571 3 2020-12-17
Uploading and Loding Picture ...(0/1)
o(^-^)o
T7_Guy
lvl.2

Germany
Offline

With the latest Mobile SDK for Android 4.14-Trial1 I can not upload Gimbal Actions to the Drone. I'm using the M300 with camera H20.

Here is the code sample where I define the Gimbal Action

WaypointV2Action.Builder actionBuilderGimbal = new WaypointV2Action.Builder();

WaypointTrigger.Builder triggerBuilderGimbal = new WaypointTrigger.Builder();
triggerBuilderGimbal.setTriggerType(REACH_POINT);

        WaypointReachPointTriggerParam.Builder reachPointGimbal_Builder = new WaypointReachPointTriggerParam.Builder();
        reachPointGimbal_Builder.setStartIndex(WP_index);
triggerBuilderGimbal.setReachPointParam(reachPointGimbal_Builder.build());

actionBuilderGimbal.setTrigger(triggerBuilderGimbal.build());

WaypointActuator.Builder actuatorGimbal_builder = new WaypointActuator.Builder();
actuatorGimbal_builder.setActuatorType(GIMBAL);
        WaypointGimbalActuatorParam.Builder Gimbal_Builder = new WaypointGimbalActuatorParam.Builder();
                Gimbal_Builder.operationType(ROTATE_GIMBAL);
                Rotation.Builder rotationGimbal = new Rotation.Builder();
                rotationGimbal.mode(RotationMode.RELATIVE_ANGLE);
                rotationGimbal.pitch(NO_ROTATION);
                rotationGimbal.time(0.5);
                rotationGimbal.roll(NO_ROTATION);
                rotationGimbal.yaw(NO_ROTATION);
                rotationGimbal.ignore(false);
                Rotation rot = rotationGimbal.build();
        Gimbal_Builder.rotation(rot);
actuatorGimbal_builder.setGimbalActuatorParam(Gimbal_Builder.build());

actionBuilderGimbal.setActuator(actuatorGimbal_builder.build());
actionBuilderGimbal.setActionID(Action_Index);


Later during uploading the action I get in onUploadUpdate(ActionUploadEvent actionUploadEvent) an Error that the WaypointGimbalActuatorParam has Invalid Param The action gimbal actuator parameters invalid.

Is this a known problem and how to solve?

Kind Regards
2020-12-17
Use props
DJI-William
lvl.4
  • >>>
Hong Kong
Offline

I suggest you go through https://github.com/dji-sdk/Mobil ... onOperatorView.java
You missed setAutoTerminateCount in trigger.
2020-12-18
Use props
T7_Guy
lvl.2

Germany
Offline

Thanks for response.
I mostly copied from the sample, but I get the following error: The action actuator operation type is invalid. At Action Index 0. It doesn't matter which is the first action

Here is My Code:


WaypointTrigger waypointAction0Trigger = new WaypointTrigger.Builder()
                .setTriggerType(ActionTypes.ActionTriggerType.REACH_POINT)
                .setReachPointParam(new WaypointReachPointTriggerParam.Builder()
                                .setStartIndex(WP_index)
                                .setAutoTerminateCount(0)
                                .build())
                .build();

WaypointActuator waypointAction0Actuator = new WaypointActuator.Builder()
                .setActuatorType(ActionTypes.ActionActuatorType.CAMERA)
                .setCameraActuatorParam(new WaypointCameraActuatorParam.Builder()
                                .setCameraOperationType(ActionTypes.CameraOperationType.CUSTOM_NAME)
                                .setCustomNameParam(new WaypointCameraCustomNameParam.Builder()
                                                .type(ActionTypes.CameraCustomNameType.DIR)
                                                .customName("testFolder")
                                                .build())
                                .build())
                .build();

WaypointV2Action waypointAction0 = new WaypointV2Action.Builder()
                .setActionID(Action_Index)
                .setTrigger(waypointAction0Trigger)
                .setActuator(waypointAction0Actuator)
                .build();
Action_Index++;
actionList.add(waypointAction0);

//-----------------------STOP Aircraft
WaypointV2Action.Builder actionBuilderStop = new WaypointV2Action.Builder();

WaypointTrigger.Builder triggerBuilderStop = new WaypointTrigger.Builder();
triggerBuilderStop.setTriggerType(ASSOCIATE);

WaypointV2AssociateTriggerParam.Builder associateStop_Builder = new WaypointV2AssociateTriggerParam.Builder();
associateStop_Builder.setAssociateType(ActionTypes.AssociatedTimingType.AFTER_FINISHED);
associateStop_Builder.setAssociateActionID(Action_Index-1);
associateStop_Builder.setWaitingTime(0);

triggerBuilderStop.setAssociateParam(associateStop_Builder.build());


WaypointActuator waypointAction1Actuator = 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();

actionBuilderStop.setTrigger(triggerBuilderStop.build());
actionBuilderStop.setActuator(waypointAction1Actuator);
actionBuilderStop.setActionID(Action_Index);
Action_Index++;
actionList.add(actionBuilderStop.build());
//-----------------------GIMBAL
WaypointV2Action.Builder actionBuilderGimbal = new WaypointV2Action.Builder();

WaypointTrigger.Builder triggerBuilderGimbal = new WaypointTrigger.Builder();
triggerBuilderGimbal.setTriggerType(ASSOCIATE);

        WaypointV2AssociateTriggerParam.Builder associate_Builder = new WaypointV2AssociateTriggerParam.Builder();
        associate_Builder.setAssociateType(ActionTypes.AssociatedTimingType.AFTER_FINISHED);
        associate_Builder.setAssociateActionID(Action_Index-1);
        associate_Builder.setWaitingTime(0);

triggerBuilderGimbal.setAssociateParam(associate_Builder.build());

actionBuilderGimbal.setTrigger(triggerBuilderGimbal.build());

        WaypointActuator.Builder actuatorGimbal_builder = new WaypointActuator.Builder();
        actuatorGimbal_builder.setActuatorType(GIMBAL);
                WaypointGimbalActuatorParam.Builder Gimbal_Builder = new WaypointGimbalActuatorParam.Builder();
                        Gimbal_Builder.operationType(ActionTypes.GimbalOperationType.ROTATE_GIMBAL);
                        Rotation.Builder rotationGimbal = new Rotation.Builder();
                        rotationGimbal.mode(RotationMode.ABSOLUTE_ANGLE);
                        rotationGimbal.pitch(0);
                        rotationGimbal.time(3);
                        rotationGimbal.roll(0);
                        rotationGimbal.yaw(0);
                        //rotationGimbal.ignore(false);
                        Rotation rot = rotationGimbal.build();
                Gimbal_Builder.rotation(rot);
        actuatorGimbal_builder.setGimbalActuatorParam(Gimbal_Builder.build());

actionBuilderGimbal.setActuator(actuatorGimbal_builder.build());
actionBuilderGimbal.setActionID(Action_Index);
Action_Index++;

actionList.add(actionBuilderGimbal.build());

//-----------------------CAMERA
WaypointV2Action.Builder actionBuilder = new WaypointV2Action.Builder();
        WaypointTrigger.Builder triggerBuilder = new WaypointTrigger.Builder();
        triggerBuilder.setTriggerType(ASSOCIATE);

                WaypointV2AssociateTriggerParam.Builder associate_BuilderPhoto = new WaypointV2AssociateTriggerParam.Builder();
                associate_BuilderPhoto.setAssociateType(ActionTypes.AssociatedTimingType.AFTER_FINISHED);
                associate_BuilderPhoto.setAssociateActionID(Action_Index-1);
                associate_BuilderPhoto.setWaitingTime(2.0f);

        triggerBuilder.setAssociateParam(associate_BuilderPhoto.build());

actionBuilder.setTrigger(triggerBuilder.build());

        WaypointActuator.Builder actuator_builder = new WaypointActuator.Builder();
        actuator_builder.setActuatorType(CAMERA);
                WaypointCameraActuatorParam.Builder Camera_Builder = new WaypointCameraActuatorParam.Builder();
                Camera_Builder.setCameraOperationType(SHOOT_SINGLE_PHOTO);
                Camera_Builder.setRetryTime(0);
                WaypointCameraFocusParam focusParam = new WaypointCameraFocusParam.Builder()
                                .focusTarget(new PointF(1500,1500))
                                .build();
                WaypointCameraZoomParam zoomParam = new WaypointCameraZoomParam.Builder()
                                .setFocalLength(18)
                                .build();
                Camera_Builder.setFocusParam(focusParam);
                Camera_Builder.setZoomParam(zoomParam);
        actuator_builder.setCameraActuatorParam(Camera_Builder.build());

actionBuilder.setActuator(actuator_builder.build());
actionBuilder.setActionID(Action_Index);
Action_Index++;
actionList.add(actionBuilder.build());

//---------------------START Aircraft
WaypointV2Action.Builder actionBuilderStart = new WaypointV2Action.Builder();

WaypointTrigger.Builder triggerBuilderStart = new WaypointTrigger.Builder();
triggerBuilderStart.setTriggerType(ASSOCIATE);

WaypointV2AssociateTriggerParam.Builder associate_BuilderStart = new WaypointV2AssociateTriggerParam.Builder();
associate_BuilderStart.setAssociateType(ActionTypes.AssociatedTimingType.AFTER_FINISHED);
associate_BuilderStart.setAssociateActionID(Action_Index-1);
associate_BuilderStart.setWaitingTime(2.0f);

triggerBuilder.setAssociateParam(associate_BuilderStart.build());

WaypointActuator waypointActionStartActuator = 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();


actionBuilderStart.setActuator(waypointActionStartActuator);
actionBuilderStart.setActionID(Action_Index);
Action_Index++;
actionList.add(actionBuilderStart.build());

2020-12-18
Use props
DJI-William
lvl.4
  • >>>
Hong Kong
Offline

Hi, I cannot see anything wrong in these code, what is the error message shows? You can comment each segment part of the action and test one by one to determine which part of the action is wrong.
2020-12-22
Use props
Advanced
You need to log in before you can reply Login | Register now

Credit Rules