感知模块使用说明
感知教程
1. 概述
MSDK感知模块可以实现飞机的感知避障管理的功能。SDK提供了感知避障类型,(水平,上方,下方)避障告警距离,(水平,上方,下方)避障刹停距离等的设置以及获取方法。同时可以通过获取视觉避障信息数据,时刻关注多个方向的雷达与障碍物的距离信息。通过感知模块开发者可以更好地开展感知避障相关功能的开发以及维护。
2. 避障类型
避障类型有三种状态:关闭,刹停,绕行。避障类型数据的获取以及设置前提为已经和飞机建立连接。
2.1 设置避障类型
示例代码如下:
PerceptionManager.get()
.setObstacleAvoidanceType(type, object : CommonCallbacks.CompletionCallback {
override fun onSuccess() {
// success
}
override fun onFailure(code: IAutelCode, msg: String?) {
// failure
}
})
可通过type设置避障类型,type是ObstacleAvoidActionEnum的枚举类。
2.2 获取避障类型
示例代码如下:
PerceptionManager.get().getObstacleAvoidanceType(object :
CommonCallbacks.CompletionCallbackWithParam<ObstacleAvoidActionEnum> {
override fun onSuccess(t: ObstacleAvoidActionEnum?) {
//success
}
override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})
该方法拿到的也是ObstacleAvoidActionEnum类型的数据。
3. 告警距离
3.1 获取告警距离
告警距离分为上方雷达告警距离,下方雷达告警距离,水平雷达告警距离。设置以及获取告警距离需要在已经连接飞机的情况下进行。
示例代码如下:
PerceptionManager.get()
.getObstacleAvoidanceWarningDistance(direction = PerceptionDirection.HORIZONTAL,
object : CommonCallbacks.CompletionCallbackWithParam<Double> {
override fun onSuccess(t: Double?) {
//success
}
override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})
参数说明:direction:方向,参见PerceptionDirection。
3.2 设置告警距离
示例代码如下:
PerceptionManager.get().setObstacleAvoidanceWarningDistance(distance = distance.toDouble(),
direction = PerceptionDirection.UPWARD,
object : CommonCallbacks.CompletionCallback {
override fun onSuccess() {
//success
}
override fun onFailure(code: IAutelCode, msg: String?) {
//failure
}
})
参数说明: distance:告警距离 direction:方向
4. 刹停距离
飞机遇到障碍物的刹停距离,分为:上方,下方,水平刹停距离,这里需要注意:刹停距离要小于等于告警距离。
4.1 获取刹停距离
示例代码如下:
PerceptionManager.get()
.getObstacleAvoidanceBrakingDistance(direction = PerceptionDirection.HORIZONTAL,
object : CommonCallbacks.CompletionCallbackWithParam<Double> {
override fun onSuccess(t: Double?) {
//success
}
override fun onFailure(error: IAutelCode, msg: String?) {
//failure
}
})
参数说明: direction:方向
4.2 设置刹停距离
示例代码如下:
PerceptionManager.get().setObstacleAvoidanceBrakingDistance(distance = distance.toDouble(),
direction = PerceptionDirection.UPWARD,
object : CommonCallbacks.CompletionCallback {
override fun onSuccess() {
//success
}
override fun onFailure(code: IAutelCode, msg: String?) {
//failure
}
})
参数说明: distance:告警距离 direction:方向
5. 雷达视觉避障数据的获取
5.1 开启视觉雷达:
PerceptionManager.get().getRadarManager()?.addRadarInformationListener(this)
5.2 关闭视觉雷达:
PerceptionManager.get().getRadarManager()?.removeRadarInformationListener(this)
5.3 雷达数据获取:
override fun onValueChange(
oldValue: List<VisionRadarInfoBean>?,
newValue: List<VisionRadarInfoBean>
) {
}
6.Sample获取
参考Sample中PerceptionFragment
7.接口说明
enum class ObstacleAvoidActionEnum(val value: Int) {
CLOSE(0),//关闭
STOP(1),//刹停
BYPASS(2);//绕行
}
enum class PerceptionDirection {
UPWARD, //上方。
DOWNWARD, //下方。
HORIZONTAL; //水平,前后左右四个方向。
}
data class VisionRadarInfoBean(
/**
*时间戳
*/
var timeStamp: Long = 0,
/**
*传感器位置
*/
var position: VisionSensorPositionEnum = VisionSensorPositionEnum.FRONT,
/**
*传感器与障碍物的多个距离
*/
var distances: List<Float>? = null
)
enum class VisionSensorPositionEnum(var value: Int) {
FRONT(0), //前
REAR(1), //后
BOTTOM(2), //下
RIGHT(3), //右
LEFT(4), //左
TOP(5) //上
}