2021-01-25大疆DJI的SDK说明

这是用于二次开发的大疆SDK。官方开发者网站为https://developer.dji.com/cn/。源码为https://github.com/dji-sdk/Windows-SDK-Doc。 sdk下载地址为https://github.com/dji-sdk/Windows-SDK

1. Mobile SDK

支持平台:IOS 9.0+ 安卓5.0.0+

具备功能如下所示

  • 上层以及底层的控制
  • 飞行数据实时回传
  • 自主避障(只适用于有此功能的无人机)
  • 相机和云台的全方位实时控制
  • 获得大疆图传系统传回的高清影像
  • 照片和视频的实时回传下载
  • 已有任务:Waypoint,Hotpoint,FollowMe
  • 电池和遥控器的状态信息获取以及参数设置

支持的DJI产品:

  • Spark 系列
  • Mavic 系列
  • Phantom系列
  • Inspire系列
  • Matrice系列

2. UX SDK

支持平台:IOS 9.0+ 安卓5.0.0+

具备功能如下所示:UX软件开发工具包通过为所有核心功能提供用户UI元素来加快开发时间。应用程序可以在几分钟内创建,无需额外的代码行。

支持的DJI产品:

  • Spark 系列
  • Mavic 系列
  • Phantom系列
  • Inspire系列
  • Matrice系列

3. Onboard SDK

支持平台:Linux, ROS, Embedded systems

具备功能如下所示

  • 相机和云台控制
  • 实时图传
  • 双目视觉图传
  • 实时视图差
  • 自定义局部导航
  • 预设任务
  • 遥控器
  • 与Mobile SDK 实时通信
  • 多功能I/O控制
  • 与DJI飞控同步

支持的DJI产品:

  • Matrice 300 RTK
  • Matrice 200 系列
  • Matrice 600 系列
  • A3
  • N3
  • Manifold
  • D-RTK GNSS

4. Payload SDK

支持平台:Linux, RTOS, Embedded systems

具备功能如下所示

  • Mobile SDK 通信
  • 下行网口数据传输
  • 下行网口视频传输
  • DJI Pilot支持相机云台类负载
  • Mobile SDK支持相机云台类负载
  • 定制widget
  • 飞行状态数据

支持的DJI产品:

  • 经纬M300RTK
  • 经纬M210
  • 经纬210RTK

说明

  • API接口 通过全新的协议,可以让定制负载与无人机飞控,GPS模块,图传等内部系统通信
  • 负载集成平台 提供两种负载集成端口,便于开发者将专属负载整合至大疆无人机,实现软硬件一体化控制,丰富飞行作业功能,将无人机应用扩展至更广阔的领域
  • 外部负载 由开发者自行开发的专用负载,拓展无人机功能,完成特定任务
  • 移动APP 通过DJI Pilot app或定制移动app查看负载实时数据,发送指令和调节设置

Windows sdk

支持平台:Windows 10

具备功能如下所示

  • 上层即底层飞行控制
  • 飞行数据实时回传
  • 自主避障
  • 相机与云台的全方位实时控制
  • 获得DJI图传系统传回的高清影像

支持的DJI产品:

  • MAVIC 2行业双光版
  • MAVIC 2行业版
  • MAVIC 2系列
  • MAVIC Air

相关链接

  • 文档链接:https://developer.dji.com/cn/windows-sdk/
  • GitHub链接:https://github.com/dji-sdk/Windows-SDK

Windows SDK文档介绍

Windows SDK文档的目标是为任何具有UWP应用经验的开发人员提供使用DJI技术开发特色APP所需的知识和理解。

开发工作流程

