프로그램 사용/ros2025. 5. 22. 00:13

다시 제대로 된(?) 녀석을 받고

[링크 : https://github.com/krepa098/kinect2_ros2]

어떻게 설치해서 빌드하는데

$ colcon build

 

kinect2_calibration에서 에러가 발생한다.

Starting >>> kinect2_calibration
--- stderr: kinect2_calibration                              
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:37:10: fatal error: cv_bridge/cv_bridge.h: No such file or directory
   37 | #include "cv_bridge/cv_bridge.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

 

이리저리 찾아보다가 안되서 cv_bridge로 검색하니 include에 있는데.. 어? h가 아니라 hpp?

/opt/ros/jazzy/include/cv_bridge/cv_bridge$ ls -al
total 52
drwxr-xr-x 2 root root  4096 May 17 22:02 .
drwxr-xr-x 3 root root  4096 May 17 22:02 ..
-rw-r--r-- 1 root root  1079 Apr 30 09:03 cv_bridge_export.h
-rw-r--r-- 1 root root 12336 Jun 25  2024 cv_bridge.hpp
-rw-r--r-- 1 root root  9541 Jun 25  2024 cv_mat_sensor_msgs_image_type_adapter.hpp
-rw-r--r-- 1 root root  4160 Jun 25  2024 rgb_colors.hpp
-rw-r--r-- 1 root root  1814 Jun 25  2024 visibility_control.h

 

그래서 cv_bridge.h를 cv_bridge.hpp 로 바꾸어주고

$ git diff
diff --git a/kinect2_calibration/src/kinect2_calibration.cpp b/kinect2_calibration/src/kinect2_calibration.cpp
index 8e90a54..f4ce85c 100644
--- a/kinect2_calibration/src/kinect2_calibration.cpp
+++ b/kinect2_calibration/src/kinect2_calibration.cpp
@@ -34,7 +34,7 @@
 #include "sensor_msgs/msg/camera_info.hpp"
 #include "sensor_msgs/msg/image.hpp"
 
-#include "cv_bridge/cv_bridge.h"
+#include "cv_bridge/cv_bridge.hpp"
 
 #include "image_transport/image_transport.hpp"
 #include "image_transport/subscriber_filter.hpp"

 

빌드하니 성공!

$ colcon build
Starting >>> kinect2_registration
Finished <<< kinect2_registration [0.17s]                
Starting >>> kinect2_bridge
Finished <<< kinect2_bridge [0.15s]                  
Starting >>> kinect2_calibration
--- stderr: kinect2_calibration                                
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:195: warning: ignoring ‘#pragma omp parallel’ [-Wunknown-pragmas]
  195 | #pragma omp parallel for
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:658: warning: ignoring ‘#pragma omp parallel’ [-Wunknown-pragmas]
  658 | #pragma omp parallel for
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:663: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
  663 | #pragma omp critical
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:669: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
  669 | #pragma omp critical
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:1162: warning: ignoring ‘#pragma omp parallel’ [-Wunknown-pragmas]
 1162 | #pragma omp parallel for
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:1167: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
 1167 | #pragma omp critical
      | 
/home/minimonk/src/kinect2_ros2/kinect2_calibration/src/kinect2_calibration.cpp:1173: warning: ignoring ‘#pragma omp critical’ [-Wunknown-pragmas]
 1173 | #pragma omp critical
      | 
---
Finished <<< kinect2_calibration [12.1s]

Summary: 3 packages finished [12.5s]
  1 package had stderr output: kinect2_calibration

[링크 : https://docs.ros.org/en/jade/api/cv_bridge/html/c++/cv__bridge_8h_source.html]

    [링크 : https://docs.ros.org/en/jade/api/cv_bridge/html/c++/cv__bridge_8h.html]

 

그래서 뭔가를 실행하려고 하니 에러가 나서

~/src/kinect2_ros2/install$ source setup.bash
~/src/kinect2_ros2/install$ ros2 launch kinect2_bridge rtabmap.launch.py

 

패키지 잔뜩 깔아주니

$ sudo apt-get install ros-jazzy-rtabmap-odom
$ sudo apt-get install ros-jazzy-rtabmap-slam
$ sudo apt-get install ros-jazzy-rtabmap-viz

 

실행에 성공. 키넥트는 나중에 붙여서 slam 되나 봐야겠다.

---

 

이것저것 해보는데 되는게 없다.

ament_target_dependencies(${PROJECT_NAME} cv_bridge)

[링크 : https://www.reddit.com/r/ROS/comments/1f8bupf/cv_bridgeh_not_found_ros2/]

 

Something like this usually works for me:

ament_target_dependencies(synchronize_wo cv_bridge)
When using ament_target_dependencies you should not have to explicitly list the include and library files. Also not when you use target_link_libraries(synchronize_wo cv_bridge::cv_bridge)

[링크 : https://robotics.stackexchange.com/questions/112861/cv-bridge-h-not-found-ros2]

 

sudo apt-get install ros-dashing-cv-bridge

[링크 : https://answers.ros.org/question/308043/]

 

sudo apt-get install ros-kinetic-cv-bridge

[링크 : https://docs.ros.org/en/rolling/Releases/Release-Rolling-Ridley.html]

'프로그램 사용 > ros' 카테고리의 다른 글

ros2 with kinect v2 시도... 3회차  (0) 2025.05.22
ros2 with kinect v2 일단 실패  (0) 2025.05.21
ros2 uses concol  (0) 2025.05.20
ros 2 install on ubuntu 24.04, rviz  (2) 2025.05.17
ros...?  (0) 2025.04.08
Posted by 구차니