这里主要写一些遇到的坑
1.rosdev install rgbdslam提示没有resouce,这时候需要source devel/setup.bash
2.FOLLOW_SYMLINKS提示后面不完整
在CMakeLists里将
file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS)改为
file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS "qt*")
3.error: type 'QWidget' is not a direct base of 'GLViewer' (这个error出现次数最少,可以忽略)
方法:You can resolve it if you change GLViewer::GLViewer(QWidget *parent) : QWidget(parent) with:
GLViewer::GLViewer(QWidget *parent) : QGLWidget(parent)
4.inline int round(float d) conflict error
方法:rename一下即可,搜索一下该函数,修改大概5处位置就行了
5.undefined reference to uuid_generate........
方法:
步骤1:在CMakeLists.txt中添加uuid库,target_link_libraries(rgbdslam XXXXXXXXXXXX uuid)
步骤2:对于undefined reference to FT_Done_MM_XXXX的问题,我这里主要是anaconda把freetype库的文件覆盖了,出现了一些链接的问题,我直接暴力解决了下,把那个so文件备份后删除了。。。。。嗯解决了编译成功。。。就是不知道对conda有什么影响。。。有影响的话后续再更新吧
6.required process[rgbdslam-2] has died”......Iinitiating down
该问题主要是由于rgbdslam依赖库g2o和pcl不兼容引起的;
1) sudo apt-get purge ros-kinetic-libg2o libqglviewer-dev
sudo rm -rf /usr/local/include/g2o
sudo rm -rf /usr/local/lib/libg2o_*
2)设置g2o路径,这里最好用作者提供的g2o,否则要自己一个个修改,很麻烦
set(G2O_DIR ${G2O_REPO_DIR}/install
然后将rgbdslam/cmake_module/FindG2O.cmake文件删除,不删除的话可能会导致set指令失效
3)自己编译pcl1.8,注意用c++11来编译
$ cd ~/rgbdslam_vs/src
$ wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
$ tar -xvzf pcl-1.8.0.tar.gz
vi CMakeLists.txt
add the following to line #146 of CMakeLists.txt (right after endif()):
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
mkdir build
cd build
cmake ../
make VERBOSE=1 -j2
sudo make install
然后将rgbdslam下的cmakelists中pcl改成1.8,即find_package(PCL 1.8 REQUIRED COMPONENTS common io)