关键词:PSDK 3.0,OSDK 5.0,新架构OSDK版本
关于DJI Onboard SDK 5.0版本发布消息已经有一段时间了,但是OSDK 5.0版本也迟迟未与开发者见面。终于尘埃落定,OSDK 5.0版本大变更,摇身一变集成到PSDK 3.0版本发布了。。。。
https://developer.dji.com/cn/document/0c2b2d75-d019-480c-9241-8c8e7209692d
一如既往,文档介绍还是不多,先提供一篇上手玩代码的简单指引,或许可以帮助我们在资料有限的情况下快速了解DJI PSDK的开发。
首先看下更新链接,与SDK包名:
https://developer.dji.com/payload-sdk/downloads/
之前使用过或者熟悉DJI Payload SDK的开发者也许觉得不陌生,是的,OSDK最新版本已经与Payload SDK包合二为一。
如果您之前使用的开发者账号看不到PSDK下载界面,可以再左边选择APPLY FOR PAYLOAD SDK,根据提示填写相关信息,将免审核创建PSDK应用,即可看到Payload SDK栏。
更方便的GitHub链接:
https://github.com/dji-sdk/Payload-SDK
一、配置文件
新版本完全采用PSDK的代码配置方式,可以直接在配置文件中修改代码
文件路径(以Linux C为例):
~/Payload_SDK_V3.0.0-build.1433/samples/sample_c/platform/linux/manifold2/application/
配置文件:
dji_sdk_app_info.h
填写自己的开发者信息:
#define USER_APP_NAME
#define USER_APP_ID
#define USER_APP_KEY
#define USER_APP_LICENSE
#define USER_DEVELOPER_ACCOUNT
#define USER_BAUD_RATE
说明:
1、因为新版本OSDK的ID/KEY采用原PSDK的KEY值,原OSDK的KEY是64位,而PSDK的KEY为32位,为确保统一,所以需要使用PSDK 3.0的开发者需要先在开发者中心重新创建一个新的PSDK应用,再将应用信息填写至上述文件中。如果是新申请开通PSDK权限,会一并开通一个PSDK应用。
https://developer.dji.com/user/apps/#all
点击创建应用,选择Payload SDK创建,然后激活生成的APP应用,进去就可以看到ID/KEY(32位),licence, 对应填写至dji_sdk_app_info.h中。
注:
创建应用时,选择创建Onboard SDK,将会生成64位的key,用于OSDK 4.x、3.x版本。使用PSDK请选择创建Payload SDK应用。
2、新版本OSDK与无人机通信的波特率采用自适应,仅需通过上述宏定义:USER_BAUD_RATE指定波特率,无需再通过DJI Assistant2设置无人机波特率。
3、修改串口设备名和ACM设备名。Linux为例:
文件路径:
~/Payload_SDK_V3.0.0-build.1433/samples/sample_c/platform/linux/manifold2/hal/hal_uart.h
比如使用USB-TTL,双A USB 连接后,机载计算机上对应串口设备名为
(ls -l /dev | grep "ttyUSB*",ls -l /dev | "grep ttyACM*")
ttyUSB0和ttyACM0
对应与OSDK 4.1配置文件UserConfig.txt中的
device : /dev/ttyUSB0
acm_port : /dev/ttyACM0
修改代码:
/* Exported constants --------------------------------------------------------*/
//User can config dev based on there environmental conditions
#define LINUX_UART_DEV1 "/dev/ttyUSB0"
#define LINUX_UART_DEV2 "/dev/ttyACM0"
其中LINUX_UART_DEV1 对应串口通信端口,
LINUX_UART_DEV2对应双A USB通信端口。
二、代码编译
先直接参考说明来编译sample
1、解压压缩包:unzip Payload_SDK_V3.0.0-build.1433.zip
2、cd Payload_SDK_V3.0.0-build.1433
3、mkdir build
4、cd build
5、cmake ..
6、make
7、cd bin
在bin目录下看到执行文件dji_sdk_demo_linux生成,即完成编译。
运行程序后即会有Logs文件夹记录运行log。
三、了解sample功能
OSDK重构之后与PSDK一样,也可以通过DJI Pilot widget界面来交互,我们可以先运行程序:
./dji_sdk_demo_linux
然后打开遥控器Pilot,识别到PSDK_APPALIAS。
选择Payload设置界面,就可以进行SDK sample相关功能测试了。
原OSDK功能相关的飞行控制等,可以通过下面控件来启动和测试。
至此,sample就已经启动了,可以再跟着sample代码边测试变查看代码来了解。
【2023-03-27补充】
1、sample中widget提供了两个示例,默认未使用交互式控件,若自定义控件无法查看到OSDK交互控件,可以通过此宏定义修改widget sample。
2、Pilot 2发布之后,PSDK控件的界面有所调整。PSDK功能无变更,以实际Pilot显示界面为准。
四、硬件连接
上述介绍均默认开发者已经正确连接了OSDK硬件部分,PSDK 3.0在M300上的使用,实际上硬件连接上与PSDK 2.2.1 与OSDK 4.1版本的硬件连接也没有差异,下面再说明一下:
1、PSDK 3.0仅支持M300机型,其他机型OSDK部分还是建议使用OSDK 4.1版本或OSDK 3.9版本。
2、PSDK 3.0用于OSDK功能部分,硬件连接需要连接至M300的OSDK type C接口,通过OSDK转接板拓展成串口和USB口,用于OSDK功能。
代码通过宏定义区分连接接口:
3、与OSDK 4.1版本一样,OSDK 接口功能使用串口和USB通信,串口必须连接,USB通信用于waypoint v2、camera manager、gimbal manager、MOP、advance sensing 功能。
4、若只需要串口实现简单功能,可以通过修改代码:
~/Payload_SDK_V3.0.0-build.1433/samples/sample_c/platform/linux/manifold2/hal
UART_NUM_1 true 改为false即可。
备注说明:
因为使用串口带宽有限,仅使用串口通信来开发OSDK功能,仅支持基本功能:
*flightCtrl控制指令(不包括阻飞)
*遥测数据订阅
*小数据透传
widget功能是通过USB实现的,所以仅使用串口时,APP上看不到相关负载接入,可以直接使用上述基本功能。
5、PSDK还是通过skyport/X-PORT连接至负载云台接口,程序启动时会根据连接的端口自动识别是连接在OSDK功能接口还是PSDK功能接口。
五、OSDK相关功能
飞行控制
航线功能waypoint v2
遥测数据订阅
云台管理
相机管理
数据传输
日志管理
健康管理HMS
高级视觉
基本与OSDK 4.1版本中基础功能一致,新添加了 widget 可以在遥控Pilot界面交互,也可以理解为将原有OSDK的功能集成到了原PSDK功能中,即飞机上的二次开发都将成为负载Payload。
大概看下Payload SDK工程结构
关于PSDK 3.0 的上手体验到这基本已经完成了,接下来就是细看代码来开发了。上面结构图中sample部分就没有备注了,应该是大部分开发者上手开发的参考和指引。相比OSDK 4.1版本,该版本中的结构更为清晰,sample模块化也更为简洁,咱们可以先了解sample的使用了解SDK API的使用,即psdk_lib中头文件定义的API,然后结合实际需求来基于API开发功能。当我们debug到SDK lib的问题,那就找 DJI SDK support吧。
六,C++ 编译
2021-12-16 补充,PSDK 3.0中可以关注到有提供C++ sample部分,这个与C sample不是重复的,主要做对视频播放的sample,其中会涉及到使用ffmpeg和opencv依赖库,需要先确保环境中已经安装ffmpeg和opencv。这部分依赖环境与OSDK 4.1中是一样的,这样分开提供编译环境,一个是方便C++对opencv的调用供开发者参考,另外无需使用视频功能的开发者也无需纠结依赖环境的编译。
因为我这边的环境是已经玩过OSDK 4.1的虚拟机ubuntu环境,简单说下编译过程:
同样需要填写APPINFO信息,文件名与C中一样,参考上面提供的C sample的编译。
1、CmakeLists.txt中打开注释掉的
2、回到编译主路径:(C++ sample先不要在sample子路径编译,编译环境配的是主路径,后续会考虑完善CMakeLists,开发者也可以自己配编译环境。)
~/Payload-SDK-master/build
3、cmake ..
4、make
编译完成即可生成,dji_sdk_demo_linux_cxx
评论
1 条评论
现在创建应用按钮里已经没有Payload-SDK了,能选择OSDK吗?
请登录写评论。