2

我有一个来自点云的 xyz 坐标的 pcd 文件。

现在我有另一个 cpp 文件,我在终端上打印 xyz 坐标。(这只是坐标而不是点云)我想将其存储在另一个文件中,以便与 pcd 文件进行比较。我该怎么做?

4

1 回答 1

1

为什么需要直接从标准输出存储?有几种不同的方法可以解决这个问题,它们可能更容易。

您可以简单地发布(x,y,z)数据并使用rosbag record 记录,然后通过rosbag_to_csv导出。

您也可以直接在代码中将值写入文件,而不是将其打印出来。由于您没有指定 Python 或 C++,这里是 Python 中的一个简单示例

f = open('your_output_file.csv', 'a')
while not rospy.is_shutdown():
    #Whatever ops to get data
    x,y,z = get_the_data()
    output_str = str(x)+','+str(y)+','+str(z)
    f.write(output_str)

ROS 还会自动记录rospy.log*()函数的输出。您可以通过导出环境变量来控制它的存储位置ROS_LOG_DIRprint()请注意,这对于语句可能无法 100% 正确工作

最后,如果你真的因为某种原因真的需要使用标准输出,你可以随时重定向输出,但是你正在启动节点。前任:roslaunch your_package your_launch.launch >> some_file.txt

于 2021-12-03T21:00:27.517 回答