如何将预序列化的数据发布到ROS?

时间:2019-02-26 16:45:32

标签: ros rospy

我正面临着这样一种情况:我有多个机器人,大多数机器人都运行完整的ROS堆栈(与Master一起完成),我想选择性地将一些主题通过另一个消息传递框架路由到其他机器人(其中一些机器人没有运行ROS) )。

执行此操作的幼稚方法是,设置一个节点,该节点订阅所涉及的ROS主题并通过网络发送该ROS主题,然后再由另一个节点发布(如果是其ROS)。很好,但是必须进行这么多序列化似乎很奇怪。现在,消息从网络的消息类型到ROS序列化,再回到消息类型,再到不同的序列化格式(当前为Pickle),再到消息类型,再回到消息类型,再回到ROS序列化,然后回到邮件类型。

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

编辑:我刚刚发现https://gist.github.com/wkentaro/2cd56593107c158e2e02,这似乎解决了一半。它使用AnyMsg避免在ROS订户端进行反序列化,但是随后在重新发布时仍会反序列化并立即重新序列化消息。我要问的是不可能的吗?

1 个答案:

答案 0 :(得分:0)

只是为了结束循环,事实证明您可以发布AnyMsg,只是链接的示例选择了不这样做。