模块开发¶
本节是如何在 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)提供了许多可通过模块执行的常见任务的注释代码。