uORB和MAVLink通讯例程

Posted XXX_UUU_XXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uORB和MAVLink通讯例程相关的知识,希望对你有一定的参考价值。

uORB

uORB 是一种异步 publish()/subscribe() 的消息传递 API,用于进程或者线程间通信(IPC)。

添加新的Topic(主题)

在msg/目录下创建一个新的.msg文件,并将文件名添加到msg/CMakeLists.txt中。

若在代码中要使用该主题,要在代码文件中添加头文件:

#include <uORB/topics/topic_name.h>

将一条消息定义用于多个独立主题,在.msg文件中添加:

# TOPICS mission offboard_mission onboard_mission

在代码中,将他们作为主题id:ORB_ID(offboard_mission)

发布

发布主题可以在系统中的任何位置完成,包括中断上下文。但是,仅在中断上下文之外才能为主题做广播。 一个主题必须与以后发布的过程相同。

主题列表和监听(Listener)

在QGroundControl的MAVLink Console中

要列出所有主题,列出文件句柄

ls /obj

要监听五条信息中的一个主题内容,运行监听器

listener sensor_accel 5

实时显示每个主题的发布频率

uorb top

uORB 提供了一种机制,可以通过orb_advertise_multi. 它将向发布者返回一个实例索引。然后订阅者必须选择订阅哪个实例使用orb_subscribe_multiorb_subscribe订阅第一个实例)。例如,如果系统具有多个相同类型的传感器,则拥有多个实例很有用。

API

https://github.com/PX4/PX4-Autopilot/blob/master/platforms/common/uORB/uORBManager.hpp

MAVLink

自定义uORB的ca_trajectory消息

msg/ca_trajectory.msg

自定义MAVLink的ca_trajectory消息

mavlink/include/mavlink/v2.0/custom_messages/mavlink_msg_ca_trajectory.h

以上是关于uORB和MAVLink通讯例程的主要内容,如果未能解决你的问题,请参考以下文章

QGC地面站Mavlink生成和MockLink模拟收发通讯

QGC地面站Mavlink生成和MockLink模拟收发通讯

Mavlink - 无人机通讯协议

PX4模块设计之三:自定义uORB消息

异常和TCP通讯

[pixhawk笔记]5-uORB消息传递