一、介绍
WaypointMission里面常用的几大类有WaypointMission、WaypontMissionOperator、Waypoint和WaypointAction。
二、常用类介绍
WaypointMissionOperator可以想象是一个航点任务的操作员,它是一个唯一存在的独立个体且不需要被创建出来,只需要从MissionControl里面调用出来即可使用。它常用的方法有loadMission()、uploadMission()、startMission()、retryUploadMission()、downloadMission()、resumeMission()、pauseMission()、stopMission()等。一般的航点任务流程见Figure 1。
Figure 1. 航点任务流程
WaypointMissionOperator的状态机叫WaypointMissionState,它的状态初始为READY_TO_UPLOAD,我们需要在loadMission之前我们就应该把WayPointMission创建好,下一步就是upLoadMission()到无人机中。由于航点是一个个上传到无人机里的,所以需要调用WaypointMissionUploadEvent的getProgress()去查询上传进度,此时WaypontMissionOperator的状态将变更为UPLOADING。如果上传失败,则需要调用retryUploadMission()。如果上传成功,则WaypontMissionOperator的状态将变更为READY_TO_EXECUTE。此时就可以调用startMission()开启任务啦,此时WaypontMissionOperator的状态将变更为EXECUTING。
WaypointMission使用比较奇特,它并不需要去创建。而是需要去创建它里面的builder。第一步需要WaypointMission.Builder builder = new WaypointMission.Builder()。第二步需要定义builder的一些属性,比如autoFlightSpeed、maxFlightSpeed、finishedAction等等。第三步要创建一个List<Waypoint>,创建Waypoint并添加进去。第四步为builder.build。
Waypoint和WaypointAction就放在一起讲了,Waypoint是航点任务中的一个个航点。航点设定以后就会前往它的坐标并且做设定好的WaypointAction。需要指出的是两个航点之间允许设定的最大距离为2km,最小距离为0.5m,最多设定99个航点,但是P4R可以设定200个航点,单条航线最长距离为40km。
WaypointAction有STAY,START_TAKE_PHOTO,START_RECORD, STOP_RECORD, ROTATE_AIRCRAFT, GIMBAL_PITCH。其中需要指出的是STAY最多只能停留32767ms,START_TAKE_PHOTO,START_RECORD, STOP_RECORD最多只能做6s,ROTATE_AIRCRAFT的范围是-180~190度,GIMBAL_PITCH的范围是-90~0度。有了这些航点动作的加持,我们的无人机可以做一些基本的任务操作啦。这里再给大家介绍一个状态机叫WaypointMissionExecuteState,它和WaypointMissionState有很大的区别。WaypointMissionState是WaypointMissionOperator的状态机,而WaypointMissionExecuteState则是WaypointMission的状态机,大家不要混淆了。WaypointMissionExecuteState我们常常关注的是INITIALIZING、MOVING、BEGIN_ACTION、DOING_ACTION和FINISHED_ACTION。一般的流程见Figure 2。
Figure 2. 一般的WaypointMissionExecuteState流程
A:任务执行的过程中不要去改变相机的模式以免出现未知异常,等航点任务结束以后再下载和查看照片比较好。
Q:upLoadMission的时候报错,“The Key does not match the format: component/index/key with index being a number or *”,怎么办?
A:应该是开启了混淆导致的,要么关闭混淆,要么拷入官方的混淆文件,官方github有。
Q:我想在两个航点之间连续拍照,怎么做?
A:考虑使用shootPhotoDistanceInterval和shootPhotoTimeInterval两个函数。
Q:我通过第三方地图获取的经纬度坐标输入到航点任务里执行为什么会有严重偏离?
A:DJI用的坐标系为WGS84,第三方地图使用的坐标系标准有可能不是WGS84,所以需要转化为WGS84的坐标以后再输入到航点任务里。
Q:我的无人机在执行航点任务出现漏拍照片或者视频的情况?
A:有可能是DJI固件的问题,建议出现这种情况把飞行器的固件版本号记录一下,从飞控里把飞行日志导出来打包咨询官方。
评论
0 条评论
请登录写评论。