从注册为开发人员,到部署应用程序,这一部分将带领开发人员完成整个开发过程。

  • 前提: 使用DJI windows软件开发工具包开发应用程序(sdk)需要几个通用的和特定于平台的先决条件。 需要掌握的知识:
  1. 对UWP开发有一定的了解;
  2. 与DJI视窗软件开发工具包兼容的DJI产品。目前兼容的产品有幻影4 Pro V2.0和Mavic Air WiFi模式;
  3. 用于DJI开发商注册验证的信用卡或电话号码(不收费)
  4. 具有win 10系统,VS2017,Windows 10 SDK (版本1803或者更高都没关系 )
  • 注册为DJI开发者并且下载SDK
  1. 注册网址:https://account.dji.com/register?appId=dji_sdk&backUrl=https%3A%2F%2Fdeveloper.dji.com%2Fuser&locale=en_US
  2. SDK下载地址:GitHub链接:https://github.com/dji-sdk/Windows-SDK
  • 把SDK融合进APP
  1. 创建一个新的UWP 应用程序
    1.1 打开VS2017
    1.2 选择File->New->Project 选择Blank APP (Universal Windows)模板
    1.3 取名为DJIWSDKDemo 同时选择最低版本和目标版本
    在这里插入图片描述在这里插入图片描述

  2. 把WSDK导入到工程中区
    2.1 在DJIWSDKDemo工程下,新建一个文件夹DJIWindowsSDK,然后把这个SDK Lib放在此文件夹中。
    2.2 在VS2017中,右键引用,添加DJIWindoesSDK.dll。
    2.3 在DJIWSDKDemo文件夹中加入SDK Lib中的pthread_dll.dll 和 libcrypto-1.1.dll, for x86。
    2.4 在VS2017中,右键工程,添加上述的SDK Lib中的dll。

  3. 属性配置
    3.1 在VS2017中,右键解决方案,选择属性,再到配置属性,选择平台为x86;
    3.2 双击Package.appxmanifest,再打包,把包名取为"com.dji.wsdkdemo";
    3.3 右键Package.appxmanifest, 选择查看代码, 把下列代码放到Capabilities 标签中;
    <DeviceCapability Name="serialcommunication"> <Device Id="vidpid:2ca3 001f"> <Function Type="name:serialPort" /> </Device> </DeviceCapability>

  4. 获得APP密钥
    4.1 进入官网 https://developer.dji.com/cn/ 注册账号和设置密码
    4.2 点击APPs 设置如下,关键是包名字应该为com.wsdk.sample
    在这里插入图片描述

  5. 注册应用程式
    5.1 双击MainPage.xaml.cs;
    5.2 在主页面导入DJI的命名空间 using DJI.WindowsSDK;
    5.3 创造一个新的方法Instance_SDKRegistrationEvent;
    5.4 添加SDKRegistrationStateChanged事件监听Instance_SDKRegistrationEvent方法;
    5.5 在MainPage()中调用RegisterApp()方法,如下所示:

public MainPage()
{
    this.InitializeComponent();
    DJISDKManager.Instance.SDKRegistrationStateChanged += Instance_SDKRegistrationEvent;

    //Replace with your registered App Key. Make sure your App Key matched your application's package name on DJI developer center.
    DJISDKManager.Instance.RegisterApp("Please enter your App Key here.");
}

private async void Instance_SDKRegistrationEvent(SDKRegistrationState state, SDKError resultCode)
{
    if (resultCode == SDKError.NO_ERROR)
    {
    	System.Diagnostics.Debug.WriteLine("Register app successfully.");

        //The product connection state will be updated when it changes here.
        DJISDKManager.Instance.ComponentManager.GetProductHandler(0).ProductTypeChanged += async delegate (object sender, ProductTypeMsg? value)
        {
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
            {
                if (value != null && value?.value != ProductType.UNRECOGNIZED)
                {
                    System.Diagnostics.Debug.WriteLine("The Aircraft is connected now.");
                    //You can load/display your pages according to the aircraft connection state here.
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("The Aircraft is disconnected now.");
                    //You can hide your pages according to the aircraft connection state here, or show the connection tips to the users.
                }
            });
        };

        //If you want to get the latest product connection state manually, you can use the following code
        var productType = (await DJISDKManager.Instance.ComponentManager.GetProductHandler(0).GetProductTypeAsync()).value;
        if (productType != null && productType?.value != ProductType.UNRECOGNIZED)
        {
            System.Diagnostics.Debug.WriteLine("The Aircraft is connected now.");
            //You can load/display your pages according to the aircraft connection state here.
        }
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("Register SDK failed, the error is: ");
        System.Diagnostics.Debug.WriteLine(resultCode.ToString());
    }
}
  1. 运行WSDK Demo
    成功注册应用程序需要互联网连接。由于此应用程序仅演示DJI视窗软件开发工具包的注册过程,并不直接与DJI产品交互,因此无需连接到DJI产品来运行此应用程序。如果一切顺利,您应该能够在弹出窗口中看到以下日志:Register app successfully.
