如何保存rviz中显示的机器人无人车轨迹并在matlab中处理

如何导出机器人轨迹并在matlab中处理

参考:https://blog.csdn.net/weixin_43246530/article/details/82845615

导出轨迹

将轨迹topic保存成bag文件:

robag  record -o /topic_name

1.如果轨迹是pointcloud2类型的,接下来就可以直接转换为pcd文件在matlab中处理了:

rosrun pcl_ros bag_to_pcd bagname.bag /topic_name to file_name

然后在matlab中处理pcd:

ptCloud=pcread('路径值+包名');
xy=ptCloud.Location;

之后就可以随意用plot3,scatter等等画图啦,比如

scatter(xy(:,1)),xy(:,3),);

2.如果估计是其他类型的比如我现在遇到了轨迹是nav_msgs类型的,就无法用上面语句导成pcd格式了,在这里我采用不录制bag,而且直接保存topic信息为txt文件再存储。
在运行数据包一开始,用

rostopic echo /topic_name  >name.txt

保成txt文件后,现在是一个有字符串和数字的混合文件,还不能直接用来画图,先导入到matlab中,在matlab左侧文件目录去点击txt文件,右键,导入数据,会出现一个工具箱,可以自动把文本和其对应的数字分开,这样如果分出的数字正好是想要的就可以直接导入数字列了,但我的数据里,有的数字是想要的,有的数字不想要,我只能先把他们全部都导入再筛选,数据集大的话这个过程有点长。。。。。。。
导入数据后
可以看到工作区中的相关数据,选择需要处理的就行了。

### RVIZ 数据导出方法 RVizROS 中用于可视化的强大工具,但需要注意的是 RViz 不直接支持将视图中的数据导出为文件的功能[^3]。然而,可以通过其他方式间接实现这一目标。 #### 方法一:通过 rosbag 记录和回放 为了从 RViz 导出数据,可以先利用 `rosbag` 工具记录感兴趣的话题消息。这允许之后重新播放这些话题的消息,可以选择性地处理或存储它们。 ```bash # 开始录制指定话题到 bag 文件 rosbag record -O my_data.bag /topic_name ``` 当完成数据采集后停止录制命令,随后可以在 RViz 中加载此 `.bag` 文件来查看之前捕获的内容。如果希望进一步分析或者保存某些具体的数据,则可以从这个袋子里提取所需的信息[^1]。 #### 方法二:编写自定义节点订阅保存数据 另一种更灵活的方法是开发一个简单的 ROS 节点,该节点会监听来自传感器或其他源的主题,将其接收到的数据写入磁盘上的文件中。例如: ```python import rospy from sensor_msgs.msg import PointCloud2 import numpy as np import pandas as pd def pointcloud_callback(msg): # 将 PointCloud2 消息转换成 NumPy 数组或者其他适合的形式 pc_array = ... # 这里省略具体的转换逻辑 df = pd.DataFrame(pc_array) with open('/path/to/output.csv', 'a') as f: df.to_csv(f, header=f.tell()==0) if __name__ == '__main__': rospy.init_node('point_cloud_saver') sub = rospy.Subscriber("/velodyne_points", PointCloud2, pointcloud_callback) try: rospy.spin() except KeyboardInterrupt: pass ``` 上述 Python 代码片段展示了如何创建一个新的 ROS 节点去接收点云数据将之追加至 CSV 文件中。当然也可以根据实际需求调整所使用的文件格式(比如 PCD 或者 BIN),以及修改路径以适应个人环境设置[^2]。 对于想要长期存档或是分享给他人的情况来说,这种方法提供了更大的灵活性和控制力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值