suma++环境配置

一、环境搭建

本人电脑环境是ubuntu18主要是参考这篇博客
【点云语义分割】Ubuntu18.04+GTX1060 配置运行RangeNet++
安装的版本如下,安装顺序是

  1. Cuda10.1安装
  2. cudnn 7.6.2安装
  3. TensorRT 5.1.5安装

也可以安装其他版本,但是安装其他版本的时候先看tensorrt的版本,直接下载tensorrt的安装文件会发现他的安装文件名字上已经限制了安装的cuda和cudnn版本,tensortt可供选的版本很少,如下就已经限定是cuda10.1 和 cudnn 7.5(实际上我装的是cudnn7.6.2的也没啥问题)
tensorrt安装包
然后在查看cudnn对应的cuda版本,安装顺序还是如上cuda->cudnn->tensorrt
cudnn 安装包

安装其他版本tensorrt可能会遇到错误,需要修改代码,参考这位博主;
30系显卡怎么配置rangenet++和SuMa++

二、RangeNet++源码编译

1.下载依赖源码和编译就依照官方描述操作即可:https://github.com/PRBonn/rangenet_lib

2.darknet53预训练模型下载::https://www.ipb.uni-bonn.de/html/projects/semantic_suma/darknet53.tar.gz

还有其他预训练模型其他预训练模型,但是我下载后发现缺少文件,运行报错不能使用
darknet53(可用)
darknet53darknet21(缺少文件不可用)在这里插入图片描述运行指令如下第一个 ./devel/lib/rangenet_lib/infer是编译生成的推理程序路径,第二个home/gwz/catkin_rangenet/darknet53是预训练模型的路径,第三个是点云的二进制文件路径,工程自带一个rangenet_lib/example/000000.bin径,

/home/gwz/catkin_rangenet/src/rangenet_lib/example/000000.bin ./devel/lib/rangenet_lib/infer -p /home/gwz/catkin_rangenet/darknet53
-s /home/gwz/catkin_rangenet/src/rangenet_lib/example/000000.bin --verbose

如果运行时候报错 cuda error out of memory,等一段时间就好了不用,
https://github.com/PRBonn/rangenet_lib/issues/5

一些个人遇到的问题,没遇到可跳过不看

1. 报错没定义tensorrt的成员函数,就是没找到tensorrt
sudo gedit /etc/ld.so.conf

往里面添加下载并解压的tensorrt/lib的路径,如

/home/gwz/tensorrt_tar/TensorRT-5.1.5.0/lib

然后

sudo ldconfig
2. 如果报错/usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.7 不是符号链接,则自己按照如下命令收到生成并覆盖符号链接:
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.7.6.2  /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7
3. yaml 报错(首先排除是否路径错误或者ymal文件里面没有对应内容键值甚至是空文件:
librangenet_lib.so:对‘vtable for YAML::BadConversion’未定义的引用

参考这篇博客换个yaml版本
https://blog.csdn.net/qq_43085476/article/details/123349085

如果没找到yaml则对/home/gwz/catkin_rangenet/src/rangenet_lib/CMakeLists.txt文件做出如下修改:

link_directories(/usr/local/lib)
include_directories(/usr/local/include/yaml-cpp)
FIND_LIBRARY(YAML_CPP_LIBRARIES yaml-cpp)

三、SUMA++源码编译

需要安装gtsam参考这篇博客
https://blog.csdn.net/JiaXie15/article/details/108368862
参考这篇博客:
https://blog.csdn.net/weixin_46118817/article/details/125194792

需要克隆 semantic_suma 和glow ,但是Glow的cmakelist好像不起作用会有一些错误

1. 编译报错:Unknown CMake command “COMPILE_SHADERS”

COMPILE_SHADERS在glow的cmake中定义,通过往 semantic_suma的CMakeList.txt中添加如下即可(修改为自己克隆的glow下的路径)

 include(/home/gwz/catkin_rangenet/src/glow/cmake/GenCppFile.cmake)
 include(/home/gwz/catkin_rangenet/src/glow/cmake/GlowShaderCompilation.cmake) 
2. fatal error: glow/GlBuffer.h: 没有那个文件或目录,

通过往CMakeList.txt中添加如下:

include_directories("/home/gwz/catkin_rangenet/src/glow/include/")
3.glow:: xxxx 未定义的引用
MakeFiles/visualizer.dir/src/io/SimulationReader.cpp.o:在函数‘SimulationReader::SimulationReader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)’中:
/home/gwz/catkin_rangenet/src/semantic_suma/src/io/SimulationReader.cpp:72:对‘glow::glTranslate(float, float, float)’未定义的引用
/home/gwz/catkin_rangenet/src/semantic_suma/src/io/SimulationReader.cpp:73:对‘glow::glRotateZ(float)’未定义的引用
/home/gwz/catkin_rangenet/src/semantic_suma/src/io/SimulationReader.cpp:73:对‘glow::glTranslate(float, float, float)’未定义的引用
/home/gwz/catkin_rangenet/src/semantic_suma/src/io/SimulationReader.cpp:74:对‘glow::glTranslate(float, float, float)’未定义的引用
/home/gwz/catkin_rangenet/src/semantic_suma/src/io/SimulationReader.cpp:75:对‘glow::glRotateZ(float)’未定义的引用

