Ubuntu下多版本sophus、opencv使用

1. 不安装到ROS下使用Sophus依赖库

在工作空间内建立thirdparty文件夹,并下载Sophus源码到该文件夹下, 如果是sophus-22.04.1等版本需要先下载fmt:
https://github.com/fmtlib/fmt/tree/8.1.1
下载最新版本的,同样下载到thirdparty文件夹下,编译:

cd fmt
mkdir build
cd build
make -j8

修改方法:
1.更改sophus下面的common.h文件,下面的代码:

//#include <fmt/format.h>
//#include <fmt/ostream.h>//更改前
#include </home/test/depend/fmt-8.1.1/include/fmt/format.h>
#include </home/test/depend/fmt-8.1.1/include/fmt/ostream.h>//更改后

2.更改CMakeList.txt文件,加入fmt语句如下:

target_link_libraries(kitti_filtering_node ${catkin_LIBRARIES} ${ALL_TARGET_LIBRARIES} fmt)

2. 不安装到ROS下使用Opencv依赖库

安装r3live时,需要大于3.3版本的opencv,但是电脑里安装的是3.1版本的opencv,又不想重新安装,于是乎选择了以下方法,同样是建立thirdparty,如图:
在这里插入图片描述
下载opencv,哪个版本都行,已经成功过的是3.4.16,然后解压,放到thirdparty里面,按照如下步骤编译:

cd opencv
mkdir build
cd build
make -j8

同样是找到CMakeList.txt文件添加:

set(OpenCV_DIR "/home/test/r3live_ws/src/r3live/r3live/thirdparty/opencv-3.4.16/build")

紧接着去编译r3live即可,编译步骤参照:r3live安装编译及问题解决办法

3. 鱼香ROS一键安装程序包依赖

参照:ros安装(一键最简安装,吹爆鱼香ROS,请叫我鱼吹)
1.改变rosdep参数:

wget http://fishros.com/install -O fishros && . fishros

在这里插入图片描述
执行3就行
进入到程序的工作空间,执行以下命令即可安装所有与ros相关的依赖:

rosdepc install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

3. 第三方库g2o问题

error: ‘G2O_DEFAULT_TYPES_DIR_’ was not declared in this scope
  104 |     typesPath = G2O_DEFAULT_TYPES_DIR_;

在CMakeLists.txt中添加

file(GLOB_RECURSE THIRD_PARTY_SRCS "third_party/*.cpp") 
list(REMOVE_ITEM ALL_SRCS ${THIRD_PARTY_SRCS})

4. 第三方库文件结构建立

4.1文件夹结构

包含一个cmake文件,一个third_party文件
在这里插入图片描述

4.2CMakeLists.txt文件中的关于第三方库

set(ALL_TARGET_LIBRARIES "")

include(cmake/glog.cmake)
include(cmake/YAML.cmake)
include(cmake/geographic.cmake)
include(cmake/protobuf.cmake)
include(cmake/PCL.cmake)
include(cmake/sophus.cmake)
include(cmake/g2o.cmake)
include(cmake/ceres.cmake)

include_directories(include ${catkin_INCLUDE_DIRS})
include(cmake/global_defination.cmake)
catkin_package()

file(GLOB_RECURSE ALL_SRCS "*.cpp")
file(GLOB_RECURSE NODE_SRCS "src/apps/*_node.cpp")
file(GLOB_RECURSE THIRD_PARTY_SRCS "third_party/*.cpp") 
list(REMOVE_ITEM ALL_SRCS ${NODE_SRCS})
list(REMOVE_ITEM ALL_SRCS ${THIRD_PARTY_SRCS})


add_executable(data_pretreat_node src/apps/data_pretreat_node.cpp ${ALL_SRCS})
add_dependencies(data_pretreat_node ${catkin_EXPORTED_TARGETS})
target_link_libraries(data_pretreat_node ${catkin_LIBRARIES} ${ALL_TARGET_LIBRARIES} fmt)

add_executable(lio_matching_node src/apps/lio_matching_node.cpp ${ALL_SRCS})
add_dependencies(lio_matching_node ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(lio_matching_node ${catkin_LIBRARIES} ${ALL_TARGET_LIBRARIES} fmt)

add_executable(sliding_window_node src/apps/sliding_window_node.cpp ${ALL_SRCS})
add_dependencies(sliding_window_node ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(sliding_window_node ${catkin_LIBRARIES} ${ALL_TARGET_LIBRARIES} fmt)

4.3 cmake文件夹的文件

在这里插入图片描述

4.4 third_party文件夹下的文件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47552638/article/details/125193286