ORB-SLAM2 with Kinect V1
Posted 半个王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORB-SLAM2 with Kinect V1相关的知识,希望对你有一定的参考价值。
因为手上只有kinect V1 没有V2,而网上关于ORB-SLAM2的实现都是基于Kinect2,最著名的是高博进行实现的 http://www.cnblogs.com/gaoxiang12/p/5161223.html。通过查阅部分资料,用Kinect1实现了ORB-SLAM2,这里总结一下具体步骤。
1.我的系统:
Ubuntu14.04, ROS indigo,Lenovo Z485, Kinect V1.
2. 依赖项安装,参照ORB-SLAM2的Prerequisites (dependencies) 部分
2.1 ROS 安装的是indigo
(http://wiki.ros.org/indigo/Installation/Ubuntu)
2.2 Boost
sudo sh -c \'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list\'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install libgl1-mesa-dev-lts-utopic
sudo apt-get install ros-indigo-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装完后,ctrl+alt+t打开终端,执行roscore,测试ROS是否成功安装。sudo apt-get install libboost-all-dev
2.3 Pangolin安装 (下载地址 https://github.com/stevenlovegrove/Pangolin)
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j
2.4 OpenCV (安装的是OpenCV2.4.11,参考网站http://blog.csdn.net/tb_huge/article/details/51784625
)
2.5 Eigen3安装
sudo apt-get install libeigen3-dev
cd /usr/include/eigen3 (ls查看,含有3个文件: Eigen signature_of_eigen3_matrix_library unsupported)
sudo cp Eigen/ .. -R (将Eigen文件夹放在 /usr/include 下面)
2.6
DBoW2和g2o (included in Thirdparty) 在ORB-SLAM2的Thirdparty文件夹里面,无需安装。
3. 安装ORB-SLAM2 参照ORB-SLAM2的Installation部分
3.1 下载git clone https://github.com/raulmur/ORB_SLAM.git (可以直接放在home下,然后解压)
3.2 修改.bashrc,加入export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM (红色字体是需要修改的内容,改为ROS文件夹下的ORB-SLAM2路径)
gedit .bashrcexport ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/zfy/ORB-SLAM2/Examples/ROS (根据需要,红色字体改为对应的路径)
3.3 cd到Examples/ROS/ORB_SLAM2,然后执行:
mkdir build cd build cmake .. -DROS_BUILD_TYPE=Release make -j
编译得到RGBD节点。(ps:新版本的ORB_SLAM2增加了build_ros.sh,里面的内容就是上面4行命令)
3.4 cd到/home/zfy/ORB-SLAM2,执行:
chmod +x build.sh ./build.sh
编译完成ORB-SLAM2。 (build.sh中包含编译DBOW2和g2o,编译过程很占用计算资源,电脑会很卡,稍微等等)
4
. 安装Kinect V1 驱动
sudo apt-get install libfreenect-dev
sudo apt-get install ros-indigo-freenect-launch
可以通过
roslaunch freenect_launch freenect.launch 验证kinect驱动是否安装成功;
rostopic list查看ORB-SLAM2需要的两个topic: /camera/rgb/image_raw /camera/depth_registered/image_raw
5. 配置launch文件
在解压后的ORB-SLAM2的根目录下新建文件kinect_orbslam2.launch , 其内容为(根据需要,红色字体改为对应的路径,其他的无需修改)
:
<launch>
<param name="orb_use_viewer" value="false"/>
<node pkg="ORB_SLAM2" type="RGBD" name="ORB_SLAM2"
args="/home/zfy/ORB_SLAM2/Vocabulary/ORBvoc.txt
/home/zfy/ORB_SLAM2/Examples/RGB-D/TUM1.yaml" cwd="node" output="screen"/>
<include file="$(find freenect_launch)/launch/freenect.launch">
<!-- use device registration -->
<arg name="depth_registration" value="true" />
<arg name="rgb_processing" value="true" />
<arg name="ir_processing" value="false" />
<arg name="depth_processing" value="false" />
<arg name="depth_registered_processing" value="true" />
<arg name="disparity_processing" value="false" />
<arg name="disparity_registered_processing" value="false" />
<arg name="sw_registered_processing" value="false" />
<arg name="hw_registered_processing" value="true" />
</include>
</launch>
6. 运行ORB-SLAM2
cd ORB-SLAM2
./build.sh
roslaunch kinect_orbslam2.launch
结果如下图:
以上是关于ORB-SLAM2 with Kinect V1的主要内容,如果未能解决你的问题,请参考以下文章
从 fpga 控制的最佳深度相机是啥? intel realsense vs kinect v1 vs kinect v2?
视觉SLAMORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking
rtabmap with kinect 1(realsense d435i)
Kinect for Windows V2和V1对照开发___彩色数据获取并用OpenCV2.4.10显示
c_cpp 使用PCLVisualizer和Kinect v1 Grabber绘制点云
c_cpp 使用KinectGrabber / Kinect2Grabber从Kinect v1 / v2传感器检索的pcl :: PointCloud <pcl :: PointXYZRGBA