Ubuntu 14.04+ROS Indigo+LSD-SLAM

来源:互联网 发布:怎么克服懒惰 知乎 编辑:程序博客网 时间:2024/06/05 17:59

:原作者给出的编译安装方式(https://github.com/tum-vision/lsd_slam)如下:

$ sudo apt-get install python-rosinstall$ mkdir ~/rosbuild_ws$ cd ~/rosbuild_ws$ rosws init . /opt/ros/indigo$ mkdir package_dir$ rosws set ~/rosbuild_ws/package_dir -t .$ echo "source ~/rosbuild_ws/setup.bash" >> ~/.bashrc$ bash$ cd package_dir$ sudo apt-get install ros-indigo-libg2o ros-indigo-cv-bridge liblapack-dev libblas-dev freeglut3-dev libqglviewer-dev libsuitesparse-dev libx11-dev$ git clone https://github.com/tum-vision/lsd_slam.git lsd_slam$ rosmake lsd_slam
但我在做到最后一步即rosmake lsd_slam的时候会出现些错误,加上对rosbuild不太熟悉,所以改用catkin来对LSD-SLAM进行编译。


具体的步骤如下所示:

1.创建ROS工作空间:

$ mkdir -p ~/lsdslam_catkin_ws/src
$ cd lsdslam_catkin_ws/src
$ catkin_init_workspace
$ cd ..$ catkin_make$ source devel/setup.bash$ echo $ROS_PACKAGE_PATH
如果输出:

/home/zhuquan/lsdslam_catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
就说明ROS工作空间已经创建好了。

2. 安装并运行LSD-SLAM

2.1 获取LSD-SLAM源代码

$ cd src$ git clone https://github.com/tum-vision/lsd_slam.git$ cd lsd_slam$ git checkout catkin

change to the Catkin "branch" of the LSD-SLAM project;

2.2 安装相关依赖项

$ sudo apt-get install ros-indigo-libg2o ros-indigo-cv-bridge liblapack-dev libblas-dev freeglut3-dev libqglviewer-dev libsuitesparse-dev libx11-dev

2.3 lsd_slam/lsd_slam_viewerlsd_slam/lsd_slam_core文件夹下的package.xml进行修改,在两个文件夹下的package.xml添加:

<build_depend>cmake_modules</build_depend><run_depend>cmake_modules</run_depend>

2.4 lsd_slam/lsd_slam_viewerlsd_slam/lsd_slam_core文件夹下的CMakeLists.txt进行修改,在两个文件夹下的CMakeLists.txt添加:
find_package(cmake_modules REQUIRED)

并且在两个文件夹下的CMakeLists.txttarget_link_libraries中都添加X11:

lsd_slam/lsd_slam_core文件夹下的CMakeLists.txttarget_link_libraries添加X11后,如下所示:

target_link_libraries(lsdslam ${FABMAP_LIB} ${G2O_LIBRARIES} ${catkin_LIBRARIES} csparse cxsparse X11)

lsd_slam/lsd_slam_viewer文件夹下的CMakeLists.txttarget_link_libraries添加X11后,如下所示:

target_link_libraries(viewer ${QGLViewer_LIBRARIES} 

                                            ${QGLVIEWER_LIBRARY}

                                            ${catkin_LIBRARIES}

                                           ${Boost_LIBRARIES}     

                                            ${QT_LIBRARIES}

                                            GL glut GLU X11

                               )

#add_executable(videoStitch src/main_stitchVideo.cpp)

#target_link_libraries(viewer ${QGLViewer_LIBRARIES} 

#                                           ${QGLVIEWER_LIBRARY} 

#                                           ${catkin_LIBRARIES}

#                                           ${QT_LIBRARIES} 

#                                           GL glut GLU X11 

#                     )

2.5 开始编译

$ cd ..$ cd ..$ catkin_make

3. 运行LSD-SLAM

3.1 在数据集中运行

Download the Room Example Sequence and extract it.

我下载好之后放在lsdslam_catkin_ws中。

打开一个终端,运行:

$ roscore
打开另外一个终端(原终端保留),运行:
$ cd lsdslam_catkin_ws/$ source devel/setup.sh$ rosrun lsd_slam_viewer viewer

再打开另外一个终端(前两个终端保留),运行:

$ cd lsdslam_catkin_ws/$ source devel/setup.sh$ rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info

再打开另外一个终端(前三个终端保留),运行:

$ cd lsdslam_catkin_ws/rosbag play LSD_room.bag

3.2 使用摄像头运行LSD-SLAM

安装uvc_camera驱动:

  $ cd lsdslam_catkin_ws/src  $ git clone https://github.com/ktossell/camera_umd  $ cd ..  $ catkin_make  $ source devel/setup.bash

测试是否安装成功:

开启三个终端:

第一个启动ROS服务:

$ roscore

第二个启动驱动:

$ rosrun uvc_camera uvc_camera_node device:=/dev/video0

第三个启动视频窗口:

$ rosrun image_view image_view image:=/image_raw
如果正常显示摄像头视频即成功.


配置camera_node.launch文件(在/lsdslam_catkin_ws/src/camera_umd/uvc_camera/launch中),如:

<launch>  <node pkg="uvc_camera" type="uvc_camera_node" name="uvc_camera" output="screen">    <param name="width" type="int" value="640" />    <param name="height" type="int" value="480" />    <param name="fps" type="int" value="30" />    <param name="frame" type="string" value="wide_stereo" />    <param name="auto_focus" type="bool" value="False" />    <param name="focus_absolute" type="int" value="0" />    <!-- other supported params: auto_exposure, exposure_absolute, brightness, power_line_frequency -->    <param name="device" type="string" value="/dev/video0" />    <param name="camera_info_url" type="string" value="file://$(find uvc_camera)/example.yaml" />  </node></launch>

注意:官方程序的默认分辨率是640*480.

然后运行LSD-SLAM:

打开一个终端,运行:

$ roscore

打开另一个终端(原终端保留),运行:

$ cd lsdslam_catkin_ws/$ source devel/setup.sh$ rosrun lsd_slam_viewer viewer

打开另一个终端(前两个终端保留),运行:

$ cd lsdslam_catkin_ws/$ source devel/setup.sh$ roslaunch uvc_camera camera_node.launch

再次打开一个终端(前三个终端保留),运行:

$ rosrun lsd_slam_core live_slam /image:=image_raw _calib:=<calibration_file>

校准文件calibration_file可在lsdslam_catkin_ws/src/lsd_slam/lsd_slam_core/calib中的cfg文件中任意选一个即可。

数据集:http://vision.in.tum.de/research/vslam/lsdslam?redirect=1





 
原创粉丝点击