MAVSDK常用API接口解析

mavsdk

主要类,用于发现和管理连接

官网连接 :

class Mavsdk · MAVSDK Guide

头文件:#include "mavsdk.h"

在使用时需要创建对象

#带配置的构造函数
mavsdk::Mavsdk::Mavsdk(Configuration configuration)
#构造示例:指定组件类型为地面站
Mavsdk mavsdk{Mavsdk::Configuration{Mavsdk::ComponentType::GroundStation}};
#类型如下:
Autopilot : 自动驾驶仪
GroundStation : 地面站
CompanionComputer : MAV辅助计算机
Custom : 摄像头

add_any_connection()

函数介绍

通过URL添加连接

ConnectionResult mavsdk::Mavsdk::add_any_connection(const std::string &connection_url, ForwardingOption forwarding_option=ForwardingOption::ForwardingOff)

函数支持Serial,TCP,UDP连接,格式如下:

UDP: udp://[host][:bind_port]
TCP: tcp://[host][:remote_port]
Serial: serial://dev_node[:baudrate]
#UDP主机可以设置为如下任意一种
0 ip :0.0.0.0 #服务器监听
任意ip:192.168.1.12 #类似与客户端

参数

const std::string& connection_url #连接URL字符串
ForwardingOption forwarding_option #消息转发选项(当使用多个接口时)

返回值

枚举类型ConnectionResult

namespace mavsdk (globals) · MAVSDK Guide

#部分类型
Success : 连接成功
Timeout : 连接超时
SocketError : 套接字错误
BindError : 绑定错误

add_udp_connection()

函数介绍

添加指定端口号的UDP连接、添加指定端口号和本地接口的UDP连接

ConnectionResult mavsdk::Mavsdk::add_udp_connection(int local_port=DEFAULT_UDP_PORT, ForwardingOption forwarding_option=ForwardingOption::ForwardingOff)
ConnectionResult mavsdk::Mavsdk::add_udp_connection(const std::string &local_ip, int local_port=DEFAULT_UDP_PORT, ForwardingOption forwarding_option=ForwardingOption::ForwardingOff)

参数

const std::string& local_ip # 要监听的本地UDP IP地址
int local_port # 要监听的本地UDP端口(默认为14540,与MAVROS相同)

返回值

与上述函数返回类型一致

add_tcp_connection()

函数介绍

添加指定IP地址和端口号的TCP连接

ConnectionResult mavsdk::Mavsdk::add_tcp_connection(const std::string &remote_ip, int remote_port=DEFAULT_TCP_REMOTE_PORT, ForwardingOption forwarding_option=ForwardingOption::ForwardingOff)

参数

const std::string& remote_ip #要连接的远程IP地址
int remote_port #要连接的TCP端口(默认为5760)

返回值

ConnectionResult类型的枚举常量

add_serial_connection()

函数介绍

添加与指定端口(COM或UART开发节点)和波特率的串行连接

ConnectionResult mavsdk::Mavsdk::add_serial_connection(const std::string &dev_path, int baudrate=DEFAULT_SERIAL_BAUDRATE, bool flow_control=false, ForwardingOption forwarding_option=ForwardingOption::ForwardingOff)

参数

const std::string& dev_path #COM或UART开发节点名称/路径(例如:“/dev/ttyS0”,在Windows上为“COM3”)
int baudrate #串口的波特率,默认为57600
bool flow_control #启用/禁用流量控制

返回值

ConnectionResult类型的枚举常量

remove_connection()

函数介绍

移除连接

void mavsdk::Mavsdk::remove_connection(ConnectionHandle handle)

参数

ConnectionHandle handle #添加连接时返回的句柄

first_autopilot()

函数介绍

找到第一个被发现的自动驾驶仪

std::optional<std::shared_ptr<System> > mavsdk::Mavsdk::first_autopilot(double timeout_s) const

参数

double timeout_s #以秒为单位的超时时间。超时设置为0不会等待并立即返回。负的超时将永远等待

返回值

