Ubuntu18.04+DSO+ROS(catkin)配置问题贴

  1. 关于Ubuntu+DSO在数据集运行部分,小心路径即可;
    一些依赖库的安装在dso之中即可,在dso文件夹中build编译生成;
    编译通过会在dso/build/lib中生成libdso.a库文件,在dso/build/bin中生成dso_dataset文件;
    (从而判断你自己的安装路径有没有出错)。
  2. 在dso_dataset文件同目录下测试sequnce_n 数据集,任一个序列下载即可;
  3. 安装ziplib用来读取数据库压缩包里的图片,原以为不用解压直接读取,但是最后测试的时候,还是要绝对路径下不同的文件;
    输入:cd ~/dso/build/bin
    ./dso_dataset files=/home/…/dso/build/bin/dataset/sequence_01/images.zip calib=/home/…/dso/build/bin/dataset/sequence_01/camera.txt gamma=/home/…/dso/build/bin/dataset/sequence_01/pcalib.txt vignette=/home/…/dso/build/bin/dataset/sequence_01/vignette.png preset=0 mode=0
    数据集运行成功后会在同目录下生成result.txt文件,是相机运动过程中每帧的外参,数据集上运动的速度还是很快的;
  4. 用自己摄像头实时运行DSO (catkin版),事先配置ROS,参考链接很多,测试出来节点控制的小乌龟就可以,不难。
    但是注意版本Ubuntu的版本对应不同的ROS,如果不适配就会出现 E:无法定位软件包的问题。
    版本问题
    我参考的配置链接 Ubuntu18.04+Melodic
    配置成功之后测试小海龟。
    ROS小乌龟测试
  5. ROS配置成功之后按照 ROS调用外接摄像头 配置;
    其中catkin_ws是新建的工作空间,不同的博客一般命名为catkin_ws或者catkin_dso,名称而已不影响,重要的是catkin_的前缀。
    代码理解: export DSO_PATH=/home/…/dso/
    #这里的DSO_PATH值得是dso的路径,后面省略的地方就是先前安装dso的那个文件夹;
    安装编译dso_ros和安装编译usb_cam之后,运行dso;
    代码理解: gedit ~/catkin_ws/src/dso_ros/camera.txt输入,是直接弹出文档,在里面的空白的文档里面输入camera的参数。
  6. 关于dso中笔记本相机标定,参考 ROS 暂时没有配置,直接找的网上的,数据的不对不会影响到是否可以调用dso,但是会影响到运行的效率与精度。后续补充
  7. 运行dso;
    首先第一个终端输入roscore (Roscore 大写无法调出);
    第二个终端输入source ~/catkin_dso/devel/setup.bash #这个是环境的配置,有很多链接都没有,因为先前的配置,如果没有就无法调出自己的摄像头,说没有workspace,不清楚是不是因为Ubuntu+配置的问题(疑惑脸,因为网上大多数都是Ubuntu14或者16的配置);
    代码理解: roslaunch usb_cam usb_cam-test.launch #调出自己的摄像头
    usb_cam调用成功
    第三个终端输入source ~/catkin_dso/devel/setup.bash #作用同上;
    rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/…/catkin_dso/src/dso_ros/camera.txt mode=1
    这里的路径不同的博客里面不尽相同,主要的依据是你的camera.txt的路径(手动搜索也行),之后enter运行
  8. 迄今为止出现的一个最大的问题就是:
    Couldn’t find executable named dso_live below /home/chuanxu/catkin_dos/src/dso_ros 找不到这个可执行文件。
    参考一 最后一个问题,没有对CMakeLists.txt进行改动,编译生成的bin将会存在build目录下,rosrun会找不到,要想修改的话,修改cmake.list中bin文件路径,就是将其中一行代码set(EXECUTABLE_OUTPUT_PATH $/bin)替换成set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)。
    但是我在整体的文件夹下搜索,根本没有生成dso_live这个文件,所以应该是之前配置的错误。
    wrong
    参考二 中error2,dso-ros的版本问题,安装包的名字就是dso-ros.catkin,排除;先前讲的camera.txt的路径,也不是。
    wrong
    参考三 关于干工作空间功能包,可能自己之前配置破坏了一些文件,就按照操作把catkin_dso工作空间重新理了一番,然后按照之前的步骤重新配置生成,还是不行同样的问题。
    wrong
    参考四 可能是dso-ros的版本问题,这个里面选用了蓝鲸智能修改之后的dso_ros版本,这个我用着可以,按照之前的操作,可以运行处dso
    right至少适合我
    dso调用自己的摄像头
  9. 上面的参考四有一个问题
    如果使用外接USB摄像头的话:修改launch中的usb_cam-test.launch的video0为video1就可以了;
    不清楚他对外部摄像头的定义是什么,我是外接的USB摄像头,修改成video1,但是无法调出的问题,后来改回video0,可以执行。
  10. 关于前面7,利用ros标定相机,那个链接里面有一个问题,因为我是之前修改了环境配置,所以要想通过第一个终端输入 roscore
    第二个终端输入 source ~/catkin_dso/devel/setup.bash #环境配置修改部分
    roslaunch usb_cam usb_cam-test.launch #开启自己的摄像头
    第三个终端输入 rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.028 image:=/usb_cam/image_raw camera:=/usb_cam #标定的程序
    标定的结果
  11. 关于标定结果
    相机参数
    得到结果之后如何将结果提取写入camera.txt中,了解相机坐标系的转换,应该知道标定的内参矩阵就是3x3的形式,其中fx,fy,cx,cy就是图片中对应的参数数值,畸变参数应该就是distortion的对应的d0 d1 d2 d3。 关于相机标定的原理可参照 详细完整的相机标定原理
    相机内参形式
    我们在camera.txt中要写入的格式是
    fx fy cx cy d0 d1 d2 d3
    640 480
    crop
    640 480
    写入之后重新开启自己的摄像头运行DSO,完成。
  12. DSO自己摄像头运行之后的数据获取???未完待续
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值