일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nav2 dev contatiner
- docker foxy
- ros2 configuring environment
- ros2 development guides
- ros2 foxy docker
- Python
- ros2 환경설정
- ros2 remapping
- nav2 first-time robot setup guide
- nav2 development guides
- first-time robot setup guide
- Foxy tutorial
- ros2 foxy tutorial
- nav2 tutorial
- nav2 getting started
- CODEUP 6073
- nav2 development guides
- foxy nav2
- CodeUp
- nav2 튜토리얼
- 코드업
- nav2 설치
- development guides
- humble 환경설정
- ROS FOXY 튜토리얼
- ros2 튜토리얼 환경설정
- Nav2 document
- humble development guides
- error
- ros2 튜토리얼
- Today
- Total
BAN2ARU
[ROS2/FOXY] 튜토리얼 3. Understanding nodes 본문
ROS-foxy 튜토리얼은 공식 홈페이지를 참조함
이전 튜토리얼 글 모음
목표 : ROS2의 node 기능에 대해서 이해하기
1. ROS2 그래프
ROS 그래프는 ROS 시스템 내에서 런타임 시 노드 간의 관계를 보여주는 인프라 구조로, 노드 간의 상호작용을 시각적으로 표현하는데, 이를 통해 노드 및 통신 구조를 이해할 수 있다.
2. ROS에서의 노드
ROS에서 노드는 하나의 실행 가능한 프로세스이며, 각 노드들은 다른 노드와 토픽(topic), 서비스(service), 액션(action), 파라미터(parameter) 등을 통해 데이터를 주고받을 수 있다. ROS의 핵심 요소 중 하나인 노드 간의 통신 구조를 이해하고 활용하는 것은 ROS 개발에서 매우 중요하다.
전체 로봇 시스템에서는 함께 작동하는 많은 노드로 구성되어 있다. ROS2에서 단일 excutable파일(c++, python 프로그램 등)은 하나 또는 그 이상의 node를 포함할 수 있다.
Tasks
1. ros2 run
ros2 run 명령어는 패키지에서 executable한 파일을 실행하는 방법 중 하나이다.
ros2 run <package_name> <executable_name>
예를 들어, 이전 튜토리얼에서 실행하였던 ros2 run turtlesim turtlesim_node 명령어는 turtlesim 패키지의 turtlesim_node executable을 실행한다. 이 명령어는 런타임에 하나 이상의 노드를 실행할 수 있도록 한다.
2. ros2 node list
ros2 node list 는 현재 실행 중인 모든 ROS2 노드의 이름을 출력하는 명령어이다. 이 명령어는 현재 실행 중인 노드가 무엇인지 확인할 수 있어 많은 노드를 실행하는 시스템을 tracking 할 때 유용하게 사용된다. 이전 튜토리얼을 통해 우리는 turtlesim 노드와 teleop노드를 실행한 후, ros2 node list 명령어를 통해 해당 리스트를 확인했었다.
2.1 Remapping
Remapping은 노드 간에 토픽, 서비스, 액션 등의 통신 인터페이스 이름을 다시 할당(mapping)해주는 기능을 의미한다. 이전 튜토리얼에서 cmd_vel 토픽과 ggobuk으로 target을 변경하기 위하여 turtle_teleop_key에 remapping을 수행하였다.
이번에는 turtlesim을 하나 실행한 후 이를 다시 ggobukim으로 remapping하는 작업을 수행해 보자.
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=ggobukim
해당 작업을 수행하면 turtlesim창이 2개 열리는 것을 확인할 수 있다. 이를 ros2 node list를 실행하면 아래와 같이 /turtlesim과 /ggobukim 노드가 실행 중인 것을 확인할 수 있다.
Docker 버전
docker start [컨테이너명:ros_cyg]
docker exec [컨테이너명:ros_cyg] /bin/bash -c "source /opt/ros/foxy/setup.bash && ros2 run turtlesim turtlesim_node"
# 새로운 터미널 open
docker exec [컨테이너명:ros_cyg] /bin/bash -c "source /opt/ros/foxy/setup.bash && ros2 run turtlesim turtlesim_node --ros-args --remap __node:=ggobukim"
# 새로운 터미널 oepn
docker attach [컨테이너명:ros_cyg]
ros2 node list
3. ros2 node info
ros2 node info는 특정한 노드에 대해 정보를 제공하는 명령어이다. 아래와 같은 형식으로 사용된다.
ros2 node info <node_name>
방금 우리가 사용한 ggobukim 노드에 대해 정보를 조회하고 싶다면 아래와 같이 작성하면 된다.
ros2 node info /ggobukim
노드 정보는 위와 같이 Subscribers [구독하는 토픽], Publishers [발행하는 토픽], Service Server [제공하는 서비스], Action Servers [액션 서버], Action Clients [액션 클라이언트]에 대한 목록을 보여준다. 즉, 해당 노드와 상호작용하는 ROS 그래프 연결에 대해 보여준다고 볼 수 있다.
Summary
ROS에서의 노드에 대해 배웠으며, ros2 node에 관한 명령어에 대해 학습함. 아래는 요약내용임.
ROS(Robotic Operating System)에서 노드는 ROS 시스템에서 실행되는 최소 단위의 프로세스를 의미하며, 각 노드는 다른 노드와 통신하여 데이터를 주고받을 수 있다.
ros2 node는 ROS2에서 제공하는 명령어 중 하나로 이번 시간에는 실행 중인 노드 목록과 노드의 정보를 확인할 수 있는 명령어에 대해 알아보았다.
- ros2 node list : 실행 중인 모든 노드의 목록을 출력하는 명령어
- ros2 node info <node_name> : <node_name>에 해당하는 노드에 대한 정보를 출력하는 명령어
해당 기능들은 ROS 시스템의 기본 구성과 동작을 이해하는데 유용하며, 노드 간의 통신 및 인터페이스를 활용할 때 유용하다.
'Study > ROS2' 카테고리의 다른 글
[ROS2/FOXY] 튜토리얼 5. Understanding services (0) | 2024.01.23 |
---|---|
[ROS2/FOXY] 튜토리얼 4. Understanding topics (0) | 2023.06.05 |
[ROS2/FOXY] 튜토리얼 2. Using turtlesim, ros2, and rqt (0) | 2023.06.02 |
[ROS2/FOXY] 튜토리얼 1. Configuring environment (4) | 2023.06.01 |
[Ubuntu 20.04] 도커환경에서 ROS2 Foxy 설치하기 (2) | 2023.05.29 |