DM-VIO安装与运行自己数据集(ROS版本)
1、dm-vio安装
进入官方链接下载dm-vio和dm-vio-ros,基本上就是按照readme的操作来:
下载代码:
git clone https://github.com/lukasvst/dm-vio.git
安装gt-sam:
sudo apt install libtbb-dev
git clone https://github.com/borglab/gtsam.git
cd gtsam
git checkout 4.2a6 # not strictly necessary but this is the version tested with.
mkdir build && cd build
cmake -DGTSAM_POSE3_EXPMAP=ON -DGTSAM_ROT3_EXPMAP=ON -DGTSAM_USE_SYSTEM_EIGEN=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
make -j
sudo make install
安装opencv:
sudo apt-get install libopencv-dev
安装pangolin:
sudo apt install libgl1-mesa-dev libglew-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout v0.6
mkdir build
cd build
cmake ..
cmake --build .
sudo make install
这里要注意,如果电脑里没有pangolin,是可以编译的,但是不会生成可执行文件,所以这个仍然是必须安装的库,此外,必须是0.6版本。
git checkout v0.6
编译:
cd dm-vio
mkdir build
cd build
cmake ..
make -j
编译完成后,在build/bin目录下,就能看到可执行文件dmvio_dataset。接下来,就可以按照官方的方法跑数据了。(一般来说按照readme进行安装即可正常编译成功,主要在ROS版本容易出错)
2、dm-vio-ros安装
代码下载:
git clone https://github.com/lukasvst/dm-vio-ros.git
我是新建了一个ROS工程:dm-vio-ws,为了能让这个插件找到刚刚编译的dm-vio,所以一个偷懒的办法,就是在.bashrc加上一个环境变量(这一步很重要,不用修改CMakeLists.txt文件)
sudo gedit ~/.bashrc
export DMVIO_BUILD=/home/xtz/dm-vio-master/build
然后编译:
catkin_make
source devel/setup.bash
3、使用自己的数据集:
3.1运行euro数据集
该代码默认配置为euroc数据集(程序里面包括了euroc数据的外参),所以只需要添加相机模型camera.txt和IMU.taml文件即可运行euroc数据集:
echo -e "458.654 457.296 367.215 248.375 -0.28340811 0.07395907 0.00019359 1.76187114e-05\n752 480\ncrop\n640 480\n" > camera.txt
rosrun dmvio_ros node calib=/PATH/TO/camera.txt settingsFile=/PATH/TO/dm-vio/configs/euroc.yaml mode=1 nogui=0 preset=1 useimu=1 quiet=1 init_requestFullResetNormalizedErrorThreshold=0.8 init_pgba_skipFirstKFs=1
rosbag play V2_01_easy.bag
第一个命令,生成相机内参文本文件
第二个命令,读取 camera.txt和euroc.yaml(IMU内参),运行节点
第三个命令:运行数据包。
3.2运行自己的数据集
修改dm-vio工程里面的IMUSettings.cpp文件里面IMU到CAM的外参(void IMUCalibration::initDefault()),下面是我自己的外参:
m << 0.999265 , 0.0338909, -0.0178914,
0.0167624 , 0.0333074, 0.999305,
0.0344632 , -0.99887 , 0.0327149;
p <<-0.0263343, 0.0107831, -0.0136551;
然后重新编译:
make -j4
修改dm-vio-ws(ROS工程里面的话题名称):
ros::Subscriber imageSub = nh.subscribe("/camera/color/image_raw", 3, &vidCb);
ros::Subscriber imuSub = nh.subscribe("/camera/imu", 50, &imuCb);
重新编译:
catkin_make -j4
编译成功之后,就可以运行自己的数据集了,首先准备cam.txt和IMU.txt文件。
`
我使用的IMU内参和相机内参文件。
运行:
roscore
source ./devel/setup.bash
rosrun dmvio_ros node calib=/home/xtz/dm_vio_ws/src/config/camera.txt settingsFile=/home/xtz/dm_vio_ws/src/config/imu.yaml mode=0 nogui=0 preset=0 useimu=1 quiet=1 init_requestFullResetNormalizedErrorThreshold=0.8 init_pgba_skipFirstKFs=1 setting_weightZeroPriorDSOInitX=5e09 setting_weightZeroPriorDSOInitY=5e09
运行成功:
4、论文:
链接: 论文地址
版权归原作者 爱吃洋芋坨坨的麻雀 所有, 如有侵权,请联系我们删除。