在 C++ 中通过 tcp 发送 pcl 点云

send pcl point cloud over tcp in c++

我是 c++ 中数据序列化的新手,我搜索了示例,但并没有真正成功。 我的目标是能够在 c++ 中通过 tcp 发送和接收 pcl 点云。我熟悉ROS,但现在我不能在服务器上使用它。我必须通过以太网将点云发送到客户端机器,在那里我可以自由使用 ROS。

我尝试 Python 将 ZeroMQ 配置为在 numpy 数组中发送点云。该消息包含带有数组形状的 json 标记,然后另一条消息包含该数组。 如果我是正确的,在 C++ 中我应该序列化我的 pcl::PointCloud<pcl::PointXYZ> cloud 对象以便能够以某种方式发送它。在 c++ 的情况下,我找不到将数组形状作为 markdown 发送的可能性。 是否可以在 c++ 中发送与 zmq 类似的 cloud 对象?或者有没有更方便的方法来解决这个问题?

更新: 在 cpp 中,我从相机读取点云到 pcl::PointCloud<pcl::PointXYZ> 对象中。我的目标是通过 tcp 以某种方式 发送此数据,并能够最好在 cpp 中重建为类似的点云对象。

C++ 不提供序列化和反序列化数据的标准方法。

对于简单的情况,您可以自己实现。

对于更复杂的情况,您可以使用库,例如​​ protocol buffers or Boost serialization

您还可以“在线”使用基于文本的格式,例如 XML 或 JSON。