티스토리 친구하기

본문 바로가기

Robotics

(45)
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 디렉토리 안에 만들어야 합니다...
정적 오차상수 (정상상태 오차, System type) 1. 정적 오차상수 정적 오차상수(Steady-state error constant)는 시스템의 입력과 출력 간의 정적인 오차를 설명하는 상수입니다. 시스템이 안정 상태에 도달하고 입력 신호가 일정한 값을 유지할 때, 정적 오차상수는 입력과 출력 간의 오차를 정량화하는 데 사용됩니다. 제어 시스템 구조 아래와 같은 기준 입력신호들로 시스템의 정상상태 오차를 해석할 수 있습니다. n = 0 : 단위 계단함수 - 위치 입력을 주는 것 (시스템이 내가 지정한 위치로 이동하길 원한다) n = 1 : 단위 램프함수 - 속도 입력을 주는 것 (시스템이 내가 지정한 속도로 이동하길 원한다) n = 2 : 단위 포물선함수 - 가속도 입력을 주는 것 (시스템이 내가 지정한 가속도로 이동하길 원한다) 위에서 그린 제어시스..
비감쇠 고유진동수, 감쇠비 1. 비감쇠 고유진동수 비감쇠 고유진동수(Natural frequency of vibration in the undamped system)는 시스템이 감쇠되지 않은 상태에서 진동하는 주파수를 나타내는 값입니다. 일반적으로 'ω_n'으로 표기됩니다. 비감쇠 고유진동수는 진동 시스템의 물리적 특성과 관련되어 있으며, 시스템이 외부 강요 없이 자유롭게 진동할 때의 주파수를 의미합니다. 이는 시스템의 질량, 탄성, 관성 등에 의해 결정됩니다. 예시) 1. 흔들림 현상: 마찰이 없다고 가정했을 때, 진자, 진자 시계, 그네 등은 일정한 높이에서 놓으면 계속 흔들립니다. 1초당 5번 흔들린다면, 고유진동수는 5Hz 입니다. 만약 비감쇠 고유진동수에 가까운 주파수로 흔들림이 발생하면 공진 현상 때문에 더 큰 진폭으로..
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 ..