Skip to main content

固定翼无人机自检教程

无人机自检教程

1. 概述

任务起飞前需要先给飞机自检,确认飞机各个模块均正常后,才能上传航线任务文件给飞机执行。

2. 自检流程

3. 自检示例代码

3.1 监听自检结果

AutoCheckManager.setAutoCheckListener(object : AutoCheckListener {
/**
* 启动自检成功
*/
override fun onStartCheckSuccess() {
SDKLog.i(TAG, "autoSafeCheck Success")
}

/**
* 启动自检失败
*/
override fun onStartCheckFail(error: IAutelCode) {
SDKLog.e(TAG, "autoSafeCheck Fail: $error")
}

/**
* 自检结果
*/
override fun onAutoCheckResult(result: DFAutoCheckResultBean?) {
dealAutoCheckResult(result)
}
})

3.2 开始自检

val checkType = AutoCheckTypeEnum.ALL
AutoCheckManager.startAutoCheck(checkType)

//自检类型枚举
enum class AutoCheckTypeEnum {
FONT_MOTOR, //检查前电机
BEHIND_MOTOR, //检查后电机
LEFT_MOTOR, //检查左电机
RIGHT_MOTOR, //检查右电机
LEFT_STEER, //检查左舵机
RIGHT_STEER, //检查右舵机
BEHIND_STEER, //检查后舵机
AIRSPEED, //检查空速计
ULTRASONIC, //检查超声
RTK, //检查rtk
GPS, //检查gps
BAROMETER, //检查气压计
REMOTE, //检查rc
PAYLOAD, //检查挂载
MAGNETOMETER_1, //检查磁力计 1
IMU_1, //检查IMU 1
MAGNETOMETER_2, //检查磁力计 2
IMU_2, //检查IMU 2
ALL; //全部检查
}

3.3 查询自检结果

示例代码如下:

private fun dealAutoCheckResult(t: DFAutoCheckResultBean?) {
SDKLog.d(TAG, "KeyDroneGetAutoCheckResult onSuccess: $t")
//所有模块均自检正常, 可以执行航线任务
val isCheckOK = t?.isLeftSteerNormal() == true
&& t?.isRightSteerNormal() == true
&& t?.isBehindSteerNormal() == true
&& t?.isAirSpeedNormal() == true
&& t?.isImu1Normal() == true
&& t?.isImu2Normal() == true
&& (t?.isGPSNormal() == true || t?.isRTKNormal() == true)
&& t?.isMagnetometer1normal() == true
&& t?.isMagnetometer2normal() == true
&& t?.isUltrasonicNormal() == true
&& t?.isBarometerNormal() == true
&& t?.isBatteryNormal() == true
&& t?.isGimbalNormal() == true
&& t?.isRemoteControllerNormal() == true
&& t?.isFontMotorNormal() == true
&& t?.isLeftMotorNormal() == true
&& t?.isRightMotorNormal() == true
&& t?.isBehindMotorNormal() == true
&& t?.isPayloadNormal() == true
&& t?.isAttitudeNormal() == true
&& t?.isRTKHeadingNormal() == true
&& t?.isNavigationAttitudeNormal() == true
&& t?.isMaintenancReminder() == true
&& t?.isVersionMatching() == true
&& t?.isElectronicFenceNormal() == true
&& t?.isNavigationAndRTKNormal() == true
})

data class DFAutoCheckResultBean(var autoCheckResult: Int = 0) {
/**
* 前电机
*
* @return true-正常,false-异常
*/
fun isFontMotorNormal(): Boolean

/**
* 后电机
*/
fun isBehindMotorNormal(): Boolean
/**
* 左电机
*/
fun isLeftMotorNormal(): Boolean

/**
* 右电机
*/
fun isRightMotorNormal(): Boolean

/**
* 左舵机
*/
fun isLeftSteerNormal(): Boolean
/**
* 右舵机
*/
fun isRightSteerNormal(): Boolean

/**
* 后舵机
*/
fun isBehindSteerNormal(): Boolean

/**
* 空速计
*/
fun isAirSpeedNormal(): Boolean

/**
* 超声
*/
fun isUltrasonicNormal(): Boolean

/**
* RTK
*/
fun isRTKNormal(): Boolean
/**
* GPS
*/
fun isGPSNormal(): Boolean

/**
* 气压计
*/
fun isBarometerNormal(): Boolean
/**
* 遥控器
*/
fun isRemoteControllerNormal(): Boolean

/**
* 负载
*/
fun isPayloadNormal(): Boolean

/**
* MAG(磁力计)
*/
fun isMagnetometer1normal(): Boolean

/**
* IMU
*/
fun isImu1Normal(): Boolean

/**
* MAG2(磁力计2)
*/
fun isMagnetometer2normal(): Boolean


fun isImu2Normal(): Boolean

/**
* 电池
*/
fun isBatteryNormal(): Boolean

/**
* 云台
*/
fun isGimbalNormal(): Boolean

/**
* 高度计
*/
fun isAttitudeNormal(): Boolean

/**
* RTK 航向是否正常
*/
fun isRTKHeadingNormal(): Boolean

/**
* 导航姿态
*/
fun isNavigationAttitudeNormal(): Boolean

/**
* 保养提醒
*/
fun isMaintenancReminder(): Boolean

/**
* 版本匹配
*/
fun isVersionMatching(): Boolean
/**
* 电子围栏
*/
fun isElectronicFenceNormal(): Boolean

/**
* 磁航向与RTK航向是否吻合
*/
fun isNavigationAndRTKNormal(): Boolean
}

4. 参考代码

完整的自检接口使用,可以参考Sample中的PreFlightCheckHelper