[经验分享] OpenHarmony无人机MAVSDK开源库适配方案分享(一) 精华

陈美汝 显示全部楼层 发表于 2024-3-25 15:58:57

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

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"]
        }
    }
  }

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论1

vincen

沙发 发表于 2024-3-26 11:10:55
学习到了

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部