【ROS学习】catkin_make 编译的小问题总结

2023-05-16

写在前面

本博客旨在记录一些自己在编译 ROS 包的时候遇到的问题与解决方法

一、package.xml 下编译依赖<build_depend> 标签不全

执行 catkin_make 指令,出现如下报错:

Traceback (most recent call last):
  File "/opt/ros/kinetic/share/genjava/cmake/../../../lib/genjava/genjava_gradle_project.py", line 14, in <module>
    genjava.main(sys.argv)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genjava/genjava_main.py", line 82, in main
    gradle_project.create(args.package, args.output_dir)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/genjava/gradle_project.py", line 152, in create
    raise IOError("could not find %s among message packages. Does the package have a <build_depend> on message_generation in its package.xml?" % msg_pkg_name)
IOError: could not find lidar_localization among message packages. Does the package have a <build_depend> on message_generation in its package.xml?
lidar_localization/CMakeFiles/lidar_localization_generate_messages_java.dir/build.make:62: recipe for target 'lidar_localization/java/lidar_localization/build.gradle' failed
make[2]: *** [lidar_localization/java/lidar_localization/build.gradle] Error 1
CMakeFiles/Makefile2:3378: recipe for target 'lidar_localization/CMakeFiles/lidar_localization_generate_messages_java.dir/all' failed
make[1]: *** [lidar_localization/CMakeFiles/lidar_localization_generate_messages_java.dir/all] Error 2
[ 15%] Built target libGeographiccc
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

在这里插入图片描述
注意报错信息里面的这句话:

could not find %s among message packages. Does the package have a <build_depend> on message_generation in its package.xml

翻译过来就是:

系统没有找到一些package,你确定把他们都放到了 package.xml 中的 <build_depend>  标签下了吗?

所以需要确保 自己的 package.xml 中的 <build_depend> 标签,有对应的 package (一般自定义的msg、srv、action,需要增加 <build_depend>message_generation</build_depend> ,这个容易忘记,自己就是忘记写这句话,才编译报错的…)

二、xxxxxxxx.patch文件找不到

执行 catkin_make 指令,出现如下报错:

  1. glog_catkin文件夹下的fix-unused-typedef-warning.patch文件找不到