做出了一些修改(设置的是绝对路径您需要改成自己的),我不太擅长这个因此有些修改可能多余,不过最后还是编译通过并且运行成功了,完整CMakeList见文末

find_package(Eigen3 REQUIRED) 
find_package(X11)

include_directories("/home/gwz/catkin_rangenet/src/glow/include") include_directories("/usr/include/EGL") 
file(GLOB GLOW_SRC_FILES 
    "/home/gwz/catkin_rangenet/src/glow/src/glow/*.cpp"
    "/home/gwz/catkin_rangenet/src/glow/src/glow/util/*.cpp")
    
add_executable(visualizer
  src/io/KITTIReader.cpp   
  src/io/SimulationReader.cpp   
  src/io/RobocarReader.cpp

  # use rangenet   
  src/io/RangenetAPI.cpp
  src/opengl/Mesh.cpp   
  src/opengl/Model.cpp   
  src/opengl/ObjReader.cpp

  src/util/kitti_utils.cpp   
  src/util/ScanAccumulator.cpp

  ${UI_HDRS}   
  ${VIZ_SHADER_SRC}   
  ${GLOW_SRC_FILES}

  src/visualizer/GraphWidget.cpp   
  src/visualizer/ViewportWidget.cpp   
  src/visualizer/VisualizerWindow.cpp   
  src/visualizer/visualizer.cpp

  )

target_link_libraries(visualizer suma ${X11_LIBRARIES} ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}  EGL gtsam  pthread robovision Qt5::OpenGL Qt5::Widgets ${OpenCV_LIBS})

然后运行命令

./src/bin/visualizer  ~/catkin_rangenet/src/semantic_suma/config/default.xml

不指定semantic_suma/config/default.xml的路径可能找不到产生如下错误:
参考这篇博客:https://blog.csdn.net/weixin_58045467/article/details/126513326

terminate called after throwing an instance of 'rv::XmlError'
  what():  Error while parsing in line 1

并且需要将semantic_suma/config/default.xml中的模型路径修改成自己使用模型路径

  <param name="model_path" type="string">/home/gwz/catkin_rangenet/darknet53</param>

运行结果如图:
在这里插入图片描述
完整CMakeList.txt

cmake_minimum_required(VERSION 3.2.0)

project(semantic_suma)

find_package(OpenGL REQUIRED)
find_package(Qt5Gui REQUIRED) 
find_package(Qt5OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(Boost REQUIRED COMPONENTS filesystem system)
find_package(GTSAM REQUIRED)
find_package(OpenCV REQUIRED)
find_package(catkin COMPONENTS  rangenet_lib)
find_package(Eigen3 REQUIRED)
find_package(X11)



catkin_package(
  INCLUDE_DIRS src
  LIBRARIES suma
  CATKIN_DEPENDS
  glow
    rangenet_lib
  DEPENDS
    Boost
)

include_directories(${catkin_INCLUDE_DIRS})

set(CMAKE_INCLUDE_CURRENT_DIR ON) # needs to be activated for qt generated files in build directory.
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "-std=c++11 -O3  -Wall ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-UDEBUG_GL -UDEBUG -DNDEBUG -g2 ${CMAKE_CXX_FLAGS}")


# since now everything resides in "bin", we have to copy some stuff.
  
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

include_directories(
    ${QT5_INCLUDE_DIRS}
    ${GLEW_INCLUDE_DIRS}
    ${GTSAM_INCLUDE_DIRS}
    /usr/include/eigen3
    ${rangenet_lib_INCLUDE_DIRS}
    ${TENSORRT_INCLUDE_DIRS}
    )
include_directories(src/)
include_directories("/home/gwz/catkin_rangenet/src/glow/include")
include_directories("/usr/include/EGL")


option(ENABLE_NVIDIA_EXT "Enable Nvidia GL capabilites." OFF)
set(OPENGL_VERSION 330 CACHE STRING "Available OpenGL version")

if(ENABLE_NVIDIA_EXT)
  message("Enabling Nvidia OpenGL extensions.")
  add_definitions(-DQUERY_MEMORY_NV)
endif()

add_definitions(-D__GL_VERSION=${OPENGL_VERSION})
message(STATUS "Using OpenGL version ${OPENGL_VERSION}.")
include(/home/gwz/catkin_rangenet/src/glow/cmake/GenCppFile.cmake)
include(/home/gwz/catkin_rangenet/src/glow/cmake/GlowShaderCompilation.cmake)

set(COMP_SHADER_SRC ${CMAKE_BINARY_DIR}/computation_shaders.cpp)
set(VIZ_SHADER_SRC ${CMAKE_BINARY_DIR}/visualization_shaders.cpp)

