rpg_svo_pro_open编译指南

存在的坑

  • cmake:报错error: variable templates only available with -std=c++14 or -std=gnu++14 [-Werror]可能需要升级 cmake 版本到 3.21.4
  • pcl-ros:找不到pcl-ros就安装:sudo apt install ros-melodic-pcl-ros
  • opencv:需要指定opencv版本3,在项目Readme Troubleshooting中有介绍
  • Eigen:如果有多个版本Eigen,可能会有冲突;先按Troubleshooting解决,不行就直接将/usr/include中的Eigen拷贝替换/usr/local/include中
  • ssh:ssh克隆不到git项目,将svo_ws/src/rpg_svo_pro_open/dependencies.yaml相关的 git@github.com: 全部替换为https克隆

ARM平台编译

fast-neon包编译问题

armv8平台上编译fast包会存在neon问题,只需要下载 https://github.com/uzh-rpg/fast_neon.git 并checkout到 test/aarch64-compilation 分支即可。

vikit-common问题

vikit也会遇到neon编译选项问题,解决方法:

svo_ws/src/rpg_svo_pro_open/svo_cmake/cmake/Modules/SvoSetup.cmake
修改如下:

SET(CMAKE_BUILD_TYPE Release) # Release, RelWithDebInfo
#SET(CMAKE_BUILD_TYPE Debug) # Release, RelWithDebInfo
SET(CMAKE_VERBOSE_MAKEFILE OFF)

# user build settings
SET(USE_LOOP_CLOSING TRUE)
SET(USE_GLOBAL_MAP TRUE)

# Set definitions
IF(USE_LOOP_CLOSING)
  ADD_DEFINITIONS(-DSVO_LOOP_CLOSING)
ENDIF()

IF(USE_GLOBAL_MAP)
  ADD_DEFINITIONS(-DSVO_GLOBAL_MAP)
ENDIF()

ADD_DEFINITIONS(-DSVO_USE_ROS)
ADD_DEFINITIONS(-DSVO_USE_OPENGV)
ADD_DEFINITIONS(-DSVO_DEPTHFILTER_IN_REPROJECTOR)

#############################################################################
# Set build flags, set ARM_ARCHITECTURE environment variable on Odroid
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wall -Werror -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas -Wno-unused-but-set-parameter -Wno-int-in-bool-context -Wno-maybe-uninitialized -Wno-unused-function")

set(ENV{ARM_ARCHITECTURE} aarch64)

IF(DEFINED ENV{ARM_ARCHITECTURE})
	IF("$ENV{ARM_ARCHITECTURE}" STREQUAL "aarch64")
		SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")
        ELSEIF("$ENV{ARM_ARCHITECTURE}" STREQUAL "armv8")
                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")
	ELSE()
		SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mfpu=neon -march=armv7-a")
	ENDIF()
    ADD_DEFINITIONS(-DHAVE_FAST_NEON)
ELSE()
	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mmmx -msse -msse -msse2 -msse3 -mssse3 -fomit-frame-pointer")
ENDIF()

# IF(DEFINED ENV{ARM_ARCHITECTURE})
#   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a")
#   ADD_DEFINITIONS(-DHAVE_FAST_NEON)
# ELSE()
#   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx -msse -msse2 -msse3 -mssse3 -mno-avx")
# ENDIF()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -fsee -fomit-frame-pointer -fno-signed-zeros -fno-math-errno -funroll-loops -ffast-math -fno-finite-math-only")

如果不用global map记得SET(USE_GLOBAL_MAP FALSE)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值