/bin/sh: 1: cannot open /home/wong/test_ws/src/fix-unused-typedef-warning.patch: No such file
misc/glog_catkin/CMakeFiles/glog_src.dir/build.make:101: recipe for target 'misc/glog_catkin/glog_src-prefix/src/glog_src-stamp/glog_src-patch' failed
make[2]: *** [misc/glog_catkin/glog_src-prefix/src/glog_src-stamp/glog_src-patch] Error 2
CMakeFiles/Makefile2:531: recipe for target 'misc/glog_catkin/CMakeFiles/glog_src.dir/all' failed
make[1]: *** [misc/glog_catkin/CMakeFiles/glog_src.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

原因是glog_catkin文件夹下的fix-unused-typedef-warning.patch文件找不到,修改CMakeLists.txt文件:
解决方法:

(-) PATCH_COMMAND patch -p0 < ${CMAKE_SOURCE_DIR}/fix-unused-typedef-warning.patch
(+) PATCH_COMMAND patch -p0 < ${PROJECT_SOURCE_DIR}/fix-unused-typedef-warning.patch
  1. yaml_cpp_catkin 文件夹下的 fextra_version.patch文件找不到
/bin/sh: 1: cannot open /home/wong/test_ws/src/extra_version.patch: No such file
misc/yaml_cpp_catkin/CMakeFiles/yaml_cpp_src.dir/build.make:99: recipe for target 'misc/yaml_cpp_catkin/yaml_cpp_src-prefix/src/yaml_cpp_src-stamp/yaml_cpp_src-patch' failed
make[2]: *** [misc/yaml_cpp_catkin/yaml_cpp_src-prefix/src/yaml_cpp_src-stamp/yaml_cpp_src-patch] Error 2
CMakeFiles/Makefile2:6885: recipe for target 'misc/yaml_cpp_catkin/CMakeFiles/yaml_cpp_src.dir/all' failed
make[1]: *** [misc/yaml_cpp_catkin/CMakeFiles/yaml_cpp_src.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

原因是 yaml_cpp_catkin 文件夹下的 fextra_version.patch文件找不到,修改CMakeLists.txt文件:
解决方法:

(-) PATCH_COMMAND patch -p0 < ${CMAKE_SOURCE_DIR}/fix-unused-typedef-warning.patch
(+) PATCH_COMMAND patch -p0 < ${PROJECT_SOURCE_DIR}/fix-unused-typedef-warning.patch

参考链接:https://github.com/MuMuJun97/learning_note/blob/master/markdown%20files/%E6%9C%AA%E5%88%86%E7%B1%BB/ETH%20github%20—%EF%BC%881%EF%BC%89kitti%E6%95%B0%E6%8D%AE%E9%9B%86%E7%82%B9%E4%BA%91ros%E8%BD%AC%E6%8D%A2%E6%A0%BC%E5%BC%8F.md

三、*** No rule to make target …

执行 catkin_make 指令,出现如下报错:

make[2]: *** No rule to make target '/home/wong/test_ws/src/sim/rotors_simulator/rotors_gazebo_plugins/PROTOBUF_PROTOC_EXECUTABLE-NOTFOUND', needed by 'sim/rotors_simulator/rotors_gazebo_plugins/MagneticField.pb.cc'.  Stop.
CMakeFiles/Makefile2:10218: recipe for target 'sim/rotors_simulator/rotors_gazebo_plugins/CMakeFiles/mav_msgs.dir/all' failed
make[1]: *** [sim/rotors_simulator/rotors_gazebo_plugins/CMakeFiles/mav_msgs.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

解决方法:
删除build文件夹里面的 rotors_gazebo_plugins ,然后重新 catkin_make 编译

参考链接:
[1] ROS无人机仿真rotor_simulations配置篇 https://www.it610.com/article/1280133876655603712.htm
[2] makefile报错 : make: No rule to make target https://blog.csdn.net/qq_27474467/article/details/80506882

四、Eigen库 /usr/include/eigen3/Eigen/src/StlSupport/StdVector.h 报错

执行 catkin_make 指令,出现如下报错:

/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:72:9: error: partial specialization of ‘class std::vector<Type, Eigen::aligned_allocator<Type> >’ after instantiation of ‘class std::vector<std::queue<Eigen::Matrix<long int, 3, 1>, std::deque<Eigen::Matrix<long int, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<long int, 3, 1> > > >, Eigen::aligned_allocator<std::queue<Eigen::Matrix<long int, 3, 1>, std::deque<Eigen::Matrix<long int, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<long int, 3, 1> > > > > >[-fpermissive]
   class vector<T,EIGEN_ALIGNED_ALLOCATOR<T> >

解决方法:
在出现错误相关联的文件中添加 #include <Eigen/StdVector>,问题就会消失。

我自己遇到的情况是:
终端打印报错的文件都是在 map_manager_voxblox_impl.h 文件里,所以我在这个文件里添加 #include <Eigen/StdVector> 就成功编译了。

/home/wong/test_ws/src/exploration/mbplanner_ros/planner_common/include/planner_common/map_manager_voxblox_impl.h:97:10: error: ‘Index’ is not a member of ‘Eigen’
     for (Eigen::Index i = 0; i < matrix.size(); ++i) {
          ^
/home/wong/test_ws/src/exploration/mbplanner_ros/planner_common/include/planner_common/map_manager_voxblox_impl.h:97:30: error: ‘i’ was not declared in this scope
     for (Eigen::Index i = 0; i < matrix.size(); ++i) {

参考链接:
[1] ubuntu14.04安装maplab及问题详解 https://blog.csdn.net/snnily/article/details/79038726
[2] DSO_PCL踩坑+CMake+Boost+ROS+PCL+Eigen3 – https://www.jianshu.com/p/da9a859a9a8d

五、error: ‘Index’ is not a member of ‘Eigen’

执行 catkin_make 指令,出现如下报错:

/home/wong/test_ws/src/exploration/mbplanner_ros/planner_common/include/planner_common/map_manager_voxblox_impl.h:99:10: error: ‘Index’ is not a member of ‘Eigen’
     for (Eigen::Index i = 0; i < matrix.size(); ++i) {

报错显示:Index 不是 Eigen 的成员。
(这个自己没有查到,可能是Eigen版本的问题,自己看到 参考链接里面有涉及到 Eigen::IndexEigen::VectorXd::Index,所以就直接改成了Eigen::VectorXd::Index

考虑到自己程序里这部分只是一个 普通的数值类型的 i,所以把程序中的 Eigen::Index 直接换成 Eigen::VectorXd::Index

解决方法:

把程序中的 Eigen::Index 换成 Eigen::VectorXd::Index ,然后重新 catkin_make 编译

参考链接:
[1] Use Eigen::Index instead of Eigen::VectorXd::Index :https://github.com/foobar27/anomaly/commit/7f62c152899eab808f57d8374379c4ea44f1c770

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ROS学习】catkin_make 编译的小问题总结 的相关文章

  • 你的代码放在 GitHub 上,真的安全吗?

    受俄乌冲突的影响 xff0c GitHub 目前正在考虑限制俄罗斯开发人员访问开源代码存储库的可能性 无独有偶 xff0c 早在 2019 年 xff0c GitHub 就曾经因为美国出台贸易制裁国家名单 xff0c 对名单上的国家 地区的
  • ROS进阶学习(一至八)讲

    https blog csdn net weixin 40641902 article list 1 转载自weixin 40641902的博客
  • 如何将Docker升级到最新版本

    CentOS7如何将Docker升级到最新版 如果我们docker的版本比较低的话 xff0c 要怎么才能更新自己docker的版本呢 xff1f 下面是具体的方法 1 查找主机上关于Docker的软件包 rpm qa grep docke
  • 编译Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight

    宾夕法尼亚大学kumar实验室2018年发布 Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight xff0c 基于MSCKF基础上实现双目视觉惯导里程计 刚好这
  • 公网k8s集群搭建史上超详细的教程!!!

    一 背景 xff1a 1 实验背景 x1f9ea 在学习k8s搭建中 xff0c 网上大部分教程都是用虚拟机做单机集群 xff0c 只有极少数是使用服务器搭建教程 xff1b 但是用云服务器搭建的教程中教程版本都比较老 随着时间的推移 xf
  • 【repo/git小技巧】repo sync时报错“The remote end hung up unexpectedly”解决办法

    像往常一样使用repo init gt repo sync 的形式进行代码仓库下载 xff0c 但每次下载repo sync都不能执行成功 xff0c 问题为 The remote end hung up unexpectedly xff0
  • 在 React 中实现记忆以提高性能小技巧

    React 如何渲染 UI 在详细了解 React 中的 memoization 之前 xff0c 让我们先看看 React 如何使用虚拟 DOM 呈现 UI 常规 DOM 基本上包含一组表示为树的节点 DOM 中的每个节点都是 UI 元素
  • 《Linux内核设计与实现》读书总结

    Linux内核设计与实现 进程管理 进程 xff1a 处于执行器的程序 xff0c 包含代码段 xff0c 打开的文件 xff0c 信号 xff0c 内核内部数据 xff0c 内存地址空间 xff0c 多个线程 xff0c 存放全局变量的数
  • python无报错但是主函数没有执行

    python无报错但是主函数没有执行 是不是遇到过python没有报错 xff0c 但是主函数没有执行 xff0c 完全没有结果的情况 遇到这种情况很有可能就是你没有添加if name 61 61 main 这个东西 xff0c 或者格式不
  • 2018.2.2PHPstrom破解版

    作者 xff1a 聽 雨 来源 xff1a CSDN 原文 xff1a https blog csdn net qq 39439751 article details 82758330 版权声明 xff1a 本文为博主原创文章 xff0c
  • python3中 print不加括号报错!

    python 3和python 2的print是有区别 xff0c python3需要加括号 xff0c 但python2不需要 span class token operator gt gt span span class token o
  • leetcode 772 基本计算器3 双栈解析表达式 单调栈

    此题是比较难的一个题 xff0c 不能简单的用递归来做 假设我们已经能把数字分离出来 xff0c 并且解决了其他无关细节 此时我们要考虑 xff0c 如何处理括号和运算优先级 此题最强的一点是 xff0c 当你看到一个符号时 xff0c 你
  • 自然场景OCR检测(YOLOv3+CRNN)

    自然场景OCR检测 YOLOv3 43 CRNN xff08 中文 43 英文模型 xff09 前言 最近对于自然场景下的OCR比较有兴趣 xff0c 所以总结了一些目前OCR现状 xff0c 并且找了一个自然场景OCR的项目练练手 本人新
  • Tx2刷机及安装Jetpack4.5教程

    描述 xff1a 由于项目需要在工控机上运行目标检测程序 xff0c 所需配置需要包括Cuda OpenCV等软件配置 目前Nvidia已经将cuda opencv等相关用于图像处理 深度学习 计算机视觉所需的软件及文件集成到Jetpack
  • ROS gazebo 模型加载报错

    我的ros装的是ros kinetic desktop full版本 xff0c 所以不用另装gazebo 但是用命令 roscore rosrun gazebo ros gazebo 启动后 xff0c 出现如下错误 xff1a Erro
  • excel对比两边数据去重

    需求 筛选重复数据 xff0c A列是1000条数据 xff0c C列是100条数据 xff0c 删除重复的数据 xff0c 只剩900条 首先 xff0c A列数据要分列 xff0c 因为数据格式不一样 xff0c 会导致后面的问题 xf
  • GVIM的配置/使用

    关于GVIM的配置 使用 以我个人喜好配置 配置文件在用户目录下的 vimrc里 配置完后 xff0c 保存并bash一下即可 一 配置 xff1a 根据自己的喜好配置了一点点 colorscheme darkblue span class
  • 小白科研笔记:简析PointRCNN的基于Bin的误差机制

    1 前言 PointRCNN是一篇做3D目标检测的CVPR2019的文章 目前位居KITTI目标检测榜首的是PV RCNN 这个算法的前身就是PointRCNN 它们的作者都是同一个人 考虑到PV RCNN算法有些复杂 xff0c 于是我想
  • ROS基础:获取全局与局部launch Parameter

    在launch 参数配置中 xff0c 分为有全局参数和局部参数 私有参数 xff0c 两者参数的获取是不同的 xff0c 参数示例如下 xff1a lt launch gt lt 全局参数 gt lt param name 61 34 p
  • Redis分布式锁系列

    1 压力测试出的内存泄漏及解决 xff08 可跳过 xff09 使用jmeter对查询产品分类列表接口进行压力测试 xff0c 出现了堆外内存溢出异常 我们设置的虚拟机堆内存100m xff0c 并不是堆外内存100m 产生堆外内存溢出 x

随机推荐