无人机Mavlink+offboard模式指令概述

2023-05-16

这篇文章里面有个有价值的点就是它说到 

Offboard模式用到两种命令:

一种是期望姿态

一种是期望位置

 

我是不是要去详细看看MAVROS的用法,MAVROS的用法里面应该会说有哪些指令啊。

 

摘自:https://blog.csdn.net/faith_yu/article/details/52440434

 

无人机Mavlink+offboard模式指令概述

 

Faith_yu 2016-09-05 15:09:50 7431 收藏 8

分类专栏: mavlink指令 无人机 offboard模式

版权

     无人机如今越来越多,如果你想深入了解无人机,那么了解和应用无人机mavlink指令是应该的。

     接下来就介绍一波,下面的内容都是费了很长时间整理的,如有不妥,还请见谅。

 

 

先介绍一波学习网站:

 

Mavlink各个指令:https://pixhawk.ethz.ch/mavlink/

 

Mavlink crc_extra的计算:http://qgroundcontrol.org/mavlink/crc_extra_calculation

 

 

 

 

 

【1】下面开始说介绍mavlink所发送的数据结构。

Mavlink传输时的基本单位是消息帧。

如图所示,每个消息帧都是上述的结构,除了灰色外,其他的格子都代表了一个字节的数据。

红色的是起始标志位(stx),在v1.0版本中以“FE”作为起始标志。这个标志位在mavlink消息帧接收端进行消息解码时有用处。

第二个格子代表的是灰色部分(payload,称作有效载荷,要用的数据在有效载荷里面)的字节长度(len),范围从0到255之间。在mavlink消息帧接收端可以用它和实际收到的有效载荷的长度比较,以验证有效载荷的长度是否正确。

第三个格子代表的是本次消息帧的序号(seq),每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。这个序号用于mavlink消息帧接收端计算消息丢失比例用的,相当于是信号强度。

第四个格子代表了发送本条消息帧的设备的系统编号(sys),使用PIXHAWK刷PX4固件时默认的系统编号为1,用于mavlink消息帧接收端识别是哪个设备发来的消息。

第五个格子代表了发送本条消息帧的设备的单元编号(comp),使用PIXHAWK刷PX4固件时默认的单元编号为50,用于mavlink消息帧接收端识别是设备的哪个单元发来的消息(暂时没什么用) 。

第六个格子代表了有效载荷中消息包的编号(msg),注意它和序号是不同的,这个字节很重要,mavlink消息帧接收端要根据这个编号来确定有效载荷里到底放了什么消息包并根据编号选择对应的方式来处理有效载荷里的信息包。

最后两个字节是16位校验位,ckb是高八位,cka是低八位。校验码由crc16算法得到,算法将整个消息(从起始位《1》开始到有效载荷结束,还要额外加上个MAVLINK_CRC_EXTRA字节)进行crc16计算,得出一个16位的校验码。之前提到的每种有效载荷里信息包(由消息包编号来表明是哪种消息包)会对应一个MAVLINK_CRC_EXTRA,这个 MAVLINK_CRC_EXTRA 是由生成mavlink代码的xml文件生成的,加入这个额外的东西是为了当飞行器和地面站使用不同版本的mavlink协议时,双方计算得到的校验码会不同,这样不同版本间的mavlink协议就不会在一起正常工作,避免了由于不同版本间通讯时带来的重大潜在问题。

为了方便叙述,消息包将称作包,包所代表的信息称作消息。上图中的sys将称为sysid,comp将称为compid,msg将称为msgid。

官方的介绍如下图:

   

Supported data types

MAVLink supports fixed-size integer data types, IEEE 754 single precision floating point numbers, arrays of these data types (e.g. char[10]) and the special mavlink_version field, which is added automatically by the protocol. These types are available:

char - Characters / strings

uint8_t - Unsigned 8 bit

int8_t - Signed 8 bit

uint16_t - Unsigned 16 bit

int16_t - Signed 16 bit

uint32_t - Unsigned 32 bit

int32_t - Signed 32 bit

uint64_t - Unsigned 64 bit

int64_t - Signed 64 bit

float - IEEE 754 single precision floating point number

double - IEEE 754 double precision floating point number

uint8_t_mavlink_version - Unsigned 8 bit field automatically filled on sending with the current MAVLink version - it cannot be written, just read from the packet like a normal uint8_t field

 

 

先看一段指令示例,这个指令是#82号指令:

 

 

各个mavlink指令对应的 crc_extra值表和LEN长度在 mavlink 1.0 库中的ardupilotmega.h头文件里,具体可以去https://github.com/mavlink/里面查找。

 

Checksum使用CRC—16 CCITT ITU x.25

 

帧中都是16进制数据,要把十进制转成十六进制,例如255是 FF。

 

Float二进制储存方式:http://blog.csdn.net/gjw198276/article/details/6956244

指令示例:#82      FE 27 00 01 01 52 00 00 00 00 01 01 00 00 00 00 00 00 00 00

 

00 00 00 00  00 00  3F 80 00 00 3F C0 00 00 3F C0 00 00 3F C0 00 00

 

