模块参考:通信

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

    流用于发送指定速率的周期消息,例如姿态信息。启动mavlink实例时,可以指定一个模式,它定义了一组可用的流以及对应的速率。

    对于正在运行的实例,流可以通过命令进行配置。

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

    实现

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

    在UDP 14556端口上启动mavlink,并以50Hz的速率发送HIGHRES_IMU消息:

    用法

    uorb

    源代码:

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

    实现

    不需要线程或工作队列,该模块启动只需要确保初始化共享全局状态。通过共享内存进行通信。该实现是异步和无锁的,即,发布者不需要等待订阅者,反之亦然。这通过在发布者和订阅者之间设置单独的缓冲器来实现。

    代码经过优化,使得内存占用空间最小以及消息交换延迟最低。

    该接口基于文件描述符:内部使用readwrite和。除了发布者,其使用orb_advert_t处理,以便它们可以从中断使用(在NuttX上)。

    消息在/msg目录中定义。 它们在构建时被转换成C/C ++代码。

    监控主题发布速率。除了,它同样是一般系统检查的重要命令:

    用法