- 关于Ubuntu+DSO在数据集运行部分,小心路径即可;
一些依赖库的安装在dso之中即可,在dso文件夹中build编译生成;
编译通过会在dso/build/lib中生成libdso.a库文件,在dso/build/bin中生成dso_dataset文件;
(从而判断你自己的安装路径有没有出错)。 - 在dso_dataset文件同目录下测试sequnce_n 数据集,任一个序列下载即可;
- 安装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文件,是相机运动过程中每帧的外参,数据集上运动的速度还是很快的; - 用自己摄像头实时运行DSO (catkin版),事先配置ROS,参考链接很多,测试出来节点控制的小乌龟就可以,不难。
但是注意版本Ubuntu的版本对应不同的ROS,如果不适配就会出现 E:无法定位软件包的问题。
我参考的配置链接 Ubuntu18.04+Melodic
配置成功之后测试小海龟。
- 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的参数。 - 关于dso中笔记本相机标定,参考 ROS 暂时没有配置,直接找的网上的,数据的不对不会影响到是否可以调用dso,但是会影响到运行的效率与精度。后续补充
- 运行dso;
首先第一个终端输入roscore (Roscore 大写无法调出);
第二个终端输入source ~/catkin_dso/devel/setup.bash #这个是环境的配置,有很多链接都没有,因为先前的配置,如果没有就无法调出自己的摄像头,说没有workspace,不清楚是不是因为Ubuntu+配置的问题(疑惑脸,因为网上大多数都是Ubuntu14或者16的配置);
代码理解: roslaunch usb_cam usb_cam-test.launch #调出自己的摄像头
第三个终端输入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运行 - 迄今为止出现的一个最大的问题就是:
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至少适合我
- 上面的参考四有一个问题
如果使用外接USB摄像头的话:修改launch中的usb_cam-test.launch的video0为video1就可以了;
不清楚他对外部摄像头的定义是什么,我是外接的USB摄像头,修改成video1,但是无法调出的问题,后来改回video0,可以执行。 - 关于前面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 #标定的程序
- 关于标定结果
得到结果之后如何将结果提取写入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,完成。 - DSO自己摄像头运行之后的数据获取???未完待续
Ubuntu18.04+DSO+ROS(catkin)配置问题贴
最新推荐文章于 2024-04-28 16:17:51 发布