3F 00 00 00  (31) A8 2B

 

len:27

sequence:00

system:01

component:01

cmd id:52

time boot ms :00 00 00 00

target system:01

target component:01

type mask:00

q:00 00 00 00   00 00 00 00  00 00 00 00  3F 80 00 00 (绕z轴旋转180度

 

)

body roll rate:3F C0 00 00(1.5弧度每秒)

body pitch rate:3F C0 00 00(1.5弧度每秒)

body yaw rate:3F C0 00 00(1.5弧度每秒)

thrus:3F 00 00 00(0.5)

CRC: A8 2B

 

 

Offboard模式用到两种命令:

 

 

#82

姿态变换以无人机坐标为准,无人机重心为原点坐标,无人机前方向为x轴,右方为y轴,z轴向下。Q=(cos(θ/2),(x,y,z)sin(θ/2)),四元数具体介绍:http://blog.csdn.net/candycat1992/article/details/41254799

 

time_boot_ms:可以设置成0吧??这个好像不重要。

target_system:01(从串口返回的飞控数据得到)

target_component:01(同上)

其它参数介绍具体参见官网:https://pixhawk.ethz.ch/mavlink/

#84

 

 

NED坐标以无人机重心为原点,x轴为north方向,y轴为east方向,z轴指向地心。

 

 

#65  此指令有可能控制云台

 

 

 

附录:

LEN AND CRC_EXTRA TABLES:

 

 

#ifndef MAVLINK_MESSAGE_LENGTHS

#define MAVLINK_MESSAGE_LENGTHS {9, 31, 12, 0, 14, 28, 3, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 20, 2, 25, 23, 30, 101, 22, 26, 16, 14, 28, 32, 28, 28, 22, 22, 21, 6, 6, 37, 4, 4, 2, 2, 4, 2, 2, 3, 13, 12, 37, 4, 0, 0, 27, 25, 0, 0, 0, 0, 0, 68, 26, 185, 229, 42, 6, 4, 0, 11, 18, 0, 0, 37, 20, 35, 33, 3, 0, 0, 0, 22, 39, 37, 53, 51, 53, 51, 0, 28, 56, 42, 33, 0, 0, 0, 0, 0, 0, 0, 26, 32, 32, 20, 32, 62, 44, 64, 84, 9, 254, 16, 12, 36, 44, 64, 22, 6, 14, 12, 97, 2, 2, 113, 35, 6, 79, 35, 35, 22, 13, 255, 14, 18, 43, 8, 22, 14, 36, 43, 41, 32, 243, 14, 93, 0, 100, 36, 60, 30, 42, 8, 4, 12, 15, 13, 6, 15, 14, 0, 12, 3, 8, 28, 44, 3, 9, 22, 12, 18, 34, 66, 98, 8, 48, 19, 3, 20, 24, 29, 45, 4, 40, 2, 206, 7, 29, 0, 0, 0, 0, 27, 44, 22, 25, 0, 0, 0, 0, 0, 42, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 3, 6, 7, 2, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 42, 40, 63, 182, 0, 0, 0, 0, 0, 0, 0, 32, 52, 53, 6, 2, 38, 0, 254, 36, 30, 18, 18, 51, 9, 0}

#endif

 

 

#ifndef MAVLINK_MESSAGE_CRCS

