睿诚科技协会

无人机 spark sdk

大疆已经将 Spark(晓Spark)系列无人机的 SDK 统一到了其全新的 DJI Mobile SDK 体系下。 你现在找不到一个独立的 "Spark SDK" 安装包了,所有针对 Spark(以及 Mavic Air, Mavic 2, Mini 系列等)的开发,都使用最新版的 DJI Mobile SDK。

无人机 spark sdk-图1
(图片来源网络,侵删)

当开发者谈论 "Spark SDK" 时,他们实际上指的是 适用于 Spark 无人机的 DJI Mobile SDK


什么是 DJI Mobile SDK?

DJI Mobile SDK 是大疆官方提供的软件开发工具包,允许开发者在移动应用程序(iOS 和 Android)中集成大疆无人机的核心功能,通过它,你可以:

  • 获取无人机和遥控器的实时数据:如电池电量、GPS 信号、飞行速度、高度、相机姿态等。
  • 控制无人机飞行:如起飞、降落、悬停、返航、设置航点、执行自动飞行任务。
  • 控制相机和云台:如拍照、录像、调整相机参数(曝光、ISO、快门等)、控制云台转动(俯仰、航向)。
  • 处理视频流:在手机上实时接收无人机的 FPV (First Person View) 图像,并进行二次开发(如图像识别、AR 增强现实叠加)。
  • 接收来自无人机的数据流:如遥测数据、视频流等。

Spark SDK (DJI Mobile SDK) 的核心功能模块

SDK 的功能被封装在不同的模块中,你可以根据需要引入,对于 Spark 开发,最核心的模块包括:

DJISDK

这是最基础、最核心的模块,它负责:

无人机 spark sdk-图2
(图片来源网络,侵删)
  • App 注册与鉴权:让你的 App 与大疆服务器建立连接,这是使用所有 SDK 功能的前提。
  • 发现并连接设备:搜索周围的无人机、遥控器、智能飞行电池等设备。
  • 获取 SDK 版本和产品信息

DJISDKManager

一个全局的管理器类,用于初始化 SDK、管理连接状态和提供对其他功能模块的访问入口,你的 App 通常需要先初始化这个管理器。

DJIAircraft (飞机) & DJIFlightController (飞行控制器)

这是控制飞行的核心模块。

  • 状态获取:获取无人机的飞行状态(是否在空中、是否失控)、GPS 状态、电池状态、当前速度、高度、位置等。
  • 飞行控制:执行 takeoff() (起飞), landing() (降落), stop() (悬停), goHome() (智能返航) 等基本指令。
  • 手动控制:通过发送 Roll, Pitch, Throttle, Yaw 四个轴的值来精确控制无人机的移动。

DJICamera (相机) & DJICameraManager

这是控制相机的核心模块。

  • 拍照与录像startShootPhoto(), startRecordVideo(), stopRecordVideo()
  • 相机设置:设置照片格式、视频分辨率、曝光模式、ISO、快门速度、EV 值等。
  • 云台控制:控制云台的俯仰角,如 setPitch()

DJIMediaManager (媒体管理器)

用于处理无人机存储卡中的媒体文件。

无人机 spark sdk-图3
(图片来源网络,侵删)
  • 文件列表:获取存储卡中的所有照片和视频列表。
  • 文件下载:将照片或视频从无人机下载到手机。
  • 文件删除:删除无人机存储卡中的文件。

DJIVideoFeeder (视频流)

用于接收无人机传回的实时视频流。

  • 获取视频源:获取主相机或副相机的视频流。
  • 视频预览:在 SurfaceViewTextureView 上显示 FPV 画面,这是进行图像识别、AR 叠加等高级应用的基础。

如何开始使用 Spark SDK (DJI Mobile SDK)?

开发者注册

  • 访问 大疆开发者官网
  • 注册一个开发者账号。
  • 在控制台创建一个新的 App,获取 App Key,这个 App Key 是你的应用在连接大疆设备和服务器时的身份凭证。

环境准备

  • Android Studio / Xcode: 使用主流的 IDE 进行开发。
  • 设备:
    • 一部运行 Android 7.0+ 或 iOS 11+ 的智能手机或平板。
    • 一架 Spark 无人机 及其遥控器。
    • 注意: Spark 无人机固件需要较新的版本才能支持最新的 SDK,请确保固件已更新。

