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

学习网址: 阿木实验室: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模块的作用

### IntelliJ IDEA 中通义灵码 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义灵码 AI 相关的功能。这些功能可以帮助开发者更高效地编写代码并提高生产力。 #### 安装通义灵码插件 为了使用通义灵码的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义灵码" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义灵码服务 成功安装插件之后,还需要配置通义灵码的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义灵码辅助编程 一旦完成上述准备工作,就可以利用通义灵码来进行智能编码支持了。具体操作如下所示: ##### 自动补全代码片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代码含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义灵码解析这段代码的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义灵码能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值