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



我有一个来自点云的带有x y z坐标的pcd文件。

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

为什么需要直接从stdout存储它?有几种不同的方法可能更容易做到这一点。

您可以简单地发布(x,y,z)数据,并使用rosbag记录进行记录,然后通过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

最新更新