티스토리 친구하기

본문 바로가기

Robotics/ROS2

(14)
ROS2 service and client (C++) [Writing a simple service and client] Goal: Create and run service and client nodes using C++. Tutorial level: Beginner Time: 20 minutes Background Service를 사용하여 노드가 통신할 때, 데이터 요청을 보내는 노드를 클라이언트 노드(client node)라고 하고, 이 요청에 응답하는 노드를 서비스 노드(service node)라고 합니다. 요청과 응답의 구조는 '. srv' 파일에 의해 결정됩니다. 여기에서 사용된 예제는 간단한 정수 덧셈 시스템입니다. 한 노드가 두 정수의 합을 요청하고, 다른 노드가 결과를 응답합니다. Prerequisites 이전 튜토리얼에서는 workspace를 생성하고 패키지를 생성하는 방법을 학습했습니다. Tasks 1 C..
ROS2 service [Understanding services] Goal: command line tools를 이용한 ROS2 services에 대해 배운다. Tutorial level: Beginner Time: 10 minutes Background Services는 ROS graph 내에서 node 간에 communication 하는 방법이다. Services는 topic의 publisher - subscriber 모델과는 달리 call-and-reponse 모델을 기반으로 한다. Topic이 data stream을 subscribe 하고 지속적인 업데이트를 받을 수 있도록 한 반면, Services는 오직 client에 의해 명시적으로 call(요청) 할 때에만 data를 제공한다. Prerequisites - 이 tutorial에서 언급된 Nodes와 Top..
ROS2 humble Writing a simple publisher and subscriber (Python) Background 이 튜토리얼에서는 문자열 메시지에 있는 정보를 topic을 통해 서로 주고받는 node들을 생성하는 방법에 대해 설명합니다. 여기서 사용하는 example은 "talker"와 "listener" 시스템입니다. "talker" 노드는 데이터를 publish하고 "listener" 노드는 topic을 subscribe 해서 데이터를 수신합니다. 본 튜토리얼은 Python으로 진행됩니다. prerequisites 이전 튜토리얼에서는, 어떻게 workspace와 pakage를 만드는지 배웠습니다. Python의 전체적인 이해가 필수적인건 아니지만, 기본적인 이해가 있으면 좋습니다. Task 1 Create a package ros2 command가 작동하도록, 터미널을 열고 ROS2 inta..
ROS2 humble Writing a simple publisher and subscriber (C++) Background Node는 ROS 그래프 상에서 통신하는 executable 프로세스들입니다. 이 튜토리얼에서는 노드들이 문자열 메시지 형태로 서로에게 정보를 전달할 것입니다. 여기서 사용되는 예제는 간단한 'talker'와 'listener' 시스템입니다. 하나의 node는 데이터를 publish하고, 다른 하나의 node는 해당 topic을 subscribe해서 그 데이터를 받아볼 수 있습니다. Task 1 Create a package 터미널을 열고 ros2의 command가 동작할 수 있도록 아래와 같이 source를 합니다. source /opt/ros/humble/setup.bash 이전에 만들었던 ros2_ws 디렉토리로 이동하세요. package는 src 디렉토리 안에 만들어야 합니다...
ROS2 topic 2 [ROS2 토픽 2] 5. ros2 topic info `ros2 topic info` 명령어는 지정된 ROS 2 토픽에 대한 세부 정보를 출력합니다. 이 명령어를 사용하면 선택한 토픽의 이름, 메시지 유형, 토픽이 발행되는 노드의 이름 등을 확인할 수 있습니다. 예를 들어, `ros2 topic info /my_topic` 명령어는 `/my_topic` 토픽에 대한 정보를 출력합니다. 결과에는 토픽의 name, 토픽이 사용하는 메시지 Type, 발행자(Publisher) 노드의 이름 등이 포함됩니다. 이 정보는 토픽이 어떤 종류의 데이터를 전달하고 있는지, 어떤 노드가 해당 토픽을 사용하고 있는지 등을 파악하는 데 도움을 줍니다. `ros2 topic info` 명령어를 사용하여 ROS 2 토픽에 대한 정보를 확인하면 시스..
ROS2 topic 1 [ROS2 토픽 1] Background ROS 2는 복잡한 시스템을 많은 모듈식 노드로 분할합니다. Topic은 노드가 message(메시지)를 교환하는 버스 역할을 하며, ROS graph의 필수적인 요소입니다. 노드는 데이터를 임의의 수의 topic에 publish(게시)할 수 있습니다. 동시에 임의의 수의 topic에 대해 subscription(구독) 할 수 있습니다. Topic은 노드 간, 즉 시스템이 다른 부분들간에 데이터를 이동시키는 주요한 방법 중의 하나입니다. 1. Setup 새로운 터미널을 열고 아래의 명령어를 입력합니다. # Open a new terminal and run: ros2 run turtlesim turtlesim_node # Open another terminal and run: ros2 ..
ROS2 Node [ROS2 노드] ROS2 그래프(Graph)는 로봇 시스템의 구성 요소 간 통신 및 데이터 교환을 관리하는 ROS2의 핵심 개념 중 하나입니다. ROS2 그래프는 다음과 같은 구성 요소로 이루어져 있습니다. 1. 노드(Node) 실행 가능한 프로세스(executable process)로, ROS2 그래프 상에서 통신하는 단위입니다. 노드는 토픽(topic), 서비스(service), 액션(action) 등을 이용하여 다른 노드와 데이터를 주고받습니다. 2. 토픽(Topic) 노드 간에 비동기식으로 데이터를 주고받는 메커니즘입니다. 하나의 토픽은 하나 이상의 발행자(publisher)와 하나 이상의 구독자(subscriber)로 구성됩니다. 3. 서비스(Service) 노드 간에 동기식으로 데이터를 주고받는 메커니즘입니다..
ROS2 Creating a package 2 [ROS2 패키지 만들기 2] Create a package [패키지 만들기] ROS2에서 새로운 패키지를 만들려면 다음 단계를 따르면 됩니다. 1. 새로운 터미널 창을 열고 ROS 2 워크스페이스의 디렉토리로 이동합니다. 예를 들어, 다음과 같이 작성할 수 있습니다. $ cd ~/ros2_ws/src 2. `ros2 pkg create` 명령어를 사용하여 새로운 패키지를 생성합니다. 패키지 이름은 소문자로 작성해야 하며, 여러 단어의 경우 하이픈(`-`)을 사용합니다. 예를 들어, `package_name`라는 이름의 패키지를 만들고 싶다면 다음과 같이 작성할 수 있습니다. # CMake ros2 pkg create --build-type ament_cmake # Python ros2 pkg create --build-type am..