#define MAVLINK_MESSAGE_CRCS {50, 124, 137, 0, 237, 217, 104, 119, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 214, 159, 220, 168, 24, 23, 170, 144, 67, 115, 39, 246, 185, 104, 237, 244, 222, 212, 9, 254, 230, 28, 28, 132, 221, 232, 11, 153, 41, 39, 78, 196, 0, 0, 15, 3, 0, 0, 0, 0, 0, 153, 183, 51, 59, 118, 148, 21, 0, 243, 124, 0, 0, 38, 20, 158, 152, 143, 0, 0, 0, 106, 49, 22, 143, 140, 5, 150, 0, 231, 183, 63, 54, 0, 0, 0, 0, 0, 0, 0, 175, 102, 158, 208, 56, 93, 138, 108, 32, 185, 84, 34, 174, 124, 237, 4, 76, 128, 56, 116, 134, 237, 203, 250, 87, 203, 220, 25, 226, 46, 29, 223, 85, 6, 229, 203, 1, 195, 109, 168, 181, 47, 72, 131, 127, 0, 103, 154, 178, 200, 134, 219, 208, 188, 84, 22, 19, 21, 134, 0, 78, 68, 189, 127, 154, 21, 21, 144, 1, 234, 73, 181, 22, 83, 167, 138, 234, 240, 47, 189, 52, 174, 229, 85, 159, 186, 72, 0, 0, 0, 0, 92, 36, 71, 98, 0, 0, 0, 0, 0, 134, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 101, 50, 202, 17, 162, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 163, 105, 151, 35, 0, 0, 0, 0, 0, 0, 0, 90, 104, 85, 95, 130, 184, 0, 8, 204, 49, 170, 44, 83, 46, 0}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人机Mavlink+offboard模式指令概述 的相关文章

  • 改变PX4飞控通过MAVLink发送IMU数据的频率

    改变PX4飞控通过MAVLink发送IMU数据的频率 参考 xff1a https docs px4 io master en middleware mavlink html 在QGC的MAVLink Console中执行命令 xff1a
  • offboard代码超详细注释

    这一部分主要对服务做了特别详细的讲解 span class token macro property span class token directive keyword include span span class token stri
  • 测试offboard模式的安全代码

    这段代码用于检验offboard模式的安全启动 xff0c 执行后飞机只会轻微的旋转 xff0c 不会起飞 span class token comment span span class token comment Created by
  • MAVLink—最强大的微型飞行器通信协议

    c 光明工作室 2017 2037 COPYRIGHT 光明工作室团队成员大部分来自全国著名985 211工程院校 具有丰富的工程实践经验 xff0c 本工作室热忱欢迎大家的光临 工作室长期承接嵌入式开发 PCB设计 算法仿真等软硬件设计
  • Mavlink协议

    Mavlink协议简介 Mavlink协议简介 一Mavlink协议二数据结构三协议支持的数据类型四性能五航点协议 读取MAV的航点列表写MAV的航点列表清除MAV的航点列表设置当前MAV航点 六参数的读写 读取参数列表读取单个参数写参数
  • MAVLINK消息在Ardupilot中的接收和发送过程

    MAVLINK消息在Ardupilot中的接收和发送过程 SCHED TASKupdate receive update send 由于现在网上很多的都是APM旧版本的解释 xff0c 因此把自己的一些学习所得记录下来 截至写博客日期 xf
  • px4调试bug--添加mavlink_log_info信息

    写在前面的话 有一阵子没有看px4的代码了 由于项目和论文的需要 又要接触这个 其中又遇到一些新的问题 找到了一些新的解决方法 故在此记录一下 总是在几种飞控代码之间跳来跳去 没有认真研究一个 有点遗憾 PX4的代码调试还没有找到什么好的方
  • matlab发送mavlink消息

    主要介绍了通过matlab脚本实现UDP发送mavlink消息 xff0c 为后面matlab计算 xff0c 与Optitrack联合调试 xff0c 控制无人机做准备 示例演示效果链接为 matlab通过UDP协议发送mavlink消息
  • MAVROS(1)offboard模式(手动和roslaunch启动)

    官方教程 xff1a https docs px4 io master en ros mavros offboard html 1 编写功能包 参考 xff1a https blog csdn net weixin 44917390 art
  • pixhawk的offboard模式其实是和定高(AltHold) 定点(loiter) 这些模式平级的一个模式

    pixhawk的offboard模式其实是和定高 xff08 AltHold 定点 loiter 这些模式平级的一个模式 所以也是可以通过遥控器进入offboard模式的 不是什么特别的东西 https blog csdn net msq1
  • 无人机Mavlink+offboard模式指令概述

    这篇文章里面有个有价值的点就是它说到 Offboard模式用到两种命令 xff1a 一种是期望姿态 一种是期望位置 我是不是要去详细看看MAVROS的用法 xff0c MAVROS的用法里面应该会说有哪些指令啊 摘自 xff1a https
  • MAVLINK 请求参数和接收参数

    if decodeState 61 61 1 之后是放在mavlink消息解析后面 请求返回参数配置列表 void MavDebug on pushButton 3 clicked mavlink message t msg mavlink
  • mavlink解码java_mavlink: A Java API for MAVLink communication

    Overview A Java SDK for communication using the Mavlink1 and Mavlink2 protocols Structure The project is made up of 3 co
  • PX4+Offboard模式+代码控制无人机起飞(Gazebo)

    参考PX4自动驾驶用户指南 https docs px4 io main zh ros mavros offboard cpp html 我的另一篇博客写了 键盘控制PX4无人机飞行 PX4无人机 键盘控制飞行代码 可以先借鉴本篇博客 xf
  • PX4模块设计之五:自定义MAVLink消息

    PX4模块设计之五 xff1a 自定义MAVLink消息 1 MAVLink Dialects1 1 PX4 Dialects1 2 Paprazzi Dialects1 3 MAVLink XML File Format 2 添加自定义M
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • mavlink解析

    之前看了mavlink协议 xff0c 网上关于mavlink的资料不多 本系列共三篇 xff0c 这是第一篇 本文大概总结了下对mavlink协议的理解 以下如不说明都是说mavlink v1 0版本 首先附上mavlink的各个消息的简
  • MISSION_MAVLINK

    上传航点的mavlink包 MISSION ITEM 39 Message encoding a mission item This message is emitted to announce the presence of a miss
  • 树莓派3B使用mavlink串口连接PIXHAWK_V5

    参考网址 xff1a http ardupilot org dev docs raspberry pi via mavlink html https dev px4 io en robotics dronekit html https do
  • Offboard例程的python版本

    因为python的库很丰富 xff0c 有现成的解方程库 xff0c 比如sympy 自己写了一份python版本的自动起飞2m的程序 假设自定义的包名为offb xff0c 在offb下新建scripts文件夹 xff0c 将py文件放在

随机推荐