跳至内容

模块参考:通信

frsky_telemetry

资料来源 drivers/telemetry/frsky_telemetry

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

使用方法

frsky_telemetry <命令> [参数...]
 命令
   启动
     [-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 <命令> [参数...]
 命令
   启动新实例
     [-d <val>] 选择串行设备
                 值:<file:dev>,默认值:/dev/ttyS1
     [-b <val>] 波特率(也可以是 p:<参数名>)。
                 默认值:57600
     [以 B/s 为单位的最大发送数据速率(如果为 0,则使用波特率 / 20)。
                 默认值:0
     [-p] 启用广播
     [-u <val>] 选择 UDP 网络端口(本地)
                 默认值:14556
     [-o <val>] 选择 UDP 网络端口(远程)
                 默认值:14550
     [-t <val>] 合作伙伴 IP(可通过 -p 标志启用广播功能)
                 默认值:127.0.0.1
     [-m <val>] 模式:设置默认数据流和速率
                 值:自定义|相机|板载|OSD|魔法|配置|铱|最小值
                 extvision|extvisionmin|gimbal|uavionix,默认:正常
     [-n <val>] wifi/以太网接口名称
                 值: <接口名称>;
     [-c <值>] 多播地址(可通过以下方式启用多播功能
                 MAV_{i}_BROADCAST 参数)
                 值:多播地址范围
                 [239.0.0.0,239.255.255.255]
     [-F <val>] 设置铱模式的传输频率
                 默认值:0.0
     [-f] 将信息转发至其他 Mavlink 实例
     [-w] 等待发送,直到收到第一条信息
     [-x] 启用 FTP
     [-z] 强制始终开启硬件流量控制
     [-Z] 强制始终关闭硬件流量控制

   stop-all 停止所有实例

   停止正在运行的实例
     [-u <val>] 通过本地网络端口选择 Mavlink 实例
     [-d <val>]通过串行设备选择 Mavlink 实例
                 值:<file:dev>;

   状态 打印所有实例的状态
     [流] 打印所有启用的流

   为运行中的实例配置数据流的发送速率
     [-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 <命令> [参数...]
 命令
   状态 打印主题统计数据

   最高监测主题输出频率
     [-a] 打印所有主题,而不是只打印当前发布的主题。
                 用户
     [-1] 只运行一次,然后退出
     要匹配的 [<filter1> [<filter2>] 主题(隐含 -a