<think>好的,我现在需要帮助用户了解大疆无人机二次开发方法和资源,特别是SDK文档和示例教程。首先,我要回顾用户提供的引用内容,确保信息准确。 用户提到了三个引用:[^1]是关于Java代码操控的实战指南,强调官方文档的重要性;[^2]讨论了Windows SDK开发中的问题和解决方法;[^3]则涉及Onboard SDK的两个版本,包括ROS和非ROS的安装步骤。这些引用需要整合到回答中。 接下来,我应该按照用户的结构要求来组织内容。用户希望分步骤介绍二次开发方法,包括开发文档、SDK版本选择、开发环境搭建、示例代码、调试工具和社区资源。每个部分需要结合引用内容,自然添加引用标识。 需要注意使用中文回答,所有数学表达式用$...$格式,但这个问题可能不涉及数学公式,所以可能不需要。独立公式如果有的话要用$$...$$,但同样可能不适用。确保LaTeX语法正确,比如如果有变量的话正确使用$符号。 用户还要求生成相关问题,我需要考虑与二次开发相关的问题,比如SDK版本差异、常见问题、硬件要求等。问题需要具体,能够引导进一步学习。 最后,检查回答结构是否清晰,引用是否正确,没有使用markdown,语言口语化但符合要求。确保每个引用标识对应正确的来源,比如引用对应开发文档,引用对应Windows SDK的问题,引用对应Onboard SDK的安装。 现在开始组织回答内容: 1. 开发文档:根据引用,必须强调官方文档的重要性,包括功能、接口、示例代码,并提到开发者网站的位置。 2. SDK版本选择:需要区分Mobile SDK、Onboard SDK、Windows SDK,引用提到Onboard SDK的两个版本,特别是ROS和非ROS的安装步骤。 3. 开发环境搭建:引用[^3]中的安装步骤,可能需要说明Linux环境和非ROS版本的安装,以及ROS版本的注意事项。 4. 示例代码:引用提到示例代码在文档中,引用和都涉及示例程序,比如Windows SDK的例程和ROS的package。 5. 调试工具:引用提到模拟器和真机调试,需要分点说明。 6. 社区资源:引用[^2]提到论坛和开发者社区,可以建议用户参与。 相关问题部分需要考虑用户可能遇到的后续问题,如不同SDK的区别、常见错误、硬件兼容性等,确保问题有针对性,帮助用户深入探索。 最后检查所有引用是否准确,回答是否符合结构要求,没有使用任何markdown格式,语言自然流畅。</think>### 大疆无人机二次开发方法与资源 #### 1. **开发文档研读** 大疆官方提供了详细的开发文档,涵盖 SDK 功能、接口规范、使用方法和示例代码。例如,Java 开发者可通过文档学习如何通过代码控制无人机飞行、云台、相机等模块[^1]。文档通常分为: - **概述**:SDK 架构与核心功能 - **教程**:环境配置、基础操作、进阶功能 - **API 参考手册**:接口参数与返回值说明 开发者需在 [DJI 开发者网站](https://developer.dji.com) 下载对应 SDK 版本的文档。 #### 2. **SDK 版本选择** 根据开发场景选择 SDK- **Mobile SDK**:适用于移动端(Android/iOS)应用开发,支持飞行控制与实时图传。 - **Onboard SDK**:用于机载计算机(如 Raspberry Pi)开发,支持自主飞行与传感器数据获取[^3]。 - 非 ROS 版本:适合基础功能开发。 - ROS 版本:集成机器人操作系统,适合复杂任务(如 SLAM 导航)。 - **Windows SDK**:适用于桌面端应用开发,需注意依赖库配置与兼容性问题。 #### 3. **开发环境搭建** 以 **Onboard SDK** 为例: 1. 下载 SDK 后,按官方指南安装依赖库(如 CMake、GCC)。 2. 编译示例程序,验证环境配置[^3]。 3. 对于 ROS 版本,需将 Package 放入 SDK 工作空间并重新编译。 Windows SDK 需注意 Visual Studio 版本兼容性,部分接口需手动配置动态链接库。 #### 4. **示例代码实践** 文档中提供的示例代码是快速入门的关键。例如: - **飞行控制**:起飞、航线规划、返航逻辑实现。 - **相机操作**:拍照、录像、云台角度调节。 - **数据订阅**:实时获取电池状态、GPS 坐标、飞行高度等[^1]。 建议从基础示例开始,逐步修改参数并观察效果。 #### 5. **调试与测试工具** - **模拟器**:在 DJI Assistant 2 中模拟飞行环境,避免真机测试风险[^1]。 - **日志分析**:通过 SDK 日志定位代码错误或通信异常。 - **真机调试**:需确保无人机固件版本与 SDK 兼容,并遵守安全规范。 #### 6. **社区与进阶资源** - **开发者论坛**:查阅其他开发者的经验分享(如 Windows SDK 环境配置问题)。 - **GitHub 仓库**:大疆官方及第三方开源项目提供参考实现。 - **技术支持**:通过开发者网站提交工单获取官方帮助。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值