知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Project/ROS2 + CV + Robot (2023.12~2024.02)

ROS2 humble에서 OpenManipulator-X Pick and Place + yolov8 으로 시작 명령 주기

코방코 2024. 1. 5. 17:56
728x90

 

 

ROS2 humble에서 OpenManipulator-X 환경 구성 및 조작

연구원에 있으면서 기회가 되어 여러 로봇 팔을 조작해볼 기회가 생겨 작성하게 되었습니다. 다만 로보티스 OpenManipulator-X는 아직 ROS2에 최적화 되어있지 않은 느낌을 많이 받았습니다. 그래도

cobang.tistory.com

이전 글에서 이어지는 내용입니다.

지난 글에서는 OpenManipulator-X를 ROS2에서 환경을 구성하고,

keyboard로 간단하게 컨트롤 해보았습니다.

 

이번에는 직접 python에서 동작을 구성하여 키보드로 동작을 수행하도록 해보았습니다.

~/omx_ws/src/open_manipulator/open_manipulator_x_teleop/open_manipulator_x_teleop/script 디렉토리에 있는

teleop_keyboard.py를 다시 열도록 하겠습니다.

 

3 번 키를 pick and place로 만들어보겠습니다.

아래가 해당 코드입니다.

 

 

3번 동작으로 적절한 servo motor의 회전각을 지정해주어서,

OpenManipulator-X가 pick and place 할 수 있도록 만들었습니다.

3번 키를 누르면 OpenManipulator가 물체를 집고 반대쪽으로 옮깁니다.

 

 

 

그럼 이제 yolov8을 붙여보겠습니다.

ROS2 pkg를 만들어보고 싶었는데

실력이 부족해서 잘 안되었습니다.

공부를 더 많이 해야할 것 같습니다.

 

일단 있는 teleop_keyboard.py 를

다음과 같이 수정했습니다.

 

코드는 간단합니다.

USB 웹캠을 연결하고

yolov8 을 불러와서 캠에 바나나 object가 30프레임 이상 감지되면 Pick and Place를 수행합니다.

 

Pick and Place 과정에서도 멀티 스레딩을 이용하여 yolov8을 계속 돌려봤는데,

1프레임당 1초의 분석 시간이 나와서 내부적으로 명령을 기다리는 로봇이 리소스를 많이 잡아먹는 듯 했습니다.

 

멀티프로세싱으로도 해결해보려했는데 opencv 화면이 안 열리는 문제가 발생했습니다.

opencv는 메인 스레드에서 실행된다고 해서 멀티 프로세싱에서 문제가 발생하는 것 같았습니다.

 

아무래도 실력 부족 때문에 동시에 구동시키진 못했습니다.

결과 동영상입니다.

 

 

728x90
반응형