이전 글에서 이어지는 내용입니다.
지난 글에서는 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는 메인 스레드에서 실행된다고 해서 멀티 프로세싱에서 문제가 발생하는 것 같았습니다.
아무래도 실력 부족 때문에 동시에 구동시키진 못했습니다.
결과 동영상입니다.
'Setup & Example > ROS2 + 예제' 카테고리의 다른 글
ROS2 MoveIt2 이용하여 UR3e Pick and Place 수행하기 (0) | 2024.01.19 |
---|---|
ROS2 humble에서 UR3e 작동 및 MoveIt2 Path Planning (1) | 2024.01.18 |
ROS2 humble에서 OpenManipulator-X 환경 구성 및 조작 (3) | 2024.01.05 |
ROS2 humble - Gazebo에서 yolov8로 실시간 영상 분석 하기 (1) | 2023.12.29 |
ROS2 humble 에서 MoveIt2 Pick and Place Example 연습 (3) | 2023.12.29 |