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
(完美实现轨迹图)