4

阿木币

0

精华

3 小时

在线时间

应届白菜

Rank: 1

发表于 2024-10-8 15:31:04 1213 浏览 1 回复

[新手上路] 复现避障功能时出现问题

prometheus问答
提问前请先确定以下问题::
第一步:问题BUG描述: 复现避障功能时出现问题
运行catkin_make --source Modules/ego_planner_swarm --build build/ego_planner_swarm

之后出现Invoking "make -j16 -l16" failed
报错
第二步:PX4版本是否为Prometheus_PX4_V1.11.1分支?: 否 其他PX4版本
第三步:测试prometheus_px4是否正常: 正常
第四步:Prometheus版本是否为最新master?: 是master版本
第五步:测试Prometheus是否正常: 正常
本帖最后由 wf123 于 2024-10-8 18:14 编辑

复现避障功能时出现问题在执行catkin_make --source Modules/ego_planner_swarm --build build/ego_planner_swarm的时候出现了这个错误
Consolidate compiler generated dependencies of target drone_detect
[ 18%] Building CXX object traj_utils/CMakeFiles/traj_utils.dir/src/polynomial_traj.cpp.o
[ 18%] Built target _traj_utils_generate_messages_check_deps_Bspline
[ 18%] Built target _traj_utils_generate_messages_check_deps_MultiBsplines
[ 18%] Built target _traj_utils_generate_messages_check_deps_DataDisp
[ 24%] Built target drone_detect
[ 32%] Built target traj_utils_generate_messages_py
[ 41%] Built target traj_utils_generate_messages_cpp
[ 45%] Built target traj_utils_generate_messages_eus
[ 50%] Built target traj_utils_generate_messages_lisp
[ 56%] Built target traj_utils_generate_messages_nodejs
[ 56%] Built target traj_utils_generate_messages
In file included from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h: In member function ‘double PolynomialTraj::getJerk()’:
/home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:238:94: error: no match for ‘operator=’ (operand types are ‘Eigen::internal::enable_if<true, Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double> >::type’ {aka ‘Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>’} and ‘double’)
  238 |               i * (i - 1) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);
      |                                                                                              ^
In file included from /usr/include/eigen3/Eigen/Core:19,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /usr/include/eigen3/Eigen/Eigen:1,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:4,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/usr/include/eigen3/Eigen/src/Core/IndexedView.h:114:3: note: candidate: ‘Eigen::IndexedView<XprType, RowIndices, ColIndices>& Eigen::IndexedView<XprType, RowIndices, ColIndices>::operator=(const Eigen::IndexedView<XprType, RowIndices, ColIndices>&) [with XprType = Eigen::Matrix<double, -1, -1>; RowIndices = double; ColIndices = double]’
  114 |   EIGEN_INHERIT_ASSIGNMENT_OPERATORS(IndexedView)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/IndexedView.h:114:3: note:   no known conversion for argument 1 from ‘double’ to ‘const Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>&’
  114 |   EIGEN_INHERIT_ASSIGNMENT_OPERATORS(IndexedView)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/eigen3/Eigen/Core:273,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /usr/include/eigen3/Eigen/Eigen:1,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:4,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:154:14: note: candidate: ‘template<class OtherDerived> Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived>&) [with OtherDerived = OtherDerived; Derived = Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>]’
  154 |     Derived& operator=(const ReturnByValue<OtherDerived>& other);
      |              ^~~~~~~~
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:154:14: note:   template argument deduction/substitution failed:
In file included from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:238:94: note:   mismatched types ‘const Eigen::ReturnByValue<Derived>’ and ‘double’
  238 |               i * (i - 1) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);
      |                                                                                              ^
In file included from /usr/include/eigen3/Eigen/Core:273,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /usr/include/eigen3/Eigen/Eigen:1,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:4,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:150:14: note: candidate: ‘template<class OtherDerived> Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::EigenBase<OtherDerived>&) [with OtherDerived = OtherDerived; Derived = Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>]’
  150 |     Derived& operator=(const EigenBase<OtherDerived>& other);
      |              ^~~~~~~~
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:150:14: note:   template argument deduction/substitution failed:
In file included from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:238:94: note:   mismatched types ‘const Eigen::EigenBase<Derived>’ and ‘double’
  238 |               i * (i - 1) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);
      |                                                                                              ^
In file included from /usr/include/eigen3/Eigen/Core:273,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /usr/include/eigen3/Eigen/Eigen:1,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:4,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:146:14: note: candidate: ‘template<class OtherDerived> Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = OtherDerived; Derived = Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>]’
  146 |     Derived& operator=(const DenseBase<OtherDerived>& other);
      |              ^~~~~~~~
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:146:14: note:   template argument deduction/substitution failed:
In file included from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:238:94: note:   mismatched types ‘const Eigen::DenseBase<Derived>’ and ‘double’
  238 |               i * (i - 1) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);
      |                                                                                              ^
In file included from /usr/include/eigen3/Eigen/Core:282,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /usr/include/eigen3/Eigen/Eigen:1,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/include/traj_utils/polynomial_traj.h:4,
                 from /home/lenovo/Prometheus/Modules/ego_planner_swarm/traj_utils/src/polynomial_traj.cpp:2:
/usr/include/eigen3/Eigen/src/Core/Assign.h:55:30: note: candidate: ‘Derived& Eigen::MatrixBase<Derived>::operator=(const Eigen::MatrixBase<Derived>&) [with Derived = Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>]’
   55 | EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
      |                              ^~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/Assign.h:55:79: note:   no known conversion for argument 1 from ‘double’ to ‘const Eigen::MatrixBase<Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double> >&’
   55 | EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
      |                                                             ~~~~~~~~~~~~~~~~~~^~~~~
make[2]: *** [traj_utils/CMakeFiles/traj_utils.dir/build.make:90:traj_utils/CMakeFiles/traj_utils.dir/src/polynomial_traj.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2482:traj_utils/CMakeFiles/traj_utils.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
[ 58%] Linking CXX shared library /home/lenovo/Prometheus/devel/lib/libpath_searching.so
[ 58%] Built target path_searching
make: *** [Makefile:146:all] 错误 2
Invoking "make -j16 -l16" failed


这个问题该怎么解决
我知道答案 回答被采纳将会获得 已有1人回答

扫一扫浏览分享
回复

使用道具 举报

9

阿木币

0

精华

2 小时

在线时间

应届白菜

Rank: 1

发表于 2024-10-16 10:11:17
本帖最后由 why_123 于 2024-10-16 10:14 编辑

这个需要排查Egien库的版本,默认需要Egien3.3.7
查询方法如下图:
eigen库版本查询.png
Egien3.3.7下载地址:
wget https://gitlab.com/libeigen/eige ... /eigen-3.3.7.tar.gz
安装方式请参考这篇帖子:
https://zhuanlan.zhihu.com/p/592334705
还有一种解决方式(不推荐):
直接将前面for循环中的double改为int,这样也可以通过编译

回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表