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)的形式表示。


                
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bingbing~bang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值