std::optional< std::shared_ptr< System > >

如果在超时时间内没有发现任何东西,则为system,否则为NULL

System

系统类,由一个或多个组件组成(例如自动驾驶仪,相机,伺服,万向节等)。系统对象用于与无人机(包括无人机的组件)和独立的摄像机进行交互。无法直接由应用程序代码创建,通过Mavsdk类返回。

官网链接:

class System · MAVSDK Guide

头文件:#include "system.h"

has_autopilot()

函数介绍

检查系统是否有自动驾驶仪

bool mavsdk::System::has_autopilot() const

返回值

bool类型,返回true为存在自动驾驶仪

has_camera()

函数介绍

检查系统是否有给定相机ID的相机,一个系统可能有几个摄像头,id从0开始。当调用时不传递摄像头ID,它会检查系统是否有摄像头。

bool mavsdk::System::has_camera(int camera_id=-1) const

参数

int camera_id #相机的ID,从0开始

返回值

bool类型,找到返回true,未找到返回false

is_connected()

函数介绍

检查系统是否连接

bool mavsdk::System::is_connected() const

get_system_id()

函数介绍

获取MAVLink系统ID,当没有连接时,值为0

返回值

uint8_t类型的系统id值

component_ids()

函数介绍

MAVLink所连接系统的组件id

std::vector<uint8_t> mavsdk::System::component_ids() const

返回值

std::vector< uint8_t > 所有组件id的列表

enable_timesync()

函数介绍

使用TIMESYNC消息使能时间同步

void mavsdk::System::enable_timesync()

Telemetry

允许用户获取车辆遥测和状态信息(例如电池,GPS, RC连接,飞行模式等)并设置遥测更新速率

官网链接:

class Telemetry · MAVSDK Guide

头文件:#include "telemetry.h"

Telemetry()

函数介绍

为特定系统构造遥测的构造函数

mavsdk::Telemetry::Telemetry(System &system)
mavsdk::Telemetry::Telemetry(std::shared_ptr< System > system) #智能指类型
#使用示例
auto telemetry = Telemetry(system);

参数

std::shared_ptr< System > system #与这个插件关联的特定系统
System& system

subscribe_position()

函数介绍

这个函数允许用户订阅无人机的位置信息。当无人机的位置更新时,提供给这个函数的回调函数会被执行

PositionHandle mavsdk::Telemetry::subscribe_position(const PositionCallback &callback)

参数

const PositionCallback& callback #回调函数,当有新的位置信息时,这个函数会被调用

返回值

PositionCallback类型的句柄

unsubscribe_position()

函数介绍

取消订阅

void mavsdk::Telemetry::unsubscribe_position(PositionHandle handle)

position()

函数介绍

获取无人机当前的位置信息

Position mavsdk::Telemetry::position() const
#Position结构体中具备如下参数
latitude_deg : 纬度(范围:-90到90)
longitude_deg : 经度(范围:-180 ~ 180)
absolute_altitude_m : 海拔,单位米
relative_altitude_m : 相对于起飞高度的高度,单位米

返回值

更新后的位置

subscribe_home() && unsubscribe_home()

函数介绍

订阅或取消起飞点的位置信息

HomeHandle mavsdk::Telemetry::subscribe_home(const HomeCallback &callback)
void mavsdk::Telemetry::unsubscribe_home(HomeHandle handle)

home()

函数介绍

获取无人机记录“home”的位置信息

Position mavsdk::Telemetry::home() const

返回值

返回一个位置信息

subscribe_in_air() && unsubscribe_in_air()

函数介绍

用于订阅获取消无人机是否在空中的状态变化通知

参数

const InAirCallback &callback: 回调函数,每当无人机的在空中状态发生变化时,这个函数会被调用。
InAirCallback 是一个函数类型,它接受一个布尔值参数,该参数表示无人机是否在空中。

返回值

InAirHandle: 返回一个句柄,用于管理订阅。这个句柄可以用来在之后取消订阅

in_air()

函数介绍

