Ubuntu16.04+ROS+Kinect2运行DSO(Direct Sparse Odometry)
2017-01-13 22:13
639 查看
一、DSO的安装运行
参考https://github.com/JakobEngel/dso1、安装依赖项
(1)基本依赖项:
sudo apt-get install build-essential
(2)eigen3安装:
sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev
(3)(可选)opencv:
sudo apt-get install libopencv-dev
如果要可视化运行程序安装,或者选择从源码安装,这里就不给出过程了。
(4)(可选)Pangolin:
这是DSO的可视化库,参考https://github.com/stevenlovegrove/Pangolin,建议安装。glew:
sudo apt-get install libglew-dev
CMake:
sudo apt-get install cmake
(可选)python2.7:
sudo apt-get install libpython2.7-dev
(可选)ffmpeg,视频解码和图像缩放:
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev
(可选)ibjpeg, libpng, libtiff, libopenexr,能读取图像集,基本所有的开源SLAM都会用数据集,建议安装:
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
接下来安装panglion(本例中位于~/ThirdParty):
cd ~/ThirdParty git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. make -j8
make -j后的参数表示以多少线程运行,根据自己电脑可修改。
(5)(可选)ziplib:
能使程序直接读取.zip图像压缩文件,如果要运行数据集,建议安装。sudo apt-get install zlib1g-dev cd dso/thirdparty tar -zxvf libzip-1.1.1.tar.gz cd libzip-1.1.1/ ./configure make sudo make install sudo cp lib/zipconf.h /usr/local/include/zipconf.h
2、编译并运行DSO
本例中采用~目录,git clone https://github.com/JakobEngel/dso.git cd dso cd dso mkdir build cd build cmake .. make -j8
如果以上过程通过,在dso/build/lib中有libdso.a库文件,如果上述过程安装了可视化部分的话,在dso/build/bin中有dso_dataset文件,该文件即可运行作者提供的数据集。
从https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1下载其中的任一数据集即可,速度比较感人,建议从windows上用迅雷下载。这里以数据集中的sequence_11为例,下载完成后解压至dso/build/bin中,在控制台中运行:
./dso_dataset files=./sequence_11/images.zip calib=./sequence_11/camera.txt gamma=./sequence_11/pcalib.txt vignette=./sequence_11/vignette.png preset=0 mode=0
不同的数据集替换上述中的数字11即可,注意若未安装ziplib,需要手动解压./sequence_11/images.zip,并改为files=./sequence_11/image。下图为运行结果。
如果不需要连接kienct2相机,以下过程可省略。
二、通过ROS连接kienect2并运行DSO
1、安装ROS kinetic
参考http://wiki.ros.org/kinetic/Installation/Ubuntu进入system setting->software&updates,做如下更改并添加ustc镜像:
设置sources.list:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
设置key:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
更新软件源并安装:
sudo apt-get update
安装ROS:
sudo apt-get install ros-kinetic-desktop-full
使ROS包有效:
apt-cache search ros-kinetic
初始化rosdep:
sudo rosdep init rosdep update
设置环境变量:
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
安装rosinstall:
sudo apt-get install python-rosinstall
创建工作目录并设置路径:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace
设置ros包的环境变量:
echo ~/catkin_ws/devel/setup.bash ~/.bashrc
或者每次进入catkin_ws目录时输入:
source devel/setup.bash
2、安装kinect2驱动
安装libfreenect2:cd ~/ThirdParty git clone https://github.com/OpenKinect/libfreenect2.git cd libfreenect2 sudo apt-get install build-essential cmake pkg-config libusb-1.0-0-dev libturbojpeg libjpeg-turbo8-dev sudo apt-get install libglfw3-dev libopenni2-dev cd .. mkdir build && cd build cmake .. -DENABLE_CXX11=ON make make install sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
在ROS中编译kinect2:
cd ~/catkin_ws/src/ git clone https://github.com/code-iai/iai_kinect2.git cd iai_kinect2 rosdep install -r --from-paths . cd ~/catkin_ws catkin_make -DCMAKE_BUILD_TYPE="Release"
插上kienct2,然后运行ros的Kinect接口:
cd ~/catkin_ws roscore
然后在另外一个控制台运行:
roslaunch kinect2_bridge kinect2_bridge.launch
这条命令表示打开了ros的kinect接口,再在另一个控制台显示kienct的运行结果:
rosrun image_view image_view image:=/kinect2/hd/image_color
hd表示RGB的分辨率,有hd、rd、qhd等分辨率,输入
rostopic list
查看kienct2提供的所有topic,包括RGB、depth等。
3、安装ROS_DSO并运行在线运行Kinect2
下载ros_dso并安装:cd ~/catkin_ws/src/ git clone https://github.com/JakobEngel/dso_ros cd .. export DSO_PATH=~/dso catkin_make
修改相机参数文件:
gedit ~/catkin_ws/src/dso_ros/camera.txt
在弹出的窗口中输入以下内容:
529.97 526.97 477.44 261.87 0.05627 -0.0742 0.00142 -0.00169 960 540 crop 960 540
第一行是相机的内参,从左到右的8个数为fx fy cx cy k1 k2 r1 r2,第二行为输入图像的宽和高,根据你用的Kinect RGB不同的分辨率设置,这里因为下面要用到kienct2的qhd,使用960和540。
终止上一步最后的rosrun image_view image_view image:=/kinect2/hd/image_color进程,运行:
cd ~/catkin_ws rosrun dso_ros dso_live image:=/kinect2/qhd/image_color_rect calib=src/dso_ros/camera.txt mode=1
即可在线运行DOS,下图为在我电脑上的结果。
由于DSO初始化做的不太好,注意DSO刚开始运行时要慢慢的平移和转动镜头,不然很容易跑崩。
相关文章推荐
- ubuntu16.04 运行dso_ros
- Mac 下运行DSO(Direct Sparse Odometry)
- ubuntu16.04安装运行mopidy出现错误
- VirtualBox运行Ubuntu16.04(32bit win)
- ubuntu16.04 Anaconda多版本运行
- Ubuntu16.04编译运行geekOS
- Ubuntu16.04安装Mono、MonoDevelop运行C#代码
- ownCloud Pi 设备将运行在 Snappy Ubuntu Core 16.04 LTS 及树莓派3上
- 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题
- Ubuntu16.04环境下安装caffe及运行faster-rcnn
- ubuntu 16.04+kinect v1配置运行 Kintinuous
- C#码农的大数据之路 - 使用Ambari自动化安装HDP2.6(基于Ubuntu16.04)并运行.NET Core编写的MR作业
- Ubuntu 16.04 运行级别
- 使用amd老旧显卡的Ubuntu16.04运行Android虚拟机报错如下
- Ubuntu 16.04 运行级别
- ubuntu16.04实用快捷键及运行c程序(1)
- Ubuntu 16.04 火狐添加java插件、解决Firefox强制低版本java插件运行以及安全设置限制自签名应用程序运行
- Ubuntu16.04 上运行 Hadoop2.7.3 自带example wordCount摸索记录
- Ubuntu 16.04运行qgroundcontrol
- vmware中的虚拟机Ubuntu16.04和win10物理机还有通过网线相连的zedboard(运行有Linux)连接为一个局域网