【mavros源码解析】10 MAVROS包含文件及消息机制

2023-05-16

【Mavros解析】10 mavros源码

    • Mavros简介
    • Mavros代码详解
      • libmavconn:
      • mavros:
      • mavros_extras:
      • mavros_msgs:
    • MAVROS 包含文件
      • include:
      • launch:
      • src:
      • CmakeList.txt:
    • Mavros简介 - Mavros功能包结构
    • Mavros代码详解 – 源码阅读
      • 三种形式 – uorb消息
      • 三种形式 – uorb消息
      • 三种形式 – mavlink消息
    • Mavros代码详解 – plugin介绍

学习网址: 阿木实验室:MAVROS
Mavros培训课 – Mavros源码

在这里插入图片描述

Mavros简介

  • Mavros功能包
    顾名思义,mavros就是mavlink+ros。mavros是PX4官方提供的一个运行于ros下收发mavlink消息的工具,利用mavros可以发送mavlink消
    息给飞控(可以控制飞机),并且可以从飞控中接受数据(例如:飞控的位置速度 IMU数据等等)。

  • Mavros源代码安装及运行
    详见: MAVROS功能包的源代码安装.pdf

  • Mavros Github主页:https://github.com/mavlink/mavros

详见: MAVROS功能包的源代码安装.pdf

谨记:
mavros包的编译命令是 catkin build
而传统ros包的编译命令是catkin_make
千万别打错!!

Mavros代码详解

  • Mavros简介 - Mavros功能包结构
  • Mavros功能包结构 首先打开到src\mavros目录

在这里插入图片描述

libmavconn:

通讯源文件(飞控板与mavros)

mavros:

Mavros核心包 (核心源文件,例如读取IMU,发送控制指令)

mavros_extras:

Mavros附加包 (补充源文件,例如发送mocap消息)

mavros_msgs:

Mavros自定义消息类型及服务类型 (查看对应消息类型的格式

MAVROS 包含文件

在这里插入图片描述
打开到src\mavros\mavros目录

include:

里面是各种头文件的源代码

launch:

launch启动文件及各种配置文件

src:

核心源文件,稍后具体介绍

CmakeList.txt:

mavros包的配置文件,相关依赖项的添加及源代码编译都在这里声明 [稍后我所说的修改cmakelist就是修改的这个
文件]

Mavros简介 - Mavros功能包结构

此处只介绍我们开发时会用到的一些源文件,底层的驱动文件及一些编译用的camkelist文件等不做详细介绍,感兴趣可以自学
在这里插入图片描述
打开到src\mavros\mavros\src目录
• lib:库文件(坐标转换等等)不需要修改
• mavros:自带的一些python脚本,用不到
• plugins:可以理解为是mavros包提供给我们的一些接口,如果需要用到某 个plugin,建议可以看看plugin的源码,有的时候它默认的方向定义和一些 细节可以自己修改一下,方便使用。有些plugin对于我们的任务是用不到的, 可以将它添加到黑名单中禁用。
• 一般可以在这个目录下新建一个cpp文件,开发新功能(需要修改对应的 cmakelist然后编译)

在这里插入图片描述
打开到src\mavros\mavros\launch目录

• px4.launch: 我们会用到的启动文件(修改:端口号和波特率)
• px4_config.yaml: px4.launch 调用的配置文件 (plugin的参数配 置,基本不需要修改,对应使用某个plugin时,可以自行查看一下 这里默认的参数定义)
• px4_pluginlists.yaml: px4.launch 调用的配置文件 (plugin的 黑白名单,默认启用全部plugin,不想启用某个,可添加到黑名单 中去)

Mavros代码详解 – 源码阅读

三种形式 – uorb消息

• Px4代码内部的一种消息形式,px4中所有消息都有对应的 uorb消息名字,参看px4固件中/msg文件夹
• uorb消息传递机制
• 如何新建自定义uorb消息?

![在这里插入图片描述](https://img-blog.csdnimg.cn/da173bdcecee499
1a668bdfccbe3bebb.png#pic_center)

三种形式 – uorb消息

• ros代码内部的一种消息形式,ros各节点通讯均借助话题。
• 注意一个ros话题包含类型和名字。
• 查询ros话题类型(直接百度)
• Ros话题传递机制(类型和名字都要匹配)
• 自定义ros话题(如mavros_msgs::Command)(如何新建自定义话题?)

在这里插入图片描述

三种形式 – mavlink消息

• 无人机行业定义的通用消息类型,用于飞控与其他设备(机载电脑、地面站、其他无人机)通信。
• 在px4中,mavlink模块负责接收和发送mavlink消息。
• 在机载电脑中,mavros底层代码负责接收和发送mavlink消息。
• 怎么查mavlink消息类型? http://mavlink.org/messages/common

Mavros代码详解 – plugin介绍

Plugin的作用

• 读取飞控发送过来的mavlink消息,解码,然后发布为话题,供我们订阅使用
• 订阅我们发布的话题,封装成mavlink消息,编码,然后发送给飞控

飞控mavlink模块的作用

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

【mavros源码解析】10 MAVROS包含文件及消息机制 的相关文章

随机推荐