参考视频:bilibili视频
一、下载libviso源代码
链接:libviso源代码
二: 解压编译
-
下载下来的源代码放在创建好的工作空间的src文件夹下解压,里边有四个文件夹data、libviso2、viso2、viso2_ros,和一个READMEmd文件。
-
进入~/viso2/libviso2/libviso2文件夹,在此文件夹下新建一个build文件夹,在build文件夹下打开terminal:
cmake .. make
在build文件夹下会有一堆文件产生,其中有一个可紫色方块的执行文件viso2,下一步要用这个运行 viso_s 双目数据集。
-
在工作空间的build下,打开terminal:
catkin_make
在工作空间下的devel文件夹下会多出一些文件,在~/catkin_viso/devel/lib/viso2_ros文件夹下会有三个可执行文件 mono_odomete、mono_odometer_omnidirectional、stereo_odometer。
三、 运行数据集
1.运行单目例子
-
首先下载performance_test.bag文件。(这个好像是只能在谷歌浏览器下下载,可以在windows自带的浏览器起安装谷歌插件,然后就可以用谷歌浏览器了。)
performance_test.bag文件 -
打开一个terminal,运行roscore
-
在工作空间下,打开一个terminal,运行demo.launch
roslaunch viso2_ros demo.launch
-
在数据集文件夹下运行:
rosbag play --clock performance_test.bag
-
打开rviz查看建图:
在data文件夹下有几个文件,是建图的config文件,因此需要在data文件夹下打开terminal:rosrun rviz rviz -d rviz_config.rviz
-
即可在rviz中看到建图的过程。
2.运行双目例子
-
首先从kitti官网下载双目数据集,视频教程中下载的是对应libviso代码的2010_03_09_drive_0019。
-
解压数据集
右键该压缩文件,左键提取到此处。 -
进去~/libviso2/libviso2/build文件夹,运行可执行文件viso
rosrun viso ~/path/2010_03_09_drive_0019
-
此过程不能在rviz中看到
3.修改双目例子,将最后的pose存储在txt文件中
使用数据集:kitti彩色图(官网下载)
- 要修改的地方(修改后):
第一处:改为kitti的路径
// input file names
char base_name[256]; sprintf(base_name,"%06d.png",i);
string left_img_file_name = dir + "/image_2"+"/" + base_name;
string right_img_file_name = dir + "/image_3"+"/" + base_name;
cout<< "right_img_file_name:"<< right_img_file_name ;
第二处:从网上查询到的相机参数
// calibration parameters for sequence 2010_03_09_drive_0019
param.calib.f = 718.856; // focal length in pixels
param.calib.cu = 607.1928; // principal point (u-coordinate) in pixels
param.calib.cv = 185.2157; // principal point (v-coordinate) in pixels
param.base = 0.54; // baseline in meters
第三处:将pose的每个值保存在txt文档中,便于自己画图
// output some statistics
double num_matches = viso.getNumberOfMatches();
double num_inliers = viso.getNumberOfInliers();
cout << ", Matches: " << num_matches;
cout << ", Inliers: " << 100.0*num_inliers/num_matches << " %" << ", Current pose: " << endl;
cout << pose << endl << endl;
int i, j ;
FILE *fp