用于检查无人机当前是否处于空中飞行状态

bool mavsdk::Telemetry::in_air() const

subscribe_camera_attitude_quaternion()&&unsubscribe_camera_attitude_quaternion()

函数介绍

用于订阅或取消无人机上相机的姿态变化,这里的姿态信息以四元数(Quaternion)的形式表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于高德地图实现Android定位功能实现(二)

基于高德地图实现Android定位功能实现&#xff08;二&#xff09; 在实现的高德地图的基本显示后&#xff0c;我们需要不断完善地图的功能 地图界面设计&#xff08;悬浮按钮等&#xff09; 首先就是地图页面的布局&#xff0c;这个根据大家的实际需求进行设计即可&#xff…

TCP网络模型

目录 应用层&#xff1a;传输层&#xff1a;网络层&#xff1a;网络接口层&#xff1a; 模型最大的优点就是把服务、接口还有协议这三个概念明确的区分开了&#xff0c;通过模型可以让不同系统的网络之间实现可靠的数据传输. 传输层数据带上TCP头&#xff0c;网络层带上IP头&am…

前后端数据交互设计到的跨域问题

前后端分离项目的跨域问题及解决办法 一、跨域简述 1、问题描述 这里前端vue项目的端口号为9000&#xff0c;后端springboot项目的端口号为8080 2、什么是跨域 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 当前页面url被请求页面url是否…

PostgreSQL使用(一)

说明&#xff1a;SQL语言分为以下四类&#xff0c; DDL&#xff08;数据库定义语言&#xff09;&#xff1a;DROP、CREATE、ALTER等语句&#xff1b; DML &#xff08;数据库操作语言&#xff09;&#xff1a;INSERT、UPDATE、DELETE语句&#xff1b; DQL&#xff08;数据库查…

cuda缓存示意图

一、定义 cuda 缓存示意图gpu 架构示意图gpu 内存访问示意图 二、实现 cuda 缓存示意图 DRAM: 通常指的是GPU的显存&#xff0c;位于GPU芯片外部&#xff0c;通过某种接口&#xff08;如PCIE&#xff09;与GPU芯片相连。它是GPU访问的主要数据存储区域&#xff0c;用于存储大…

NoSql选择题解

1. (单选题)以下不属于ACID原则的是( )。 A. 相对性 B. 原子性 C. 隔离性 D. 持久性 正确答案: A :相对性; 2. (单选题)以下NoSQL数据库中&#xff0c;哪个是内存数据库&#xff08;&#xff09;。 A. Bigtable B. Redis C. Hbase D. MongoDB 正确答案: B :Redis; …

java导出PDF详细教程+各种踩坑

直接上代码了 所需依赖: <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version> </dependency><dependency><groupId>com.itextpdf</groupId><art…

使用dnscat2 进行dns隧道反弹shell——直连模式linux对windows

直连模式&#xff1a;客户端直接向指定IP地址的DNS服务器发起DNS解析请求 环境搭建 搭建服务端 git clone https://github.com/iagox86/dnscat2.git cd dnscat2/server/ gem install bundler apt-get install ruby-dev bundle install 过程会有点慢 开启服务端 ruby ./dn…

二叉搜索树的实现[C++]

文章目录 搜索二叉树概念二叉搜索树的功能查找 实现搜索二叉树节点的定义建立搜索二叉树接口插入搜索打印删除 总结 今天本堂主来一起讨论下什么是搜索二叉树&#xff0c;和如何实现二叉搜索树 搜索二叉树 那么二叉搜索树似乎如何实现搜索呢&#xff1f;二叉搜索树和普通二叉…

linux 之时间子系统(八):hrtime 的实现机制

一、hrtimer 概述 在Linux内核中已经存在了一个管理定时器的通用框架。不过它也有很多不足&#xff0c;最大的问题是其精度不是很高。哪怕底层的定时事件设备精度再高&#xff0c;定时器层的分辨率只能达到Tick级别&#xff0c;按照内核配置选项的不同&#xff0c;在100Hz到10…

