ROS-将浮点64MultiArray转换为PointCloud2

ROS-将浮点64MultiArray转换为PointCloud2,ros,Ros,如何在ROS中将Float64MultiArray消息转换为PointCloud2消息?这是基本框架: std_msgs::Float64MultiArray map_info; tf::matrixEigenToMsg(map,map_info ); sensor_msgs::PointCloud2 cloud; cloud.header.stamp = ros::Time::now(); cloud.width = map_info.end()+1; cloud.height = 1;

如何在ROS中将
Float64MultiArray
消息转换为
PointCloud2
消息?

这是基本框架:

std_msgs::Float64MultiArray map_info;
tf::matrixEigenToMsg(map,map_info );

sensor_msgs::PointCloud2 cloud;
cloud.header.stamp = ros::Time::now();
cloud.width  = map_info.end()+1;
cloud.height = 1;
cloud.is_bigendian = false;
cloud.is_dense = false;

sensor_msgs::PointCloud2Modifier modifier(cloud);
modifier.setPointCloud2FieldsByString(1,"xy");
modifier.resize(map_info.end()+1);

sensor_msgs::PointCloud2Iterator<float> out_x(cloud, "x");
sensor_msgs::PointCloud2Iterator<float> out_y(cloud, "y");

for (double i=0;i<map_info.end();i++)
{
    *out_x = i;
    *out_y = map_info.data[i];
    ++out_x;
    ++out_y;
}
std_msgs::float64多数组映射信息;
tf::matrixeigentomg(地图,地图信息);
传感器:点云2云;
cloud.header.stamp=ros::Time::now();
cloud.width=map_info.end()+1;
云高=1;
cloud.is_bigendian=false;
cloud.is_density=false;
sensor_msgs::PointCloud2修改器修改器(云);
修饰符.setPointCloud2FieldsByString(1,“xy”);
modifier.resize(map_info.end()+1);
传感器_msgs::点云2计数器输出_x(云,“x”);
传感器:点云2计数器输出(云,“y”);

对于(double i=0;iThanks!您能通过提供转换的完整代码来编辑您的答案吗?以便我将其标记为已接受。在哪里可以看到Float64多数组输入消息?我看到您参考了map_infoI,我指的是提供完整的转换代码,例如接受Float64多数组输入消息的回调,然后执行此操作逻辑,然后发布PointCloud2输出。我可以问一下为什么使用这一行吗?tf::MatrixeIgentomg(map,map_info);对象映射没有定义,也没有在管道中使用。大多数情况下,人们从读取的数据中获得矩阵。如果有内置数组,则不需要它。