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.

猜你喜欢

转载自blog.csdn.net/weixin_45616529/article/details/113104571
今日推荐