OpenHarmony开发者论坛
标题:
OpenHarmony无人机MAVSDK开源库适配方案分享(一)
[打印本页]
作者:
陈美汝
时间:
2024-3-25 15:58
标题:
OpenHarmony无人机MAVSDK开源库适配方案分享(一)
[md]MAVSDK是PX4开源团队贡献的基于MavLink通信协议的用于无人机应用开发的SDK,支持多种语言如C/C++、python、Java等。通常用于无人机间、地面站与通信设备的消息传输。
MAVLink 是一种非常轻量级的消息传递协议,用于与无人机(以及机载无人机组件之间)进行通信。MAVLink 遵循现代混合发布-订阅和点对点设计模式,数据流作为主题发送/发布,而任务协议或参数协议等配置子协议是点对点的重传。其中MAVLink 1 每个数据包只有 8 个字节的开销,包括开始标志和数据包丢弃检测。MAVLink 2 只有 14 字节的开销。由于 MAVLink 不需要任何额外的成帧,因此非常适合通信带宽非常有限的应用程序。
当我们想要在OpenHarmony上做无人机相关工作时,在通信方面需要面临MAVLink的移植适配工作。因此接下来我们将分享如何将MAVSDK移植至OpenHarmony系统当中。
---
MAVSDK Github 开源地址:
https://github.com/mavlink/MAVSDK
接下来讲解如何把MAVSDK开源库添加至 OpenHarmony 工程中进行编译。(此方法与其他开源库移植方法基本一致)
本次移植通过新建子系统mavsdk,在子系统下添加名为mavsdk的组件,并在该组件下添加名为MAVSDK的模块,OpenHarmony系统层级顺序如下:子系统->组件->模块,下文中将都以此为顺序进行叙述。
表1:添加到工程后的目录结构
| 路径 | 描述 |
| -------------------------------------------------- | ------------------------------------ |
| ohos/build/subsystem\_config.json | 子系统配置 |
| ohos/productdefine/common/products/ohos-arm64.json | 板级相关 |
| ohos/third\_party/MAVSDK/bundle.json | 在子系统中添加组件配置 |
| ohos/third\_party/MAVSDK/BUILD.gn | 三方库模块化,将其加入组件中的gn文件 |
### subsystem_config.json
首先在`ohos/build/subsystem`中添加 subsystem 节点。
```
"mavsdk": {
"path": "third_party/MAVSDK",
"name": "mavsdk"
}
```
### ohos-arm64.json文件
在 `ohos/productdefine/common/products/ohos-arm64.json`文件中添加板级相关的信息。
```
"mavsdk:MAVSDK":{}
```
如下图所示:
![image.png](
https://forums-obs.openharmony.c ... ffvvv0zx5x3c322.png
"image.png")
### Bundle.json文件
在 `ohos/third`目录下添加 `bundle.json`文件,以便系统可以添加名为MAVSDK的组件。
对于此文件要点如注释所见(编译时去除注释以保证配置文件整洁性)
```
{
"name": "@ohos/MAVSDK",
"description": "",
"version": "",
"license": "",
"publishAs": "",
"segment": {
"destPath": "third_party/MAVSDK"
},
"dirs": {},
"scripts": {},
"readmePath": {
},
"component": {
"name": "MAVSDK",
"subsystem": "mavsdk",
"syscap": [],
"features": [],
"adapted_system_type": [],
"rom": "",
"ram": "",
"deps": {
"components": [ "jsoncpp",
"zlib"//此处添加了要用的三方库,后续的build.gn中还会有所体现。
],
"third_party": ["jsoncpp",
"zlib"
]
},
"build": {
"sub_component": [ "//third_party/mavsdk:MAVSDK",
"//third_party/mavsdk:mavsdk_test"],//此处添加了接下来要编译的组件,一个是代码主仓组件,一个是代码的测试文件组件
"inner_kits": [],
"test": ["//third_party/mavsdk:mavsdk_test"]
}
}
}
```
[/md]
作者:
vincen
时间:
2024-3-26 11:10
学习到了
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5