使用evo将slam中的rosbag的轨迹输出为tum格式的txt文件

1.首先下载好evo工具

1.1首先确定好要python版本,这里安装用python2版本即可,指令:

python --version

 1.2如果不是python2版本,切换为python2版本,(如果用的是python3版本,会有很多ros指令无法使用,笔者之前切换到python3无法使用ctrl+alt+t无法打开终端,切换回python2就好了),(有多个python版本并且设置了优先条件才需要这一步)切换指令:

sudo update-alternatives --config python

 1.3注意python与pip的关系,python2就对应pip,python就对应pip3,我们这里下载的是evo1.1.2,用pip就可以

1.4下载evo(直接在终端运行,HOME中生成evo文件夹)


git clone https://github.com/MichaelGrupp/evo.git

 进入evo

cd evo

检查


git checkout v1.12.0

 下载


sudo pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple --editable . --upgrade --no-binary evo

1.5检查evo安装的软件包,(看一下有没有安装成功)


    pip list//列出pip安装的软件包

 

 如图所示(按照字母顺序排序)

1.6卸载的指令


    pip uninstall evo//卸载

 2.测试一下

进入home里的evo文件夹,然后

cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xyz//测试指令

 (ok,这样代表evo指令没有问题,接下来进入实际测试)

3.实际测试(使用rosbag来测试)

笔者这里是用dlo算法跑数据包,然后记录其中的/robot/dlo/odom_node/odom话题

3.1将算法运行起来(每个人可能用的是不同算法,这里我举例dlo算法)(改了topic所以肯定不是源dlo算法,1_dlo.launch)


beming@beming-G15:~$ cd dlo_wordspace/
beming@beming-G15:~/dlo_wordspace$ source ./devel/setup.bash
beming@beming-G15:~/dlo_wordspace$ roslaunch direct_lidar_odometry 1_.launch 

3.2将数据包运行起来(每个人的数据包也是不一样的,这里举例而已)

rosbag play kys-v_0000000080_0.bag 

3.3这一步我们应该查看一下发布的话题,

rostopic list

 其中的/robot/dlo/odom_node/odom,其实就是里程计,关键就是要知道以odom结尾的话题

3.4录制话题,将算法,数据包运行起来后,记录其中的odom结尾的话题

指令:(enter开始,按ctrl+c录制结束)

rosbag record /robot/dlo/odom_node/odom
(record后面空格后直接接话题,也可以是多个话题)

 (注意在哪个空间录制的,这个包就会存在哪个空间,并且以时间命名包的名字)

(如图蓝色的所示)

我们再查看一下录制的包的话题内容,防止出错,指令是:(XX代表bag的名称)

rosbag info XXXXXX

 这个话题和我们需要录制的是一样的,没有错误

3.5接下来我们需要将录制的包(以odom为topic结尾的)转化为tum格式,

指令:evo_traj bag XXXXX1.bag  XXXXX2  --save_as_tum(XXXX1为包的名字,XXXX2为topic的名字)

 evo_traj bag 2023-07-09-17-01-47.bag /robot/dlo/odom_node/odom --save_as_tum

出现下面的内容就是成功了 

然后你就可以看见一个以tum结尾的文件(在之前的那个bag的空间里) 

 然后就是改一下后缀,将tum的后缀改为txt

 3.6运行指令,显示轨迹图

evo_traj tum odom.txt -p

 (完美实现轨迹图)

### LIO-SAM 主题内容及保存方式 LIO-SAM 是一种基于平滑与映射的紧密耦合激光雷达惯性里程计算法,其 ROS 实现通过多个主题发布数据。以下是关于 `lio_sam` 的主题内容及其保存方法的具体说明。 #### 1. **LIO-SAM 发布的主题** LIO-SAM 提供了一系列用于定位和建图的关键主题,这些主题可以被其他节点订阅并进一步处理。常见的主题括但不限于: - `/lio_sam/mapping/points`: 这是一个 PointCloud2 类型的话题,含了经过 SLAM 处理后的全局点云地图[^3]。 - `/lio_sam/imu/odometry`: 这是一个 Odometry 类型的话题,提供了 IMU 和 LiDAR 数据融合后的位姿估计结果。 - `/lio_sam/imu/path`: Path 类型话题,记录了机器人轨迹的历史路径信息[^5]。 - `/lio_sam/gnss/corrected_imu_odom`: 如果 GNSS 或 RTK 数据参与校正,则该主题会提供更精确的姿态估计。 #### 2. **如何保存 LIO-SAM 的主题数据** 为了长期存储或后续分析 LIO-SAM 输出的数据,可以通过以下几种方式进行保存: ##### 方法一:使用 rosbag 记录 Rosbag 是 ROS 中最常用的工具之一,能够方便地录制和回放指定主题上的消息流。例如,要录制上述几个重要主题中的数据,可执行如下命令: ```bash rosbag record /lio_sam/mapping/points /lio_sam/imu/odometry /lio_sam/imu/path ``` 如果需要播放已录制好的 bag 文件,并仅选择特定主题进行重播,可以按照以下格式操作[^2]: ```bash rosbag play <your_bag_file.bag> --topics /lio_sam/mapping/points /lio_sam/imu/odometry ``` ##### 方法二:导出参数至 YAML 文件 对于某些情况下可能还需要保存当前运行环境下的配置参数以便于下次快速加载相同的设置时,可通过 rosparam 命令实现这一点[^4]: ```bash rosparam dump config.yaml ``` 这一步骤将会把所有活跃在 Parameter Server 上面的键值对存入名为 `config.yaml` 的文件当中。 ##### 方法三:自定义脚本保存关键数据 除了利用标准工具外,还可以编写 Python/C++ 程序来捕获感兴趣的信息并将它们储到外部介质上。比如,在给定的例子中展示了怎样创建一个简单的监听程序去接收来自不同传感器源(如 GPS, INS)的时间戳化位置更新事件,并把这些条目追加进纯文本日志里: ```python import rospy from nav_msgs.msg import Path from sensor_msgs.msg import NavSatFix def callback_path(data): with open('trace_rtk_path.txt', 'a') as file_handle: pose = data.poses[-1].pose.position time = data.header.stamp.to_sec() line = f"{time} {pose.x} {pose.y}\n" file_handle.write(line) if __name__ == '__main__': rospy.init_node('data_logger') sub_path = rospy.Subscriber('/lio_sam/imu/path', Path, callback_path) rospy.spin() ``` 以上代码片段展示了一个基本框架用来持续监控 `/lio_sam/imu/path` 并将其换为易于解析的形式持久下来。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值