文章目录

  • 一. 安装依赖
    • 1. package依赖
    • 2. cmake 版本问题
    • 3. eigen 版本问题
    • 4. 安装osqp和osqp-eigen
    • 5. gflags安装
  • 二. 运行结果

参考: LiJiangnanBit/path_optimizer_2

感谢作者贡献的很好的开源项目,记录一下复现过程中的问题

一. 安装依赖

1. package依赖

首先 clone 下来放到 src 中,这两个 package 也需要 clone 下来放到 src 中

  • ros_viz_tools
  • tinyspline_ros

2. cmake 版本问题

需要 3.8 以上的版本,我的电脑是3.5的,需要先卸载,之后安装,参考我的博客:

  • cmake 升级

3. eigen 版本问题

由于通过终端命令行安装的电脑里的 eigen 版本是 3.2.9 不满足要求,编译会报错:

CMake Error at cmake/OsqpEigenDependencies.cmake:12 (find_package):Could not find a configuration file for package "Eigen3" that is compatiblewith requested version "3.2.92".The following configuration files were considered but not accepted:/usr/lib/cmake/eigen3/Eigen3Config.cmake, version: unknownCall Stack (most recent call first):CMakeLists.txt:75 (include)-- Configuring incomplete, errors occurred!
See also "/home/seivl/my_lib/osqp-eigen/build/CMakeFiles/CMakeOutput.log".

先卸载了,再安装高版本的:

  • 卸载 eigen
  • 添加链接描述

卸载:

sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3

安装:从这里下载:eigen 下载

mkdir build
cd build
cmake ..
sudo make
sudo make install

安装在这个目录:

/usr/local/include/eigen3/

要修改到这里:

usr/local/include

执行:

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

4. 安装osqp和osqp-eigen

需要依赖osqp-eigen,又要首先安装osqp,没安装的话也是会编译报错:

seivl@seivl-Default-string:~/my_lib/osqp-eigen/build$ cmake ..
CMake Error at cmake/OsqpEigenDependencies.cmake:13 (find_package):By not providing "Findosqp.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "osqp", butCMake did not find one.Could not find a package configuration file provided by "osqp" with any ofthe following names:osqpConfig.cmakeosqp-config.cmakeAdd the installation prefix of "osqp" to CMAKE_PREFIX_PATH or set"osqp_DIR" to a directory containing one of the above files.  If "osqp"provides a separate development package or SDK, be sure it has beeninstalled.
Call Stack (most recent call first):CMakeLists.txt:75 (include)

它们的安装参考这里,很详细了:

  • osqp和osqp-eigen

5. gflags安装

正常编译会报错:

CMake Error at path_optimizer_2/CMakeLists.txt:27 (find_package):By not providing "Findgflags.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "gflags", butCMake did not find one.Could not find a package configuration file provided by "gflags" with anyof the following names:gflagsConfig.cmakegflags-config.cmakeAdd the installation prefix of "gflags" to CMAKE_PREFIX_PATH or set"gflags_DIR" to a directory containing one of the above files.  If "gflags"provides a separate development package or SDK, be sure it has beeninstalled.-- Configuring incomplete, errors occurred!
See also "/home/seivl/pnc_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/seivl/pnc_ws/build/CMakeFiles/CMakeError.log".
Makefile:870: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1

亲测直接使用终端命令行安装还是会报错,需要自己下载源码安装:

  • gtest 和 gflags 安装使用

编译会遇到以下错误:

