ROS 2 TurtleBot3 카메라 영상을 PyQt5 GUI로 표시하고 동영상으로 저장하기 #2

28) 동영상 저장 코드를 write_video_frame()으로 분리 동영상 저장 기능을 별도 메서드로 분리했습니다. 새 메서드는 다음과 같습니다. 이렇게 분리한 이유는 image_callback()의 역할을 명확하게 만들기 위해서입니다. 동영상 크기 확인, 리사이즈, 파일 쓰기, 저장 오류 처리는 write_video_frame()이 담당합니다. 기능을 메서드 단위로 분리하면 다음 장점이 있습니다. 29) 화면 표시 조건 카메라 화면 표시 상태가 활성화된 경우에만 show_frame()을 호출합니다. 카메라 … Read more

거꾸로 된 카메라 영상을 정상 출력

실제 로봇에 카메라를 장착하다 보면 카메라 방향이 뒤집혀 설치되는 경우가 많습니다. TurtleBot3 Burger에 Pi Camera 2를 장착했을 때 영상이 상하 반전되거나, 180도 회전된 상태로 출력될 수 있습니다. OpenCV에서는 cv2.flip() 또는 cv2.rotate()를 사용하여 이미지를 뒤집거나 회전할 수 있습니다. 대표적인 방법은 다음과 같습니다. 여기서 -1은 상하와 좌우를 모두 뒤집는다는 뜻입니다. 즉, 이미지를 180도 회전한 것과 같은 결과가 … Read more

TurtleBot3 Burger에 Raspberry Pi Camera Module 2 설정하기

1. TurtleBot3 SBC 기본 ROS 2 환경 확인 먼저 TurtleBot3 SBC에 SSH로 접속합니다. Remote PC에서 다음과 같이 접속합니다. 예를 들어 Raspberry Pi IP가 192.168.0.20이면 다음과 같이 접속합니다. 접속 후 ROS 2 Humble 환경이 정상적으로 잡혀 있는지 확인합니다. 다음과 비슷한 값이 보여야 합니다. 만약 ROS_DISTRO=humble이 보이지 않는다면 다음 명령으로 ROS 2 환경을 적용합니다. TurtleBot3 워크스페이스까지 사용 … Read more

짐운반 로봇(Porter Robot) I – 디자인, 기구부 설계

1. 로봇 종류별 변천사 2. 로봇 디자인 디자인 팀에서 로봇의 외관을 디자인하고 아래의 그림들과 같이 다양한 디자인 중에 품평회를 거쳐 하나의 모델을 선택하였습니다. [ Front ] [ Rear ] [ Type 1-1] [ Type 1-2] [ Type 2-1] [ Type 2-2] 3. 기구부 설계 디자인 모델을 이용하여 아래의 그림과 같이 기구설계팀에서 내부 기구부를 설계하였습니다.  [ … Read more

Qt Designer로 TurtleBot3 Burger 제어용 PyQt UI 만들기 #2

11. ROS 2 Node 클래스 추가하기 이제 Python 코드에 ROS 2 노드를 추가합니다. 먼저 필요한 ROS 2 모듈을 import합니다. Python 파일 상단에 다음을 추가합니다. 그리고 MainWindow 클래스 위에 ROS 2 노드 클래스를 추가합니다. 이 클래스는 ROS 2 노드입니다. 핵심은 다음입니다. 이 코드가 /cmd_vel 토픽 publisher를 만듭니다. Namespace를 입력하면 /tb3/cmd_vel 같은 토픽으로 바꿔서 발행할 수 있습니다. … Read more

Qt Designer로 TurtleBot3 Burger 제어용 PyQt UI 만들기 #1

이번 강의에서는 Qt Designer를 사용해서 turtlebot3_burger_gui.ui 파일을 처음부터 하나씩 만들고, 각 단계마다 Python 코드를 작성해서 추가한 컴포넌트를 바로 사용하는 방식으로 실습합니다. 최종 목표는 TurtleBot3 Burger를 제어할 수 있는 PyQt 기반 GUI를 만드는 것입니다. GUI에서 다룰 기능은 다음과 같습니다. 실습 환경은 다음과 같습니다. 1. Qt Designer 실행하기 터미널에서 Qt Designer를 실행합니다. Qt Designer가 실행되면 새 폼을 … Read more

SimpleWaypointFollower에 로봇 상태 → RGB LED 색상 변환 기능 추가

1. 개요 로봇을 실제 현장에서 운용하다 보면 터미널 로그만으로는 현재 상태를 바로 파악하기 어렵습니다. 예를 들어 로봇이 다음 중 어떤 상태인지 즉시 알아야 합니다. 이런 상태를 RGB LED 색상으로 표시하면 현장에서 로봇 상태를 훨씬 직관적으로 확인할 수 있습니다. 이번 글에서는 기존의 두 가지 기능을 결합합니다. 첫 번째는 /rgb_led/cmd 토픽으로 들어온 RGB LED 메시지를 시리얼 명령으로 … Read more

TurtleBot3 Burger 실습 과제: Cartographer SLAM 기반 강의실 전체 맵 작성 및 Nav2 자율주행

1. 실습 개요 이번 실습은 TurtleBot3 Burger를 이용하여 실제 강의실 환경을 기반으로 전체 주행 맵을 작성하고, 작성한 맵 위에서 Nav2를 이용해 여러 경유점을 순차적으로 방문하는 자율주행 프로그램을 구성하는 과정입니다. 실습 환경에는 강의실 내부, 강의실 주행 조형물, 강의실 복도, 강의실 앞 복도가 포함됩니다. 학생들은 Cartographer SLAM을 사용하여 전체 맵을 작성하고, RViz2에서 경유점을 지정한 뒤 TurtleBot3가 각 … Read more

Ubuntu 22.04 Server에서 USB 스피커 자동 설정이 재부팅 후 실패할 때 해결 방법

1. 문제 상황 TurtleBot3 또는 Ubuntu 22.04 Server 환경에서 USB 스피커를 기본 출력 장치로 설정하기 위해 다음 명령어를 사용했습니다. 수동으로 실행하면 정상적으로 동작합니다. 하지만 이 명령어를 자동 실행 스크립트나 systemd 서비스에 등록한 뒤 전원을 끄고 다시 부팅하면 USB 스피커가 기본 출력 장치로 설정되지 않는 문제가 발생했습니다. 증상은 다음과 같습니다. 이 문제의 핵심 원인은 대부분 다음과 … Read more