SUAM++配置运行

源码地址

源码链接:git clone https://github.com/PRBonn/semantic_suma.git

电脑配置

Ubuntu 18.04 + ROS Melodic + GTSAM 4.0.2 + CERES 1.14.0
pcl1.8+vtk8.2.0+opencv3.2.0

环境配置

之前已经配置过TensorRT的环境(8.0.0.3)
检查TensorRT是否安装成功:参考链接
安装GLEW:sudo apt install libglew-dev

安装rangenet_lib

 cd ~/catkin_ws5/src
git clone https://github.com/ros/catkin.git 
git clone https://github.com/vincenzo0603/rangenet_lib_forTensorRT8XX.git
cd .. && catkin init
catkin build rangenet_lib

检查rangenet_lib是否安装成功:参考链接

安装SUMA++

 cd ~/catkin_ws5/src
git clone https://github.com/PRBonn/semantic_suma.git
git clone https://github.com/jbehley/glow.git

检查版本

glxinfo | grep "version"

在这里插入图片描述
#显示是4.6.0,所以命令中用460;如果不清楚可以用默认的330

cd ~/catkin_ws5
catkin build --save-config -i --cmake-args -DCMAKE_BUILD_TYPE=Release -DOPENGL_VERSION=460 -DENABLE_NVIDIA_EXT=YES

编译SUMA++

参考链接:https://blog.csdn.net/weixin_42705347/article/details/136219565
1.报错:

Unknown CMake command “COMPILE_SHADERS”

解决方法:
CMakeList.txt中添加(克隆的glow的路径)

 include(/home/me/catkin_ws5/src/glow/cmake/GenCppFile.cmake)
 include(/home/me/catkin_ws5/src/glow/cmake/GlowShaderCompilation.cmake) 

2.报错:
未定义引用

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

解决方法:CMakeList.txt中添加GEL
1)查看 ldconfig -p | grep libEGL
在这里插入图片描述根据libEGL的位置在.bashrc中添加

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

2)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)
find_library(EGL_LIBRARY NAMES EGL HINTS /usr/lib/x86_64-linux-gnu)


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

include_directories(${catkin_INCLUDE_DIRS} /usr/include)

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/nssc/catkin_ws5/src/glow/include")

link_directories(/usr/lib/x86_64-linux-gnu)
# pkg_check_modules(EGL REQUIRED 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/nssc/catkin_ws5/src/glow/cmake/GenCppFile.cmake)
include(/home/nssc/catkin_ws5/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/nssc/catkin_ws5/src/glow/src/glow/*.cpp"
    "/home/nssc/catkin_ws5/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_LIBRARY} gtsam  pthread robovision Qt5::OpenGL Qt5::Widgets ${OpenCV_LIBS})

3.报错:

return 1

类不能有返回值,直接注释掉

运行-KITTI数据集

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

  <param name="model_path" type="string">/home/me/data/darknet53</param>

运行命令:

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

在这里插入图片描述左上角打开下载的KITTI数据集中的.bin文件,点击左下角开始按钮,即可开始
在这里插入图片描述鼠标左键用来前后移动,右键翻转,长按滚轮鼠标向界面上滑动可提高观看视角

运行结果

在这里插入图片描述

保存pose:
左上角File->save pose
报错:Unknown name for calibration matrix.
在这里插入图片描述
将每个序列对应的calib.txt文件放到相应的位置即可

参考链接:
1.https://blog.csdn.net/weixin_46118817/article/details/125194792?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-125194792-blog-137207324.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-125194792-blog-137207324.235%5Ev43%5Econtrol&utm_relevant_index=1
2.https://blog.csdn.net/Parkerfive/article/details/129060845?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-129060845-blog-136219565.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-129060845-blog-136219565.235%5Ev43%5Econtrol&utm_relevant_index=6
3.https://blog.csdn.net/weixin_46118817/article/details/125194792?ops_request_misc=&request_id=&biz_id=102&utm_term=suma&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-125194792.142%5Ev73%5Einsert_down2,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&spm=1018.2226.3001.4187
4.https://blog.csdn.net/weixin_58045467/article/details/126513326

相关推荐

  1. django运行配置

    2024-07-19 11:16:03       27 阅读
  2. 在realsense D455相机上运行orb_slam3

    2024-07-19 11:16:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 11:16:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 11:16:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 11:16:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 11:16:03       69 阅读

热门阅读

  1. codeforces round 941div2(a,b,c)

    2024-07-19 11:16:03       21 阅读
  2. C++中传递指针和传递引用应用场合的区别

    2024-07-19 11:16:03       15 阅读
  3. Vue项目的构建方式

    2024-07-19 11:16:03       22 阅读
  4. 【算法】数组中的第K个最大元素

    2024-07-19 11:16:03       22 阅读
  5. AI一点通:向量数据库FAISS 平均延迟的测量

    2024-07-19 11:16:03       21 阅读
  6. Jenkins及其相关插件的具体流程

    2024-07-19 11:16:03       24 阅读
  7. 字母的大小写转换

    2024-07-19 11:16:03       19 阅读
  8. 第13章 专业英语

    2024-07-19 11:16:03       20 阅读
  9. 重置Kafka

    2024-07-19 11:16:03       17 阅读