[ 92%] Linking CXX shared library /home/seivl/pnc_ws/devel/lib/libpath_optimizer_2.so
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libgflags.a: 无法添加符号: 错误的值
collect2: error: ld returned 1 exit status
path_optimizer_2/CMakeFiles/path_optimizer_2.dir/build.make:412: recipe for target '/home/seivl/pnc_ws/devel/lib/libpath_optimizer_2.so' failed
make[2]: *** [/home/seivl/pnc_ws/devel/lib/libpath_optimizer_2.so] Error 1
CMakeFiles/Makefile2:1633: recipe for target 'path_optimizer_2/CMakeFiles/path_optimizer_2.dir/all' failed
make[1]: *** [path_optimizer_2/CMakeFiles/path_optimizer_2.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

问题解决:

  • 遇到libgflags.a(gflags.cc.o): relocation R_X86_64_32 against `.rodata.str1.1’ ca时
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=google -G "Unix Makefiles" ../
make
sudo make install
sudo ldconfig

二. 运行结果

path_optimizer 复现相关推荐

  1. Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易

    近日,PyTorch 社区发布了一个深度学习工具包 PyTorchHub, 帮助机器学习工作者更快实现重要论文的复现工作.PyTorchHub 由一个预训练模型仓库组成,专门用于提高研究工作的复现性以 ...

  2. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv1详解及复现

    检测器通常能够被分为两类,一类是two-stage检测器,最具代表的为faster R-CNN:另一类是one-stage检测器,包括YOLO,SSD等.一般来说,two-stage检测器具有高定位和 ...

  3. CV算法复现(分类算法2/6):AlexNet(2012年 Hinton组)

    致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 目录 致谢:霹雳吧啦Wz:https://space.bilibili.com/18161609 1 本次要 ...

  4. 【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 复现 EfficientNet 卷积神经网络模型. EfficientNet 的网络结构和 MobileNetV3 比较相似,建议大家在学 ...

  5. 【神经网络】(16) MobileNetV3 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 构建 MobileNetV3 轻量化网络模型. MobileNetV3 做了如下改动(1)更新了V2中的逆转残差结构:(2)使用NAS搜索 ...

  6. 【神经网络】(15) Xception 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 构建 Xception 神经网络模型. 在前面章节中,我已经介绍了很多种轻量化卷积神经网络模型,感兴趣的可以看一下:https://blo ...

  7. 【神经网络】(14) MnasNet 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 复现谷歌轻量化神经网络 MnasNet  通常而言,移动端(手机)和终端(安防监控.无人驾驶)上的设备计算能力有限,无法搭载庞大的神经网络 ...

  8. 【神经网络】(13) ShuffleNetV2 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 复现轻量化神经网络 ShuffleNetV2. 为了能将神经网络模型用于移动端(手机)和终端(安防监控.无人驾驶)的实时计算,通常这些设备 ...

  9. 【神经网络】(11) 轻量化网络MobileNetV1代码复现、解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 复现轻量化神经网络模型 MobileNetV1.为了能将神经网络模型用于移动端(手机)和终端(安防监控.无人驾驶)的实时计算,通常这些设备 ...

最新文章

  1. 打开黑色_表哥出差带回来一箱苹果,打开后发现是黑色的,大家表示都没见过...
  2. 用mysqlbinlog查看row格式的事件
  3. Python笔记-weditor的安装及基本使用
  4. 第七章—JavaScript数组
  5. ShellCode初体验
  6. leetcode-345-Reverse Vowels of a String
  7. 微信iOS版内测暗黑模式;涉嫌恶意举报,社交平台Soul运营合伙人被批捕;AWS推出基于Linux开源操作系统 | 极客头条...
  8. python中List和Tuple的区别
  9. JSP概述--JSP的起源,本质,运行原理
  10. Unity渲染管线,初探SRP
  11. BZOJ-1827 [Usaco2010 Mar]gather 奶牛大集会
  12. ps 图片文字改黑白
  13. CentOS 8 如何更换yum源
  14. 【报告分享】2021年度小红书高效种草营销手册-标记我的生活-小红书(附下载)
  15. android短信发送流程,Android 发送短信程序
  16. YOLOv5 + Tesseract-OCR 实现车牌号文本识别
  17. 【小知识】linux hash命令
  18. word论文计算机,计算机网络专业毕业论文 Microsoft Word 文档.doc
  19. 大数据精准营销之客户细分
  20. fopen函数的type字段

热门文章

  1. 虚幻图文笔记:TravelFailure: ClientTravelFailure, Reason for Failure: ‘Failed to load package ‘问题的解决
  2. 360广告投放是怎么收费的,360信息流推广怎么收费
  3. 51nod 1596搬货物
  4. windows制作docker镜像_电脑技术之Windows系统篇-PE系统的制作及GHO镜像系统恢复
  5. 解决align-items失效,无法居中问题
  6. python入门学习之元祖tuple
  7. unet详解_Unity3D 网络组件UNet详解
  8. Bochs源码分析 - 14:bochs关于实地址模式下IVT表的管理
  9. 实验课排课功能使用说明
  10. 声明类person,该类定义了两个数据成员,一个带参的构造方法,一个具有两个参数的构造方法,一个方法prin()