COMPILE_SHADERS(${COMP_SHADER_SRC}
  src/shader/color.glsl
  src/shader/color_map.glsl
  
  src/shader/empty.vert
  src/shader/empty.frag
  src/shader/quad.geom
  src/shader/quad_inverse.geom
  src/shader/passthrough.frag
  
  src/shader/Frame2Model_jacobians.frag
  src/shader/Frame2Model_jacobians.geom
  src/shader/Frame2Model_jacobians.vert
  
  src/shader/render_surfels.frag
  src/shader/render_surfels.geom
  src/shader/render_surfels.vert
  src/shader/render_compose.frag
  src/shader/update_surfels.vert
  src/shader/update_surfels.geom
  src/shader/update_surfels.frag
  src/shader/extract_surfels.vert
  src/shader/init_radiusConf.vert
  src/shader/init_radiusConf.frag
  src/shader/copy_surfels.vert
  src/shader/copy_surfels.geom
  src/shader/gen_surfels.frag
  src/shader/gen_surfels.geom
  src/shader/gen_surfels.vert
  src/shader/init_depthimg.frag
  src/shader/avg_vertexmap.frag
  src/shader/gen_depthimg.vert
  src/shader/gen_depthimg.frag
  src/shader/gen_normalmap.frag
  src/shader/gen_indexmap.vert
  src/shader/gen_indexmap.frag
  src/shader/bilateral_filter.frag
  src/shader/gen_vertexmap.vert
  src/shader/gen_vertexmap.frag

  src/shader/gen_semanticmap.frag
  src/shader/floodfill.frag
  
  # needed for surfelmap:
  src/shader/draw_surfels.frag
  src/shader/draw_surfels.geom
  src/shader/draw_surfels.vert
  src/shader/draw_surfelPoints.vert
  src/shader/draw_submaps.vert
  src/shader/draw_submaps.geom
  src/shader/coloredvertices.frag
  src/shader/coloredvertices.vert
)

COMPILE_SHADERS(${VIZ_SHADER_SRC} 
  src/shader/draw_normalmap3d.geom
  src/shader/draw_normalmap3d.vert
  src/shader/draw_vertexmap3d.vert
  src/shader/draw_depthimg.frag
  src/shader/draw_normalmap.frag

  src/shader/draw_residuals.frag
  src/shader/draw_mesh.vert
  src/shader/draw_mesh.frag

  
  src/shader/draw_posegraph_edge.geom

  src/shader/laserscan.vert
  src/shader/laserscan.frag

  src/shader/draw_semanticmap.frag
  src/shader/draw_semantic_colormap.frag
)

QT5_WRAP_UI(UI_HDRS src/visualizer/visualizer.ui)

add_library(robovision
  src/rv/CompositeParameter.cpp
  src/rv/FileUtil.cpp
  src/rv/Laserscan.cpp
  src/rv/Math.cpp
  src/rv/Parameter.cpp
  src/rv/ParameterList.cpp
  src/rv/ParameterListIterator.cpp
  src/rv/PrimitiveParameters.cpp
  src/rv/Random.cpp
  src/rv/RangeParameter.cpp
  src/rv/string_utils.cpp
  src/rv/Stopwatch.cpp
  src/rv/transform.cpp
  src/rv/XmlDocument.cpp
  src/rv/XmlNode.cpp
  src/rv/yxml.c
)

add_library(suma
  src/core/SurfelMapping.cpp
  src/core/Preprocessing.cpp
  src/core/Frame2Model.cpp
  src/core/SurfelMap.cpp
  src/core/lie_algebra.cpp
  src/core/LieGaussNewton.cpp
  src/core/Posegraph.cpp
  src/core/ImagePyramidGenerator.cpp
  ${COMP_SHADER_SRC})
 
file(GLOB GLOW_SRC_FILES 
    "/home/gwz/catkin_rangenet/src/glow/src/glow/*.cpp"
    "/home/gwz/catkin_rangenet/src/glow/src/glow/util/*.cpp")


add_executable(visualizer

  src/io/KITTIReader.cpp
  src/io/SimulationReader.cpp
  src/io/RobocarReader.cpp

  # use rangenet
  src/io/RangenetAPI.cpp
  
  src/opengl/Mesh.cpp
  src/opengl/Model.cpp
  src/opengl/ObjReader.cpp

  src/util/kitti_utils.cpp
  src/util/ScanAccumulator.cpp

  ${UI_HDRS}
  ${VIZ_SHADER_SRC}
  ${GLOW_SRC_FILES}

  src/visualizer/GraphWidget.cpp
  src/visualizer/ViewportWidget.cpp
  src/visualizer/VisualizerWindow.cpp
  src/visualizer/visualizer.cpp

 
  )

target_link_libraries(robovision ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} ${rangenet_lib_LIBRARIES} gtsam pthread)
target_link_libraries(suma ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} ${rangenet_lib_LIBRARIES} gtsam pthread robovision)
target_link_libraries(visualizer suma ${X11_LIBRARIES} ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}  EGL gtsam  pthread robovision Qt5::OpenGL Qt5::Widgets ${OpenCV_LIBS})
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值