[ros2] Node

About_work·2023년 11월 15일
0

ros2

목록 보기
7/41

기초 개념

  • ROS 네트워크의 기본적인 실행 단위
  • 로봇 시스템 내에서 개별적인 프로세스 또는 특정한 작업을 수행
  • 센서 데이터 처리, 상태 모니터링, 움직임 계획, 사용자 인터페이스 제공 등 다양한 작업을 수행하기 위해 노드를 사용

노드의 주요 특징과 역할

  1. 독립적인 실행 단위
  • 각 노드는 독립적으로 실행되는 프로세스 또는 프로그램

  1. 메시지 통신:
  • 노드들은 메시지를 통해 서로 통신
  • 메시지는 구조화된 데이터로, 특정 토픽(topic)을 통해 전송
  • 노드는 특정 토픽에 대해 메시지를 발행(publish)하거나 구독(subscribe)

  1. 서비스 및 액션:
  • 노드는 서비스(service)와 액션(action)을 제공하거나 사용
  • 서비스: 요청/응답 패턴을 따르는 동기식 통신을 의미
  • 액션: 장기 실행 작업을 위한 비동기식 통신

  1. 파라미터 및 설정:
  • 노드는 실행 시 다양한 파라미터(parameters)와 설정을 가질 수 있습니다. 이를 통해 노드의 동작을 구성하거나 조정할 수 있습니다.

  1. 로깅과 디버깅:
  • 노드는 로깅(logging) 기능 있음

  1. 재사용성과 모듈성
  • 노드는 재사용 가능하고 모듈식으로 설계될 수 있음

  1. 분산 실행:
  • ROS 2는 분산 시스템을 지원
  • 여러 노드가 다른 컴퓨터나 장치에서 실행될 수 있으며, 네트워크를 통해 서로 통신

함수들

node.future.done()

  • Future 객체의 상태를 확인하는 데 사용됩니다.
  • Future 객체는 비동기 작업의 완료 상태와 결과를 나타냅니다.
  • 목적: 이 메서드는 비동기 작업(예: 서비스 요청)이 완료되었는지 여부를 확인하는 데 사용됩니다.
  • 응용: 예를 들어, 서비스 클라이언트가 서비스 요청을 보내고, node.future.done()을 사용하여 요청의 처리가 완료되었는지 확인

node.future.result()

  • node.future.result() 메서드는 Future 객체의 결과를 반환합니다.
  • 이 메서드는 비동기 작업이 완료된 후 그 결과를 얻는 데 사용됩니다.
  • 목적:
    • 서비스 요청, 비동기 호출 등의 결과를 가져오는 데 사용됩니다.
  • 응용:
    • 서비스 클라이언트가 서비스 요청을 보낸 후, node.future.result()를 호출하여 서비스 응답을 받을 수 있습니다.
    • 이 메서드는 요청이 완료된 후 호출되어야 합니다.

node.destroy_node()

  • 메서드는 특정 ROS 2 노드의 리소스를 정리하고 노드를 종료하는 데 사용
  • 목적:
    • 이 메서드는 노드가 사용하고 있는 리소스를 해제하고, 노드와 관련된 모든 연결을 정리
    • 이는 메모리 누수를 방지하고, 노드가 안전하게 종료될 수 있도록 하는 데 중요
  • 사용 시점:
    • 노드의 작업이 완료되었거나, 애플리케이션을 종료하기 전에 호출
      응용:
    • 노드가 더 이상 필요하지 않을 때, 예를 들어 프로그램을 종료하거나 노드를 재시작해야 할 때 사용
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글