数据库管理1

数据库管理 数据库运维。 sql语句 数据库用来增删改查的语句 备份 数据库的数据进行备份 主从复制&#xff0c;读写分离&#xff0c;高可用。 数据库的概念和相关的语法和规范&#xff1a; 数据库&#xff1a;组织&#xff0c;存储&#xff0c;管理数据的仓库。 数据库的管理系…

Vue3中的ref函数

在Vue 3中&#xff0c;ref函数是用来创建一个响应式的基本数据类型的函数。通过ref函数创建的变量会被自动包装成一个响应式对象&#xff0c;当这个变量的值发生变化时&#xff0c;相关的视图会自动更新。 下面是ref函数的基本用法和特点&#xff1a; 基本用法&#xff1a; …

一篇文章让你掌握计算网络的HTTP协议!!

HTTP 浏览器的服务原理http协议webTCP/IP协议族TCP/IP协议族分层应用层传输层网络层链路层数据包的封装过程HTTP数据传输过程传输层——TCP三次握手第一次握手第二次握手第三次握手三次握手的目的DNS域名解析HTTP完整事务处理过程HTTP协议的特点支持客户/服务器模式简短快速灵活…

钡铼Modbus TCP耦合器BL200实现现场设备与SCADA无缝对接

前言 深圳钡铼技术推出的Modbus TCP耦合器为SCADA系统与现场设备之间的连接提供了强大而灵活的解决方案&#xff0c;它不仅简化了设备接入的过程&#xff0c;还提升了数据传输的效率和可靠性&#xff0c;是工业自动化项目中不可或缺的关键设备。本文将从Modbus TC、SCADA的简要…

Apache网页优化(企业网站结构部署与优化)

本章结构 一、Apache网页优化 在使用 Apache 作为 Web 服务器的过程中&#xff0c;只有对 Apache 服务器进行适当的优化配置&#xff0c;才能让 Apache 发挥出更好的性能。反过来说&#xff0c;如果 Apache 的配置非常糟糕&#xff0c;Apache可能无法正常为我们服务。因此&…

Java8的新特性

Java8的新特性 一、函数式接口1、Java内置的函数式接口 二、Lambda表达式1、Lambda作用2、语法3、Lambda表达式的六种使用3.1、抽象方法&#xff1a;无参、无返回值3.2、抽象方法&#xff1a;需要传一个参数、无返回值3.3、抽象方法&#xff1a;需要传一个参数&#xff08;类型…

Linux网络攻击防御高级指南:结合 iftop 和 iptables

Linux网络攻击防御高级指南&#xff1a;结合 iftop 和 iptables&#xff08;含规则审查&#xff09; 网络攻击&#xff0c;特别是DDoS&#xff08;分布式拒绝服务&#xff09;攻击&#xff0c;可能导致服务器带宽资源枯竭&#xff0c;严重影响服务稳定性。本高级指南将引导您如…

【笔记】FLOPs 和 FLOPS: 前者(FLOPs) 越大,说明模型的计算复杂度越高;后者(FLOPS)越大,说明硬件的计算速度越快

FLOPs&#xff08;Floating Point Operations&#xff09;&#xff1a;这是指一个模型在一次前向传播中需要进行的浮点运算次数&#xff0c;是一个衡量模型计算复杂度的指标。FLOPs越大&#xff0c;说明模型的计算复杂度越高。 FLOPS&#xff08;Floating Point Operations Pe…

【iOS】OC类与对象的本质分析

目录 前言clang常用命令对象本质探索属性的本质对象的内存大小isa 指针探究 前言 OC 代码的底层实现都是 C/C代码&#xff0c;OC 的对象都是基于 C/C 的数据结构实现的&#xff0c;实际 OC 对象的本质就是结构体&#xff0c;那到底是一个怎样的结构体呢&#xff1f; clang常用…

IDEA实现SpringBoot项目的自打包自发布自部署

目录 前言 正文 操作背景 自发布 自部署 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ningbo China&#x1f4eb; You can reach…