embedded/ROS

5. ROS & opencv (cv_bridge) 실시간 스트리밍...실패

crab. 2021. 9. 1. 08:19

처음에는 이 부분을 진행할 때 전의 과정들에서 순조롭게 진행되어 약간 방심하고 있었을지도 모르겠다..

cd ~/catkin_ws/src
catkin_create_pkg camera_test roscpp cv_bridge

로 의존성등록을 한다. (c++사용을 위한 roscpp, ROS와 opencv사이의 다리 역할인 cv_bridge를 추가한다.)

roscd camera_test/src
[편집기] video.cpp

그 후 코드를 넣어주는데 전에 학원에서 해서 익숙한 opencv의 c언어 버전이다.

#include <ros/ros.h>
#include <opencv2/opencv.hpp>
#include <cv_bridge/cv_bridge.h>
#include <iostream>

int main (int argc, char** argv){
	ros::init(argc, argv, "cv_bridge_test");
	
	cv::VideoCapture cap(0);	
	cv::Mat frame;
	
	if(cap.isOpened()){
		while(1){
			cap >> frame;
			
			cv::imshow("streaming video", frame);
			if(cv::waitKey(1) == 27) break;	
		}
	}
	
	else{
		std::cout << "NO FRAME, CHECK YOUR CAMERA!" << std::endl;
	}	
	
	cv::destroyAllWindows();
	
	return 0;
}

그다음 전 폴더로 이동해 XML과 CMAKE파일을 작성해준다.

cd ..

CMakeList.txt는 순서대로 작성해야 하며 저기 나와 있는 내용들 외에 다른 내용들은 건드리지 말고 겹치면 유동적으로 스킵하되 반드시 저기 있는 내용들은 순서대로 다 있어야 한다.

 

package.xml은 건드릴 게 없다.

 

다음 우리는 전에. bashrc에 cm 단축어를 alias 등록해 놨으므로 cm으로 make 하면 된다.

cm

여기서 첫 번째 에러가 뜨는데 다행히도 참고사이트에 이 오류에 관한 내용이 있었다.

 

cv_bridge에러인데 우선 ros-${ROS_VERSION}-cv-brdige패키지가 제대로 설치되었는지 확인한다.

${ROS_VERSION} 자리에 본인의 ROS 버전을 입력하자.
sudo apt install ros-melodic-cv-bridge

 그다음에도 아마 cv_bridge가 어딨는지 모르겠다는 에러가 뜰 텐데 그러면 opencv의 위치를 찾는다.

두번째 오류

내가 설치한 opencv는 4 버전임을 알 수 있고, --cflags 명령어로 /usr/include 디렉터리에 opencv4가 있음을 알 수 있다.

이 디렉터리 위치를 /opt/ros/melodic/opt/ros/melodic/share/cv_bridge/cmake 에 있는 cv_bridgeConfig.cmake 에 입력해줘야 에러를 해결할 수 있다.(출처:https://95mkr.tistory.com/entry/ROS6?category=746766)

cd /opt/ros/melodic/share/cv_bridge/cmake
sudo gedit cv_bridgeConfig.cmake

이후 편집기를 열어 cv_bridgeConfig.cmake 파일을 수정한다.

여기서 나는 해결이 되었는데 혹시 더 오류가 난다면 

sudo ln -s /usr/include/opencv4 /usr/include/opencv
sudo ldconfig

를 통해 심볼릭 링크를 만들어 주면 된다.(심볼릭 링크를 쉽게 설명하면 바로가기라 하는데 나중에 심화학습이 필요하다.)

 

이제 새 터미널을 두 개 열어 각각 코드를 실행하면 끝이다.

roscore

rosrun camera_test cv_bridge_test

다시는 보고싶지 않은 화면.jpg

이제 시작이다...

'embedded > ROS' 카테고리의 다른 글

7. GAZEBO  (0) 2021.09.03
6. ROS & opencv (cv_bridge) 실시간 스트리밍...성공!  (1) 2021.09.01
4. pub & sub 메시지 통신  (0) 2021.08.31
3. ROS 설치완료  (0) 2021.08.31
2. ROS-Melodic 설치  (0) 2021.08.30