본문 바로가기

Robot/Robot Program - ROS

[R2R] 1-7 HSV 색 체계를 이용한 채도, 명도 조절 패키지 사용해보기 - 실습

본 글은 제가 직접 쓴 글이 아니라, 저희 PinkLAB의 유투브 채널의 공개 강의 영상들을 읽고, 따라한 한 수강생의 글을 제 블로그에 공유한 내용입니다.

https://www.youtube.com/watch?v=7_KSuOtNxes

 

안녕하세요! 

오늘은  [ HSV 색 체계를 이용한 채도, 명도 조절 패키지 사용해보기 - 실습 ] 을 주제로 공부 해 봤어요. 

 

지금 현재, 우리는 R2R 실전편에서 OpenCV 부분을 하고있어요.

지난 시간에는 HSV converter 라는 걸 만들었는데요,

이번 시간 수업은 그걸 실제로 보게 되는 시간이에요. ( 두구두구 ㅋ_ㅋ )

구글 창에서 " pinkwink github opencv tutorials for ros2 " 검색 하면 바로 떠요! 

repositories 로 가서요, opencv_tutorials_for_ROS2 여기로 가면 돼요.

 

branch 가 없기때문에 상단의 주소 창을 클릭해서 그대로 복사 해도 되구요,

💚초록 박스의 <>code 클릭 해서 복사 클릭 하셔도 된답니다!

 

강사님께서는 이미 테스트 하시느라 만들어 두셨는데요, 그래서 지우고 다시 실행 하는 과정을 보여주셨어요. 

지우는 명령어까지 같이 봐요! 

sudo rm -r my_opencv_tutorials

폴더를 통으로 지우고, 

ls 해서 폴더가 없는 걸 확인하고, 

mkdir -p ~/my_opencv_tutorials/src

홈에( ~/ ) my_opencv_tutorials/src 폴더를 새로 만들게요,

그리고 ( cd ) src 폴더까지 가서,

git clone + 주소를 < ctrl + shift + v > !

아까 복사 해 둔 깃허브 주소예요. 

그렇게 클론을 받았구요, 

이제 ls 해 보시면 clone 한 결과로 opencv_tutorials_for_ROS2 가 뜨구요, 

현재 위치에서 그 폴더로 이동 해 볼게요. 

cd opencv_tutorials_for_ROS2/

거기서 또 ls 해 보시면

my_opencv_tutorials 가 있고, READ.md 파일이 있어요. 

또 my_opencv_tutorials로 이동을 해 볼게요. 

cd my_opencv_tutorials/

여기서 또 ls 해 보시면

친구들이 많아요!

config, launch, my_opencv_tutorials, package.xml .... 등등

그렇게 하구나서! 

tree 해 볼게요. 

설치를 하라고 떠요. 

sudo apt install tree

해서 설치를 한 다음에

tree 라고 다시 입력하면 이렇게 구조가 나와요. 

설명을 하자면.. 

여기 img_pub.py 이미지 팝이,

제일 처음 만들었던 camera를 기동해서,

ros2 topic으로 image_raw라는 이름의 토픽을 발행하는 아이였어요. 

그래서 이 아이는 height 나 weight를 조정할 수 있었고, 그 다음에 framerate도 조정할 수 있었어요. 

 

그리고 이 아이( convert_hsv.py ) 가 BGR 색체계에 있던 걸 HSV로 바꾸고

S 나 V 채널을 parameter로 조정할 수 있도록 해서

다시 토픽으로 발행하도록 하는 기능이 들어간 아이예요. 

cv_params.yaml 이 아이는 그와 관련된 convert_hsv.py img_pub.py 이 두가지가 사용하고 있는 parameter가 정의되어 있던 아이예요. 

그리고 bringup_usb_cam.launch.xml --> 이 launch 파일은, ROS2에서 제공하는 usb_cam이라는 패키지를 그냥 쓰는 거예요. 

거기에 대한 설정들도 있긴 하다고 하셨어요. 

그리고 bringup_cv.launch.xml 이 친구는,

OpenCV로 직접 카메라를 열어서 토픽을 발행하는 --> img_pub.py 이 노드

실행하도록 만들어 둔 거예요. 

cv_params.yaml에서 parameter를 읽어와서 말이에요.

 

그 다음, 

위에서 두번째 동그라미💙의 hsv_converter_cv.launch.xml 이 아이는 

밑줄이 쳐 져있는 convert_hsv.py 이 친구와 img_pub.py 이 친구 , 두 친구를

맨 위 동그라미💙의 cv_params.yaml , 여기 있는 파라미터를 적용을 해서 

한 번에 실행하도록 해 둔 아이랍니다. 

 

이제 다시 워크스페이스로 가서,,

( 기억해야할 게 있는데요, ls 했을 때 src 가 뜨는 곳, 여기가 workspace랍니다! )

 

workspace에서 source 명령어로 opt/ros/jazzy/setup.bash 를 불러요. 

( 현재 Ubuntu 24.04의 ROS jazzy를 쓰고있어요. )

 

강사님께서는 alias로 jazzy 를 만들어 두셨답니다!

" source /opt/ros/jazzy/setup.bash " 이 명령을

alias jazzy='source /opt/ros/jazzy/setup.bash; ros_domain; echo "ROS2 jazzy is activated"'

alias로 예쁘게 만들어 두었고, echo 명령도 예쁘게 발행하도록 했어요.

