티스토리 친구하기

본문 바로가기

ROS2

(11)
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 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 node와 executable `executable`과 `node`는 ROS 2 시스템에서 서로 다른 개념입니다. `Executable`은 컴퓨터에서 실행 가능한 프로그램이며, ROS 2에서는 특정 노드를 실행하는데 사용됩니다. ROS 2에서 노드는 실행 가능한 프로그램으로, 노드 실행 파일은 `executable`로 빌드됩니다. 이러한 노드 실행 파일을 실행하기 위해서는 `ros2 run` 명령어를 사용합니다. `Node`는 ROS 2에서 시스템에서 실행되는 프로세스입니다. 노드는 노드 실행 파일에 의해 실행되며, 다른 노드들과 메시지를 주고받아 작업을 수행합니다. 노드는 ROS 2에서 기능을 수행하는 주요 단위이며, 여러 개의 노드가 하나의 시스템을 구성할 수 있습니다. 따라서 `executable`은 ROS 2에서 노드를 실행할..
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..
ROS2 executable ROS 2에서 `executable`은 빌드된 바이너리 파일로, 하나 이상의 노드를 실행하는 데 사용됩니다. `executable`은 ROS 2 노드의 실행 가능한 인스턴스이며, ROS 2 시스템에서 독립적으로 실행됩니다. `executable`은 C++로 작성된 노드 또는 Python으로 작성된 노드일 수 있습니다. ROS 2에서는 `executable`을 빌드하기 위해 CMakeLists.txt 파일에 `add_executable` 명령어를 사용합니다. `add_executable` 명령어는 빌드하려는 `executable`의 이름과 해당 `executable`을 빌드하는 데 필요한 소스 파일을 지정합니다. 또한 해당 `executable`이 사용하는 모든 메시지, 서비스 및 의존성 패키지도 선언해야..