ardupilot开发 --- MAVSDK 篇

0. 一些概念

  • MAVSDK用于与MAVLink系统的通讯接口。
    这些库提供了一些简单的API,用于管理一个或多个vehicles,提供对vehicles信息和遥测的程序访问,以及对任务、移动和其他操作的控制。
    这些库可以在无人机上、配套计算机上使用,也可以在地面上用于地面站或移动设备。
    C++库设计为高性能的,可用于实现计算机视觉、避障和路线规划等任务。
  • MAVSDK C++库是一个在生产环境中使用的健壮且经过良好测试的库。但请注意,API仍在发展中,该项目不提供未来的兼容性保证
  • MAVSDK是跨平台的:Linux、macOS、Windows、Android和iOS。
  • 一个简单完整的例子: Takeoff and Land.
  • 关于 API 版本之间更改的信息: https://mavsdk.mavlink.io/main/en/cpp/api_changes.html
  • Mavsdk是主要的库类。API消费者使用Mavsdk来发现和访问车辆(系统对象),从而提供对所有其他无人机信息和控制对象(例如遥测、任务等)的访问。
  • 此外,“服务器插件”可用于实现车辆侧MAVLink功能。可能用于从非MAVLink自动引导程序或组件中暴露MAVLink接口。以下API提供了对底层MAVLink消息/类型的更直接的访问。它们只应用于上述主要API中缺少功能的地方
    (1)Param: Raw access to get and set parameters.
    (2)MissionRaw: Direct access to MAVLink mission items.
    (3)MavlinkPassthrough: Provides full/direct MAVLink access
  • MAVSDK主要是用C++编写的,具有可用于几种编程语言的包装器:
    MAVSDK-C++ (2016): Used in production.
    MAVSDK-Swift (2018): Used in production.
    MAVSDK-Python (2019): Used in production.
    MAVSDK-Java (2019): Used in production.
    MAVSDK-Go (2020): Feature complete.
    MAVSDK-JavaScript (2019): Proof of concept.
    MAVSDK-CSharp (2019). Proof of concept.
    MAVSDK-Rust (2019): Proof of concept.
  • 查看C++和Python的快速入门指南。无论您使用哪种语言,都可以使用C++指南来学习如何执行常见任务和使用库。
  • 本指南包含有关如何使用MAVSDK的信息和示例。如果您有文档未回答的具体问题,可以通过以下方式提出:
    Discuss board
    Slack (#mavsdk)
  • 开发文档(C++):https://mavsdk.mavlink.io/main/en/cpp/
  • github源码https://github.com/mavlink/MAVSDK

1. 开发步骤

以Ubuntu20.04环境为例!

1.1 git 源码

sudo apt-get update
sudo apt-get install build-essential cmake git
git clone https://github.com/mavlink/MAVSDK.git
git submodule update --init --recursive

1.2 编译

1.2.1 Configuration

## 1)编译成Debug版本,编译路径设置为MAVSDK/build/default/,其中MAVSDK为源码路径
cmake -DCMAKE_BUILD_TYPE=Debug -Bbuild/default -H.
## 2)或编译成Release版:
cmake -DCMAKE_BUILD_TYPE=Release -Bbuild/default -H.
## 3)指定安装路径为MAVSDK/install/,否则安装路径在/usr/local或/usr/中,其中MAVSDK为源码路径
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=install -Bbuild/default -H.

参数解析:

  • CMAKE_BUILD_TYPE = Debug or Release 编译成Debug还是Release版本
  • CMAKE_INSTALL_PREFIX=安装目录,如CMAKE_INSTALL_PREFIX=install 则会安装在MAVSDK/install/,缺省则会安装在/usr/local,其中MAVSDK为源码路径。
  • 更多请参考:https://mavsdk.mavlink.io/main/en/cpp/guide/build.html

1.2.2 Build

1)只编译不安装

cmake --build build/default -j8

2)编译并安装

## 可配置编译路径MAVSDK/build/default:
sudo cmake --build build/default --target install

其中:build/default指定的编译位置了,除了可在Configuration中指定还可以在build时指定!
可在安装结束的bash中看到安装位置,如下:
在这里插入图片描述
关于“路径”的几点说明:
在编译过程中,有3个路径值得关注,源码路径、编译路径、安装路径。
1)源码路径:源代码所在的路径。
2)编译路径:编译生成的中间文件存放的路径,一般命名为build。
3)安装路径:最终编译得到目标文件、头文件等的安装路径。

1.2.3 关于安装和安装路径的一些说明

有两种安装方式:

  • 直接安装预先编译好的release库文件,后可在其他.cpp中调用 mavsdk 库;
  • git 最新的源码,编译,后可在其他.cpp中调用 mavsdk 库;

所谓的“安装”实际上包括以下两点内容:

  • builds the SDK.
  • copies the libraries and header files into a “public” location so that they can be referenced by C++ applications.

在configuration步骤时不设置 CMAKE_INSTALL_PREFIX 参数,就会默认使用系统级安装(install system wide),安装位置在:/usr/local,如果是通过 .deb 或 .rpm 文件安装的则安装位置在: /usr/

通过 .deb 或 .rpm 文件安装:

sudo apt remove mavsdk
wget https://github.com/mavlink/MAVSDK/releases/download/v1.4.16/libmavsdk-dev_1.4.16_ubuntu20.04_amd64.deb
sudo dpkg -i libmavsdk-dev_1.4.16_ubuntu20.04_amd64.deb

1.3 卸载mavsdk、清除编译

1)通过 .deb 或 .rpm 文件安装

sudo apt remove mavsdk

2)通过build安装

 rm -rf build
 sudo rm -rf 安装目录如 MAVSDK/install

1.4 在.cpp中使用mavsdk库

  • 1)编译例程,如 takeoff_and_land
cd examples/takeoff_and_land/
cmake -Bbuild -H.
cmake --build build -j4

如果编译example时出错,先删掉编译目录再重新编译:

cd examples/takeoff_and_land/
rm -rf build
  • 2)启动仿真 SITL
sim_vehicle.py -v ArduCopter --console --map
  • 3)给SITL增加一个UDP连接
## 在运行SITL的bash输入:
output add 127.0.0.1:14550
  • 4)接入mission planner以观察飞机响应
    tcp连接:127.0.0.1:5762或5661,注意5760已被mavproxy占用!
  • 5)运行例程
build/takeoff_and_land udp://:14550

2.飞行器仿真环境搭建

文档中使用的是PX4仿真,那么如何搭建ardupilot仿真与mavsdk建立通讯呢?
给 SITL 配置 udp 连接即可,如:127.0.0.1:14550
在编译例子时,以udp的方式连接SITL,如:build/takeoff_and_land udp://:14550

3. 专业术语

  • system-wide 系统级,全系统范围
  • System-wide Install 系统级别的安装,可在系统范围内有效;
  • Local Install 指定位置安装,只在局部范围内有效;

4. 参考文献

https://mavsdk.mavlink.io/main/en/cpp/

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值