SDK 集成 (以 Android 为例)

  1. 添加依赖:在 build.gradle 文件中添加 DJI SDK 的 Maven 仓库和依赖。

    allprojects {
        repositories {
            ...
            maven { url 'https://maven.dji.com/repository/dji-sdk/' }
        }
    }
    dependencies {
        implementation 'dji-sdk:flycontroller-sdk:5.8.2' // 包含飞行控制器
        implementation 'dji-sdk:camera-sdk:5.8.2'      // 包含相机
        implementation 'dji-sdk:media-sdk:5.8.2'     // 包含媒体管理
        implementation 'dji-sdk:video-sdk:5.8.2'     // 包含视频流
        // ... 其他需要的模块
    }
  2. 配置 App Key:在 Application 类的 onCreate() 方法中注册你的 App Key。

    DJISDKManager.getInstance().registerApp(this, new DJISDKManager.SDKManagerCallback() {
        @Override
        public void onRegister(DJIError error) {
            if (error == null) {
                Log.d("DJISDK", "App 注册成功");
            } else {
                Log.e("DJISDK", "App 注册失败: " + error.getDescription());
            }
        }
        @Override
        public void onProductConnect(BaseProduct product) {
            if (product != null && product.isConnected()) {
                Log.d("DJISDK", "设备已连接: " + product.getModel());
                // 连接成功后,可以开始获取各个模块的实例
            }
        }
        @Override
        public void onProductDisconnect(BaseProduct product) {
            Log.d("DJISDK", "设备已断开");
        }
    });

编写代码

  • 连接设备:确保无人机和遥控器开机,手机连接到遥控器的 Wi-Fi,SDK 会自动发现设备。
  • 调用 API:通过 DJISDKManager 获取 DJIAircraft, DJICamera 等模块的实例,然后调用相应的方法来获取数据或控制无人机。

Spark SDK 的应用场景

利用 Spark SDK,你可以开发出非常有趣和实用的应用:

  1. 航拍 App 增强工具

    • 自定义相机控制面板:开发一个比官方 App 更符合个人习惯的相机操作界面。
    • 智能拍摄模式:结合 AI 图像识别,实现手势拍照、人脸跟踪、自动构图等。
    • 数据叠加:在 FPV 画面上实时叠加飞行高度、距离、速度、电池电量等关键信息。
  2. 行业应用

    • 农业植保:虽然 Spark 载重有限,但可以用于小面积的农药喷洒试验或数据采集。
    • 巡检测绘:用于电力线路、风力发电机、桥梁等基础设施的近距离巡检,通过 SDK 获取高精度数据和照片。
    • 安防监控:开发一键起飞、自动巡航、实时画面回传的安防监控应用。
  3. 教育与娱乐

    • 编程教学:让学生通过编写代码控制无人机,学习编程逻辑和传感器原理。
    • FPV 游戏:开发基于 FPV 画面的 AR 游戏或竞速应用。

重要注意事项与限制

  • SDK 版本与固件版本:SDK 和无人机固件需要兼容,大疆会发布新版本的 SDK 来支持新固件的功能,反之亦然,开发前务必查阅官方文档,确认版本对应关系。
  • iOS 签名:在 iOS 平台上,你需要将你的 App Bundle ID 和 Team ID 提交给大疆,他们会为你生成一个签名的 .framework 文件,你需要将其集成到你的 Xcode 项目中,这个过程比 Android 更复杂。
  • 网络连接:App 必须连接到遥控器的 Wi-Fi 才能与无人机通信。
  • 官方文档是圣经:DJI 的官方文档 (docs.dji.com) 是最权威、最全面的学习资料,几乎所有的 API 用法、示例代码和常见问题都能在上面找到。
  • Spark 的局限性:作为一款较老的无人机,Spark 的处理器性能、相机分辨率、图传距离等都无法与新机型相比,它更适合用于学习 SDK 基础概念和开发一些对性能要求不高的应用。

Spark SDK = 适用于 Spark 的 DJI Mobile SDK,它是一套功能强大但文档严谨的工具,对于开发者来说,虽然入门需要一定的学习成本,但一旦掌握了核心流程,就能利用它创造出许多激动人心的无人机应用。

建议:如果你是初学者,可以先从 DJI Mobile SDK 的官方示例代码 开始运行,理解其工作流程,然后再尝试修改和扩展,开发自己的功能。

分享:
扫描分享到社交APP
上一篇
下一篇