问题介绍
博主的环境是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这两个字母的差别卡半天,这个确实不应该。还是习惯不好,每次找不到文件,下载之后的确认存在的方式都是网上说的那些命令。以后这种具体文件找不到,调用命令确实存在的情况,解决步骤要从
找不到具体文件-命令确认-下载-命令确认-再次尝试
变成
找不到具体文件-亲自查看目录-命令确认-下载-亲自查看目录-命令确认-再次尝试
文章来源
发表评论