You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Dronelink DJI安卓示例项目添加Obstacle Avoidance功能

前置验证

  • 首先确认你集成的DJI SDK版本支持对应机型的避障接口,Dronelink SDK本身是对DJI原生接口的封装,避障功能的底层控制最终调用的是DJI原生SDK的能力
  • 确认使用的无人机型号支持避障功能,不同机型的避障传感器配置(前视/后视/下视/全方位)存在差异,需要提前适配

实现步骤

1. 增加DJI避障相关权限与配置

在项目的AndroidManifest.xml中添加必要的权限声明:

<!-- 避障传感器数据读取权限 -->
<uses-permission android:name="dji.permission.ACCESS_OBSTACLE_DATA" />

同时在build.gradle中确认DJI核心SDK的依赖版本不低于4.16,该版本开始完善了全系列机型的避障控制接口。

2. 注册避障状态监听器

在Dronelink会话初始化完成的回调中,添加DJI原生的避障状态监听,示例代码如下:

// 获取FlightController实例
FlightController flightController = DJISDKManager.getInstance().getProduct().getFlightController();
if (flightController != null) {
    // 注册避障状态回调
    flightController.setObstacleDetectionStateCallback(state -> {
        // 实时获取各方向避障传感器的距离、告警等级数据
        int frontObstacleDistance = state.getFrontObstacleDistanceInMeters();
        ObstacleDetectionSector[] frontSectors = state.getFrontObstacleDetectionSectors();
        // 可以自行将状态同步到Dronelink的自定义飞行逻辑中
    });
}

3. 开启避障功能开关

在执行自主飞行任务前,主动开启对应方向的避障功能:

if (flightController.isObstacleDetectionSupported()) {
    // 开启前视避障
    flightController.setFrontObstacleDetectionEnabled(true, error -> {
        if (error == null) {
            // 前视避障开启成功
        }
    });
    // 开启后视避障
    flightController.setBackObstacleDetectionEnabled(true, error -> {
        if (error == null) {
            // 后视避障开启成功
        }
    });
    // 其他方向避障根据机型支持情况依次开启
}

4. 对接Dronelink飞行控制逻辑

Dronelink的自主飞行任务执行前会触发MissionPreFlightCheckListener回调,你可以在该回调中加入避障功能启用状态的校验,未成功开启则终止任务起飞避免风险。
如果需要在Dronelink执行任务过程中触发避障告警时调整飞行路径,可以自定义MissionControlInterceptor拦截器,在接收到避障告警优先级高于设定阈值时,临时接管飞行控制执行悬停或者绕飞逻辑,告警解除后再交还控制权给Dronelink继续执行原任务。

常见问题排查

  • 如果开启避障失败,先检查无人机是否处于新手模式,新手模式下部分避障配置无法手动修改
  • 部分机型在姿态模式下无法启用避障功能,需要确保当前飞行模式为P模式
  • 避障传感器被遮挡时会自动失效,需要在监听器中同步处理异常状态提示

内容的提问来源于stack exchange,提问作者falc0n027

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:24:03