Python에서 ROS2 토픽 발행

이번에는 /turtle1/cmd_vel 토픽으로 속도 명령을 발행하여 거북이를 움직입니다. turtlesim에서 거북이를 움직이는 토픽은 다음과 같습니다. 메시지 타입은 다음과 같습니다. 확인은 다음 명령으로 할 수 있습니다. 1. 필요한 모듈 import Twist 메시지는 선속도와 각속도를 표현하는 메시지입니다. 구조는 크게 두 부분입니다. 각각은 다시 x, y, z 값을 가집니다. turtlesim에서는 주로 아래 두 값을 사용합니다. 2. 노드 생성 여기서 … Read more

Python에서 ROS2 토픽 구독

ROS 2의 Python 클라이언트 라이브러리인 rclpy를 사용하여 turtlesim 노드가 발행하는 /turtle1/pose 토픽을 구독합니다. 최종적으로 Python 코드에서 거북이의 현재 위치와 방향 정보를 받아 다음 값을 출력합니다. 1. 실습환경 준비 .bashrc에 ROS2 실행환경을 구축해 놓았기 때문에 새로운 터미널을 실행하면 자동으로 실행됩니다. 2개의 터미널을 실행합니다. 먼저 첫번째 터미널에서는 노트북을 실행합니다. 다른 터미널에서는 turtlesim 노드를 실행합니다. 정상적으로 실행되면 파란색 … Read more

Ubuntu 22.04에서 Jupyter 설치하기

Ubuntu 22.04에서 Jupyter를 설치하는 가장 깔끔한 방법은 Python 가상환경(venv) + pip 방식입니다. 시스템 Python을 오염시키지 않고 프로젝트별로 패키지를 관리할 수 있기 때문입니다. Jupyter 공식 문서도 pip install jupyterlab, pip install notebook 설치 방식을 안내합니다. 1. 시스템 패키지 업데이트 2. Python, pip, venv 설치 Ubuntu 22.04에는 기본적으로 Python 3가 포함되어 있지만, 개발에 필요한 패키지를 함께 설치하는 것이 좋습니다. venv는 Python … Read more

ROS2 파라미터

1. 파라미터 개념 ROS 2에서 파라미터(parameter)는노드 내부 동작을 외부에서 “실시간으로 조정”할 수 있는 핵심 기능입니다. 기존 ROS1에서는 중앙 Parameter Server가 있었지만,ROS 2에서는 다음과 같이 구조가 변경되었습니다: 즉, 다음과 같이 이해하시면 됩니다: “노드 내부 변수 값을 코드 수정 없이 외부에서 바꿀 수 있는 기능” 2. 왜 파라미터를 사용하는가 (실무 관점) 다음과 같은 상황에서 매우 중요합니다:       … Read more

ROS2 Action

ROS2에서 노드 간 통신 방식은 크게 Topic, Service, Action으로 나눌 수 있습니다. 이 중 Action은 시간이 오래 걸리는 작업을 처리할 때 사용하는 통신 방식입니다. 예를 들어 로봇이 특정 위치까지 이동하거나, 드론이 목표 고도까지 상승하거나, 터틀심의 거북이가 특정 각도까지 회전하는 작업처럼 즉시 끝나지 않는 명령에 적합합니다. Action은 내부적으로 다음 요소를 사용합니다. 구성 요소역할 Goal 클라이언트가 서버에 전달하는 목표값 Feedback 작업 … Read more

ROS2 Topic

ROS 2에서 토픽(Topic)은 노드(Node) 간 데이터를 전달하는 가장 기본적이고 핵심적인 통신 방식입니다. 실제 로봇 시스템을 구성할 때 센서 데이터 처리, 상태 공유, 제어 명령 전달 등 대부분의 데이터 흐름이 이 토픽을 기반으로 이루어진다고 보시면 됩니다. 아래에서는 개념부터 구조, 특징, 그리고 실무적인 활용까지 체계적으로 정리해 드리겠습니다. 1. 토픽 통신의 기본 구조 토픽 통신은 Publisher(발행자)와 Subscriber(구독자) 간의 메시지 교환 구조로 … Read more

ROS2 Service

1. ROS 2 Service란 무엇인가요? ROS 2에서 Service는 한 노드가 다른 노드에게 특정 작업을 요청하고, 그 결과를 응답받는 통신 방식입니다. Topic이 계속 데이터를 주고받는 구조라면, Service는 다음과 같은 형태입니다. 위의 그림과 같이 Node A와 Node B가 연결되어 있고 이때 사용하는 방식은 동기식 양방향 메시지 송수신 방식입니다. Service Client는 서비스의 요청(Request)을 하는 쪽이며, Service Server는 요청받은 서비스를 수행한 후 … Read more

ROS2 Humble에서 Turtlesim 설치 및 실행하기

ROS2를 처음 학습할 때 가장 먼저 다뤄볼 만한 예제 패키지가 turtlesim입니다. turtlesim은 거북이 모양의 시뮬레이터를 실행하여 ROS2의 노드, 토픽, 서비스, 액션 개념을 실습할 수 있게 해주는 기본 예제 패키지입니다. ROS2의 구조를 이해하려면 단순히 명령어를 외우는 것보다, 하나의 노드가 어떻게 실행되고 ROS2 환경이 어떻게 터미널에 적용되는지를 먼저 이해하는 것이 중요합니다. ROS를 처음 설치하고 turtlesim_node를 실행하면 파란 … Read more

ROS2 Run Commands 설정

 ROS 2 Humble 설치 후 매번 터미널에서 source /opt/ros/humble/setup.bash 명령을 입력하는 것은 번거롭습니다. 따라서 ~/.bashrc 파일에 ROS 2 환경 설정, 워크스페이스 설정, 자주 사용하는 alias를 등록해 두면 개발 효율이 좋아집니다. 1. bashrc 파일 열기 아래와 같이 다양한 편집기를 사용할 수 있습니다. 저는 윈도우용인 gedit를 사용하겠습니다. bashrc에 명령어를 추가할 때 기존 내용은 삭제하지 말고, 파일 맨 아래에 추가합니다. 2. 반드시 … Read more

ROS2 Humble 개발 환경 설정

1. ROS2 개발 환경 설정 다음 소프트웨어는 ROS 2를 이용한 로봇 프로그래밍에 필수적인 소프트웨어 모음입니다. 개발 환경 설치 시에 반드시 설치할 것을 권장합니다. 2. ROS2 빌트 테스트 ROS 2 설치가 완료되었다면, 가장 먼저 확인해야 할 것은 정상적으로 빌드 환경이 구성되었는지입니다.이를 위해 ROS 2에서는 colcon 기반의 워크스페이스를 생성하고 테스트 빌드를 수행합니다. 이 과정은 실제 패키지를 빌드하기 위한 … Read more