初识PSDK开发 – 大疆创新SDK技术支持论坛

您所在的位置:网站首页 无人机怎么连接教程下载 初识PSDK开发 – 大疆创新SDK技术支持论坛

初识PSDK开发 – 大疆创新SDK技术支持论坛

2024-07-13 20:35| 来源: 网络整理| 查看: 265

关键词:PSDK开发,PSDK功能

 

通俗来讲,DJI Payload SDK 拓展了接入DJI 无人机负载接口,开发者可以灵活的开发自己感兴趣的负载,再接入到DJI 无人机上。接入无人机的负载可以通过无人机来控制联动,并可以通过DJI无线链路将负载数据传送给地面端(APP端)。既然涉及负载接入,需要有一定的接入标准,标准涉及硬件和软件,硬件即DJI提供的负载转接环,软件可以简单的将PSDK当做协议标准,毕竟负载上软件是通过PSDK实现与飞机的通信的。跟着官网了解PSDK的功能和使用:https://developer.dji.com/cn/doc ... b-8d16-713ab6c37c2c根据开发者官网提供的资料,结合自己的理解先概览一下PSDK的使用,具体问题后续再细研究。以下基于skyport v2开发者套件和PSDK2.2.0来谈1、设备连接:        a,先放个官网的链接:https://developer.dji.com/cn/doc ... 4-ae2b-2553137a93ae        理解一下,PSDK是基于飞机平台开发三方负载,实现的功能可与飞机以及遥控端进行通信。所以硬件接口要符合官方定义的接口,第三方负载再通过PSDK协议与飞机通信。所以硬件连接中最重要的部分就是skyport引脚接口说明        通过引脚接口,开发者再根据自己的负载设计硬件接入即可使用。开发者套件中的接口拓展板与skyport v1套件中开发板不一样了,仅起接口拓展作用,不能直接运行PSDK及负载应用程序。        skyport v2排线接口的型号貌似在官网上没有找到,但是这个型号与X-PORT是完全一致的,X-PORT用户手册中有说明该型号:S-50420-020HKH0-001                开发过程中使用接口拓展板来连接开发平台就变得相当方便了,因本人采用PC Linux虚拟机玩PSDK,设备连接简单的说明一下。                                        USB-TTL       J10            skyport v2        PC Linux ------------拓展转接板------------------M300                        RJ45          J40                                   初步了解了一下,PSDK中freeRTOS和Linux版本还是有一些功能上的差异,但是基本功能是一致的,且相机视频流通过Linux处理发送的,(freeRTOS通过Linux子系统发送视频流)。        本人闲杂Linux环境上玩了一下PSDK demo,简单记录一下。        先补充一个环境问题:        PSDK中将会获取飞机端IP来设置本端IP,使用虚拟环境NAT模式,可能会导致网络不通,先将虚拟机配置成桥接模式。        2、        绑定与解绑        因为DJI PSDK使用是有权限的,且开发者模式绑定数量是限制的,绑定数量大于10个就需要申请量产了,所以使用DJI skyport绑定是必须的动作,通过DJI Assistant2 Payload SDK绑定或解绑。        有个细节差异,绑定是不需要运行PSDK的,但是解绑是需要运行PSDK程序的。        这个细节可以关联一个问题,未做绑定操作前提下,直接运行PSDK demo会发现一直报通信异常的错误,所以绑定成功与失败与运行程序的关系似乎不大。但是提到这个也许可以提醒一下,当运行程序发现大量报错的异常,可以先检查一下是否有绑定。                关于绑定,将skyport连接至飞机主云台,DJI Assistant2登录自己的开发者账号,在Payload SDK界面操作即可。        M210貌似不在主云台绑定,也会出现绑定失败。M300好像支持,出现绑定有问题,可以先切换云台试试。玩嘛,多试试总是好的。        3、        功能        PSDK功能还是建议查看官网,这里选择主要功能记录一下PSDK的常见问题        相机云台功能                相机及云台控制对应是有外部触发条件的,比如遥控器控制云台转动,遥控器控制拍照,具体的功能实现是由负载实现,所以PSDK提供相机和云台对应功能接口是回调方式,通过将回调函数注册,开发者仅需                在对应的回调接口中实现负载控制功能,比如执行拍照,当遥控器下发拍照指令后,对应的回调将会触发。(这种机制在PSDK中很常用,很多功能都是通过这种方式来触发)        视频传输功能                PSDK使用视频传输功能应该比较常见,通过拍摄符合DJI官方标准的视频流,PSDK接入后可以在APP端查看视频,或者存储回放等。                标准检测可以参考github上提供的视频检测工具:                https://www.github.com/dji-sdk/DJIPSDKVideoStreamCheckTool                               大致原理,PSDK初始化时会获取到飞机IP,不同机型IP不一样,PSDK将会根据获取到的IP来设置本地IP(下述负载端IP)                PSDK2.2.0 视频流动态IP,                接M300,负载端IP为:192.168.120.2:      飞机端IP:192.168.110.1                接M210,负载端IP为:192.168.5.3        飞机端IP:192.168.5.10                               Linux子系统部分demo,freeRTOS获取到飞机IP后,将对应的信息通过串口传给视频处理端(Linux),再对应送UDP数据即可传输视频流。                如下代码:

