关于OSDK和PSDK密钥的疑问,以及实现Matrice 300 RTK数据实时读取问题的进一步澄清
Completed大家好,
我目前正在使用DJI Onboard SDK (OSDK)和树莓派5,目标是通过无人机Matrice 300 RTK和相机ZENMUSE P1实时读取SD卡中的数据。SD卡位于相机中(不能直接取下读取),我需要在无人机运行时,通过树莓派5实时检索、读取和传输数据。
我采用的硬件连接方式如下:
- 使用USB-A to USB-C数据线,将树莓派的USB-A接口连接到E-Port开发套件的USB-C接口。
- 串口(UART)正确连接:通过E-Port开发套件的串口接口使用杜邦线连接到FT232,再通过USB-A接口连接到树莓派。
- E-Port开发套件的另一个USB-C接口通过USB-C母口数据线连接到无人机的OSDK接口。这样可以通过E-Port开发套件将无人机的OSDK接口与树莓派进行连接。
为实现此目标,我参考了以下文档:
按照文档,我成功完成了绝大多数步骤,但在最后一步遇到了问题。当我运行dji_sdk_demo_linux_cxx
应用时,收到如下错误信息:
'Logs/latest.log' -> 'DJI_0002_20250115_10-24-59.log'
[0.002][user]-[Error]-[DjiUser_FillInUserInfo:405) Length of user information string is beyond limit. Please check.
terminate called after throwing an instance of 'std::runtime_error'
what(): Fill user info error, please check user info config.
已放弃
经过检查,我的dji_sdk_app_info.h
文件中的信息与开发者中心显示的信息完全一致:
-
SDK Type: Onboard SDKApp Name: RPiTest
- App Name : RPiTest
- App ID : 1156694
- App Key : 2ab1fa5090e5b94aa198f35af6ed55ff63b817d98afdbb03f66c70f4678d8cc9
- App License : xrvPI8pr7T35QonqTzinoBDIP+V2BQTDHnnR51... (full value omitted)
然而,依然报错:“Length of user information string is beyond limit”。根据支持团队的回复,他们提到“PSDK和OSDK的密钥不兼容”,但我并没有找到PSDK的选项(如下图),开发者中心仅允许创建OSDK的应用。我已经确保填写的是OSDK的信息,并且硬件连接也符合文档指导。
我想进一步澄清以下问题:
- 是否可能存在App Key或App License长度限制问题?
- OSDK是否能够满足上述需求,还是必须通过PSDK实现?如果是后者,如何获取PSDK相关的密钥和支持?
- Matrice 300 RTK是否可以通过OSDK直接读取相机SD卡中的数据,还是必须采用其他实现方式?
非常感谢大家的帮助!期待您的回复。
-
谢谢您的回答,我已经很清楚了,但是我仍然有一个疑问,就是针对我的项目需求和上述配置,我使用得机型是 Matrice 300 RTK,DJI官方文档建议我使用Matrice 300 RTK的OSDK接口和树莓派通过E-port口连接(如下图),再使用PSDK的库/包API进行配置,而你们官方文档中的E-port连接Matrice 300 RTK的支持接口也是OSDK,这样也似乎可以解决问题,但是这让我非常费解。因为通常来说配置接口应当使用psdk接口和psdk的api这样才匹配,但是你们的文档却是使用OSDK接口搭配PSDK API。是否可以给我解释一下,非常感谢。
-
您好,很抱歉为您带来困扰,这里有历史背景的,OSDK是专门为机载计算机而设计的,运行OSDK程序的机载计算机需要连接在M300的OSDK硬件端口或M210机型的OSDK硬件端口,而PSDK也是为了负载设备的开发而生,运行PSDK程序的负载设备也需要连接M300机型或M210机型的Payload硬件端口。 在两三年前,考虑到维护的问题,以及后续新机型的协议适配问题,我们决定把OSDK和PSDK合并,后续统一合并到PSDK程序中,也就是您现在使用的程序,而在所支持的功能上或者在其他端对OSDK/PSDK设备的识别上,则是在代码中做了判断,您将设备插入E-Port端口(该端口也是机载计算机端口)或OSDK端口,我们在代码中会标识好这是作为机载计算机接入(在Pilot侧或MSDK侧我们会将它以OSDK的角色上报,因此您会看到当在M300的OSDK端口运行PSDK程序时,Pilot上仍显示OSDK设备),从而决定您可以使用机载计算机的功能,当您插入到云台口(或者说Payload端口),我们会识别这是作为负载设备接入(在MSDK侧或Pilot侧会作为Payload负载的角色上报),从而决定您可以使用负载设备的功能。 -
感谢您的回答,也就说在我的应用场景和项目中,我是否可以按照您们提供的教程https://developer.dji.com/doc/payload-sdk-tutorial/cn/quick-start/quick-guide/raspberry-pi.html,使用M300的OSDK接口与E-port连接,再通过E-port的串口以及Type-c接口与树莓派连接,从而让树莓派通过脚本实现针对ZENMUSE P1相机中sd卡数据的读取?我目前对于PSDK的API和接口仍然感到困惑。非常感谢您的解答
-
您好,没问题的,或许您看这个表格就清楚了,您需要获取到P1中的媒体文件,实际上是属于相机管理的功能,您可以查看此处,M300的OSDK端口支持此功能,而M300的OSDK端口也支持您使用E-port开发套件连接。您可以使用E-Port开发套件,将您的开发板连接到M300的OSDK端口,运行PSDK程序,获取和下载P1的媒体文件。https://developer.dji.com/doc/payload-sdk-tutorial/cn/model-instruction/choose-develop-platform.html -
非常感谢贵团队在过去一个月中对我的项目给予的大量技术支持,我非常感激您们提供的详细建议,这对推进项目起到了极大的帮助。
目前,我还有一个关于数据传输方式的问题想要咨询。根据我们之前的交流和项目的实际部署情况,我目前使用的是 UART(通过 E-Port 连接树莓派 5 和 DJI Matrice 300 RTK 的 OSDK,包含 UART 和 Type-C 接口)进行图像数据传输。但我注意到 USB-Bulk 也是一种支持的传输方式。
- 请问是否可以提供更多关于 USB-Bulk 配置的详细指导?我按照官方文档(USB 设备 RNDIS 和 BULK 设置)进行配置时,似乎遇到了一些问题。
此外,我希望了解以下内容:
- UART 和 USB-Bulk 的实际传输速率分别是多少?
- USB-Bulk 的速度是否显著快于 UART?
- 如果当前 UART 的传输速度较慢,是否可能是配置问题导致的?
考虑到项目的实际需求,我还在探索其他更快速的图像数据传输方法(例如,从 DJI Matrice 300 RTK 和连接的 P1 相机的 SD 卡中实时检索新图像并传输至树莓派,通过有线连接完成)。
- 除了 E-Port 方式外,是否有其他更高效的传输方式、适配器、协议或连接线可以推荐?
如果 DJI 提供任何适合该用例的配件、传输线或设备,我们非常乐意购买以满足项目需求。
-
您好,关于M300机型,您不需要在环境中配置BULK,硬件上连接即可。因此您不需要关注BULK的配置部分。 实际传输速率我们并未对外公开,但是我们有对个别功能的速率有介绍,您可以参考此处: https://developer.dji.com/doc/payload-sdk-tutorial/cn/function-set/basic-function/data-transmission.html 其中,4 KB/s是UART的大致传输速率,而BULK链路的速率,因功能而异,而互联互通功能均使用的是BULK链路的带宽: 您或许可以参考此处:https://developer.dji.com/doc/payload-sdk-tutorial/cn/function-set/advanced-function/sdk-interconnection.html 2、BULK的传输速率是显著高于UART的。 3、BULK一般是比较稳定的,很少有速度异常的问题,如果传输过慢,可能还和其他方面相关,比如下载媒体文件,使用的是BULK链路,如果下载过慢,还可能与TF卡的类型(是否高速存储卡)有关。 很抱歉,关于配件部分,我们仅给您推荐DJI的官方产品或者认证过的套件(此连接方式已经很高效了),而您的需求,我们仅为您推荐到E-Port开发套件为止,其他的套件还未经过我们的认证,USB线缆您注意购买支持数据传输的线缆,而并非仅支持充电的线缆。
Please sign in to leave a comment.
Comments
8 comments