本文将从在虚拟机中安装Ubuntu18.04开始,逐步记录视觉SLAM的学习过程。
现在硬盘的适当位置新建一个文件夹Ubuntu,之后会将Ubuntu 18.04安装在这个文件夹下;
打开VMware Workstation的“主页”,“创建新的虚拟机”,选择“自定义”;硬件兼容性就默认的选项。
点“稍后安装操作系统”;
上面选择“Linux”,下面选择“Ubuntu 64位”
虚拟机名字可以随便取一个,位置选择刚刚新建的“Ubuntu”文件夹。
分配处理机数量,根据CPU的核心数适当选择。
根据物理内存大小,适当分配虚拟机内存,这里分配10GB(注意要换算成MB)
选择“使用网络地址转换NAT”、“LSI Logic”、“SCSI”、“创建新虚拟磁盘”
分配容量决定了Ubuntu中磁盘的大小,根据主机磁盘容量适当分配大小,这里分配100GB(以这里为准,图片仅做参考)并且勾选立即分配。
“指定磁盘文件”默认就行。
“自定义硬件”处,点击“自定义硬件”,“处理器”勾选两个虚拟化,“新CD/DVD”点“使用ISO映像文件”并选择之前下载的Ubuntu 18.04镜像(.iso格式)。点击“关闭”、“完成”。等待创建磁盘完成。
之后在Ubuntu界面,开启虚拟机。
欢迎界面,翻到最下面选择简体中文,点击“安装Ubuntu”
“继续”,选择“正常安装”和“安装第三方软件”,不下载更新。“继续”
“清除整个磁盘并安装Ubuntu”,“现在安装”,“继续”,“继续”,输入姓名、计算机名等等。
之后就等待安装完成。如果语言包下载太久或者软件包下载太久,可以点击文字左边的黑色小箭头,展开详细情况再点Skip跳过。
安装完成后点击现在重启,如果出现"Please remove the installation medium",则点击VMware上方工具栏的“虚拟机”、“电源”、“重新启动客户机”。
进入到系统后,在虚拟机左边“库”中,右键Ubuntu,选择“VMware Tools"安装。之后在Ubuntu中进入挂载的VMware Tools,将里面的文件复制到一个合适的地方,解压.tar.gz格式文件,进入解压后的文件夹,找到.pl格式文件所在的文件夹,右键,在此处打开终端,输入以下命令安装VMware Tools,按照提示安装(注意第一次输入要输入"yes")
sudo ./vmware-install.pl
安装完成后,Ubuntu界面应该就是全屏的了,也支持主机与虚拟机之间文件的复制粘贴。
点击右上角按钮,重启。
在Ubuntu 18中配置微批恩。
打开“软件和更新”,勾选“源代码”,服务器选择“主服务器”,设置如下:
点击“关闭”、“重新载入”,等待更新缓存
打开“软件更新器”,因为是安装系统后第一次更新,点击“立即安装”。
更新完成后再次重启。
依次在控制台执行以下命令(建议挂微批恩)
sudo apt update
sudo apt install build-essential
sudo apt install git
sudo apt-get install cmake
依次在控制台执行以下命令
sudo apt-get install libglew-dev
sudo apt-get install libpython2.7-dev
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
sudo apt-get install libdc1394-22-dev libraw1394-dev
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
sudo make install
去官网下载OpenCV 3.2.0的源代码(建议挂微批恩):https://opencv.org/releases/page/5
下载完成后解压到合适目录。
依次在控制台执行以下命令
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
在OpenCV 3.2.0的目录下,依次在控制台执行以下命令(挂微批恩)
mkdir build
cd build
cmake -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j4
sudo make install
然后执行以下命令,在打开的文件中添加"/usr/local/lib"
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行以下命令
sudo gedit ~/.profile
在打开的文件末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
依次在控制台执行以下命令(建议挂微批恩)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
之后执行
sudo gedit /etc/hosts
在打开的文件末尾添加"199.232.68.133 raw.githubusercontent.com"
关掉文件后,再执行以下命令,若出现网络连接的错误则开微批恩多运行几次。
sudo rosdep init
rosdep update
source /opt/ros/melodic/setup.bash
测试:打开3个终端,分别执行以下指令:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
若可以出现一只乌龟的界面而且可以用方向键操控,则安装成功!
之后创建并初始化ROS工作空间:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
首先从网址https://gitlab.com/libeigen/eigen/-/archive/3.3.4/eigen-3.3.4.tar.gz
下载Eigen3.3.4的源代码,.tar.gz格式的压缩包暂时不要解压,放在适当的目录下,在该目录打开终端,执行以下命令:
sudo tar -xzvf eigen-3.3.4.tar.gz -C /usr/local/include
sudo mv /usr/local/include/eigen-3.3.4 /usr/local/include/eigen3
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
sudo cp -r /usr/local/include/eigen3/Eigen /usr/include
sudo cp -r /usr/local/include/eigen3 /usr/include
因为需要对源代码做一定修改,将ORB-SLAM3修改后的源代码存放在百度网盘上了:
链接:htt【防封】ps://pa【防封】n.ba【防封】idu.com/s/1Kan【防封】DhZ6UHzlo【防封】1C_3bKvbBQ
密码:6666
解压密码:RayShark
下载后,解压在~/catkin_ws/src目录下,在 ~/catkin_ws/src/ORB_SLAM3目录下打开终端,执行以下命令:
chmod +x build.sh
./build.sh
如果不出意外,应该不会出现编译错误,会出现很多warning,不用管。
首先需要下载EuRoC数据集。
可以从官网下载:EuRoC数据集官网
EuRoC数据集包含11个序列(最后的Calibration Dataset不用管),MH场景有5个,ViconRoom场景有6个。每个场景都提供了ROS bag格式(.bag后缀,对应下图左边红框)和ASL格式(是一个文件夹,对应下图右边红框)。
如果下载很慢,可以开微批恩复制链接到迅雷中下载。
我也将EuRoC数据集全部序列传到百度网盘上了
链接:htt【防封】ps://p【防封】an.ba【防封】idu.co【防封】m/s/1q7R【防封】UaAtX7_U【防封】hMIV0FB【防封】jM9A
提取码:6666
注意:测试ORB-SLAM3用到的是ASL格式的EuRoC数据集,即以MH01为例,用到的是MH_01_easy文件夹,而不是MH_01_easy.bag。
在主目录下新建Datasets文件夹,再在其中新建EuRoC文件夹,将EuRoC数据集各序列放在该文件夹下。以下测试都以MH01序列为例!
测试单目模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ~/Datasets/EuRoC/MH_01_easy ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt MH01-Mono
测试双目模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml ~/Datasets/EuRoC/MH_01_easy ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt MH01-Stereo
测试单目+IMU模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ~/Datasets/EuRoC/MH_01_easy ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt MH01-MonoInertial
测试双目+IMU模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Stereo-Inertial/stereo_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/EuRoC.yaml ~/Datasets/EuRoC/MH_01_easy ./Examples/Stereo-Inertial/EuRoC_TimeStamps/MH01.txt MH01-StereoInertial
运行界面:
不管哪种模式,运行完成之后,终端都会给出输出结果:
Saving trajectory to f_MH01-StereoInertial.txt ...
End of saving trajectory to f_MH01-StereoInertial.txt ...
Saving keyframe trajectory to kf_MH01-StereoInertial.txt ...
The Time is:690 s
比如这里的“f_MH01-StereoInertial.txt”表示相机轨迹文件,“kf_MH01-StereoInertial.txt”表示关键帧轨迹文件,这两个文件都在~/catkin_ws/src/ORB_SLAM3目录下。"690 s"是运行时间。
首先需要下载KITTI数据集。
它包含gray类型(第一个箭头:灰度影像、22GB)、color类型(第二个箭头:彩色影像、65GB)。我用到的是color类型。每一类型都有00~21共22个序列。
此外,还要下载地面真值数据(第五个箭头:4MB)
点击对应的链接后,输入邮箱,等一会儿就会收到一个下载链接,推荐开微批恩到迅雷中下载。
我已将KITTI数据集的gray类型数据、color类型数据、地面真值数据上传到我的百度网盘上。
链接:htt【防封】ps://pa【防封】n.ba【防封】idu.c【防封】om/s/1Z【防封】xWqd【防封】qDVD【防封】aHZ-Npkxlj【防封】OoQ
提取码:6666
其中gray类型数据就是VisualOdometry文件夹下的odometry_dataset_grayscale,color类型数据就是VisualOdometry文件夹下的data_odometry_color,地面真值数据就是VisualOdometry文件夹下的data_odometry_poses。
注意:如果是使用color类型数据,原序列中的文件夹名都是image_2和image_3,需要分别重命名为image_0和image_1。即将image_2重命名为image_0,将image_3重命名为image_1。否则会运行出错!
以下测试都以运行color类型数据的00序列为例。
将KITTI数据集整个文件夹放在~/Datasets目录下,即保证: ~/Datasets/KITTI/VisualOdometry/data_odometry_color/sequences/00/image_0目录是存在的。
测试单目模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Monocular/mono_kitti ./Vocabulary/ORBvoc.txt ./Examples/Monocular/KITTI00-02.yaml ~/Datasets/KITTI/VisualOdometry/data_odometry_color/sequences/00
测试双目模式
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/Stereo/stereo_kitti ./Vocabulary/ORBvoc.txt ./Examples/Stereo/KITTI00-02.yaml ~/Datasets/KITTI/VisualOdometry/data_odometry_color/sequences/00
运行界面:
不管哪种模式,运行完成之后,终端都会给出输出结果:
Saving camera trajectory to CameraTrajectory.txt ...
The Time is:1381 s
同样地输出了"CameraTrajectory.txt"相机轨迹文件和运行时间。CameraTrajectory.txt在~/catkin_ws/src/ORB_SLAM3目录下。
首先需要下载TUM RGB-D数据集。
可以从官网下载:TUM RGB-D数据集官网
这里使用Testing and Debugging类别的fr1/xyz序列。
确保下载到的rgbd_dataset_freiburg1_xyz文件夹放在~/Datasets/TUM/RGB-D/Testing and Debugging目录下!
测试:
cd ~/catkin_ws/src/ORB_SLAM3
./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM1.yaml ~/Datasets/TUM/RGB-D/"Testing and Debugging"/rgbd_dataset_freiburg1_xyz ./Examples/RGB-D/associations/fr1_xyz.txt
median tracking time: 0.0272287
mean tracking time: 0.0287242
Saving camera trajectory to CameraTrajectory.txt ...
Saving keyframe trajectory to KeyFrameTrajectory.txt ...
输出了中值跟踪时间、均值跟踪时间、相机轨迹文件、关键帧轨迹文件。
在github中下载ceres-solver 1.14.0源代码
下载完后解压到合适目录。在ceres-solver-1.14.0目录下,打开终端,执行以下命令:
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
mkdir build
cd build
cmake ..
make -j4
sudo make install
因为需要对源代码做一定修改,将VINS-Fusion修改后的源代码存放在百度网盘上了:
链接:htt【防封】ps://p【防封】an.ba【防封】idu.co【防封】m/s/1gMr【防封】XmATvnt8zM【防封】_on3le【防封】ALg
提取码:6666
解压密码:RayShark
将解压后的VINS-Fusion文件夹放在~/catkin_ws/src目录下。
在主目录下新建VINS_Output文件夹,用来存放VINS-Fusion的输出结果。
依次打开VINS-Fusion文件夹下的以下文件,搜索"rayshark"全部替换成自己的用户名。
global_fusion/src/globalOptNode.cpp
vins_estimator/src/utility/visualization.cpp
loop_fusion/src/pose_graph.cpp
config/euroc/euroc_stereo_imu_config.yaml
config/euroc/euroc_mono_imu_config.yaml
config/kitti_raw/kitti_09_30_config.yaml
config/kitti_raw/kitti_10_03_config.yaml
config/kitti_odom/kitti_config04-12.yaml
config/kitti_odom/kitti_config13-21.yaml
config/kitti_odom/kitti_config00-02.yaml
config/kitti_odom/kitti_config03.yaml
打开终端,执行以下命令:
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
VINS-Fusion用到EuRoC数据集的ROS bag格式(.bag后缀)数据。
以下测试都以MH01序列为例!
测试单目+IMU模式:
打开4个终端,分别执行以下命令
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch
source ~/catkin_ws/devel/setup.bash
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
source ~/catkin_ws/devel/setup.bash
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
source ~/catkin_ws/devel/setup.bash
rosbag play ~/Datasets/EuRoC/MH_01_easy.bag
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch
source ~/catkin_ws/devel/setup.bash
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
source ~/catkin_ws/devel/setup.bash
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml
source ~/catkin_ws/devel/setup.bash
rosbag play ~/Datasets/EuRoC/MH_01_easy.bag
测试双目+IMU模式:
打开4个终端,分别执行以下命令
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch
source ~/catkin_ws/devel/setup.bash
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
source ~/catkin_ws/devel/setup.bash
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
source ~/catkin_ws/devel/setup.bash
rosbag play ~/Datasets/EuRoC/MH_01_easy.bag
运行界面:
不管哪种模式,运行完成后,可以在~/VINS_Output目录中看到输出的四个文件:pose_graph.txt、pose_graph_node.txt、vio.csv、visualization.txt
这四个文件分别是源代码中pose_graph.cpp、pose_graph_node.cpp、parameters.cpp、visualization.cpp的输出。
首先测试KITTI数据集color类型的00序列:
打开3个终端,分别执行以下命令
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch
source ~/catkin_ws/devel/setup.bash
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml
source ~/catkin_ws/devel/setup.bash
rosrun vins kitti_odom_test ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml ~/Datasets/KITTI/VisualOdometry/data_odometry_color/sequences/00
再测试KITTI数据集RawData类型的2011_10_03_drive_0027_sync序列:
RawData类型的序列可以用官网下载:RawData下载
前边给过的KITTI数据集的百度网盘链接中也可以下载!
这里使用其中的2011_10_03_drive_0027_sync序列。
打开3个终端,分别执行以下命令
source ~/catkin_ws/devel/setup.bash
roslaunch vins vins_rviz.launch
source ~/catkin_ws/devel/setup.bash
rosrun global_fusion global_fusion_node
source ~/catkin_ws/devel/setup.bash
rosrun vins kitti_gps_test ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml ~/Datasets/KITTI/RawData/2011_10_03_drive_0027_sync
evo是一个对SLAM结果的测评工具,可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照标准轨迹进行拉伸对齐,并计算绝对误差、相对误差等。
注意:evo需要Python 3.7环境,而Ubuntu 18默认的环境是Python 2。
sudo apt-get install python3.7
sudo apt install python-pip
sudo apt-get install aptitude
sudo aptitude install python3-tk
sudo aptitude install tk-dev
将当前Python环境调整为Python 3.7:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
注意:因为Ubuntu 18默认的环境是Python 2而此时切换成了Python 3.7,可以发现此时按快捷键Ctrl + Alt + T无法呼出终端,稍后解决!先暂时在桌面右键打开终端。
此时终端执行"python"命令,应该可以显示python 3.7
去evo官网下载:evo官网
下载源代码后,解压到适当位置,在evo目录下打开终端,执行以下命令:
pip install --editable . --upgrade --no-binary evo
sudo python setup.py develop
pip install --upgrade setuptools
pip install . --user --upgrade
pip install --user PyQt5
在evo目录下打开终端,执行以下命令:
cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xyz
仅当需要使用evo时,执行以下命令,切换到Python3环境。此时ORB-SLAM3和VINS-Fusion可能不能正常运行。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
evo使用完成后,再执行以下命令,切换到常规Python环境:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 150
ORB-SLAM3运行结束后,会得到相机轨迹文件CameraTrajectory.txt。
(1)评估运行EuRoC数据集的MH01序列:
将CameraTrajectory.txt复制到合适目录下重命名为"MH01.txt",将相机的真实轨迹文件~/Datasets/EuRoC/MH_01_easy/mav0/state_groundtruth_estimate0/data.csv也复制到该目录下。
下面需要将data.csv转换为8列的TUM数据格式,在当前目录下打开终端,执行:
evo_traj euroc data.csv --save_as_tum
就会生成data.tum文件。
之后为了对齐时间戳,在当前目录下新建"Align.py",写入以下内容:
from evo.tools import file_interface
traj = file_interface.read_tum_trajectory_file("MH01.txt")
traj.timestamps = traj.timestamps / 1e9
file_interface.write_tum_trajectory_file("MH01_clean.txt", traj)
在当前目录下打开终端,执行"python Align.py",就会得到"MH01_clean.txt"
之后执行以下命令计算绝对误差(注意:相机的真实轨迹文件在前,计算得到的轨迹文件在后)
evo_ape tum data.tum MH01_clean.txt -va --plot --plot_mode xyz
执行以下命令计算相对误差:
evo_rpe tum data.tum MH01_clean.txt -va --plot --plot_mode xyz
(2)评估运行KITTI数据集的01序列:
将ORB-SLAM3运行KITTI数据集生成的相机轨迹文件"CameraTrajectory.txt"复制到合适目录下重命名为"01.txt"。
在KITTI数据集目录下的"VisualOdometry\data_odometry_poses\poses"处找到相机的真实轨迹文件"01.txt",复制到相同的目录下重命名为"01_gt.txt"。
执行以下命令计算绝对误差(注意:相机的真实轨迹文件在前,计算得到的轨迹文件在后)
evo_ape kitti 01_gt.txt 01.txt -va --plot --plot_mode xyz
执行以下命令计算相对误差:
evo_rpe kitti 01_gt.txt 01.txt -va --plot --plot_mode xyz
(1)评估运行EuRoC数据集的MH01序列:
将"~/VINS_Output/pose_graph_node.txt"复制到合适位置,重命名为"MH01.txt"。
用Ubuntu自带的gedit打开"MH01.txt",利用查找和替换功能,勾选"正则表达式",查找" $"(空格+’$’),点击"全部替换",就可以将每一行末尾带的空格都给去掉。记得点击"保存"。
将相机的真实轨迹文件~/Datasets/EuRoC/MH_01_easy/mav0/state_groundtruth_estimate0/data.csv也复制到该目录下。
下面需要将data.csv转换为8列的TUM数据格式,在当前目录下打开终端,执行:
evo_traj euroc data.csv --save_as_tum
就会生成data.tum文件。
执行以下命令计算绝对误差
evo_ape tum data.tum MH01.txt -va --plot --plot_mode xyz
执行以下命令计算相对误差
evo_rpe tum data.tum MH01.txt -va --plot --plot_mode xyz
(2)评估运行KITTI数据集的01序列:
将"~/VINS_Output/vio.txt"复制到合适位置,重命名为"01.txt"。
在KITTI数据集目录下的"VisualOdometry\data_odometry_poses\poses"处找到相机的真实轨迹文件"01.txt",复制到相同的目录下重命名为"01_gt.txt"。
执行以下命令计算绝对误差
evo_ape kitti 01_gt.txt 01.txt -va --plot --plot_mode xyz
执行以下命令计算相对误差
evo_rpe kitti 01_gt.txt 01.txt -va --plot --plot_mode xyz