您的位置:首页 > 其它

Ubuntu16.04+ROS+Kinect2运行DSO(Direct Sparse Odometry)

2017-01-13 22:13 639 查看

一、DSO的安装运行

参考https://github.com/JakobEngel/dso

1、安装依赖项

(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刚开始运行时要慢慢的平移和转动镜头,不然很容易跑崩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息