解码 LUA 绑定描述

这并不详尽,也不完整,只是试图帮助用户解码那些尚未在 Lua 脚本 page.

别名

大多数方法都定义了一个别名来指定其绑定组。例如,从 AP_AHRS 库绑定的调用,其组中的描述行将其别名定义为 "ahrs":

单身 AP_AHRS 别称 小时

这样就可以使用其调用来检索当前卷:

滚动 = 小时:get_roll()

方法

大多数绑定都是用于将信息输入和输出运行中的 ArduPilot 固件的方法。在 bindings.desc 文件列出了这些方法,每个方法都按其与底层 ArduPilot 代码模块的 "*.h "头文件的关联进行分组。方法的形式通常为

单例 <绑定组名称> 方法 <方法名称> <函数类型> <参数类型/范围>;

  • 方法名称<是要调用的函数名称

  • <函数类型> 被调用的 C++ 函数类型。

  • <参数类型/范围> 返回的变量类型,或用作被调用 C++ 函数的输入的变量类型和范围。了解这些信息的最佳方法是在被调用的代码中引用 C++ 函数,并将它们与函数的参数关联起来。

实例

要描述上述内容,最简单的方法或许就是按照论证的复杂程度依次举出一些例子:

在 AP_Arming 组中:

单身 AP_Arming 方法 is_armed 布尔

绑定 AP_Arming.h 中的公有变量:

bool is_armed();
返回 a 布尔 对于 上膛

在 AP_Baro 小组中:

单身 AP_Baro 方法 获取温度 浮动

绑定到 AP_Baro.h 中的函数:

浮动 获取温度(空白)  { 返回 获取温度(_主要); }
返回 a 浮动   巴罗 温度 对于 初级 气压表

在 AP_Relay 组中:

单身 AP_Relay 方法 关于 空白 uint8_t 0 ap_relay_num_relays

绑定到 AP_Relay.h 中的函数:

空白 关于(uint8_t 实例) { 设置(实例, ); }
返回 什么,  设置 继电器 实例 关于, 其中 实例
 一个 无符号 8 马衔 整数 之间 0  ap_relay_num_relays (目前 6)

单身 AP_Relay 方法 启用 布尔 uint8_t 0 ap_relay_num_relays

绑定到

bool 启用(uint8_t 实例) { 返回 实例 <; ap_relay_num_relays &&; _针[实例] != -1; }
返回 a 布尔 如果  接力 实例 只要  一直 设置

在 AP_AHRS 组中:

利用 LUA 变量可以有值或为 NULL(无值)的特点,举例说明:

单身 AP_AHRS 方法 get_variances 布尔 float'Null float'Null float'Null Vector3f'Null float'Null

绑定到

// get_variances - 提供  创新 正化 使用  创新 差异 其中 a 价值  0
// 表明 完美 一致性 之间  测量   EKF 解决方案  a 价值  1   最大
// 误区    无争议   过滤
// 布尔 错误  返回 如果 差异   可用
虚拟 bool get_variances(浮动 及样品;velVar, 浮动 及样品;posVar, 浮动 及样品;hgtVar, 向量3f 及样品;magVar, 浮动 及样品;tasVar)  {
    返回 错误;
返回 复式 价值观, 任何  其中   NULL.
  个案  C++ 功能  布尔,  因为  回报  '指定为空、
 C++ 返回  a 布尔  被忽视   返回 价值观   NULL 价值.
备注   致电 回报 很多 价值观 (论点  变量 指针)   没有 输入
变量.

以便了解如何使用:

velVar, posVar,hgtVar,magVar, tasVar = 小时:get_variances()
如果 velVar 
  newVar=2*velVar
最后

请注意,velVar 的值可以是 0,而 如果 语句测试将在 LUA 脚本中为真。