在 ROS 之外使用 ROS 消息 类

Using ROS message classes outside of ROS

我有一个用 Python 编写的 ROS 节点,它捕获消息并将它们写入磁盘(例如使用 pickle)。我想稍后在 ROS 之外的另一个 Python 脚本中使用这些文件,但我需要导入消息 类.

这可能吗?

谢谢!

不幸的是,我认为不可能只导入任何 ROS 依赖项之外的消息文件。例如,如果您查看其中一个生成的消息 class 文件:

---/your_catkin_ws/devel/lib/python2.7/dist-packages/your_package/msg/_Message.py

您会发现它至少 取决于 genpy 和您的消息中包含的其他消息类型。基本消息相同(在 /opt/ros/indigo/lib/python2.7/dist-packages/std_msgs/msg)。

虽然您可以尝试复制最少量的依赖项直到它最终起作用(!),但它有点不优雅并且可能会成为一个脆弱的解决方案。

我认为最好的解决方案是将您的消息转换为通用的非 ROS 类型,然后将其存储在您的 pickle 中(基本上就是您已经在做的事情)。