# 模块参考:通信

# frsky_telemetry

资料来源 drivers/telemetry/frsky_telemetry (打开新窗口)

支持 FrSky 遥测技术。自动检测 D 或 S.PORT 协议。

# 使用方法

frsky_telemetry <command> [arguments...] 命令: start [-d <val>] 选择串行设备值:<file:dev>,默认:/dev/ttyS6 [-t <val>] 扫描超时 [s](默认:无超时) 默认:0 [-m <val>] 选择协议(默认:自动检测) 值:sport|sport_single|sport_single_invert|dtype,默认:自动 停止状态

资料来源 模块/mavlink (打开新窗口)

# 说明

该模块实现了 MAVLink 协议,可用于串行链路或 UDP 网络连接。它通过 uORB 与系统通信:一些信息直接在模块中处理(如任务协议),另一些则通过 uORB 发布(如 vehicle_command)。

数据流用于以特定速率发送周期性信息,例如飞行器姿态。启动 mavlink 实例时,可以指定一种模式,该模式定义了一组启用的流及其速率。对于运行中的实例,可通过以下方式配置流 mavlink 流 指挥。

模块可以有多个独立实例,每个实例连接一个串行设备或网络端口。

# 实施情况

实现过程使用 2 个线程,一个发送线程和一个接收线程。发送线程以固定速率运行,并在综合带宽高于配置速率时动态降低数据流的速率("......")。-r) 或物理链路达到饱和。可以使用 mavlink 状态看看是否 倍率 小于 1。

小心在此情况下,需要注意的是:有些数据是通过两个线程访问和修改的,因此在修改代码或扩展功能时,需要考虑到这一点,以避免出现竞赛条件和数据损坏。

# 实例

在 ttyS1 串口上启动 mavlink,波特率为 921600,最大发送速率为 80kB/s:

mavlink start -d /dev/ttyS1 -b 921600 -m onboard -r 80000

启动 UDP 端口 14556 上的 mavlink,并启用 50Hz 的 HIGHRES_IMU 信息:

mavlink start -u 14556 -r 1000000 mavlink stream -u 14556 -s HIGHRES_IMU -r 50

# 使用方法

mavlink <command> [arguments...] 命令: start 启动一个新实例 [-d <val>] 选择串行设备值:<file:dev>,默认:/dev/ttyS1 [-b <val>] 波特率(也可以是 p:<参数名>) 默认值:57600 [-r <val>] 以 B/s 为单位的最大发送数据速率(如果为 0,则使用波特率 / 20) 默认值:0:0 [-p] 启用广播 [-u <val>] 选择 UDP 网络端口(本地) 默认值:14556 [-o <val>] 选择 UDP 网络端口(远程) 默认值:14550 [-t <val>] 合作伙伴 IP(可通过 -p 标志启用广播) 默认值:127.0.0.1 [-m <val>] 模式:设置默认流和速率值:custom|camera|onboard|osd|magic|config|iridium|minimal|extvision|extvisionmin|gimbal|uavionix,默认:normal [-n <val>] wifi/ethernet 接口名称值:<interface_name> [-c <val>] 组播地址(可通过 MAV_{i}_BROADCAST 参数启用组播)值:多播地址范围 [239.0.0.0,239.255.255.255] [-f] 启用信息转发到其他 Mavlink 实例 [-w] 等待发送,直到收到第一条信息 [-x] 启用 FTP [-z] 强制硬件流控制始终打开 [-Z] 强制硬件流控制始终关闭 stop-all 停止所有实例 stop 停止正在运行的实例 [-u <val>] 通过本地网络接口选择 Mavlink 实例 [-d <val>] 通过串行设备选择 Mavlink 实例 值: <file:打印所有实例的状态 [streams] 打印所有启用的流 stream 配置运行实例的流发送速率 [-u <val>] 通过本地网络接口选择 Mavlink 实例 [-d <val>] 通过串行设备值选择 Mavlink 实例:<file:dev> -s <val> 要配置的 Mavlink 数据流 -r <val> 以 Hz 为单位的速率(0 = 关闭,-1 = 设置为默认值) boot_complete 启用信息发送。(必须)作为启动脚本的最后一步调用。

# uorb

资料来源 systemcmds/uorb (打开新窗口)

# 说明

uORB 是内部的发布-子消息系统,用于模块之间的通信。

# 实施情况

其实现是异步和无锁的,即发布者不等待订阅者,反之亦然。这是通过在发布者和订阅者之间设置一个单独的缓冲区来实现的。

代码经过优化,以尽量减少内存占用和信息交换延迟。

信息在 /msg 目录。它们会在构建时转换成 C/C++ 代码。

如果使用 ORB_USE_PUBLISHER_RULES 进行编译,则可使用包含 uORB 发布规则的文件来配置允许哪些模块发布哪些主题。这用于全系统范围的重放。

# 实例

监测主题输出频率。此外 顶级,这是检查一般系统的重要命令:

顶部

# 使用方法

uorb <命令> [参数...] 命令: status 打印主题统计数据 top 监控主题发布率 [-a] 打印所有主题,而不是仅打印当前有订阅者的发布主题 [-1] 仅运行一次,然后退出 [<filter1> [<filter2>] 要匹配的主题(暗示 -a