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_multi(orb_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模拟收发通讯