将终端输出存储在文件ros melodic cpp中

问题描述 投票:0回答:1

我有一个 pcd 文件,其中包含点云的 x y z 坐标。

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

c++ ros point-cloud-library point-clouds
1个回答
0
投票

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

您可以简单地发布

(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_DIR
来控制其存储位置。请注意,这对于
print()
语句

可能无法 100% 正确工作

最后,如果您出于某种原因确实需要使用 stdout,您始终可以从启动节点的方式重定向输出。例如:

roslaunch your_package your_launch.launch >> some_file.txt

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.