( alias가 어려우시다면 입문편 수업을 들어보시면 이해가 될거예요! ) 

https://www.youtube.com/watch?v=i7ocNBvJWIs&list=PL0xYz_4oqpvhj4JaPSTeGI2k5GQEE36oi&index=11

alias 설정을 위한 강의

그래서 이 명령을 그대로 jazzy 해서 실행하고,  

이 상태에서 colcon build 할게요. (workspace에서! )

끝! 

 

build를 했으면, 이제 뭘 할까요오오 !

나의 워크스페이스에 있는 local_setup.bash를 불러야

내 workspace 에 있는 내용을 실행 할 수 있어요. 

그래서 source ./install/local_setup.bash 라고 입력 해 줬어요. 

 

그러구 나서 

ros2 launch my_opencv_tutorials hsv_converter_cv.launch.xml

ros2 launch my_opencv_tutorials 에 있는 hsv_converter 를 실행하시면 된답니다. 

됐어요! 

여기 보시면 hsv_converter에서 강사님께서 아까 찍으려고 하셨던 로그들과

 

그 다음에 카메라 기동하는 img_publisher 노드에서 지정한 로그들이 현재 찍혔어요. 

그리고 새로운 터미널을 열구요, jazzy 부르시구요, 

그 다음에 source로 install에 있는 local_setup.bash를 부르시면 된답니다. 

읽기 귀찮으시면 역시 alias 해둬야해요. 

강사님께서는 alias를 만들어 두셨어요. alias grep 명령어로 만들어 둔 my_opencv를 보면, 

alias my_opencv_tutorials='ws_setting "my_opencv_tutorials" '

이렇게 만들어 두었다는게 확인이 된답니다! 

그럼 그냥 my_opencv_tutorials하고 부르면!

아름답게 echo 명령으로 설정 된 것 ( 내가 뭘 했는지 ) 도 떠요. 

 

이렇게 하고 ros2 topic list 해서 보시면, 

원래 카메라가 쏘던 image_raw와 

 

image_hsv가 보인다는 거예요. 

그러면 rqt를 실행해서 관찰을 해 볼게요. 

ㅋㅋ 또 면도를 안하셨다고 하셨슴니당. ㅋㅋㅋ

여기는 [ 6:10 ] 입니다 ^-^

 

화면을 보려면 plugin visualization image View 누르시구요, 

오른쪽 부분은 Configuration - Dynamic Reconfigure를 클릭 한 거예요. 

이 두가지 띄워 뒀어요. 

Image_raw는 기본이구요, 

Image_hsv는 내가 바꾼 거예요. 

아직은 바꾼 파라미터가 하나도 적용되지 않아서 그대로인거구요. 

saturation_scale , value_scale 을 막대에서 샤샤샤 샤샤샤 🧚🏻 😂 오른쪽으로 올리면

이렇게 많이 많이 밝아졌어요. 

 

반대로, 사이드바에서 왼쪽으로 옮겨주면 

많이많이 어두워져요. 

 

이제 다시 코드 이야기로 ..! 

구조를 다시 볼게요, 

 

my_opencv_tutorials이 있어요, 여기에서 폴더를 보면

 

config 폴더, launch 폴더, 그리고 우리 파이썬 코드들이 작동되는 코드 폴더가 있어요. 

여기에 convert_hsv 라는 코드가 위치 해 있어요. 

이 코드는 github 에서 모두 다운 받으실 수 있어요. 

 

차례대로 저의 글을 보신 분이 계시다면... 또!!! 하실 수 있지만, ㅋ_ㅋ 

한번 더 언급 해 볼게요, 

google 검색창 -> pinkwink github -> repositories -> opencv_tutorials_for_ROS2

-> my_opencv_tutorials -> my_opencv_tutorials -> conver_hsv.py 

 

repositories 에서 경로 : opencv_tutorials_for_ROS2 / my_opencv_tutorials / my_opencv_tutorials / convert_hsv.py

 

🩵 아래는 이유식같은 주소예요.  떠먹여주는 주소 or... 하이패스 주소 or... 바쁜 사람의 주소.ㅋㅋ

https://github.com/PinkWink/opencv_tutorials_for_ROS2/blob/main/my_opencv_tutorials/my_opencv_tutorials/convert_hsv.py

 

opencv_tutorials_for_ROS2/my_opencv_tutorials/my_opencv_tutorials/convert_hsv.py at main · PinkWink/opencv_tutorials_for_ROS2

opencv_tutorials_for_ROS2. Contribute to PinkWink/opencv_tutorials_for_ROS2 development by creating an account on GitHub.

github.com

 

 

중요한 건 launch 파일들! 

이 코드가 조금 비효율적이라 하셨어요!

표시 된 부분에서 이미 argument를 선언했기때문에, 

똑같이 여기에도 적용을 해 주면 되는건데

별도로 또 요기 적어둔게 조금 비효율적이라고... 말씀 해 주셨어요. 

다음에 고쳐주신대요!

 

다음번엔 경계선 추출 같은 이야기도 해 주신다고 하셨답니다. 

 

스승의날에 학생들에게 꽃 받으시고 행복해 하셨던 강사님 모습이에요. 

 

오늘도 귀한 강의에 감사드리며 

공부하시는 여러분 모두 고생 많으셨습니다 !

🙂‍↕️ 꾸우벅

반응형