参考https://github.com/JakobEngel/dso
sudo apt-get install build-essential
sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev
sudo apt-get install libopencv-dev
如果要可视化运行程序安装,或者选择从源码安装,这里就不给出过程了。
这是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后的参数表示以多少线程运行,根据自己电脑可修改。
能使程序直接读取.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
本例中采用~目录,
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相机,以下过程可省略。
参考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
安装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等。
下载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刚开始运行时要慢慢的平移和转动镜头,不然很容易跑崩。