【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(使用前将#替换为@)