飞控通讯协议 控制无人机飞行(MAVLink、MAVSDK)

目录

前言

一、MAVSDK简介

二、编译安装MAVSDK

三、启动PX4的jMAVSim仿真环境无人机

四、飞行控制

1、例子:控制无人机 起飞着陆

2、例子:键盘方向键控制无人机 起飞着陆、飞行

3、其它例子

五、后续开发建议


前言

之前的文章,介绍过 PX4开源飞控仿真环境的搭建 及 MAVLink飞控通讯协议:

PX4开源飞控--开发环境搭建 编译仿真及烧录

MAVLink 飞控通讯协议开发详解

本章将介绍如何通过MAVSDK开发包控制仿真无人机飞行(间接使用MAVLink飞控通讯协议)

飞行操作视频如下:

基于MAVSDK开发包使用键盘控制仿真无人机起飞着陆、飞行

一、MAVSDK简介

        MAVLink飞控通讯协议常用于无人机和地面站之间的通讯,直接通过底层MAVLink协议去控制无人机较为困难,容易失败,是因为无人机存在一些操控逻辑和细节。
        因此,使用一些MAVLink协议相关的开源API,工程或SDK软件包去操作,无疑是最好的选择。MAVSDK是一个由开源社区 mavlink 开发的轻量级 SDK,用于与MAVLink系统的通讯接口。  它提供了一套现代多编程语言接口(c++、python、go、java等),处理了很多逻辑细节,使得开发者能够轻松地与飞行控制器、地面站以及其他 MAVLink 设备进行通信,从而构建复杂的无人机应用。  

二、编译安装MAVSDK

1、下载MAVSDK-C++源码

git clone https://github.com/mavlink/MAVSDK.git --recursive
cd MAVSDK

2、编译项目

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -Bbuild/default -H.

参数解析:
-DCMAKE_INSTALL_PREFIX=install:指定安装路径为install,否则安装路径在系统默认的/usr/local或/usr/中
-Bbuild/default:指定编译路径设置为build/default

3、编译源码并安装(安装路径由上一步指定)

cmake --build build/default --target install

三、启动PX4的jMAVSim仿真环境无人机

1、搭建仿真环境(docker方式)参照之前的文章:

        https://blog.csdn.net/zhoubiaodi/article/details/138303475

2、编译启动 jMAVSim 仿真模拟器(也可选择启动 Gazebo 模拟器)

cd /home/px4/PX4-Autopilot
make px4_sitl jmavsim

3、启动jMAVSim仿真模拟器的 mavlink通信,在局域网和外部UDP服务通信

例如UDP服务的ip:10.10.151.211 端口:14540

mavlink start -p -u 14557 -t 10.10.151.211 -o 14540

四、飞行控制

1、例子:控制无人机 起飞着陆

examples/takeoff_and_land

  • 编译(指定之前安装的路径../../install)
cd examples/takeoff_and_land
cmake -Bbuild -DCMAKE_PREFIX_PATH=../../install -H.
cmake --build build -j8
  • 运行(启动udp通信,控制仿真模拟器无人机 起飞着陆)
build/takeoff_and_land udp://:14540

2、例子:键盘方向键控制无人机 起飞着陆、飞行

examples/mavsdk_control

  • 下载mavsdk_control放到examples目录下(mavsdk_control是本人自己编写的C++代码):

基于mavsdk写的一个c/c++例子:键盘方向键控制无人机 起飞着陆、飞行

  • 编译(指定之前安装的路径../../install)
cd examples/mavsdk_control
cmake -Bbuild -DCMAKE_PREFIX_PATH=../../install -H.
cmake --build build -j8
  • 运行(启动udp通信,电脑方向键控制仿真模拟器无人机 起飞着陆、飞行)
build/mavsdk_control

飞行操作视频如下: 

基于MAVSDK开发包使用键盘控制仿真无人机起飞着陆、飞行

3、其它例子

源码目录下其它例子,编译运行指令跟上诉例子一样。

examples/fly_mission:飞行航线任务

examples/battery:订阅电池状态

...

五、后续开发建议

MAVSDK支持TCP、UDP和串口通信方式和无人机进行通信,  
串口通信方式可能因硬件系统环境存在差异,导致不适用,这时候可开发一个TCP或UDP客户端通信,透传串口数据到MAVSDK的TCP或UDP服务  。

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的搬运工zyh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值