航点任务
航点规划是一个控制无人机按照指定的航线飞行,实现无人机飞行自动化的控制功能。开发者通过调用 Autel PSDK 的接口,能够控制无人机以指定的高度飞往指定位置并执行相应动作,根据实际的使用需求,还可控制无人机重复多次执行指定的任务,实现自动化巡航等功能。
航点
开发者在使用航点任务时,需要指定航点数量和对应的航点类型。
航点数量
使用航点任务时,开发者需使用 kmz 文件指定无人机所需飞达的航点,Autel PSDK 支持开发者在一个任务中最多添加 65535 个航点,至少 2 个航点。
航点类型
航点类型是指无人机在执行航点任务时,飞向该航点的方式,其中包含曲率飞行、直线飞行和协调转弯。
- 曲率飞行
1.无人机以曲率连续的方式执行飞行任务时,到达指定的航点不停留。
2.无人机以曲率连续的方式执行飞行任务时,在航点处停留。
3.无人机以曲率不连续的方式执行飞行任务时,在航点处停留。 - 直线飞行
1.直线进入
2.直线退出 - 协调转弯:无人机在到达航点前提前转弯
动作
开发者在使用航点任务时,开发者或用户可为无人机在指定的航点处添加对应的动作,如拍照、录像或悬停等。
动作管理:
1.支持相机对焦动作。
2.支持云台角度增量控制
动作触发
如需在无人机执行航点任务的过程中,触发无人机执行指定的动作,需要添加触发该动作的条件:
1.定时触发
2.距离触发
3.航点触发:无人机在航点飞行时,在第 N 个航点结束航点任务
速度控制
PSDK 为开发者提供了速度控制功能,能够使开发者为指定的航点配置不同的速度(为同一个航点设置多个速度),支持开发者在无人机执行航线飞行任务时,修改或查询无人机全局巡航速度。
断连控制
新增支持配置遥控器失联后继续执行航线任务的功能。
说明:
- 基于 PSDK 开发的应用程序在控制无人机执行任务时,用户可使用遥控器控制无人机如无人机的飞行速度、飞行高度和飞行航向等。
- 无人机每次只能执行一个自动化飞行任务,上传新的任务后,已有的飞行任务将会被覆盖。
- 在航点任务中,无人机的航点与无人机的动作没有必然关系,开发者可根据实际情况添加航点和无人机飞行时的动作。
工作流程
航点任务功能按如下流程,控制无人机执行航点任务:
1.上传航线任务的整体信息
一个航点任务包含航点任务的 ID、航点任务的航点数、航点任务结束后的动作、最大飞行速度和巡航速度、航点高度类型、失联动作、安全起飞高度等。
2.上传航点信息
- 基础参数:航点坐标(设置航点的经度、纬度和椭球高度,或者相对于起飞点的高度)、航向类型和飞行速度。
- 可选参数:航向角度、转向模式、兴趣点、单点巡航速度。
说明: 仅开发者设置航点信息所有的基础参数后,才能设置航点信息的可选参数。
3.设置动作信息(可选) 设置动作的 ID、触发器和执行器
4.上传无人机的航点任务的信息
5.控制无人机执行航点任务 上传无人机航点和对应的动作信息后,开发者即可通过指定的接口控制航点任务,如开始、停止或暂停任务等。
使用航点任务
1.航点任务初始化
执行航点任务前需要先进行初始化。
uavStat = UAV_Waypoint_Init();
if (uavStat != 0) {
LOG_ERROR("Waypoint init error.");
return uavStat;
}
2.注册回调函数
- 如果需要监控航点任务状态,上传 kmz 文件前调用该接口注册回调函数
uavStat = UAV_Waypoint_RegisterMissionStateCallback(WaypointMissionStateHandler);
if (uavStat != 0) {
LOG_ERROR("UAV_Waypoint_RegisterMissionStateCallback error.");
return uavStat;
}
- 如果需要监控航点动作状态,上传 kmz 文件前调用该接口注册回调函数
uavStat = UAV_Waypoint_RegisterActionStateCallback(WaypointActionStateHandler);
if (uavStat != 0) {
LOG_ERROR("UAV_Waypoint_RegisterActionStateCallback error.");
return uavStat;
}
3.上传航点任务
上传航点任务 kmz 文件。
uavStat = UAV_Waypoint_UploadFile_kmz(kmz_file.c_str());
if (uavStat != 0) {
LOG_ERROR("UploadFile kmz error.");
return uavStat;
}
4.控制无人机执行航点任务
根据实际情况选择要执行的动作对应的枚举值。
typedef enum {
UAV_WAYPOINT_ACTION_START = 0, /*!< waypoint mission start action */
UAV_WAYPOINT_ACTION_STOP, /*!< waypoint mission stop action */
UAV_WAYPOINT_ACTION_PAUSE, /*!< waypoint mission pause action */
UAV_WAYPOINT_ACTION_RESUME, /*!< waypoint mission resume action */
}E_UAV_WAYPOINT_ACTION;
uavStat = UAV_Waypoint_Action(UAV_WAYPOINT_ACTION_START, 3000);
if (uavStat != 0) {
LOG_ERROR("Waypoint Action start error.");
return uavStat;
}