鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    【分享】microROS 和 rosserial 对比

    已定时 已固定 已锁定 已移动
    MicroROS
    microros rosserial ros 嵌入式 rtos
    1
    1
    793
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬
      最后由 小鱼 编辑

      大家好,我是努力Work 的小鱼,最近在探索 ROS 2 在 IOT 上的可能行,分享几篇来自 micro-ROS 相关的文章。

      microROS 和 rosserial 对比

      在ROS中,有一个包在通过串行通信发送ROS消息时非常突出。这个包就是rosserial。

      rosserial允许基于微控制器的平台与普通计算机通信,代表它们与ROS网络通信。
      rosserial提供了设置这种通信的协议,采用了客户端-服务器架构方法。
      rosserial客户端将数据序列化到串行链接中,然后串行化的数据被rosserial服务器接收,并转发到常规的ROS网络。
      从ROS网络向微控制器转发数据也是类似的过程。
      这个rosserial服务器可以用C++或Python编写;而rosserial客户端有一系列支持的微处理器可用。

      这个解决方案通常用于将硬件组件集成到使用ROS的机器人中。
      在这些情况下,rosserial充当了硬件通信协议与ROS网络之间的桥梁。

      Micro XRCE-DDS

      Micro XRCE-DDS的一个功能是在微控制器和支持DDS/ROS 2的计算机之间使用串行连接。
      这种连接得益于使用OMG的DDS-XRCE标准和一个串行传输层。
      这个解决方案采用了与rosserial相同的客户端-服务器架构,这是在微控制器通信方面最合适的方法之一。

      负责实现这种架构的库是Client和Agent。
      客户端在代理中生成实体,这些实体将代表客户端在DDS网络上进行操作。

      正如你所见,这种用法类似于rosserial所使用的用法,但它们在实现上有微妙的差别,我们将在本文中详细说明。

      Micro XRCE-DDS vs rosserial

      现在我们对rosserial和Micro XRCE-DDS有了基本的了解,接下来我们将对它们进行比较。

      Micro XRCE-DDS的串行传输

      Micro XRCE-DDS在使用串行传输时(它也允许使用其他传输方式,如UDP、TCP等),采用了预定义格式的串行协议。
      该格式在以下帧解析中进行了说明:

      0        8        16       24                40                 X                 X+16
      +--------+--------+--------+--------+--------+--------//--------+--------+--------+
      | FLAG   |  SADD  |  RADD  |       LEN       |     PAYLOAD      |       CRC       |
      +--------+--------+--------+--------+--------+--------//--------|--------+--------+
      
      • FLAG: 同步标志 (0xFF)。
      • SADD: 源地址。
      • RADD: 远程地址。
      • LEN: 未进行帧处理的有效载荷长度(小尾端的2字节)。
      • PAYLOAD: 带有XRCE头的序列化消息。
      • CRC: 经过填充后的消息CRC。

      这是在链路层上进行串行化的消息。
      这个消息通过发布和订阅两种不同的操作,从微控制器到计算机以及反向传输。

      Micro XRCE-DDS vs rosserial

      rosserial

      相比之下,这是rosserial的帧结构:

      0       8       16              32              40      56               X             X+16
      +-------+-------+-------+-------+-------+-------+-------+-------//-------+------+------+
      | FLAG  | PROT  |      LEN      |      LCRC     | TOPID |     PAYLOAD    |     MCRC    |
      +-------+-------+-------+-------+-------+-------+-------+-------//-------|------+------+
      
      • FLAG: 同步标志 (0xFF).
      • PROT: 协议版本.
      • LEN: 载荷长度 (2 bytes,小端序).
      • LCRC: 长度 CRC.
      • TOPID: 主题 ID.
      • PAYLOAD: 序列化消息.
      • MCRC: 消息 CRC.

      与Micro XRCE-DDS串行帧进行比较,可以看到它使用了完全不同的帧结构。

      比较

      以下表格总结了两种实现的关键方面:

      Micro XRCE-DDS 串行 rosserial
      API C/C++ C++
      完整性 HDLC 帧格式 无
      安全性 CRC-16-CCITT 模糊的 CRC (% 256)
      内存拷贝 uxr_stream ---> serial_buffer ---> hardware_buffer serialization_buffer ---> hardware_buffer
      内存使用 uxr_stream + (2 * aux-buffer[42 B]) 2 * serialization_buffer
      消息大小限制 uxr_stream 大小 hardware_buffer 大小
      可靠性 是 否
      路由 是 否
      开销 7 B + 12 B* 9 B
      架构 客户端-服务器 客户端-服务器

      * 开销分为帧格式 7 B 和 DDS-XRCE 协议增加的 12 B.

      正如表中所述,Micro XRCE-DDS 串行增加了内存操作次数,但极大地减少了串行通信所需的内存,因为硬件缓冲区不需要与序列化缓冲区大小相同。
      这种缓冲区的使用减少了内存占用。
      此外,Micro XRCE-DDS 串行提供了路由和可靠性功能,而rosserial则不提供。
      DDS-XRCE 协议在某些部分采用了标准,如使用标准 CRC 或标准帧格式。

      小鱼补充:HDLC

      高级数据链路控制(High-Level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的协议的数据链路层协议,它是由国际标准化组织制订的。

      国际电信联盟已把HDLC规程引入到X.25协议栈。HDLC是修改自IBM的SDLC,后者作为数据链路层协议用于IBM自己开发的系统网络架构(SNA)。现在HDLC作为同步点对点协议(PPP)的基础已经被用于很多服务中来接入广域网,通常最常见的是因特网。

      HDLC的帧格式规定以01111110(十六进制7E)的位组合作为它的起始和结束的标志,这种位组合也被称为帧界定符。

      在HDLC的帧格式中,在起始标志后的是地址字段和控制字段,然后是长度在0到5000八位位组(octet)的数据字段和帧检验序列字段(FCS),最后是作为结束标志的帧界定符。一点需要指出的是,当暂时没有信息传送时,帧界定符被连续地发送直到下一次数据发送为止,产生如下图的连续比特流:

      01111110011111100111111001111110
       ______  ______  ______  ______ 
      _      __      __      __      _
      

      这种方法被用于调制解调器,通过锁相环(phase-locked loop)来训练时钟同步。

      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS