ROS
-
ROS2 Action 기초 사용법ROS/ROS2 2025. 2. 4. 18:49
ROS2 version: jazzy1. ActionAction은 비동기식 + 동기식 양방향 메시지 송수신 방식으로 다음과 같이 구성이 되어있다. Action Client: 액션 목표 (Goal)를 지정.Feedback: 액션 목표를 받아 특정 태스크를 수행하면서 결괏값에 해당되는 액션 피드백.Action Server: 최종 결괏값에 해당되는 액션 결과(Result)를 전송. 아래의 그림으로 이야기를 한다면 다음의 구성을 가지게 된다.Action Client: 3개의 Service Client와 2개의 Topic Subscriber.Action Server: 3개의 Service Server와 2개의 Topic Publisher.액션 목표, 액션 결과, 액션 피드백은 토픽과 서비스가 혼합되어 있다. 2. ..
-
ROS2 Service 기초 사용법ROS/ROS2 2025. 1. 13. 19:07
ROS2 version: jazzy1. ServiceService는 Topic과 달리 Server와 Client로 구성이 되어 있다.Client가 Server로 데이터를 Request(요청)를 하면, Server가 Client로 Response(응답)를 하게 된다.즉, 데이터를 요청해야 데이터를 응답받을 수 있다.Service는 하나의 Server에서 여러 개의 Client를 가질 수 있지만, Service의 Server는 오직 하나이다.2. Service 실습이번에도 turtlesim으로 Service에 대해 살펴보자.Terminal 1ros2 run turtlesim turtlesim_nodeTerminal 2ros2 run turtlesim turtle_teleop_key 2.1 service li..
-
ROS2 Topic 기초 사용법ROS/ROS2 2025. 1. 8. 19:50
ROS2 version: Jazzy1. Topic?ROS2에서 Topic은 가장 기본이 되는 단방향 데이터 송수신 방법으로, Publisher가 데이터 전송, Subscriber가 데이터 수신을 하게 된다.기본적으로 1:1 통신을 하지만 상황에 따라 1:N, N:1, N:N 통신도 가능하다. Topic은 주로 센서데이터를 받아오거나 모터에 명령을 보낼때 사용한다. 2. Topic 실습이전처럼 Turtlesim과 Teleopkey를 실행해보자. Terminal 1ros2 run turtlesim turtlesim_node Terminal 2ros2 run turtlesim turtle_teleop_key Terminal 3rqt_graph rqt_graph를 통해 다음의 node graph를 볼 수 있다..
-
ROS2 Node 기초 사용법ROS/ROS2 2025. 1. 7. 19:40
ROS2 version: Jazzy1. Node?ROS2에서는 Node를 사용하여 각각의 기능들을 모듈로 관리한다.예를 들어 Motor에 명령을 내리는 Node, Camera data를 관리하는 Node등 다양하게 존재한다.ROS2에서는 이러한 Node들이 여러개가 구성되고 협력하게 된다. 2. Node 실습Terminal 1ros2 run turtlesim turtlesim_node Terminal 2ros2 run turtlesim turtle_teleop_key Terminal 3ros2 node list Terminal 1, 2에서 ros2 run을 실행하고 node list를 살펴보면 두 개의 Node가 동작하는 것을 볼 수 있다. 2.1 remap이전에 ros2의 유용한 명령어 중에서 --re..
-
ROS2 유용한 명령어ROS/ROS2 2025. 1. 7. 19:05
1. Check env variablesprintenv | grep -i ROSROS2 관련 환경 변수를 찾거나 Package의 위치를 찾을 수 있음. echo $ROS_DOMAIN_ID # domain ID 확인export ROS_DOMAIN_ID = # domain ID 설정ROS_DOMAIN_ID를 확인하거나 설정할 수 있다. humble에서 사용하는 환경변수echo $ROS_LOCALHOST_ONLYexport ROS_LOCALHOST_ONLY = 노드 검색 범위 조절.ROS_LOCALHOST_ONLY는 ROS2 통신을 로컬 호스트로만 제한할 수 있다. jazzy에서 사용하는 환경변수export ROS_AUTOMATIC_DISCOVERY_RANGE = localexport ROS_AUTOMATI..
-
ROS2 DDS (Data Distribution Service)ROS/ROS2 2025. 1. 6. 19:26
1. DDS (Data Distribution Service)ROS2를 접하면서 DDS에 대해 처음 접하는 분들이 많을거라 생각한다..DDS(Data Distribution Service) 데이터 분산 서비스는 Middleware로 실시간 시스템에서 다음을 가능하게 해준다.Real-time (실시간성)Scalable (규모가변성)Dependable (안전성)High Performance (고성능)ROS2에서는 DDS를 사용하여 통신을 주고받게 된다. ROS를 하며 DDS에 대해 너무 자세히 알 필요는 없을 것 같다.지금은 그저 데이터 통신을 위한 미들웨어로 생각하면 좋을것 같고 우리는 이를 통해서 ROS1보다 향상된 데이터 송수신을 할 수 있다고 생각하면 좋을 것 같다.위의 그림을 보면 미들웨어는 OSI..
-
_ROS2_Robot Operating System2ROS/ROS2 2024. 5. 24. 17:10
ROS1은 2020년 5월에 출시한 Neotic Ninjems를 마지막 version으로 출시하였으며 해당 version의 EOL(End of Life)은 2025년 5월이다. (EOL은 유지보수 기간이라 생각하면 된다.)필자는 ROS1 Melodic을 많이 사용했지만, 이미 EOL이 끝났다. 사실 ROS2는 2014년 3월부터 개발이 시작되었으며, 2015년에 alpha version이 release 되었다.ROS2는 계속해서 개발이 되었으며, 현재 Ubuntu 24.04 (Noble Numbat) version이 나왔고 2024년 5월 23일에 ROS2 Jazzy Jalisco가 출시되었다.필자는 Ubuntu 22.04에 ROS2 Humble Hawksbill을 사용하고 있다. ROS2는 기존 ROS..
-
_ROS1_ultrasonicROS/ROS1 2023. 10. 27. 22:40
이번에는 초음파 센서 ROS 패키지를 만들어보려고 한다. 필요한 것은 Linux computer, Arduino, HC-SR04 초음파센서이다. 소리의 속도는 초속 340m로 1cm 이동에 약 29us 소요가 된다면 다음과 같은 수식을 얻을 수 있다. $$ x=\frac{t(us) \div 2}{29(us)}(cm) $$ x: 물체까지의 거리 t: 송신과 수신의 시간차 이제 아두이노와 초음파 센서를 연결하고 아두이노 IDE에 프로그램을 작성했다. 초음파 센서와의 연결은 다음과 같다. (D는 Digital pin을 의미한다.) Vcc: 5v pin Trig: D2 pin Echo: D3 pin Gnd: GND pin 소스코드는 다음과 같다. Arduino //핀 지정 #define trig 2 #defin..