大疆PSDK实例代码运行,获取无人机实时GPS信息(上)

本文档讲述在Jetson nano开发板上运行大疆提供的Payload SDK实例代码获取无人机实时GPS信息的方法,以及基于Payload SDK发布ROS GPS话题信息的方法。

0 实现目标

在大疆Matrice 350 RTK无人机上安装E-Port 开发者套件,再通过E-Port 开发者套件连接到Jetson nano开发板,便可以读取当前无人机飞行时的RTK数据和GPS数据。RTK数据与GPS数据在组合导航算法中具有重要重要作用。

本文将要实现的,一是编译大疆提供的Payload SDK,来获取实时GPS数据;二是将获取的GPS信息,以ROS话题的形式,发布出来,供组合导航中其他的ROS节点使用。

1 Payload SDK

大疆Payload sdk是DJI 为支持开发者开发出可挂载在DJI 无人机上的负载设备,现在我需要在M350 RTK机型上获取无人机自带传感器设备信息,所获取的信息包括无人机姿态、GPS信息、以及H20T云台的相机码流。
可以参考官网psdk:https://developer.dji.com/doc/payload-sdk-tutorial/cn/function-set/advanced-function/liveview.html

Payload SDK代码可以从Github上的大疆官方页下载:

git clone https://github.com/dji-sdk/Payload-SDK.git

在这里插入图片描述

1.1 PSDK 源码编译的前提

在jeston nano安装ffmpeg和opencv 4.8
先安装ffmpeg

sudo apt-get install ffmpeg

再安装
opencv 4.8
可以参考:https://blog.csdn.net/weixin_45041054/article/details/146365049
安装OpenCV 4.8时的cmake命令为:

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -DENABLE_PRECOMPILED_HEADERS=OFF 

1.2 PSDK 源码编译

首先,在PSDK源码所在的路径下创建一个build文件夹:
在这里插入图片描述
要在CMakeLists.txt里面加入Opencv 4.8
find_package(OpenCV 4.8 REQUIRED)
在这里插入图片描述
并切换到build目录下,然后运行cmake …
cmake成功后
在这里插入图片描述
在这里插入图片描述

可以看到,build路径下生成了Makefile,那下一步当然就是使用make命令进行编译:make -j24
在这里插入图片描述

如果你Linux报错:make[2]: *** No rule to make target ‘/usr/local/lib/libopus.a‘
可以参考这篇文章:https://blog.csdn.net/VIFIN/article/details/141599219
或者这样报错
在这里插入图片描述
运行这条命令

sudo apt-get install libopus-dev
大疆PSDK(Payload SDK)主要用于开发无人机上的载荷设备,允许开发者通过API与无人机通信并控制其行为。然而需要注意的是,当前提供的引用并未涉及具体的大疆PSDK相关内容,而是提到了已经弃用的Guidance SDK[^1]以及关于Atlas 200I DK A2的信息[^2][^3]。 尽管如此,基于专业知识,以下是有关如何使用大疆PSDK控制无人机飞行的一些指导: ### 使用大疆PSDK控制无人机飞行 #### 配置环境 为了能够利用PSDK进行开发,首先需要配置好开发环境。这通常包括安装DJI Payload SDK库及相关依赖项。可以通过官方文档获取详细的设置说明。 #### 初始化连接 建立与无人机之间的通讯链路是第一步操作。此过程可能涉及到初始化串口或其他形式的数据传输通道。 ```python import dji_psdk as psdk # 创建实例对象 payload_instance = psdk.Payload() # 连接到无人机 connection_status = payload_instance.connect() if not connection_status: raise Exception("Failed to connect to the drone.") ``` #### 发送指令 一旦成功建立了链接,则可通过调用相应的函数向无人机发送命令来执行特定动作,比如起飞、降落或是调整位置等。 ```python def send_command(command_type, parameters=None): """ 向无人机发送指定类型的命令 参数: command_type (str): 命令类别名称 parameters (list or dict): 可选参数列表或字典 返回值: bool: 如果命令被接受则返回True;否则False """ result = payload_instance.sendCommand(command_type=command_type, params=parameters) return result ``` #### 获取反馈数据 除了发出指令外,还需要定期接收来自无人机的状态报告和其他传感器采集回来的数据以便实时监测飞行状况。 ```python while True: telemetry_data = payload_instance.getTelemetryData() process_telemetry(telemetry_data) time.sleep(0.5) # 调整轮询频率 ``` 以上仅为概览性质的内容展示,并未详尽列举所有细节部分,请参照最新版《DJI PSDK Developer Guide》进一步学习深入知识点[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值