簡體   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