模块开发

本节是如何在 MAVProxy 中创建自定义模块的快速教程。

地点

如果从 MAVProxy 源代码开发,模块会被放置在 MAVProxy/modules 文件夹。然后 setup.py 构建 安装 --用户 例程需要运行,以便(重新)安装 MAVProxy 和该文件夹中的模块,这些模块将被自动提取并成为安装的一部分。

备注

MAVProxy 模块将无法检测和运行任何未作为上述部分编译的模块。 setup.py.这是因为 MAVProxy 运行的模块来自 Python 软件包的安装目录,而不是 MAVProxy 的源代码目录。

然后可以使用 模块 负荷 我的模块 在 MAVProxy 中。

模块文件结构

在底层,MAVProxy 模块是 MPModule 类的一个实例,具有初始化和读取 Mavlink 数据包的钩子:

#!/usr/bin/env python '''module template'''import time, math from pymavlink import mavutil from MAVProxy.modules.lib import mp_module from MAVProxy.modules.lib.mp_settings import MPSetting class TestModule(mp_module.MPModule): def __init__(self, mpstate): super(TestModule, self).__init__(mpstate, "test", "test module") '''initialisation code'''' def mavlink_packet(self, m):'''handle a mavlink packet''' def init(mpstate): '''initialise module''' return TestModule(mpstate) ``.

初始化部分定义了命令和模块变量。添加命令

自我.添加命令('蝙蝠';, 自我.cmd_bat, "显示一些信息";)

上述操作将在 MAVProxy 中添加 "bat "命令,MAVProxy 帮助将显示 "show some information"(显示一些信息)和 self.cmd\_bat 函数将被运行。

在数据包处理中 Mavlink 参考用于过滤接收到的数据包中的相关数据:

如果 m.get_type() == 'vfr_hud';:
  光标 =  m.空速

上述示例将设置变量 光标 与飞行器当前的空速相匹配。 VFR_HUD 收到数据包。

有大量的 MAVProxy 模块,因此最好的参考资料是查看这些模块 模块 的例子。

特别是 范例 模块(mavproxy_example.py)提供了许多可通过模块执行的常见任务的注释代码。