【问题标题】:How can I publish pre-serialized data to ROS?如何将预序列化的数据发布到 ROS?
【发布时间】:2019-02-26 16:45:31
【问题描述】:

我面临的情况是,我有多个机器人,大多数都运行完整的 ROS 堆栈(包含 Master),我想通过另一个消息传递框架选择性地将一些主题路由到其他机器人(其中一些不运行 ROS )。

执行此操作的简单方法是,设置一个订阅相关 ROS 主题的节点并通过网络发送该主题,然后另一个节点发布它(如果是它的 ROS)。太好了,但是不得不做这么多的序列化似乎很奇怪。现在消息从它的消息类型到 ROS 序列化,返回到消息类型,然后到不同的序列化格式(当前为 Pickle),通过网络,然后返回到消息类型,然后返回到 ROS 序列化,然后返回消息类型。

所以问题是,我可以简化一下吗?如何对 ROS 序列化数据进行操作(即订阅时无需 rospy 为我自动反序列化)? http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers 建议我可以将连接信息作为字符串的 dict 访问,这可能是解决方案的一半,但是另一端如何在不先反序列化然后立即重新序列化的情况下获取连接信息并重新发布?

编辑:我刚刚找到 https://gist.github.com/wkentaro/2cd56593107c158e2e02 ,这似乎解决了一半。它使用 AnyMsg 来避免在 ROS 订阅者端反序列化,但是当它重新发布时,它仍然反序列化并立即重新序列化消息。我问的是不可能的吗?

【问题讨论】:

    标签: ros rospy


    【解决方案1】:

    只是为了结束这个循环,事实证明你可以发布AnyMsgs,只是链接的示例选择不发布。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2014-12-03
      • 2018-05-04
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多