...                sprintf(networkInfoCmd, "[network_config] [ip] %s [mask] %s\r\n", s_networkLocalIpAddress,                        s_networkConfigMask);        UART_Write(PSDK_COMM_WITH_LINUX_UART_NUM, (uint8_t *) networkInfoCmd, strlen(networkInfoCmd));        returnCode = PsdkPayloadCamera_GetVideoStreamRemoteAddress(ipAddr, &port);        if (returnCode == PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {                PsdkLogger_UserLogDebug("get video stream remote address:%s_%d", ipAddr, port);        } else {                PsdkLogger_UserLogError("get video stream remote address error.");                continue;        }        sprintf(networkInfoCmd, "[video_stream] [ip] %s [port] %d\r\n", ipAddr, port);        UART_Write(PSDK_COMM_WITH_LINUX_UART_NUM, (uint8_t *) networkInfoCmd, strlen(networkInfoCmd));        returnCode = PsdkDataTransmission_GetDataStreamRemoteAddress(ipAddr, &port);        if (returnCode == PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {                PsdkLogger_UserLogDebug("get data stream remote address: %s_%d", ipAddr, port);        } else {                PsdkLogger_UserLogError("get data stream remote address error.");                continue;        }        sprintf(networkInfoCmd, "[data_stream] [ip] %s [port] %d\r\n", ipAddr, port);        UART_Write(PSDK_COMM_WITH_LINUX_UART_NUM, (uint8_t *) networkInfoCmd, strlen(networkInfoCmd));        ...               

                其中:                #define PSDK_COMM_WITH_LINUX_UART_NUM     UART_NUM_3                #define PSDK_COMM_WITH_LINUX_UART_BAUD    115200                #define PSDK_NETWORK_INFO_CMD_MAX_SIZE    64                就是对应的与Linux通信的STM32上对应的串口:UART_NUM_3。实际这部分也可以根据自己的需求进行修改                       自定义控件功能            自定义控件功能主要通过DJI PSDK定义好的功能组件来对应APP端的UI呈现,可以适配DJI 官方APP DJI pilot来实现控件与PSDK的通信和交互。                需要注意的是,当前使用自定义控件功能好像不能脱离相机功能来独立呈现,个人感觉不太合理。所以当前使用自定义控件可能要先初始化camera功能并注册camera common handler。               以上信息仅抽象概述PSDK的基础使用,毕竟是入门帖,仅方便前期对接指引。PSDK在使用功能上理解不太复杂,但是前期对接上可能会有些困扰,仅供参考。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3