今天安装测试了LSD-SLAM,记录配置中遇到的问题。
LSD-SLAM论文
LSD-SLAM: Large-Scale Direct Monocular SLAM, J. Engel, T. Schöps, D. Cremers, ECCV '14
Semi-Dense Visual Odometry for a Monocular Camera, J. Engel, J. Sturm, D. Cremers, ICCV '13
配置环境
操作系统:ubuntu 14.04 虚拟机
ROS:ROS Indigo
官方代码:https://github.com/tum-vision/lsd_slam
代码编译
参考官方代码,创建环境、安装依赖项、下载并编译:
# ros环境创建
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
# 编译
rosmake lsd_slam
编译时会遇到报错:log10有一行的编译错误
原因:ros中python包的引号问题
修改:
lsd_slam/lsd_slam_viewer/cfg/LSDSLAMViewerParams.cfg
文件第20行,去掉point's
中的单引号'
,和keyframe's
的单引号;同样,删除21和30行中的单引号。修改lsd_slam/lsd_slam_core/cfg/LSDDebugParams.cfg
的第11,12和48行中的单引号。
github上原issue的解决方案:https://github.com/tum-vision/lsd_slam/issues/270#issuecomment-321496655
运行
需要运行的节点有:SLAM节点,可视化节点,以及数据发布节点,可以用数据集的数据,也可以用实时相机的数据。例如,用数据集的运行指令:
# 运行数据集节点
rosbag play ~/LSD_room.bag
# 运行SLAM节点
rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info
# 运行可视化节点
rosrun lsd_slam_viewer viewer
运行时viewer节点产生的窗口,无法显示点云图像?解决方法:lsd_slam/lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp
中修改cv::waitKey的相关内容。
lsd_slam/lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp,lines 119 and 125
I just replaced ‘cv::waitKey(milliseconds)’ with ‘return 1’.
官方github上的issue:https://github.com/tum-vision/lsd_slam/issues/64#issuecomment-140161062
小结
比之前MonoSLAM和PTAM的配置方便多了,毕竟年份稍微新了一些。