viso运行笔记

参考视频: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 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值