当前位置:   article > 正文

[解决报错]编译ros项目时显示:fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: 没有那个文件或目录

fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: 没有那个文件或目录

问题介绍

博主的环境是ubuntu20.04,ros2-foxy

在编译ros2项目时(具体是这个),GitHub - chenshuxiao/azure-kinect-driver-ros2-humble: Azure Kinect driver for ROS2 HumbleAzure Kinect driver for ROS2 Humble. Contribute to chenshuxiao/azure-kinect-driver-ros2-humble development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/chenshuxiao/azure-kinect-driver-ros2-humble/tree/main显示以下报错:

  1. lu-linux:~/ros2_ws$ colcon build
  2. Starting >>> azure_kinect_ros2
  3. Starting >>> azure_kinect_ros_driver
  4. Starting >>> octomap_depth_mapping
  5. Finished <<< azure_kinect_ros2 [1.13s]
  6. Finished <<< octomap_depth_mapping [1.01s]
  7. --- stderr: azure_kinect_ros_driver
  8. Finding K4A SDK binaries
  9. !!! Body Tracking SDK not found: body tracking features will not be available !!!
  10. K4A Libs: k4a::k4a;k4a::k4arecord
  11. K4A DLLs: /usr/lib/x86_64-linux-gnu/libk4a.so.1.4.1;/usr/lib/x86_64-linux-gnu/libk4arecord.so.1.4.1
  12. K4A Install Needed: FALSE
  13. /home/lu/ros2_ws/src/azure-kinect-driver-ros2-humble/src/k4a_calibration_transform_data.cpp:18:10: fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: 没有那个文件或目录
  14. 18 | #include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
  15. | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  16. compilation terminated.
  17. make[2]: *** [CMakeFiles/azure_kinect_ros_driver_node.dir/build.make:102:CMakeFiles/azure_kinect_ros_driver_node.dir/src/k4a_calibration_transform_data.cpp.o] 错误 1
  18. make[2]: *** 正在等待未完成的任务....
  19. make[1]: *** [CMakeFiles/Makefile2:78:CMakeFiles/azure_kinect_ros_driver_node.dir/all] 错误 2
  20. make: *** [Makefile:141:all] 错误 2
  21. ---
  22. Failed <<< azure_kinect_ros_driver [6.70s, exited with code 2]
  23. Summary: 2 packages finished [8.88s]
  24. 1 package failed: azure_kinect_ros_driver
  25. 1 package had stderr output: azure_kinect_ros_driver

这个的意思就是具体的节点文件ros2_ws/src/azure-kinect-driver-ros2-humble/src/k4a_calibration_transform_data.cpp中include头文件的时候找不到相关文件
tf2_geometry_msgs.hpp

问题解决:


对于tf2_geometry_msgs这个库,可能是因为下载ros2及其环境的时候没有一并下载tf2_geometry_msgs这个相关库,这时候就可以用apt下载,注意把xxx换成自己的ros版本

sudo apt-get install ros-xxx-tf2-geometry-msgs

下载之后咱们直接去目录看一下tf2_geometry_msgs.hpp是否生成,这是我的目录,除了ros版本不一样以外应该都是一样的

/opt/ros/foxy/include

重点来了,我的是.h不是.hpp,但是这两个后缀功能上是一样的。

如果有的话就可以去把报错的节点文件k4a_calibration_transform_data.cpp中的

#include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>

改成

#include <tf2_geometry_msgs/tf2_geometry_msgs.h>

再按照教程编译,问题解决

tips:

如果还是显示找不到,那在编译项目中的CMakeLists.txt添加

find_package(tf2_geometry_msgs REQUIRED)

这就是找不到tf2_geometry_msgs的解决方案。

后记:

没想到会被h和hpp这两个字母的差别卡半天,这个确实不应该。还是习惯不好,每次找不到文件,下载之后的确认存在的方式都是网上说的那些命令。以后这种具体文件找不到,调用命令确实存在的情况,解决步骤要从

找不到具体文件-命令确认-下载-命令确认-再次尝试

变成

找不到具体文件-亲自查看目录-命令确认-下载-亲自查看目录-命令确认-再次尝试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/51108
推荐阅读
相关标签
  

闽ICP备14008679号