2019-08-27

编译大型项目记录

基本以下面这种模板形式来记录

1.直接报的错误
2.分析错误原因
3.尝试的解决方法
4.最终解决的方法 
  1. Python.h: 没有那个文件或目录
    RVS python 依赖python3
    sudo apt-get install python3-dev

  2. /usr/include/c++/5/bits/list.tcc:348:20: error: no match for ‘operator<’ (operand types are ‘RVS::Robotics::LieGroup::SO2’ and ‘RVS::Robotics::LieGroup::SO2’)
    可能是需要C++14
    是eigen 出问题了,使用不是我自己在 RVS/install 的eigen ,而是之前install 在系统里面的eigen
    from /usr/include/eigen3/Eigen/
    cmake 寻找路径可能先从user/include, 如何在cmake 里面强制指定eigen路径\

卸载eigen :
sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
安装eigen3.2

  1. error: ‘using MatXd = RVS::Common::Mat {aka class Eigen::Matrix}’ has no member named ‘bdcSvd’

又是eigen 问题,svd 库没有编译,找不到svd
temp solution :
注释掉通过svd分解部分(这个解决方法有点敷衍,但是他们提供了两种方法来求,应该也是有同样的问题)

// dthetalist = jacobian.BDCSVD(Eigen::ComputeThinU | Eigen::ComputeThinV).solve(pose_error);
dthetalist = jacobian.colPivHouseholderQr().solve(pose_error);
MatXd pinvJb = (jacobian.transpose() * jacobian).inverse() * jacobian.transpose();
dthetalist = pinvJb * pose_error;

4. /home/deng/ros/RVS/Source/RVS/Include/RVS/Robotics/RobotController/GenericRobotController.h:13:26: fatal error: ReflexxesAPI.h: 没有那个文件或目录
没有安装RML,直接从github找到的有些问题,按照readme里面的编译不成功,后来是在其他地方找到的源码,但还是有一个问题,原来的CMakeLists里面链接的是libTypeIIRML.a,我在RML编译之后的静态库里面只看到了libReflexxesTypeII.a,并且还需要在rml的makefile 里面修改 g++ ,添加-fPIC 生成地址无关的代码.
TO-DO 以后在fix

5./home/deng/ros/RVS/Source/RVS/Modules/Robotics/Kinematics/OpswKinematics.cpp:225:23: error: ‘isnan’ was not declared in this scope
参考描述

解决:添加作用域,std::isnan()

  1. /home/deng/ros/RVS/Install/FCL/include/fcl/math/constants.h:131:1: error: expected primary-expression before ‘typedef’

出问题的代码:typedef typename detail::ScalarTrait::type Real;
参考链接:
https://github.com/flexible-collision-library/fcl/issues/339

fcl版本问题,ubuntu ros-kinetic安装的fcl与我自己源码安装的版本不一致(detail explainhttps://github.com/flexible-collision-library/fcl/issues/330#issuecomment-426004155``)`

于是我源码安装fcl-0.5 与ros 里面保持一致(后期要是换了新的环境,没有ros 应该就不会有这个问题)

7./home/deng/ros/RVS/Source/RVS/Include/RVS/Robotics/LieGroup/SO2Tangent.h:413:23: error: call of overloaded ‘Matrix(int)’ is ambiguous

初步发现可能是gazebo里面的类型与之冲突
卸载gazebo
解决:
直接注释掉所有 CHECK(t1.Coeffs() == Vec(0));,这个不是解决问题的方法,只是为了能够通过编译
TO-DO

  1. [ 58%] Linking CXX shared module ../../../../Lib/Python/RVS/Robotics/PyRobotics.cpython-35m-x86_64-linux-gnu.so lto-wrapper: fatal error: /usr/bin/c++ returned 1 exit status

编译pybind 链接出现问题,lto-wrapper
尝试关闭,或者换成高版本编译器
未解决


心得

no need to build all project ,is too big ,even if I found solution ,it have no benefit for I learning code ,besides ,if I fast complie all project ,I will not spend time in this project ,this is human’s weakness.

For now I can learn some already build bin , like ompl and SE3.

你可能感兴趣的:(2019-08-27)