问题介绍

博主的环境是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.https://github.com/chenshuxiao/azure-kinect-driver-ros2-humble/tree/main显示以下报错:

lu-linux:~/ros2_ws$ colcon build

Starting >>> azure_kinect_ros2

Starting >>> azure_kinect_ros_driver

Starting >>> octomap_depth_mapping

Finished <<< azure_kinect_ros2 [1.13s]

Finished <<< octomap_depth_mapping [1.01s]

--- stderr: azure_kinect_ros_driver

Finding K4A SDK binaries

!!! Body Tracking SDK not found: body tracking features will not be available !!!

K4A Libs: k4a::k4a;k4a::k4arecord

K4A DLLs: /usr/lib/x86_64-linux-gnu/libk4a.so.1.4.1;/usr/lib/x86_64-linux-gnu/libk4arecord.so.1.4.1

K4A Install Needed: FALSE

/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: 没有那个文件或目录

18 | #include

| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

compilation terminated.

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

make[2]: *** 正在等待未完成的任务....

make[1]: *** [CMakeFiles/Makefile2:78:CMakeFiles/azure_kinect_ros_driver_node.dir/all] 错误 2

make: *** [Makefile:141:all] 错误 2

---

Failed <<< azure_kinect_ros_driver [6.70s, exited with code 2]

Summary: 2 packages finished [8.88s]

1 package failed: azure_kinect_ros_driver

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

改成

#include

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

tips:

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

find_package(tf2_geometry_msgs REQUIRED)

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

后记:

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

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

变成

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

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: