繁体   English   中英

在裸机硬件上处理ROS / MAVROS消息

[英]Handling of ROS / MAVROS messages on bare metal hardware

我有一个项目,涉及使用预定义的MAVLink和ROS / MAVROS消息的小子集与代理进行简单的串行通信。

我在没有基础操作系统的裸机嵌入式ARM Cortex F4硬件上运行(除了我自己的支持串行通讯和其他硬件I / O的框架以外)。

关于此任务的MAVLink方面,该过程似乎相对简单。 消息ID是预定义的,并且MAVLink头文件(从XML生成)包含打包和序列化功能。 我已经成功实现并测试了这方面。

但是,我正在努力实现与ROS和MAVROS相同的功能。

我注意到,MAVROS分发包含一些头文件,这些头文件定义了MAVROS消息以及从MAVLink消息到/从MAVLink消息的转换。

以下要点概述了我要理解的过程。

  • 收到一条消息作为MAVLink数据包,如何确定它实际上是ROS / MAVROS消息? 我假设MAVLink消息ID与标准MAVLink消息不同,但是我找不到与此有关的任何信息。
  • 一旦知道它是ROS / MAVROS消息,就可以使用MAVROS分发中定义的MAVLink到MAVROS转换代码将其转换(如上所述)。
  • 既然有了MAVROS消息,如何确定实际的消息类型并解析并提取其有效载荷? 我认为这与第一个要点有关(标识ROS / MAVROS消息)。
  • 类似地,我该如何逆转此过程,以从特定ROS消息类型所需的有效负载中构建MAVROS消息? 如上所述,其随后对MAVLink的转换和序列化非常简单。

最终,我要做的就是序列化和反序列化ROS / MAVROS消息的一小部分,而无需占用大量框架开销。 尽管允许我使用MAVLink进行此操作的信息是容易获得且易于实现的,但是我找不到与ROS / MAVROS消息实现相同功能所需的等效信息。

任何帮助或澄清将非常欢迎!

非常感谢!

我曾经和pixhawk合作过。 我会尽力为您提供帮助。 据我所知,有关mavros的文档包括:

基本上,mavros包含两个部分:

  • libmavcon
  • 马夫罗斯

libmovcon是mavlink收发器,可从无线电/以太网/ wifi网络发送/接收消息,并将已编码(仍为MAVLINK格式)的消息发布/订阅到ROS消息分发系统。 mavros是发布/订阅消息的ENCODED版本并有选择地将其解码并转换为ROS消息的粘合剂。 (例如,将mavlink全局速度转换为ROS geometry_msgs / TwistStamped)

回到您的问题:

  1. 在libmavcon中,您定义将发送/接收mavlink消息的硬件资源(串行端口,udp端口等)。
  2. 是的,mavros将在mavlink消息定义和ROS消息定义之间进行转换。
  3. mavros会将一个表编译为mavlink消息ID及其绑定的ROS消息。 插件完成了。 您可以创建自己的插件来覆盖自定义消息。
  4. 另存为3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM