본문 바로가기
Computer Science/ROS

Node와 Package

by BaekDaBang 2024. 6. 7.

로봇 개발을 위해서는 로봇을 구성하는 여러 센서들로 수집된 데이터에 대해 판단을 내리고 목표로 하는 올바른 동작을 해야한다. ROS에서는 실행 가능한 최소 단위 프로세스가 바로 Node이고 이러한 프로세스의 집합Package이다.


Node란?

실행 가능한, 최소 단위 프로세서이다. 로봇 개발을 하기 위해서는 로봇을 구성하는 여러 센서들, 그리고 이들 센서 데이터를 통해 지속적으로 판단하고 동작해야 하는 시스템이 필요하다.


카메라를 통한 골키퍼 로봇

  1. 카메라 센서로부터 이미지를 받음
  2. 받아들인 이미지에서 공이 있는지 검출하고 검출된 공의 크기에 따라 로봇과 거리를 도출하여 우선 순위 선정 우선 순위가 높은 공의 위치를 계산하여 로봇 팔을 얼마나 어느 방향으로 이동 시킬지 판단
  3. 판단한 결과를 실제 모터 신호의 제어로 구동

 

ROS2로 구현

1의 기능을 수행하는 Node, 마찬가지로 2와 3을 수행하는 Node들이 있으며, 이들 사이에 서로 데이터를 주고받는 구조가 갖추어질 것이다.

이와 같이 각 노드의 역할을 목적에 맞추어 세분화시켜 각 노드들 간의 의존성을 줄이고 독립성을 높여 다른 목적의 작업에서도 일부 노드를 재사용할 수 있도록 한다.


Topic, Service, Action

Node 사이에 서로 주고받는 통신 메세지의 종류


Package

ROS를 구성하는 기본 단위이자 개발단위이다.

하나 이상의 노드가 포함되며 다른 패키지의 노드를 실행하기 위한 설정 파일, 프로세스들을 실행할 ROS 의존성 라이브러리 등을 가진다.

 

  • 파일 관점에서는 관련된 라이브러리, 모델링 파일들, 설정 파일들을 모아둔 폴더
  • 기능 관점에서는 시뮬레이션, 하드웨어 관련, 모델링, 원격 조종 등으로 분리시킨 모듈
  • `colcon build`가 수행되는 빌드의 단위

⇒ 하나 이상의 노드가 기능적 단위로 묶인 것

 

ament를 사용하여 패키지를 만드는 방법은 다음과 같다.

$ ros2 pkg create --build-type ament_cmake  <패키지이름> --dependencies rclcpp <종속성> 
$ ros2 pkg create --build-type ament_python <패키지이름> --dependencies rclpy <종속성>

 

이렇게 package를 만들면 빌드를 위한 기본 파일 구조를 갖게되며, colcon build를 통해 빌드하게 되면 검사 후 build 폴더로 바로가기가 생성된다.

 

전체 순서도

  1. package 생성
  2. 기능 구현 → Node 및 기능 (Topic, Service, Action)
  3. colcon을 사용한 package 빌드
  4. package 내 node 실행
$ ros2 run my_package my_node

'Computer Science > ROS' 카테고리의 다른 글

Service  (0) 2024.06.07
Topic  (0) 2024.06.07
개발 환경 구축 - Ubuntu, ROS2  (0) 2024.06.07
임베디드 보드  (0) 2024.06.07
ROS2란?  (0) 2024.06.07